[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