[QGIS Commit] r11936 - in branches/symbology-ng-branch: python/core
src/core src/core/renderer
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Fri Nov 6 08:54:38 EST 2009
Author: wonder
Date: 2009-11-06 08:54:37 -0500 (Fri, 06 Nov 2009)
New Revision: 11936
Modified:
branches/symbology-ng-branch/python/core/qgsrenderer.sip
branches/symbology-ng-branch/src/core/qgsvectorlayer.cpp
branches/symbology-ng-branch/src/core/renderer/qgsrenderer.cpp
branches/symbology-ng-branch/src/core/renderer/qgsrenderer.h
Log:
Highlight selected features
Modified: branches/symbology-ng-branch/python/core/qgsrenderer.sip
===================================================================
--- branches/symbology-ng-branch/python/core/qgsrenderer.sip 2009-11-06 13:45:13 UTC (rev 11935)
+++ branches/symbology-ng-branch/python/core/qgsrenderer.sip 2009-11-06 13:54:37 UTC (rev 11936)
@@ -52,6 +52,8 @@
virtual QgsRenderer* clone() const=0;
/** Change selection color */
static void setSelectionColor(QColor color);
+ /** Get selection color */
+ static QColor selectionColor();
/**Returns true if this renderer returns a pixmap in the render method (e.g. for point data or diagrams)*/
virtual bool containsPixmap() const;
/**Returns true if this renderer uses its own transparency settings, e.g. differentiated by classification.
Modified: branches/symbology-ng-branch/src/core/qgsvectorlayer.cpp
===================================================================
--- branches/symbology-ng-branch/src/core/qgsvectorlayer.cpp 2009-11-06 13:45:13 UTC (rev 11935)
+++ branches/symbology-ng-branch/src/core/qgsvectorlayer.cpp 2009-11-06 13:54:37 UTC (rev 11936)
@@ -76,8 +76,8 @@
#include "qgsrendererv2.h"
#include "qgssymbolv2.h"
#include "qgssymbollayerv2.h"
+#include "qgssinglesymbolrendererv2.h"
-
#ifdef TESTPROVIDERLIB
#include <dlfcn.h>
#endif
@@ -668,16 +668,33 @@
{
mRendererV2->startRender(rendererContext, pendingFields());
+ QgsSingleSymbolRendererV2* selRenderer = NULL;
+ if (!mSelectedFeatureIds.isEmpty())
+ {
+ selRenderer = new QgsSingleSymbolRendererV2( QgsSymbolV2::defaultSymbol(geometryType()) );
+ selRenderer->symbol()->setColor( QgsRenderer::selectionColor() );
+ selRenderer->startRender(rendererContext, pendingFields());
+ }
+
QgsFeature fet;
while ( nextFeature( fet ) )
{
- mRendererV2->renderFeature(fet, rendererContext);
+ if (mSelectedFeatureIds.contains( fet.id() ))
+ selRenderer->renderFeature(fet, rendererContext);
+ else
+ mRendererV2->renderFeature(fet, rendererContext);
if ( labeling )
mLabelingEngine->registerFeature(this, fet);
}
mRendererV2->stopRender(rendererContext);
+
+ if (selRenderer)
+ {
+ selRenderer->stopRender(rendererContext);
+ delete selRenderer;
+ }
}
void QgsVectorLayer::drawRendererV2Levels( QgsRenderContext& rendererContext, bool labeling )
@@ -687,6 +704,14 @@
// startRender must be called before symbolForFeature() calls to make sure renderer is ready
mRendererV2->startRender(rendererContext, pendingFields());
+ QgsSingleSymbolRendererV2* selRenderer = NULL;
+ if (!mSelectedFeatureIds.isEmpty())
+ {
+ selRenderer = new QgsSingleSymbolRendererV2( QgsSymbolV2::defaultSymbol(geometryType()) );
+ selRenderer->symbol()->setColor( QgsRenderer::selectionColor() );
+ selRenderer->startRender(rendererContext, pendingFields());
+ }
+
// 1. fetch features
QgsFeature fet;
while ( nextFeature(fet) )
@@ -734,11 +759,22 @@
QList<QgsFeature>& lst = features[item.symbol()];
QList<QgsFeature>::iterator fit;
for ( fit = lst.begin(); fit != lst.end(); ++fit )
- mRendererV2->renderFeature(*fit, rendererContext, layer);
+ {
+ if (mSelectedFeatureIds.contains( fit->id() ))
+ selRenderer->renderFeature(*fit, rendererContext);
+ else
+ mRendererV2->renderFeature(*fit, rendererContext, layer);
+ }
}
}
mRendererV2->stopRender(rendererContext);
+
+ if (selRenderer)
+ {
+ selRenderer->stopRender(rendererContext);
+ delete selRenderer;
+ }
}
bool QgsVectorLayer::draw( QgsRenderContext& rendererContext )
Modified: branches/symbology-ng-branch/src/core/renderer/qgsrenderer.cpp
===================================================================
--- branches/symbology-ng-branch/src/core/renderer/qgsrenderer.cpp 2009-11-06 13:45:13 UTC (rev 11935)
+++ branches/symbology-ng-branch/src/core/renderer/qgsrenderer.cpp 2009-11-06 13:54:37 UTC (rev 11936)
@@ -39,6 +39,11 @@
mSelectionColor = color;
}
+QColor QgsRenderer::selectionColor()
+{
+ return mSelectionColor;
+}
+
bool QgsRenderer::containsPixmap() const
{
//default implementation returns true only for points
Modified: branches/symbology-ng-branch/src/core/renderer/qgsrenderer.h
===================================================================
--- branches/symbology-ng-branch/src/core/renderer/qgsrenderer.h 2009-11-06 13:45:13 UTC (rev 11935)
+++ branches/symbology-ng-branch/src/core/renderer/qgsrenderer.h 2009-11-06 13:54:37 UTC (rev 11936)
@@ -101,6 +101,8 @@
virtual QgsRenderer* clone() const = 0;
/** Change selection color */
static void setSelectionColor( QColor color );
+ /** Get selection color */
+ static QColor selectionColor();
/**Returns true if this renderer returns a pixmap in the render method (e.g. for point data or diagrams)*/
virtual bool containsPixmap() const;
/**Returns true if this renderer uses its own transparency settings, e.g. differentiated by classification.
More information about the QGIS-commit
mailing list