QGIS API Documentation  2.4.0-Chugiak
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
qgsgraduatedsymbolrendererv2.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsgraduatedsymbolrendererv2.h
3  ---------------------
4  begin : November 2009
5  copyright : (C) 2009 by Martin Dobias
6  email : wonder dot sk at gmail dot com
7  ***************************************************************************
8  * *
9  * This program is free software; you can redistribute it and/or modify *
10  * it under the terms of the GNU General Public License as published by *
11  * the Free Software Foundation; either version 2 of the License, or *
12  * (at your option) any later version. *
13  * *
14  ***************************************************************************/
15 #ifndef QGSGRADUATEDSYMBOLRENDERERV2_H
16 #define QGSGRADUATEDSYMBOLRENDERERV2_H
17 
18 #include "qgssymbolv2.h"
19 #include "qgsrendererv2.h"
20 #include "qgsexpression.h"
21 #include <QScopedPointer>
22 
23 class CORE_EXPORT QgsRendererRangeV2
24 {
25  public:
27  QgsRendererRangeV2( double lowerValue, double upperValue, QgsSymbolV2* symbol, QString label );
28  QgsRendererRangeV2( const QgsRendererRangeV2& range );
29 
30  // default dtor is ok
31  QgsRendererRangeV2& operator=( QgsRendererRangeV2 range );
32 
33  double lowerValue() const;
34  double upperValue() const;
35 
36  QgsSymbolV2* symbol() const;
37  QString label() const;
38 
39  void setSymbol( QgsSymbolV2* s );
40  void setLabel( QString label );
41  void setLowerValue( double lowerValue );
42  void setUpperValue( double upperValue );
43 
44  // debugging
45  QString dump() const;
46 
47  void toSld( QDomDocument& doc, QDomElement &element, QgsStringMap props ) const;
48 
49  protected:
50  double mLowerValue, mUpperValue;
51  QScopedPointer<QgsSymbolV2> mSymbol;
52  QString mLabel;
53 
54  // for cpy+swap idiom
55  void swap( QgsRendererRangeV2 & other );
56 };
57 
58 typedef QList<QgsRendererRangeV2> QgsRangeList;
59 
60 class QgsVectorLayer;
62 
64 {
65  public:
66  QgsGraduatedSymbolRendererV2( QString attrName = QString(), QgsRangeList ranges = QgsRangeList() );
68 
70 
71  virtual QgsSymbolV2* symbolForFeature( QgsFeature& feature );
72 
73  virtual void startRender( QgsRenderContext& context, const QgsFields& fields );
74 
75  virtual void stopRender( QgsRenderContext& context );
76 
77  virtual QList<QString> usedAttributes();
78 
79  virtual QString dump() const;
80 
81  virtual QgsFeatureRendererV2* clone();
82 
83  virtual void toSld( QDomDocument& doc, QDomElement &element ) const;
84 
87  virtual int capabilities() { return SymbolLevels | RotationField | Filter; }
88 
89  virtual QgsSymbolV2List symbols();
90 
91  QString classAttribute() const { return mAttrName; }
92  void setClassAttribute( QString attr ) { mAttrName = attr; }
93 
94  const QgsRangeList& ranges() { return mRanges; }
95 
96  bool updateRangeSymbol( int rangeIndex, QgsSymbolV2* symbol );
97  bool updateRangeLabel( int rangeIndex, QString label );
98  bool updateRangeUpperValue( int rangeIndex, double value );
99  bool updateRangeLowerValue( int rangeIndex, double value );
100 
101  void addClass( QgsSymbolV2* symbol );
103  void addClass( QgsRendererRangeV2 range );
104  void deleteClass( int idx );
105  void deleteAllClasses();
106 
108  void moveClass( int from, int to );
109 
110  void sortByValue( Qt::SortOrder order = Qt::AscendingOrder );
111  void sortByLabel( Qt::SortOrder order = Qt::AscendingOrder );
112 
113  enum Mode
114  {
120  Custom
121  };
122 
123  Mode mode() const { return mMode; }
124  void setMode( Mode mode ) { mMode = mode; }
125 
126  static QgsGraduatedSymbolRendererV2* createRenderer(
127  QgsVectorLayer* vlayer,
128  QString attrName,
129  int classes,
130  Mode mode,
131  QgsSymbolV2* symbol,
132  QgsVectorColorRampV2* ramp,
133  bool inverted = false );
134 
136  static QgsFeatureRendererV2* create( QDomElement& element );
137 
139  virtual QDomElement save( QDomDocument& doc );
140 
142  virtual QgsLegendSymbologyList legendSymbologyItems( QSize iconSize );
143 
147  virtual QgsLegendSymbolList legendSymbolItems( double scaleDenominator = -1, QString rule = QString() );
148 
149  QgsSymbolV2* sourceSymbol();
150  void setSourceSymbol( QgsSymbolV2* sym );
151 
152  QgsVectorColorRampV2* sourceColorRamp();
153  void setSourceColorRamp( QgsVectorColorRampV2* ramp );
155  bool invertedColorRamp() { return mInvertedColorRamp; }
156  void setInvertedColorRamp( bool inverted ) { mInvertedColorRamp = inverted; }
157 
161  void updateColorRamp( QgsVectorColorRampV2* ramp, bool inverted = false );
162 
164  void updateSymbols( QgsSymbolV2* sym );
165 
167  void setRotationField( QString fieldOrExpression );
169  QString rotationField() const;
170 
172  void setSizeScaleField( QString fieldOrExpression );
174  QString sizeScaleField() const;
175 
177  void setScaleMethod( QgsSymbolV2::ScaleMethod scaleMethod );
179  QgsSymbolV2::ScaleMethod scaleMethod() const { return mScaleMethod; }
180 
181 
182  protected:
183  QString mAttrName;
186  QScopedPointer<QgsSymbolV2> mSourceSymbol;
187  QScopedPointer<QgsVectorColorRampV2> mSourceColorRamp;
189  QScopedPointer<QgsExpression> mRotation;
190  QScopedPointer<QgsExpression> mSizeScale;
192  QScopedPointer<QgsExpression> mExpression;
194  int mAttrNum;
195 
197  QHash<QgsSymbolV2*, QgsSymbolV2*> mTempSymbols;
198 
199  QgsSymbolV2* symbolForValue( double value );
200 
201 };
202 
203 #endif // QGSGRADUATEDSYMBOLRENDERERV2_H
QList< QgsRendererRangeV2 > QgsRangeList
virtual void setRotationField(QString fieldName)
sets rotation field of renderer (if supported by the renderer)
QList< QgsSymbolV2 * > QgsSymbolV2List
Definition: qgsrendererv2.h:37
QScopedPointer< QgsVectorColorRampV2 > mSourceColorRamp
virtual QString dump() const
for debugging
virtual QDomElement save(QDomDocument &doc)
store renderer info to XML element
virtual QgsLegendSymbolList legendSymbolItems(double scaleDenominator=-1, QString rule="")
return a list of item text / symbol
Container of fields for a vector layer.
Definition: qgsfield.h:161
QHash< QgsSymbolV2 *, QgsSymbolV2 * > mTempSymbols
temporary symbols, used for data-defined rotation and scaling
virtual QList< QString > usedAttributes()=0
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
Definition: qgsfeature.h:113
QMap< QString, QString > QgsStringMap
Definition: qgis.h:416
virtual QgsLegendSymbologyList legendSymbologyItems(QSize iconSize)
return a list of symbology items for the legend
virtual void startRender(QgsRenderContext &context, const QgsFields &fields)=0
virtual void stopRender(QgsRenderContext &context)=0
virtual QString rotationField() const
return rotation field name (or empty string if not set or not supported by renderer) ...
QScopedPointer< QgsSymbolV2 > mSymbol
virtual QgsSymbolV2List symbols()=0
for symbol levels
QScopedPointer< QgsExpression > mExpression
virtual QgsFeatureRendererV2 * clone()=0
QgsSymbolV2::ScaleMethod scaleMethod() const
virtual int capabilities()
returns bitwise OR-ed capabilities of the renderer
QList< QPair< QString, QPixmap > > QgsLegendSymbologyList
virtual void toSld(QDomDocument &doc, QDomElement &element) const
used from subclasses to create SLD Rule elements following SLD v1.1 specs
Contains information about the context of a rendering operation.
int mAttrNum
attribute index (derived from attribute name in startRender)
QScopedPointer< QgsSymbolV2 > mSourceSymbol
QScopedPointer< QgsExpression > mRotation
QScopedPointer< QgsExpression > mSizeScale
Represents a vector layer which manages a vector based data sets.
QList< QPair< QString, QgsSymbolV2 * > > QgsLegendSymbolList
Definition: qgsrendererv2.h:41
virtual QgsSymbolV2 * symbolForFeature(QgsFeature &feature)=0
to be overridden