Quantum GIS API Documentation  1.7.5-Wroclaw
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
qgscategorizedsymbolrendererv2.h
Go to the documentation of this file.
1 #ifndef QGSCATEGORIZEDSYMBOLRENDERERV2_H
2 #define QGSCATEGORIZEDSYMBOLRENDERERV2_H
3 
4 #include "qgsrendererv2.h"
5 
6 #include <QHash>
7 
9 class QgsVectorLayer;
10 
11 /* \brief categorized renderer */
12 class CORE_EXPORT QgsRendererCategoryV2
13 {
14  public:
15 
17  QgsRendererCategoryV2( QVariant value, QgsSymbolV2* symbol, QString label );
18 
21 
23 
24  QVariant value() const;
25  QgsSymbolV2* symbol() const;
26  QString label() const;
27 
28  void setValue( const QVariant &value );
29  void setSymbol( QgsSymbolV2* s );
30  void setLabel( const QString &label );
31 
32  // debugging
33  QString dump();
34 
35  protected:
36  QVariant mValue;
38  QString mLabel;
39 };
40 
41 typedef QList<QgsRendererCategoryV2> QgsCategoryList;
42 
44 {
45  public:
46 
47  QgsCategorizedSymbolRendererV2( QString attrName = QString(), QgsCategoryList categories = QgsCategoryList() );
48 
50 
51  virtual QgsSymbolV2* symbolForFeature( QgsFeature& feature );
52 
53  virtual void startRender( QgsRenderContext& context, const QgsVectorLayer *vlayer );
54 
55  virtual void stopRender( QgsRenderContext& context );
56 
57  virtual QList<QString> usedAttributes();
58 
59  virtual QString dump();
60 
61  virtual QgsFeatureRendererV2* clone();
62 
63  virtual QgsSymbolV2List symbols();
64 
65  const QgsCategoryList& categories() { return mCategories; }
66 
68  int categoryIndexForValue( QVariant val );
69 
70  bool updateCategoryValue( int catIndex, const QVariant &value );
71  bool updateCategorySymbol( int catIndex, QgsSymbolV2* symbol );
72  bool updateCategoryLabel( int catIndex, QString label );
73 
74  void addCategory( const QgsRendererCategoryV2 &category );
75  bool deleteCategory( int catIndex );
76  void deleteAllCategories();
77 
78  QString classAttribute() const { return mAttrName; }
79  void setClassAttribute( QString attr ) { mAttrName = attr; }
80 
82  static QgsFeatureRendererV2* create( QDomElement& element );
83 
85  virtual QDomElement save( QDomDocument& doc );
86 
88  virtual QgsLegendSymbologyList legendSymbologyItems( QSize iconSize );
89 
93 
94  QgsSymbolV2* sourceSymbol();
95  void setSourceSymbol( QgsSymbolV2* sym );
96 
97  QgsVectorColorRampV2* sourceColorRamp();
98  void setSourceColorRamp( QgsVectorColorRampV2* ramp );
99 
101  void setRotationField( QString fieldName ) { mRotationField = fieldName; }
103  QString rotationField() const { return mRotationField; }
104 
106  void setSizeScaleField( QString fieldName ) { mSizeScaleField = fieldName; }
108  QString sizeScaleField() const { return mSizeScaleField; }
109 
110  protected:
111  QString mAttrName;
115  QString mRotationField;
117 
119  int mAttrNum;
120  int mRotationFieldIdx, mSizeScaleFieldIdx;
121 
123  QHash<QString, QgsSymbolV2*> mSymbolHash;
124 
126  QHash<QString, QgsSymbolV2*> mTempSymbols;
127 
128  void rebuildHash();
129 
130  QgsSymbolV2* symbolForValue( QVariant value );
131 };
132 
133 
134 #endif // QGSCATEGORIZEDSYMBOLRENDERERV2_H