From 9533cb296cc8769459c9e2d353d02bcdfff3f692 Mon Sep 17 00:00:00 2001 From: wonder Date: Sat, 3 Mar 2007 10:53:53 +0000 Subject: [PATCH] Changed deque to QStringList in QgsMapRender, updated canvas and bindings appropriately. git-svn-id: http://svn.osgeo.org/qgis/trunk@6749 c8812cc2-4d05-0410-92ff-de0c093fc19c --- python/core/qgsmaprender.sip | 9 ++----- python/gui/qgsmapoverviewcanvas.sip | 4 +-- src/core/qgsmaprender.cpp | 41 ++++++++++++----------------- src/core/qgsmaprender.h | 11 +++----- src/gui/qgsmapcanvas.cpp | 8 +++--- src/gui/qgsmapoverviewcanvas.cpp | 4 +-- src/gui/qgsmapoverviewcanvas.h | 6 ++--- 7 files changed, 33 insertions(+), 50 deletions(-) diff --git a/python/core/qgsmaprender.sip b/python/core/qgsmaprender.sip index 77518330beb..cb3678d0a64 100644 --- a/python/core/qgsmaprender.sip +++ b/python/core/qgsmaprender.sip @@ -72,15 +72,10 @@ class QgsMapRender : QObject QgsRect fullExtent(); //! returns current layer set - // TODO: wrap - //std::deque& layerSet(); + QStringList& layerSet(); //! change current layer set - // TODO: wrap - //void setLayerSet(const std::deque& layers); - - //!Overloaded version of above menthod to change current layer set - void setLayerSet(const QStringList layers); + void setLayerSet(const QStringList& layers); //! updates extent of the layer set void updateFullExtent(); diff --git a/python/gui/qgsmapoverviewcanvas.sip b/python/gui/qgsmapoverviewcanvas.sip index 72b90de1e2c..2412f124b42 100644 --- a/python/gui/qgsmapoverviewcanvas.sip +++ b/python/gui/qgsmapoverviewcanvas.sip @@ -20,9 +20,9 @@ class QgsMapOverviewCanvas : QWidget void setbgColor(const QColor& color); //! updates layer set for overview - // TODO void setLayerSet(std::deque& layerSet); + void setLayerSet(const QStringList& layerSet); - // TODO std::deque& layerSet(); + QStringList& layerSet(); void enableAntiAliasing(bool flag); diff --git a/src/core/qgsmaprender.cpp b/src/core/qgsmaprender.cpp index 687dc12b2f0..368e32e5bf5 100644 --- a/src/core/qgsmaprender.cpp +++ b/src/core/qgsmaprender.cpp @@ -213,11 +213,14 @@ void QgsMapRender::render(QPainter* painter) #endif // render all layers in the stack, starting at the base - std::deque::reverse_iterator li = mLayerSet.rbegin(); + QListIterator li(mLayerSet); + li.toBack(); - while (li != mLayerSet.rend()) + while (li.hasPrevious()) { - QgsDebugMsg("Rendering at layer item " + (*li)); + QString layerId = li.previous(); + + QgsDebugMsg("Rendering at layer item " + layerId); // This call is supposed to cause the progress bar to // advance. However, it seems that updating the progress bar is @@ -228,12 +231,11 @@ void QgsMapRender::render(QPainter* painter) QgsDebugMsg("If there is a QPaintEngine error here, it is caused by an emit call"); //emit drawingProgress(myRenderCounter++, mLayerSet.size()); - QgsMapLayer *ml = QgsMapLayerRegistry::instance()->mapLayer(*li); + QgsMapLayer *ml = QgsMapLayerRegistry::instance()->mapLayer(layerId); if (!ml) { QgsLogger::warning("Layer not found in registry!"); - li++; continue; } @@ -283,20 +285,20 @@ void QgsMapRender::render(QPainter* painter) "visibility scale range"); } - li++; - - } // while (li != end) + } // while (li.hasPrevious()) QgsDebugMsg("Done rendering map layers"); if (!mOverview) { // render all labels for vector layers in the stack, starting at the base - li = mLayerSet.rbegin(); - while (li != mLayerSet.rend()) + li.toBack(); + while (li.hasPrevious()) { + QString layerId = li.previous(); + // TODO: emit drawingProgress((myRenderCounter++),zOrder.size()); - QgsMapLayer *ml = QgsMapLayerRegistry::instance()->mapLayer(*li); + QgsMapLayer *ml = QgsMapLayerRegistry::instance()->mapLayer(layerId); if (ml && (ml->type() != QgsMapLayer::RASTER)) { @@ -324,7 +326,6 @@ void QgsMapRender::render(QPainter* painter) delete ct; } } - li++; } } // if (!mOverview) @@ -555,7 +556,7 @@ void QgsMapRender::updateFullExtent() // iterate through the map layers and test each layers extent // against the current min and max values - std::deque::iterator it = mLayerSet.begin(); + QStringList::iterator it = mLayerSet.begin(); while(it != mLayerSet.end()) { QgsMapLayer * lyr = registry->mapLayer(*it); @@ -587,25 +588,17 @@ QgsRect QgsMapRender::fullExtent() return mFullExtent; } -void QgsMapRender::setLayerSet(const std::deque& layers) +void QgsMapRender::setLayerSet(const QStringList& layers) { mLayerSet = layers; updateFullExtent(); } -void QgsMapRender::setLayerSet(const QStringList layers) +QStringList& QgsMapRender::layerSet() { - //convert the stringlist to a deque - QListIterator i(layers); - mLayerSet.clear(); - while (i.hasNext()) - { - mLayerSet.push_back(i.next()); - } - updateFullExtent(); + return mLayerSet; } - bool QgsMapRender::readXML(QDomNode & theNode) { QDomNode myNode = theNode.namedItem("units"); diff --git a/src/core/qgsmaprender.h b/src/core/qgsmaprender.h index 4ea6844ceda..cad2829aef7 100644 --- a/src/core/qgsmaprender.h +++ b/src/core/qgsmaprender.h @@ -17,8 +17,6 @@ #ifndef QGSMAPRENDER_H #define QGSMAPRENDER_H -#include -#include #include #include "qgis.h" @@ -107,13 +105,10 @@ class CORE_EXPORT QgsMapRender : public QObject QgsRect fullExtent(); //! returns current layer set - std::deque& layerSet() { return mLayerSet; } + QStringList& layerSet(); //! change current layer set - void setLayerSet(const std::deque& layers); - - //!Overloaded version of above menthod to change current layer set - void setLayerSet(const QStringList layers); + void setLayerSet(const QStringList& layers); //! updates extent of the layer set void updateFullExtent(); @@ -189,7 +184,7 @@ class CORE_EXPORT QgsMapRender : public QObject QgsSpatialRefSys* mDestSRS; //! stores array of layers to be rendered (identified by string) - std::deque mLayerSet; + QStringList mLayerSet; //! full extent of the layer set QgsRect mFullExtent; diff --git a/src/gui/qgsmapcanvas.cpp b/src/gui/qgsmapcanvas.cpp index ae1a66f6556..8acb401a7f3 100644 --- a/src/gui/qgsmapcanvas.cpp +++ b/src/gui/qgsmapcanvas.cpp @@ -175,7 +175,7 @@ QgsMapRender* QgsMapCanvas::mapRender() QgsMapLayer* QgsMapCanvas::getZpos(int index) { - std::deque& layers = mMapRender->layerSet(); + QStringList& layers = mMapRender->layerSet(); if (index >= 0 && index < (int) layers.size()) return QgsMapLayerRegistry::instance()->mapLayer(layers[index]); else @@ -223,7 +223,7 @@ void QgsMapCanvas::setLayerSet(QList& layers) int i; // create layer set - std::deque layerSet, layerSetOverview; + QStringList layerSet, layerSetOverview; for (i = 0; i < layers.size(); i++) { @@ -238,7 +238,7 @@ void QgsMapCanvas::setLayerSet(QList& layers) } } - std::deque& layerSetOld = mMapRender->layerSet(); + QStringList& layerSetOld = mMapRender->layerSet(); bool layerSetChanged = (layerSetOld != layerSet); @@ -263,7 +263,7 @@ void QgsMapCanvas::setLayerSet(QList& layers) if (mMapOverview) { - std::deque& layerSetOvOld = mMapOverview->layerSet(); + QStringList& layerSetOvOld = mMapOverview->layerSet(); if (layerSetOvOld != layerSetOverview) { mMapOverview->setLayerSet(layerSetOverview); diff --git a/src/gui/qgsmapoverviewcanvas.cpp b/src/gui/qgsmapoverviewcanvas.cpp index 653604e0071..0dcfd3b0c4c 100644 --- a/src/gui/qgsmapoverviewcanvas.cpp +++ b/src/gui/qgsmapoverviewcanvas.cpp @@ -269,7 +269,7 @@ void QgsMapOverviewCanvas::setbgColor(const QColor& color) setPalette(palette); } -void QgsMapOverviewCanvas::setLayerSet(std::deque& layerSet) +void QgsMapOverviewCanvas::setLayerSet(const QStringList& layerSet) { mMapRender->setLayerSet(layerSet); } @@ -290,7 +290,7 @@ void QgsMapOverviewCanvas::destinationSrsChanged() mMapRender->setDestinationSrs(srs); } -std::deque& QgsMapOverviewCanvas::layerSet() +QStringList& QgsMapOverviewCanvas::layerSet() { return mMapRender->layerSet(); } diff --git a/src/gui/qgsmapoverviewcanvas.h b/src/gui/qgsmapoverviewcanvas.h index 8797f3d4a7a..bfd97cae742 100644 --- a/src/gui/qgsmapoverviewcanvas.h +++ b/src/gui/qgsmapoverviewcanvas.h @@ -24,7 +24,7 @@ #include #include #include -#include +#include #include class QgsMapCanvas; @@ -50,9 +50,9 @@ class GUI_EXPORT QgsMapOverviewCanvas : public QWidget void setbgColor(const QColor& color); //! updates layer set for overview - void setLayerSet(std::deque& layerSet); + void setLayerSet(const QStringList& layerSet); - std::deque& layerSet(); + QStringList& layerSet(); void enableAntiAliasing(bool flag) { mAntiAliasing = flag; }