Quantum GIS API Documentation
1.7.4
|
00001 #ifndef QGSGRADUATEDSYMBOLRENDERERV2_H 00002 #define QGSGRADUATEDSYMBOLRENDERERV2_H 00003 00004 #include "qgsrendererv2.h" 00005 00006 class CORE_EXPORT QgsRendererRangeV2 00007 { 00008 public: 00009 QgsRendererRangeV2( double lowerValue, double upperValue, QgsSymbolV2* symbol, QString label ); 00010 QgsRendererRangeV2( const QgsRendererRangeV2& range ); 00011 00012 ~QgsRendererRangeV2(); 00013 00014 double lowerValue() const; 00015 double upperValue() const; 00016 00017 QgsSymbolV2* symbol() const; 00018 QString label() const; 00019 00020 void setSymbol( QgsSymbolV2* s ); 00021 void setLabel( QString label ); 00022 void setLowerValue( double lowerValue ); 00023 void setUpperValue( double upperValue ); 00024 00025 // debugging 00026 QString dump(); 00027 00028 protected: 00029 double mLowerValue, mUpperValue; 00030 QgsSymbolV2* mSymbol; 00031 QString mLabel; 00032 }; 00033 00034 typedef QList<QgsRendererRangeV2> QgsRangeList; 00035 00036 class QgsVectorLayer; 00037 class QgsVectorColorRampV2; 00038 00039 class CORE_EXPORT QgsGraduatedSymbolRendererV2 : public QgsFeatureRendererV2 00040 { 00041 public: 00042 QgsGraduatedSymbolRendererV2( QString attrName = QString(), QgsRangeList ranges = QgsRangeList() ); 00043 00044 virtual ~QgsGraduatedSymbolRendererV2(); 00045 00046 virtual QgsSymbolV2* symbolForFeature( QgsFeature& feature ); 00047 00048 virtual void startRender( QgsRenderContext& context, const QgsVectorLayer *vlayer ); 00049 00050 virtual void stopRender( QgsRenderContext& context ); 00051 00052 virtual QList<QString> usedAttributes(); 00053 00054 virtual QString dump(); 00055 00056 virtual QgsFeatureRendererV2* clone(); 00057 00058 virtual QgsSymbolV2List symbols(); 00059 00060 QString classAttribute() const { return mAttrName; } 00061 void setClassAttribute( QString attr ) { mAttrName = attr; } 00062 00063 const QgsRangeList& ranges() { return mRanges; } 00064 00065 bool updateRangeSymbol( int rangeIndex, QgsSymbolV2* symbol ); 00066 bool updateRangeLabel( int rangeIndex, QString label ); 00067 bool updateRangeUpperValue( int rangeIndex, double value ); 00068 bool updateRangeLowerValue( int rangeIndex, double value ); 00069 00070 void addClass( QgsSymbolV2* symbol ); 00071 void deleteClass( int idx ); 00072 00073 enum Mode 00074 { 00075 EqualInterval, 00076 Quantile, 00077 Jenks, 00078 StdDev, 00079 Pretty, 00080 Custom 00081 }; 00082 00083 Mode mode() const { return mMode; } 00084 void setMode( Mode mode ) { mMode = mode; } 00085 00086 static QgsGraduatedSymbolRendererV2* createRenderer( 00087 QgsVectorLayer* vlayer, 00088 QString attrName, 00089 int classes, 00090 Mode mode, 00091 QgsSymbolV2* symbol, 00092 QgsVectorColorRampV2* ramp ); 00093 00095 static QgsFeatureRendererV2* create( QDomElement& element ); 00096 00098 virtual QDomElement save( QDomDocument& doc ); 00099 00101 virtual QgsLegendSymbologyList legendSymbologyItems( QSize iconSize ); 00102 00105 virtual QgsLegendSymbolList legendSymbolItems(); 00106 00107 QgsSymbolV2* sourceSymbol(); 00108 void setSourceSymbol( QgsSymbolV2* sym ); 00109 00110 QgsVectorColorRampV2* sourceColorRamp(); 00111 void setSourceColorRamp( QgsVectorColorRampV2* ramp ); 00112 00114 void setRotationField( QString fieldName ) { mRotationField = fieldName; } 00116 QString rotationField() const { return mRotationField; } 00117 00119 void setSizeScaleField( QString fieldName ) { mSizeScaleField = fieldName; } 00121 QString sizeScaleField() const { return mSizeScaleField; } 00122 00123 protected: 00124 QString mAttrName; 00125 QgsRangeList mRanges; 00126 Mode mMode; 00127 QgsSymbolV2* mSourceSymbol; 00128 QgsVectorColorRampV2* mSourceColorRamp; 00129 QString mRotationField; 00130 QString mSizeScaleField; 00131 00133 int mAttrNum; 00134 int mRotationFieldIdx, mSizeScaleFieldIdx; 00135 00137 #if QT_VERSION < 0x40600 00138 QMap<QgsSymbolV2*, QgsSymbolV2*> mTempSymbols; 00139 #else 00140 QHash<QgsSymbolV2*, QgsSymbolV2*> mTempSymbols; 00141 #endif 00142 00143 QgsSymbolV2* symbolForValue( double value ); 00144 }; 00145 00146 #endif // QGSGRADUATEDSYMBOLRENDERERV2_H