Skip to content

Commit 0775a89

Browse files
committed
Merge pull request #1380 from Oslandia/mask_renderer
[FEATURE] Inverted polygons renderer
2 parents 31bb269 + 7906154 commit 0775a89

19 files changed

+1433
-0
lines changed

python/core/core.sip

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,7 @@
206206
%Include symbology-ng/qgssinglesymbolrendererv2.sip
207207
%Include symbology-ng/qgspointdisplacementrenderer.sip
208208
%Include symbology-ng/qgsrulebasedrendererv2.sip
209+
%Include symbology-ng/qgsinvertedpolygonrenderer.sip
209210
%Include symbology-ng/qgsrendererv2.sip
210211
%Include symbology-ng/qgsrendererv2registry.sip
211212

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
class QgsInvertedPolygonRenderer : public QgsFeatureRendererV2
2+
{
3+
%TypeHeaderCode
4+
#include <qgsinvertedpolygonrenderer.h>
5+
%End
6+
public:
7+
8+
/** Constructor
9+
* @param embeddedRenderer optional embeddedRenderer. If null, a default one will be assigned
10+
*/
11+
QgsInvertedPolygonRenderer( const QgsFeatureRendererV2* embeddedRenderer = 0 );
12+
virtual ~QgsInvertedPolygonRenderer();
13+
14+
/** Used to clone this feature renderer.*/
15+
virtual QgsFeatureRendererV2* clone();
16+
17+
virtual void startRender( QgsRenderContext& context, const QgsFields& fields );
18+
19+
/** Renders a given feature.
20+
* This will here collect features. The actual rendering will be postponed to stopRender()
21+
* @param feature the feature to render
22+
* @param context the rendering context
23+
* @param layer the symbol layer to render, if that makes sense
24+
* @param selected whether this feature has been selected (this will add decorations)
25+
* @param drawVertexMarker whether this feature has vertex markers (in edit mode usually)
26+
* @returns true if the rendering was ok
27+
*/
28+
virtual bool renderFeature( QgsFeature& feature, QgsRenderContext& context, int layer = -1, bool selected = false, bool drawVertexMarker = false );
29+
30+
/**
31+
* The actual rendering will take place here.
32+
* Features collected during renderFeature() are rendered using the embedded feature renderer
33+
*/
34+
virtual void stopRender( QgsRenderContext& context );
35+
36+
/** @returns a textual reprensation of the renderer */
37+
virtual QString dump() const;
38+
39+
/** Proxy that will call this method on the embedded renderer. */
40+
virtual QList<QString> usedAttributes();
41+
/** Proxy that will call this method on the embedded renderer. */
42+
virtual int capabilities();
43+
/** Proxy that will call this method on the embedded renderer. */
44+
virtual QgsSymbolV2List symbols();
45+
/** Proxy that will call this method on the embedded renderer. */
46+
virtual QgsSymbolV2* symbolForFeature( QgsFeature& feature );
47+
/** Proxy that will call this method on the embedded renderer. */
48+
virtual QgsSymbolV2List symbolsForFeature( QgsFeature& feat );
49+
/** Proxy that will call this method on the embedded renderer. */
50+
virtual QgsLegendSymbologyList legendSymbologyItems( QSize iconSize );
51+
/** Proxy that will call this method on the embedded renderer. */
52+
virtual bool willRenderFeature( QgsFeature& feat );
53+
54+
/** Creates a renderer out of an XML, for loading*/
55+
static QgsFeatureRendererV2* create( QDomElement& element );
56+
57+
/** Creates an XML representation of the renderer. Used for saving purpose
58+
* @param doc the XML document where to create the XML subtree
59+
* @returns the created XML subtree
60+
*/
61+
virtual QDomElement save( QDomDocument& doc );
62+
63+
/** sets the embedded renderer
64+
* @param subRenderer the embedded renderer (will be cloned)
65+
*/
66+
void setEmbeddedRenderer( const QgsFeatureRendererV2* subRenderer );
67+
/** @returns the current embedded renderer
68+
*/
69+
const QgsFeatureRendererV2* embeddedRenderer() const;
70+
};

python/gui/gui.sip

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@
122122
%Include symbology-ng/qgscptcitycolorrampv2dialog.sip
123123
%Include symbology-ng/qgsellipsesymbollayerv2widget.sip
124124
%Include symbology-ng/qgsgraduatedsymbolrendererv2widget.sip
125+
%Include symbology-ng/qgsinvertedpolygonrendererwidget.sip
125126
%Include symbology-ng/qgslayerpropertieswidget.sip
126127
%Include symbology-ng/qgspenstylecombobox.sip
127128
%Include symbology-ng/qgspointdisplacementrendererwidget.sip
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class QgsInvertedPolygonRendererWidget : public QgsRendererV2Widget, private Ui::QgsInvertedPolygonRendererWidgetBase
2+
{
3+
%TypeHeaderCode
4+
#include <qgsinvertedpolygonrendererwidget.h>
5+
%End
6+
public:
7+
/** static creation method
8+
* @param layer the layer where this renderer is applied
9+
* @param style
10+
* @param renderer the mask renderer (will take ownership)
11+
*/
12+
static QgsRendererV2Widget* create( QgsVectorLayer* layer, QgsStyleV2* style, QgsFeatureRendererV2* renderer );
13+
14+
/** Constructor
15+
* @param layer the layer where this renderer is applied
16+
* @param style
17+
* @param renderer the mask renderer (will take ownership)
18+
*/
19+
QgsInvertedPolygonRendererWidget( QgsVectorLayer* layer, QgsStyleV2* style, QgsFeatureRendererV2* renderer );
20+
21+
/** @returns the current feature renderer */
22+
virtual QgsFeatureRendererV2* renderer();
23+
};

src/core/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ SET(QGIS_CORE_SRCS
3636
symbology-ng/qgscategorizedsymbolrendererv2.cpp
3737
symbology-ng/qgsgraduatedsymbolrendererv2.cpp
3838
symbology-ng/qgsrulebasedrendererv2.cpp
39+
symbology-ng/qgsinvertedpolygonrenderer.cpp
3940
symbology-ng/qgsvectorcolorrampv2.cpp
4041
symbology-ng/qgscptcityarchive.cpp
4142
symbology-ng/qgsstylev2.cpp
@@ -585,6 +586,7 @@ SET(QGIS_CORE_HDRS
585586
symbology-ng/qgsrendererv2registry.h
586587
symbology-ng/qgsrulebasedrendererv2.h
587588
symbology-ng/qgssinglesymbolrendererv2.h
589+
symbology-ng/qgsinvertedpolygonrenderer.h
588590
symbology-ng/qgsstylev2.h
589591
symbology-ng/qgssvgcache.h
590592
symbology-ng/qgssymbollayerv2.h

0 commit comments

Comments
 (0)