[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [marble] src/lib/marble: GeoScene: use geodata layer to render vector and deprecate VectorComposer
From:       Thibaut Gridel <tgridel () free ! fr>
Date:       2014-01-03 19:37:03
Message-ID: E1VzAYJ-0004Jd-IJ () scm ! kde ! org
[Download RAW message or body]

Git commit 159e016d744e43435e873f8cf252182928fbac7a by Thibaut Gridel.
Committed on 01/01/2013 at 09:56.
Pushed by tgridel into branch 'master'.

GeoScene: use geodata layer to render vector and deprecate VectorComposer

M  +3    -81   src/lib/marble/MarbleMap.cpp
M  +4    -2    src/lib/marble/MarbleModel.cpp
M  +3    -10   src/lib/marble/TextureColorizer.cpp
M  +3    -4    src/lib/marble/TextureColorizer.h
M  +2    -5    src/lib/marble/geodata/handlers/dgml/DgmlBrushTagHandler.cpp
M  +2    -5    src/lib/marble/geodata/handlers/dgml/DgmlPenTagHandler.cpp
M  +2    -7    src/lib/marble/geodata/handlers/dgml/DgmlSourceFileTagHandler.cpp
M  +4    -4    src/lib/marble/geodata/handlers/dgml/DgmlVectorTagHandler.cpp
M  +2    -11   src/lib/marble/layers/TextureLayer.cpp
M  +0    -2    src/lib/marble/layers/TextureLayer.h

http://commits.kde.org/marble/159e016d744e43435e873f8cf252182928fbac7a

diff --git a/src/lib/marble/MarbleMap.cpp b/src/lib/marble/MarbleMap.cpp
index d146bdd..d30b00c 100644
--- a/src/lib/marble/MarbleMap.cpp
+++ b/src/lib/marble/MarbleMap.cpp
@@ -39,8 +39,6 @@
 #include "layers/MarbleSplashLayer.h"
 #include "layers/PlacemarkLayer.h"
 #include "layers/TextureLayer.h"
-#include "layers/VectorMapBaseLayer.h"
-#include "layers/VectorMapLayer.h"
 #include "layers/VectorTileLayer.h"
 #include "AbstractFloatItem.h"
 #include "DgmlAuxillaryDictionary.h"
@@ -70,7 +68,6 @@
 #include "TileCreator.h"
 #include "TileCreatorDialog.h"
 #include "TileLoader.h"
-#include "VectorComposer.h"
 #include "ViewParams.h"
 #include "ViewportParams.h"
 
@@ -134,7 +131,6 @@ public:
     ViewportParams   m_viewport;
     bool             m_showFrameRate;
 
-    VectorComposer   m_veccomposer;
 
     LayerManager     m_layerManager;
     MarbleSplashLayer m_marbleSplashLayer;
@@ -142,8 +138,6 @@ public:
     GeometryLayer            m_geometryLayer;
     FogLayer                 m_fogLayer;
     GroundLayer              m_groundLayer;
-    VectorMapBaseLayer       m_vectorMapBaseLayer;
-    VectorMapLayer   m_vectorMapLayer;
     TextureLayer     m_textureLayer;
     PlacemarkLayer   m_placemarkLayer;
     VectorTileLayer  m_vectorTileLayer;
@@ -157,13 +151,10 @@ MarbleMapPrivate::MarbleMapPrivate( MarbleMap *parent, \
MarbleModel *model ) :  m_model( model ),
     m_viewParams(),
     m_showFrameRate( false ),
-    m_veccomposer(),
     m_layerManager( model, parent ),
     m_customPaintLayer( parent ),
     m_geometryLayer( model->treeModel() ),
-    m_vectorMapBaseLayer( &m_veccomposer ),
-    m_vectorMapLayer( &m_veccomposer ),
-    m_textureLayer( model->downloadManager(), model->sunLocator(), &m_veccomposer, \
model->groundOverlayModel() ), +    m_textureLayer( model->downloadManager(), \
                model->sunLocator(), model->groundOverlayModel() ),
     m_placemarkLayer( model->placemarkModel(), model->placemarkSelectionModel(), \
                model->clock() ),
     m_vectorTileLayer( model->downloadManager(), model->pluginManager(), \
model->treeModel() ),  m_isLockedToSubSolarPoint( false ),
@@ -180,8 +171,6 @@ MarbleMapPrivate::MarbleMapPrivate( MarbleMap *parent, \
MarbleModel *model ) :  QObject::connect( m_model->fileManager(), \
SIGNAL(fileAdded(QString)),  parent, SLOT(setDocument(QString)) );
 
-    QObject::connect( &m_veccomposer, SIGNAL(datasetLoaded()),
-                      parent, SIGNAL(repaintNeeded()));
 
     QObject::connect( &m_placemarkLayer, SIGNAL(repaintNeeded()),
                       parent, SIGNAL(repaintNeeded()));
@@ -229,20 +218,6 @@ void MarbleMapPrivate::updateProperty( const QString &name, bool \
show )  m_placemarkLayer.setShowMaria( show );
     }
 
-    else if ( name == "waterbodies" ) {
-        m_veccomposer.setShowWaterBodies( show );
-    } else if ( name == "lakes" ) {
-        m_veccomposer.setShowLakes( show );
-    } else if ( name == "ice" ) {
-        m_veccomposer.setShowIce( show );
-    } else if ( name == "coastlines" ) {
-        m_veccomposer.setShowCoastLines( show );
-    } else if ( name == "rivers" ) {
-        m_veccomposer.setShowRivers( show );
-    } else if ( name == "borders" ) {
-        m_veccomposer.setShowBorders( show );
-    }
-
     else if ( name == "relief" ) {
         m_textureLayer.setShowRelief( show );
     }
@@ -287,8 +262,6 @@ MarbleMap::~MarbleMap()
     d->m_layerManager.removeLayer( &d->m_placemarkLayer );
     d->m_layerManager.removeLayer( &d->m_textureLayer );
     d->m_layerManager.removeLayer( &d->m_groundLayer );
-    d->m_layerManager.removeLayer( &d->m_vectorMapLayer );
-    d->m_layerManager.removeLayer( &d->m_vectorMapBaseLayer );
     delete d;
 
     delete model;  // delete the model after private data
@@ -720,7 +693,8 @@ void MarbleMapPrivate::setDocument( QString key )
     GeoDataDocument* doc = m_model->fileManager()->at( key );
 
     foreach ( const GeoSceneLayer *layer, m_model->mapTheme()->map()->layers() ) {
-        if ( layer->backend() != dgml::dgmlValue_geodata )
+        if ( layer->backend() != dgml::dgmlValue_geodata
+             && layer->backend() != dgml::dgmlValue_vector )
             continue;
 
         // look for documents
@@ -794,8 +768,6 @@ void MarbleMapPrivate::updateMapTheme()
     // FIXME Find a better way to do this reset. Maybe connect to themeChanged \
SIGNAL?  m_vectorTileLayer.reset();
     m_layerManager.removeLayer( &m_vectorTileLayer );
-    m_layerManager.removeLayer( &m_vectorMapLayer );
-    m_layerManager.removeLayer( &m_vectorMapBaseLayer );
     m_layerManager.removeLayer( &m_groundLayer );
 
     QObject::connect( m_model->mapTheme()->settings(), \
SIGNAL(valueChanged(QString,bool)), @@ -810,56 +782,6 @@ void \
MarbleMapPrivate::updateMapTheme()  m_layerManager.addLayer( &m_groundLayer );
     }
 
-    // Check whether there is a vector layer available:
-    if ( m_model->mapTheme()->map()->hasVectorLayers() ) {
-        m_veccomposer.setShowWaterBodies( q->propertyValue( "waterbodies" ) );
-        m_veccomposer.setShowLakes( q->propertyValue( "lakes" ) );
-        m_veccomposer.setShowIce( q->propertyValue( "ice" ) );
-        m_veccomposer.setShowCoastLines( q->propertyValue( "coastlines" ) );
-        m_veccomposer.setShowRivers( q->propertyValue( "rivers" ) );
-        m_veccomposer.setShowBorders( q->propertyValue( "borders" ) );
-
-        // Set all the colors for the vector layers
-        m_veccomposer.setOceanColor( m_model->mapTheme()->map()->backgroundColor() \
                );
-
-        // Just as with textures, this is a workaround for DGML2 to
-        // emulate the old behaviour.
-
-        const GeoSceneLayer *layer = m_model->mapTheme()->map()->layer( "mwdbii" );
-        if ( layer ) {
-            const GeoSceneVector *vector = 0;
-
-            vector = static_cast<const GeoSceneVector*>( \
                layer->dataset("pdiffborder") );
-            if ( vector )
-                m_veccomposer.setCountryBorderColor( vector->pen().color() );
-
-            vector = static_cast<const GeoSceneVector*>( layer->dataset("rivers") );
-            if ( vector )
-                m_veccomposer.setRiverColor( vector->pen().color() );
-
-            vector = static_cast<const GeoSceneVector*>( layer->dataset("pusa48") );
-            if ( vector )
-                m_veccomposer.setStateBorderColor( vector->pen().color() );
-
-            vector = static_cast<const GeoSceneVector*>( layer->dataset("plake") );
-            if ( vector )
-                m_veccomposer.setLakeColor( vector->pen().color() );
-
-            vector = static_cast<const GeoSceneVector*>( layer->dataset("pcoast") );
-            if ( vector )
-            {
-                m_veccomposer.setLandColor( vector->brush().color() );
-                m_veccomposer.setCoastColor( vector->pen().color() );
-            }
-        }
-
-        if ( !m_model->mapTheme()->map()->hasTextureLayers() ) {
-            m_layerManager.addLayer( &m_vectorMapBaseLayer );
-        }
-
-        m_layerManager.addLayer( &m_vectorMapLayer );
-    }
-
     // Check whether there is a texture layer and vectortile layer available:
     if ( m_model->mapTheme()->map()->hasTextureLayers() ) {
         const GeoSceneSettings *const settings = m_model->mapTheme()->settings();
diff --git a/src/lib/marble/MarbleModel.cpp b/src/lib/marble/MarbleModel.cpp
index de7085d..d3b3aed 100644
--- a/src/lib/marble/MarbleModel.cpp
+++ b/src/lib/marble/MarbleModel.cpp
@@ -267,7 +267,8 @@ void MarbleModel::setMapThemeId( const QString &mapThemeId )
     QList<GeoSceneGeodata> currentDatasets;
     if ( d->m_mapTheme ) {
         foreach ( GeoSceneLayer *layer, d->m_mapTheme->map()->layers() ) {
-            if ( layer->backend() != dgml::dgmlValue_geodata )
+            if ( layer->backend() != dgml::dgmlValue_geodata
+                 && layer->backend() != dgml::dgmlValue_vector )
                 continue;
 
             // look for documents
@@ -317,7 +318,8 @@ void MarbleModel::setMapThemeId( const QString &mapThemeId )
     QList<GeoDataStyle*> styleList;
 
     foreach ( GeoSceneLayer *layer, d->m_mapTheme->map()->layers() ) {
-        if ( layer->backend() != dgml::dgmlValue_geodata )
+        if ( layer->backend() != dgml::dgmlValue_geodata
+             && layer->backend() != dgml::dgmlValue_vector )
             continue;
 
         GeoSceneGeodata emptyData("empty");
diff --git a/src/lib/marble/TextureColorizer.cpp \
b/src/lib/marble/TextureColorizer.cpp index c2de3fc..6a97147 100644
--- a/src/lib/marble/TextureColorizer.cpp
+++ b/src/lib/marble/TextureColorizer.cpp
@@ -26,7 +26,6 @@
 #include "MarbleGlobal.h"
 #include "GeoPainter.h"
 #include "MarbleDebug.h"
-#include "VectorComposer.h"
 #include "ViewParams.h"
 #include "ViewportParams.h"
 #include "MathHelper.h"
@@ -69,10 +68,8 @@ private:
 
 
 TextureColorizer::TextureColorizer( const QString &seafile,
-                                    const QString &landfile,
-                                    VectorComposer *veccomposer )
-    : m_veccomposer( veccomposer ),
-      m_showRelief( false ),
+                                    const QString &landfile )
+    : m_showRelief( false ),
       m_landColor(qRgb( 255, 0, 0 ) ),
       m_seaColor( qRgb( 0, 255, 0 ) )
 {
@@ -242,11 +239,7 @@ void TextureColorizer::colorize( QImage *origimg, const \
ViewportParams *viewport  GeoPainter painter( &m_coastImage, viewport, mapQuality );
     painter.setRenderHint( QPainter::Antialiasing, antialiased );
 
-    if ( m_landDocuments.isEmpty() ) {
-        m_veccomposer->drawTextureMap( &painter, viewport );
-    } else {
-        drawTextureMap( &painter );
-    }
+    drawTextureMap( &painter );
 
     const qint64   radius   = viewport->radius();
 
diff --git a/src/lib/marble/TextureColorizer.h b/src/lib/marble/TextureColorizer.h
index e25d587..ac0614a 100644
--- a/src/lib/marble/TextureColorizer.h
+++ b/src/lib/marble/TextureColorizer.h
@@ -28,15 +28,13 @@
 namespace Marble
 {
 
-class VectorComposer;
 class ViewportParams;
 
 class TextureColorizer
 {
  public:
     TextureColorizer( const QString &seafile,
-                      const QString &landfile,
-                      VectorComposer *veccomposer );
+                      const QString &landfile );
 
     virtual ~TextureColorizer(){}
 
@@ -55,7 +53,8 @@ class TextureColorizer
     void setPixel( const QRgb *coastData, QRgb *writeData, int bump, uchar grey );
 
  private:
-    VectorComposer *const m_veccomposer;
+    QString m_seafile;
+    QString m_landfile;
     QList<const GeoDataDocument*> m_seaDocuments;
     QList<const GeoDataDocument*> m_landDocuments;
     QImage m_coastImage;
diff --git a/src/lib/marble/geodata/handlers/dgml/DgmlBrushTagHandler.cpp \
b/src/lib/marble/geodata/handlers/dgml/DgmlBrushTagHandler.cpp index 29b2c59..45dcbf8 \
                100644
--- a/src/lib/marble/geodata/handlers/dgml/DgmlBrushTagHandler.cpp
+++ b/src/lib/marble/geodata/handlers/dgml/DgmlBrushTagHandler.cpp
@@ -28,7 +28,6 @@
 #include "DgmlElementDictionary.h"
 #include "DgmlAttributeDictionary.h"
 #include "GeoParser.h"
-#include "GeoSceneVector.h"
 #include "GeoSceneGeodata.h"
 
 namespace Marble
@@ -52,10 +51,8 @@ GeoNode* DgmlBrushTagHandler::parse(GeoParser& parser) const
 
     // Checking for parent item
     GeoStackItem parentItem = parser.parentElement();
-    if ( parentItem.represents( dgmlTag_Vector ) ) {
-        GeoSceneVector *vector = parentItem.nodeAs<GeoSceneVector>();
-        vector->setBrush( brush );
-    } else if ( parentItem.represents( dgmlTag_Geodata ) ) {
+    if ( parentItem.represents( dgmlTag_Vector )
+         || parentItem.represents( dgmlTag_Geodata ) ) {
         GeoSceneGeodata *geodata = parentItem.nodeAs<GeoSceneGeodata>();
         geodata->setBrush( brush );
     }
diff --git a/src/lib/marble/geodata/handlers/dgml/DgmlPenTagHandler.cpp \
b/src/lib/marble/geodata/handlers/dgml/DgmlPenTagHandler.cpp index e390ac6..cb8fca2 \
                100644
--- a/src/lib/marble/geodata/handlers/dgml/DgmlPenTagHandler.cpp
+++ b/src/lib/marble/geodata/handlers/dgml/DgmlPenTagHandler.cpp
@@ -28,7 +28,6 @@
 #include "DgmlElementDictionary.h"
 #include "DgmlAttributeDictionary.h"
 #include "GeoParser.h"
-#include "GeoSceneVector.h"
 #include "GeoSceneGeodata.h"
 
 namespace Marble
@@ -67,10 +66,8 @@ GeoNode* DgmlPenTagHandler::parse(GeoParser& parser) const
 
     // Checking for parent item
     GeoStackItem parentItem = parser.parentElement();
-    if ( parentItem.represents( dgmlTag_Vector ) ) {
-        GeoSceneVector *vector = parentItem.nodeAs<GeoSceneVector>();
-        vector->setPen( pen );
-    } else if ( parentItem.represents( dgmlTag_Geodata ) ) {
+    if ( parentItem.represents( dgmlTag_Vector )
+         || parentItem.represents( dgmlTag_Geodata ) ) {
         GeoSceneGeodata *geodata = parentItem.nodeAs<GeoSceneGeodata>();
         geodata->setPen( pen );
     }
diff --git a/src/lib/marble/geodata/handlers/dgml/DgmlSourceFileTagHandler.cpp \
b/src/lib/marble/geodata/handlers/dgml/DgmlSourceFileTagHandler.cpp index \
                f7c007f..a6d71f6 100644
--- a/src/lib/marble/geodata/handlers/dgml/DgmlSourceFileTagHandler.cpp
+++ b/src/lib/marble/geodata/handlers/dgml/DgmlSourceFileTagHandler.cpp
@@ -24,7 +24,6 @@
 #include "DgmlElementDictionary.h"
 #include "DgmlAttributeDictionary.h"
 #include "GeoParser.h"
-#include "GeoSceneVector.h"
 #include "GeoSceneGeodata.h"
 
 namespace Marble
@@ -40,12 +39,8 @@ GeoNode* DgmlSourceFileTagHandler::parse(GeoParser& parser) const
 
     // Checking for parent item
     GeoStackItem parentItem = parser.parentElement();
-    if ( parentItem.represents( dgmlTag_Vector ) ) {
-        GeoSceneVector *vector = 0;
-
-        vector = parentItem.nodeAs<GeoSceneVector>();
-        vector->setSourceFile( parser.readElementText().trimmed() );
-    } else if( parentItem.represents( dgmlTag_Geodata ) ) {
+    if ( parentItem.represents( dgmlTag_Vector )
+         || parentItem.represents( dgmlTag_Geodata ) ) {
         GeoSceneGeodata *dataSource = 0;
         dataSource = parentItem.nodeAs<GeoSceneGeodata>();
         dataSource->setSourceFile( parser.readElementText().trimmed() );
diff --git a/src/lib/marble/geodata/handlers/dgml/DgmlVectorTagHandler.cpp \
b/src/lib/marble/geodata/handlers/dgml/DgmlVectorTagHandler.cpp index \
                b05ad8f..9c34f97 100644
--- a/src/lib/marble/geodata/handlers/dgml/DgmlVectorTagHandler.cpp
+++ b/src/lib/marble/geodata/handlers/dgml/DgmlVectorTagHandler.cpp
@@ -28,7 +28,7 @@
 #include "DgmlAuxillaryDictionary.h"
 #include "GeoParser.h"
 #include "GeoSceneLayer.h"
-#include "GeoSceneVector.h"
+#include "GeoSceneGeodata.h"
 
 namespace Marble
 {
@@ -44,7 +44,7 @@ GeoNode* DgmlVectorTagHandler::parse(GeoParser& parser) const
     QString name      = parser.attribute(dgmlAttr_name).trimmed();
     QString feature   = parser.attribute(dgmlAttr_feature).trimmed();
 
-    GeoSceneVector *vector = 0;
+    GeoSceneGeodata *vector = 0;
 
     // Checking for parent item
     GeoStackItem parentItem = parser.parentElement();
@@ -54,8 +54,8 @@ GeoNode* DgmlVectorTagHandler::parse(GeoParser& parser) const
     if ( parentItem.represents(dgmlTag_Layer)
         && parentItem.nodeAs<GeoSceneLayer>()->backend() == dgmlValue_vector ) {
 
-        vector = new GeoSceneVector( name );
-        vector->setFeature( feature );
+        vector = new GeoSceneGeodata( name );
+        vector->setColorize( feature );
         parentItem.nodeAs<GeoSceneLayer>()->addDataset( vector );
     }
 
diff --git a/src/lib/marble/layers/TextureLayer.cpp \
b/src/lib/marble/layers/TextureLayer.cpp index c4463a3..677762c 100644
--- a/src/lib/marble/layers/TextureLayer.cpp
+++ b/src/lib/marble/layers/TextureLayer.cpp
@@ -34,7 +34,6 @@
 #include "SunLocator.h"
 #include "TextureColorizer.h"
 #include "TileLoader.h"
-#include "VectorComposer.h"
 #include "ViewportParams.h"
 
 namespace Marble
@@ -47,7 +46,6 @@ class TextureLayer::Private
 public:
     Private( HttpDownloadManager *downloadManager,
              const SunLocator *sunLocator,
-             VectorComposer *veccomposer,
              QAbstractItemModel *groundOverlayModel,
              TextureLayer *parent );
 
@@ -66,7 +64,6 @@ public:
 public:
     TextureLayer  *const m_parent;
     const SunLocator *const m_sunLocator;
-    VectorComposer *const m_veccomposer;
     HttpDownloadManager *const m_downloadManager;
     MergedLayerDecorator m_layerDecorator;
     StackedTileLoader    m_tileLoader;
@@ -85,12 +82,10 @@ public:
 
 TextureLayer::Private::Private( HttpDownloadManager *downloadManager,
                                 const SunLocator *sunLocator,
-                                VectorComposer *veccomposer,
                                 QAbstractItemModel *groundOverlayModel,
                                 TextureLayer *parent )
     : m_parent( parent )
     , m_sunLocator( sunLocator )
-    , m_veccomposer( veccomposer )
     , m_downloadManager( downloadManager )
     , m_layerDecorator( sunLocator )
     , m_tileLoader( &m_layerDecorator )
@@ -231,19 +226,15 @@ void TextureLayer::Private::updateGroundOverlays()
 
 TextureLayer::TextureLayer( HttpDownloadManager *downloadManager,
                             const SunLocator *sunLocator,
-                            VectorComposer *veccomposer ,
                             QAbstractItemModel *groundOverlayModel )
     : QObject()
-    , d( new Private( downloadManager, sunLocator, veccomposer, groundOverlayModel, \
this ) ) +    , d( new Private( downloadManager, sunLocator, groundOverlayModel, this \
) )  {
     // Repaint timer
     d->m_repaintTimer.setSingleShot( true );
     d->m_repaintTimer.setInterval( REPAINT_SCHEDULING_INTERVAL );
     connect( &d->m_repaintTimer, SIGNAL(timeout()),
              this, SIGNAL(repaintNeeded()) );
-
-    connect( d->m_veccomposer, SIGNAL(datasetLoaded()),
-             this, SLOT(requestDelayedRepaint()) );
 }
 
 TextureLayer::~TextureLayer()
@@ -453,7 +444,7 @@ void TextureLayer::setMapTheme( const QVector<const \
GeoSceneTextureTile *> &text  d->m_textures.clear();
 
     if ( QFileInfo( seaFile ).isReadable() || QFileInfo( landFile ).isReadable() ) {
-        d->m_texcolorizer = new TextureColorizer( seaFile, landFile, \
d->m_veccomposer ); +        d->m_texcolorizer = new TextureColorizer( seaFile, \
landFile );  }
 
     foreach ( const GeoSceneTextureTile *textureTile, textures ) {
diff --git a/src/lib/marble/layers/TextureLayer.h \
b/src/lib/marble/layers/TextureLayer.h index 97d8263..90042cb 100644
--- a/src/lib/marble/layers/TextureLayer.h
+++ b/src/lib/marble/layers/TextureLayer.h
@@ -33,7 +33,6 @@ class GeoSceneGroup;
 class GeoSceneTextureTile;
 class HttpDownloadManager;
 class SunLocator;
-class VectorComposer;
 class ViewportParams;
 
 class TextureLayer : public QObject, public LayerInterface
@@ -43,7 +42,6 @@ class TextureLayer : public QObject, public LayerInterface
  public:
     TextureLayer( HttpDownloadManager *downloadManager,
                   const SunLocator *sunLocator,
-                  VectorComposer *veccomposer,
                   QAbstractItemModel *groundOverlayModel );
 
     ~TextureLayer();


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic