[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [marble] src/lib: move TextureColorizer into TextureLayer
From: Bernhard Beschow <bbeschow () cs ! tu-berlin ! de>
Date: 2012-05-15 17:48:55
Message-ID: 20120515174855.18C89A60A9 () git ! kde ! org
[Download RAW message or body]
Git commit 1f2615c753c270f663c70a2c9b356f21e03bc77c by Bernhard Beschow.
Committed on 16/08/2011 at 14:19.
Pushed by beschow into branch 'master'.
move TextureColorizer into TextureLayer
Instantiating the TextureColorizer in the TextureLayer makes the TextureLayer more \
self-contained.
M +7 -21 src/lib/MarbleMap.cpp
M +2 -8 src/lib/TextureColorizer.cpp
M +2 -10 src/lib/TextureColorizer.h
M +28 -17 src/lib/layers/TextureLayer.cpp
M +6 -5 src/lib/layers/TextureLayer.h
http://commits.kde.org/marble/1f2615c753c270f663c70a2c9b356f21e03bc77c
diff --git a/src/lib/MarbleMap.cpp b/src/lib/MarbleMap.cpp
index 3d02701..9979333 100644
--- a/src/lib/MarbleMap.cpp
+++ b/src/lib/MarbleMap.cpp
@@ -59,7 +59,6 @@
#include "MarbleModel.h"
#include "RenderPlugin.h"
#include "SunLocator.h"
-#include "TextureColorizer.h"
#include "TileCoordsPyramid.h"
#include "TileCreator.h"
#include "TileCreatorDialog.h"
@@ -124,7 +123,6 @@ class MarbleMapPrivate
bool m_showFrameRate;
VectorComposer m_veccomposer;
- TextureColorizer *m_texcolorizer;
LayerManager m_layerManager;
MarbleSplashLayer m_marbleSplashLayer;
@@ -144,13 +142,12 @@ MarbleMapPrivate::MarbleMapPrivate( MarbleMap *parent, \
MarbleModel *model ) m_viewParams(),
m_showFrameRate( false ),
m_veccomposer(),
- m_texcolorizer( 0 ),
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_textureLayer( model->downloadManager(), model->sunLocator(), \
&m_veccomposer ),
m_placemarkLayout( model->placemarkModel(), \
model->placemarkSelectionModel(), model->clock(), parent ) {
m_layerManager.addLayer( &m_fogLayer );
@@ -222,9 +219,7 @@ void MarbleMapPrivate::updateProperty( const QString &name, bool \
show ) }
else if ( name == "relief" ) {
- if ( m_texcolorizer ) {
- m_texcolorizer->setShowRelief( show );
- }
+ m_textureLayer.setShowRelief( show );
}
m_layerManager.setVisible( name, show );
@@ -732,10 +727,6 @@ void MarbleMapPrivate::updateMapTheme()
m_layerManager.removeLayer( &m_vectorMapLayer );
m_layerManager.removeLayer( &m_vectorMapBaseLayer );
- m_textureLayer.setTextureColorizer( 0 );
- delete m_texcolorizer;
- m_texcolorizer = 0;
-
QObject::connect( m_model->mapTheme()->settings(), SIGNAL( valueChanged( const \
QString &, bool ) ),
q, SLOT( updateProperty( const QString &, bool ) ) );
@@ -857,16 +848,12 @@ void MarbleMapPrivate::updateMapTheme()
}
}
- m_textureLayer.setMapTheme( textures, textureLayerSettings );
-
- m_textureLayer.setupTextureMapper( m_viewport.projection() );
-
+ QString seafile, landfile;
if( !m_model->mapTheme()->map()->filters().isEmpty() ) {
GeoSceneFilter *filter= m_model->mapTheme()->map()->filters().first();
if( filter->type() == "colorize" ) {
//no need to look up with MarbleDirs twice so they are left null \
for now
- QString seafile, landfile;
QList<GeoScenePalette*> palette = filter->palette();
foreach ( GeoScenePalette *curPalette, palette ) {
if( curPalette->type() == "sea" ) {
@@ -880,14 +867,13 @@ void MarbleMapPrivate::updateMapTheme()
seafile = MarbleDirs::path( "seacolors.leg" );
if( landfile.isEmpty() )
landfile = MarbleDirs::path( "landcolors.leg" );
-
- m_texcolorizer = new TextureColorizer( seafile, landfile, \
&m_veccomposer, q );
- m_texcolorizer->setShowRelief( q->showRelief() );
-
- m_textureLayer.setTextureColorizer( m_texcolorizer );
}
}
+ m_textureLayer.setMapTheme( textures, textureLayerSettings, seafile, \
landfile ); + m_textureLayer.setupTextureMapper( m_viewport.projection() );
+ m_textureLayer.setShowRelief( q->showRelief() );
+
if ( textureLayersOk ) {
m_layerManager.addLayer( &m_textureLayer );
}
diff --git a/src/lib/TextureColorizer.cpp b/src/lib/TextureColorizer.cpp
index f0bb823..9458bfc 100644
--- a/src/lib/TextureColorizer.cpp
+++ b/src/lib/TextureColorizer.cpp
@@ -64,13 +64,9 @@ private:
TextureColorizer::TextureColorizer( const QString &seafile,
const QString &landfile,
- VectorComposer *veccomposer,
- QObject *parent )
- : QObject( parent )
- , m_veccomposer( veccomposer )
+ VectorComposer *veccomposer )
+ : m_veccomposer( veccomposer )
{
- connect( m_veccomposer, SIGNAL( datasetLoaded() ), SIGNAL( datasetLoaded() ) );
-
QTime t;
t.start();
@@ -411,5 +407,3 @@ void TextureColorizer::colorize( QImage *origimg, const \
ViewportParams *viewport }
}
-
-#include "TextureColorizer.moc"
diff --git a/src/lib/TextureColorizer.h b/src/lib/TextureColorizer.h
index 3986414..d6ac36c 100644
--- a/src/lib/TextureColorizer.h
+++ b/src/lib/TextureColorizer.h
@@ -16,8 +16,6 @@
#ifndef MARBLE_TEXTURECOLORIZER_H
#define MARBLE_TEXTURECOLORIZER_H
-#include <QtCore/QObject>
-
#include "MarbleGlobal.h"
#include <QtCore/QString>
@@ -29,15 +27,12 @@ namespace Marble
class VectorComposer;
class ViewportParams;
-class TextureColorizer : public QObject
+class TextureColorizer
{
- Q_OBJECT
-
public:
TextureColorizer( const QString &seafile,
const QString &landfile,
- VectorComposer *veccomposer,
- QObject *parent = 0 );
+ VectorComposer *veccomposer );
virtual ~TextureColorizer(){}
@@ -45,9 +40,6 @@ class TextureColorizer : public QObject
void colorize( QImage *origimg, const ViewportParams *viewport, MapQuality \
mapQuality );
- Q_SIGNALS:
- void datasetLoaded();
-
private:
VectorComposer *const m_veccomposer;
QString m_seafile;
diff --git a/src/lib/layers/TextureLayer.cpp b/src/lib/layers/TextureLayer.cpp
index 779de84..e98c728 100644
--- a/src/lib/layers/TextureLayer.cpp
+++ b/src/lib/layers/TextureLayer.cpp
@@ -31,6 +31,7 @@
#include "SunLocator.h"
#include "TextureColorizer.h"
#include "TileLoader.h"
+#include "VectorComposer.h"
#include "ViewportParams.h"
namespace Marble
@@ -43,6 +44,7 @@ class TextureLayer::Private
public:
Private( HttpDownloadManager *downloadManager,
const SunLocator *sunLocator,
+ VectorComposer *veccomposer,
TextureLayer *parent );
void mapChanged();
@@ -52,12 +54,13 @@ public:
public:
TextureLayer *const m_parent;
const SunLocator *const m_sunLocator;
+ VectorComposer *const m_veccomposer;
TileLoader m_loader;
MergedLayerDecorator m_layerDecorator;
StackedTileLoader m_tileLoader;
QCache<TileId, const QPixmap> m_pixmapCache;
TextureMapperInterface *m_texmapper;
- QPointer<TextureColorizer> m_texcolorizer;
+ TextureColorizer *m_texcolorizer;
QVector<const GeoSceneTexture *> m_textures;
GeoSceneGroup *m_textureLayerSettings;
@@ -67,9 +70,11 @@ public:
TextureLayer::Private::Private( HttpDownloadManager *downloadManager,
const SunLocator *sunLocator,
+ VectorComposer *veccomposer,
TextureLayer *parent )
: m_parent( parent )
, m_sunLocator( sunLocator )
+ , m_veccomposer( veccomposer )
, m_loader( downloadManager )
, m_layerDecorator( &m_loader, sunLocator )
, m_tileLoader( &m_layerDecorator )
@@ -141,9 +146,10 @@ void TextureLayer::Private::updateTile( const TileId &tileId, \
const QImage &tile
TextureLayer::TextureLayer( HttpDownloadManager *downloadManager,
- const SunLocator *sunLocator )
+ const SunLocator *sunLocator,
+ VectorComposer *veccomposer )
: QObject()
- , d( new Private( downloadManager, sunLocator, this ) )
+ , d( new Private( downloadManager, sunLocator, veccomposer, this ) )
{
connect( &d->m_loader, SIGNAL( tileCompleted( const TileId &, const QImage & ) \
),
this, SLOT( updateTile( const TileId &, const QImage & ) ) );
@@ -153,11 +159,15 @@ TextureLayer::TextureLayer( HttpDownloadManager \
*downloadManager, d->m_repaintTimer.setInterval( REPAINT_SCHEDULING_INTERVAL );
connect( &d->m_repaintTimer, SIGNAL( timeout() ),
this, SIGNAL( repaintNeeded() ) );
+
+ connect( d->m_veccomposer, SIGNAL( datasetLoaded() ),
+ this, SLOT( mapChanged() ) );
}
TextureLayer::~TextureLayer()
{
delete d->m_texmapper;
+ delete d->m_texcolorizer;
delete d;
}
@@ -229,6 +239,13 @@ bool TextureLayer::render( GeoPainter *painter, ViewportParams \
*viewport, return true;
}
+void TextureLayer::setShowRelief( bool show )
+{
+ if ( d->m_texcolorizer ) {
+ d->m_texcolorizer->setShowRelief( show );
+ }
+}
+
void TextureLayer::setShowSunShading( bool show )
{
disconnect( d->m_sunLocator, SIGNAL( positionChanged( qreal, qreal ) ),
@@ -258,19 +275,6 @@ void TextureLayer::setShowTileId( bool show )
reset();
}
-void TextureLayer::setTextureColorizer( TextureColorizer *texcolorizer )
-{
- if ( d->m_texcolorizer ) {
- disconnect( d->m_texcolorizer, 0, this, 0 );
- }
-
- d->m_texcolorizer = texcolorizer;
-
- if ( d->m_texcolorizer ) {
- connect( d->m_texcolorizer, SIGNAL( datasetLoaded() ), SLOT( mapChanged() ) \
);
- }
-}
-
void TextureLayer::setupTextureMapper( Projection projection )
{
if ( d->m_textures.isEmpty() )
@@ -330,8 +334,15 @@ void TextureLayer::downloadTile( const TileId &tileId )
d->m_tileLoader.downloadTile( tileId );
}
-void TextureLayer::setMapTheme( const QVector<const GeoSceneTexture *> &textures, \
GeoSceneGroup *textureLayerSettings ) +void TextureLayer::setMapTheme( const \
QVector<const GeoSceneTexture *> &textures, GeoSceneGroup *textureLayerSettings, \
const QString &seaFile, const QString &landFile ) {
+ delete d->m_texcolorizer;
+ d->m_texcolorizer = 0;
+
+ if ( QFileInfo( seaFile ).isReadable() || QFileInfo( landFile ).isReadable() ) {
+ d->m_texcolorizer = new TextureColorizer( seaFile, landFile, \
d->m_veccomposer ); + }
+
d->m_textures = textures;
d->m_textureLayerSettings = textureLayerSettings;
diff --git a/src/lib/layers/TextureLayer.h b/src/lib/layers/TextureLayer.h
index 9564d78..c2fb60b 100644
--- a/src/lib/layers/TextureLayer.h
+++ b/src/lib/layers/TextureLayer.h
@@ -30,7 +30,7 @@ class GeoPainter;
class GeoSceneGroup;
class HttpDownloadManager;
class SunLocator;
-class TextureColorizer;
+class VectorComposer;
class ViewportParams;
class TextureLayer : public QObject, public LayerInterface
@@ -39,7 +39,8 @@ class TextureLayer : public QObject, public LayerInterface
public:
TextureLayer( HttpDownloadManager *downloadManager,
- const SunLocator *sunLocator );
+ const SunLocator *sunLocator,
+ VectorComposer *veccomposer );
~TextureLayer();
@@ -73,14 +74,14 @@ class TextureLayer : public QObject, public LayerInterface
bool render( GeoPainter *painter, ViewportParams *viewport,
const QString &renderPos = "NONE", GeoSceneLayer *layer = 0 );
+ void setShowRelief( bool show );
+
void setShowSunShading( bool show );
void setShowCityLights( bool show );
void setShowTileId( bool show );
- void setTextureColorizer( TextureColorizer *texcolorizer );
-
/**
* @brief Set the Projection used for the map
* @param projection projection type (e.g. Spherical, Equirectangular, \
Mercator) @@ -89,7 +90,7 @@ class TextureLayer : public QObject, public \
LayerInterface
void setNeedsUpdate();
- void setMapTheme( const QVector<const GeoSceneTexture *> &textures, \
GeoSceneGroup *textureLayerSettings ); + void setMapTheme( const QVector<const \
GeoSceneTexture *> &textures, GeoSceneGroup *textureLayerSettings, const QString \
&seaFile, const QString &landFile );
void setVolatileCacheLimit( quint64 kilobytes );
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic