/
qgsgraduatedsymbolrendererv2.h
158 lines (116 loc) · 4.46 KB
/
qgsgraduatedsymbolrendererv2.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#ifndef QGSGRADUATEDSYMBOLRENDERERV2_H
#define QGSGRADUATEDSYMBOLRENDERERV2_H
#include "qgsrendererv2.h"
class CORE_EXPORT QgsRendererRangeV2
{
public:
QgsRendererRangeV2( double lowerValue, double upperValue, QgsSymbolV2* symbol, QString label );
QgsRendererRangeV2( const QgsRendererRangeV2& range );
~QgsRendererRangeV2();
double lowerValue() const;
double upperValue() const;
QgsSymbolV2* symbol() const;
QString label() const;
void setSymbol( QgsSymbolV2* s );
void setLabel( QString label );
void setLowerValue( double lowerValue );
void setUpperValue( double upperValue );
// debugging
QString dump();
protected:
double mLowerValue, mUpperValue;
QgsSymbolV2* mSymbol;
QString mLabel;
};
typedef QList<QgsRendererRangeV2> QgsRangeList;
class QgsVectorLayer;
class QgsVectorColorRampV2;
class CORE_EXPORT QgsGraduatedSymbolRendererV2 : public QgsFeatureRendererV2
{
public:
QgsGraduatedSymbolRendererV2( QString attrName = QString(), QgsRangeList ranges = QgsRangeList() );
virtual ~QgsGraduatedSymbolRendererV2();
virtual QgsSymbolV2* symbolForFeature( QgsFeature& feature );
virtual void startRender( QgsRenderContext& context, const QgsVectorLayer *vlayer );
virtual void stopRender( QgsRenderContext& context );
virtual QList<QString> usedAttributes();
virtual QString dump();
virtual QgsFeatureRendererV2* clone();
//! returns bitwise OR-ed capabilities of the renderer
//! \note added in 2.0
virtual int capabilities() { return SymbolLevels | RotationField; }
virtual QgsSymbolV2List symbols();
QString classAttribute() const { return mAttrName; }
void setClassAttribute( QString attr ) { mAttrName = attr; }
const QgsRangeList& ranges() { return mRanges; }
bool updateRangeSymbol( int rangeIndex, QgsSymbolV2* symbol );
bool updateRangeLabel( int rangeIndex, QString label );
bool updateRangeUpperValue( int rangeIndex, double value );
bool updateRangeLowerValue( int rangeIndex, double value );
void addClass( QgsSymbolV2* symbol );
void deleteClass( int idx );
enum Mode
{
EqualInterval,
Quantile,
Jenks,
StdDev,
Pretty,
Custom
};
Mode mode() const { return mMode; }
void setMode( Mode mode ) { mMode = mode; }
static QgsGraduatedSymbolRendererV2* createRenderer(
QgsVectorLayer* vlayer,
QString attrName,
int classes,
Mode mode,
QgsSymbolV2* symbol,
QgsVectorColorRampV2* ramp );
//! create renderer from XML element
static QgsFeatureRendererV2* create( QDomElement& element );
//! store renderer info to XML element
virtual QDomElement save( QDomDocument& doc );
//! return a list of symbology items for the legend
virtual QgsLegendSymbologyList legendSymbologyItems( QSize iconSize );
//! return a list of item text / symbol
//! @note: this method was added in version 1.5
virtual QgsLegendSymbolList legendSymbolItems();
QgsSymbolV2* sourceSymbol();
void setSourceSymbol( QgsSymbolV2* sym );
QgsVectorColorRampV2* sourceColorRamp();
void setSourceColorRamp( QgsVectorColorRampV2* ramp );
/** Update the color ramp used. Also updates all symbols colors.
* Doesn't alter current breaks.
*/
void updateColorRamp( QgsVectorColorRampV2* ramp );
/** Update the all symbols but leave breaks and colors. */
void updateSymbols( QgsSymbolV2* sym );
//! @note added in 1.6
void setRotationField( QString fieldName ) { mRotationField = fieldName; }
//! @note added in 1.6
QString rotationField() const { return mRotationField; }
//! @note added in 1.6
void setSizeScaleField( QString fieldName ) { mSizeScaleField = fieldName; }
//! @note added in 1.6
QString sizeScaleField() const { return mSizeScaleField; }
protected:
QString mAttrName;
QgsRangeList mRanges;
Mode mMode;
QgsSymbolV2* mSourceSymbol;
QgsVectorColorRampV2* mSourceColorRamp;
QString mRotationField;
QString mSizeScaleField;
//! attribute index (derived from attribute name in startRender)
int mAttrNum;
int mRotationFieldIdx, mSizeScaleFieldIdx;
//! temporary symbols, used for data-defined rotation and scaling
#if QT_VERSION < 0x40600
QMap<QgsSymbolV2*, QgsSymbolV2*> mTempSymbols;
#else
QHash<QgsSymbolV2*, QgsSymbolV2*> mTempSymbols;
#endif
QgsSymbolV2* symbolForValue( double value );
};
#endif // QGSGRADUATEDSYMBOLRENDERERV2_H