[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