2
#ifndef QGSRENDERERV2_H
3
#define QGSRENDERERV2_H
17
class QgsRenderContext;
21
typedef QList<QgsSymbolV2*> QgsSymbolV2List;
22
typedef QMap<QString, QgsSymbolV2* > QgsSymbolV2Map;
24
typedef QList< QPair<QString, QPixmap> > QgsLegendSymbologyList;
26
#define RENDERER_TAG_NAME "renderer-v2"
31
class CORE_EXPORT QgsSymbolV2LevelItem
34
QgsSymbolV2LevelItem( QgsSymbolV2* symbol, int layer ) : mSymbol( symbol ), mLayer( layer ) {}
35
QgsSymbolV2* symbol() { return mSymbol; }
36
int layer() { return mLayer; }
42
// every level has list of items: symbol + symbol layer num
43
typedef QList< QgsSymbolV2LevelItem > QgsSymbolV2Level;
45
// this is a list of levels
46
typedef QList< QgsSymbolV2Level > QgsSymbolV2LevelOrder;
52
class CORE_EXPORT QgsFeatureRendererV2
55
// renderer takes ownership of its symbols!
57
//! return a new renderer - used by default in vector layers
58
static QgsFeatureRendererV2* defaultRenderer( QGis::GeometryType geomType );
60
QString type() const { return mType; }
63
virtual QgsSymbolV2* symbolForFeature( QgsFeature& feature ) = 0;
65
virtual void startRender( QgsRenderContext& context, const QgsVectorLayer *vlayer ) = 0;
67
virtual void stopRender( QgsRenderContext& context ) = 0;
69
virtual QList<QString> usedAttributes() = 0;
71
virtual ~QgsFeatureRendererV2() {}
73
virtual QgsFeatureRendererV2* clone() = 0;
75
void renderFeature( QgsFeature& feature, QgsRenderContext& context, int layer = -1, bool drawVertexMarker = false );
78
virtual QString dump();
81
virtual QgsSymbolV2List symbols() = 0;
83
bool usingSymbolLevels() const { return mUsingSymbolLevels; }
84
void setUsingSymbolLevels( bool usingSymbolLevels ) { mUsingSymbolLevels = usingSymbolLevels; }
86
//! create a renderer from XML element
87
static QgsFeatureRendererV2* load( QDomElement& symbologyElem );
89
//! store renderer info to XML element
90
virtual QDomElement save( QDomDocument& doc );
92
//! return a list of symbology items for the legend
93
virtual QgsLegendSymbologyList legendSymbologyItems( QSize iconSize );
95
//! set type and size of editing vertex markers for subsequent rendering
96
void setVertexMarkerAppearance( int type, int size );
99
QgsFeatureRendererV2( QString type );
101
//! render editing vertex marker at specified point
102
void renderVertexMarker( QPointF& pt, QgsRenderContext& context );
103
//! render editing vertex marker for a polyline
104
void renderVertexMarkerPolyline( QPolygonF& pts, QgsRenderContext& context );
105
//! render editing vertex marker for a polygon
106
void renderVertexMarkerPolygon( QPolygonF& pts, QList<QPolygonF>* rings, QgsRenderContext& context );
110
bool mUsingSymbolLevels;
112
/** The current type of editing marker */
113
int mCurrentVertexMarkerType;
114
/** The current size of editing marker */
115
int mCurrentVertexMarkerSize;