|
QGIS API Documentation
master-3f58142
|
00001 /*************************************************************************** 00002 qgsgraduatedsymbolrendererv2.h 00003 --------------------- 00004 begin : November 2009 00005 copyright : (C) 2009 by Martin Dobias 00006 email : wonder dot sk at gmail dot com 00007 *************************************************************************** 00008 * * 00009 * This program is free software; you can redistribute it and/or modify * 00010 * it under the terms of the GNU General Public License as published by * 00011 * the Free Software Foundation; either version 2 of the License, or * 00012 * (at your option) any later version. * 00013 * * 00014 ***************************************************************************/ 00015 #ifndef QGSGRADUATEDSYMBOLRENDERERV2_H 00016 #define QGSGRADUATEDSYMBOLRENDERERV2_H 00017 00018 #include "qgssymbolv2.h" 00019 #include "qgsrendererv2.h" 00020 00021 class CORE_EXPORT QgsRendererRangeV2 00022 { 00023 public: 00024 QgsRendererRangeV2(); 00025 QgsRendererRangeV2( double lowerValue, double upperValue, QgsSymbolV2* symbol, QString label ); 00026 QgsRendererRangeV2( const QgsRendererRangeV2& range ); 00027 00028 ~QgsRendererRangeV2(); 00029 00030 QgsRendererRangeV2& operator=( const QgsRendererRangeV2& range ); 00031 00032 double lowerValue() const; 00033 double upperValue() const; 00034 00035 QgsSymbolV2* symbol() const; 00036 QString label() const; 00037 00038 void setSymbol( QgsSymbolV2* s ); 00039 void setLabel( QString label ); 00040 void setLowerValue( double lowerValue ); 00041 void setUpperValue( double upperValue ); 00042 00043 // debugging 00044 QString dump(); 00045 00046 void toSld( QDomDocument& doc, QDomElement &element, QgsStringMap props ) const; 00047 00048 protected: 00049 double mLowerValue, mUpperValue; 00050 QgsSymbolV2* mSymbol; 00051 QString mLabel; 00052 }; 00053 00054 typedef QList<QgsRendererRangeV2> QgsRangeList; 00055 00056 class QgsVectorLayer; 00057 class QgsVectorColorRampV2; 00058 00059 class CORE_EXPORT QgsGraduatedSymbolRendererV2 : public QgsFeatureRendererV2 00060 { 00061 public: 00062 QgsGraduatedSymbolRendererV2( QString attrName = QString(), QgsRangeList ranges = QgsRangeList() ); 00063 00064 virtual ~QgsGraduatedSymbolRendererV2(); 00065 00066 virtual QgsSymbolV2* symbolForFeature( QgsFeature& feature ); 00067 00068 virtual void startRender( QgsRenderContext& context, const QgsVectorLayer *vlayer ); 00069 00070 virtual void stopRender( QgsRenderContext& context ); 00071 00072 virtual QList<QString> usedAttributes(); 00073 00074 virtual QString dump(); 00075 00076 virtual QgsFeatureRendererV2* clone(); 00077 00078 virtual void toSld( QDomDocument& doc, QDomElement &element ) const; 00079 00082 virtual int capabilities() { return SymbolLevels | RotationField | Filter; } 00083 00084 virtual QgsSymbolV2List symbols(); 00085 00086 QString classAttribute() const { return mAttrName; } 00087 void setClassAttribute( QString attr ) { mAttrName = attr; } 00088 00089 const QgsRangeList& ranges() { return mRanges; } 00090 00091 bool updateRangeSymbol( int rangeIndex, QgsSymbolV2* symbol ); 00092 bool updateRangeLabel( int rangeIndex, QString label ); 00093 bool updateRangeUpperValue( int rangeIndex, double value ); 00094 bool updateRangeLowerValue( int rangeIndex, double value ); 00095 00096 void addClass( QgsSymbolV2* symbol ); 00097 void deleteClass( int idx ); 00098 void deleteAllClasses(); 00099 00101 void moveClass( int from, int to ); 00102 00103 void sortByValue( Qt::SortOrder order = Qt::AscendingOrder ); 00104 void sortByLabel( Qt::SortOrder order = Qt::AscendingOrder ); 00105 00106 enum Mode 00107 { 00108 EqualInterval, 00109 Quantile, 00110 Jenks, 00111 StdDev, 00112 Pretty, 00113 Custom 00114 }; 00115 00116 Mode mode() const { return mMode; } 00117 void setMode( Mode mode ) { mMode = mode; } 00118 00119 static QgsGraduatedSymbolRendererV2* createRenderer( 00120 QgsVectorLayer* vlayer, 00121 QString attrName, 00122 int classes, 00123 Mode mode, 00124 QgsSymbolV2* symbol, 00125 QgsVectorColorRampV2* ramp ); 00126 00128 static QgsFeatureRendererV2* create( QDomElement& element ); 00129 00131 virtual QDomElement save( QDomDocument& doc ); 00132 00134 virtual QgsLegendSymbologyList legendSymbologyItems( QSize iconSize ); 00135 00139 virtual QgsLegendSymbolList legendSymbolItems(); 00140 00141 QgsSymbolV2* sourceSymbol(); 00142 void setSourceSymbol( QgsSymbolV2* sym ); 00143 00144 QgsVectorColorRampV2* sourceColorRamp(); 00145 void setSourceColorRamp( QgsVectorColorRampV2* ramp ); 00146 00150 void updateColorRamp( QgsVectorColorRampV2* ramp ); 00151 00153 void updateSymbols( QgsSymbolV2* sym ); 00154 00156 void setRotationField( QString fieldName ) { mRotationField = fieldName; } 00158 QString rotationField() const { return mRotationField; } 00159 00161 void setSizeScaleField( QString fieldName ) { mSizeScaleField = fieldName; } 00163 QString sizeScaleField() const { return mSizeScaleField; } 00164 00166 void setScaleMethod( QgsSymbolV2::ScaleMethod scaleMethod ); 00168 QgsSymbolV2::ScaleMethod scaleMethod() const { return mScaleMethod; } 00169 00170 00171 protected: 00172 QString mAttrName; 00173 QgsRangeList mRanges; 00174 Mode mMode; 00175 QgsSymbolV2* mSourceSymbol; 00176 QgsVectorColorRampV2* mSourceColorRamp; 00177 QString mRotationField; 00178 QString mSizeScaleField; 00179 QgsSymbolV2::ScaleMethod mScaleMethod; 00180 00182 int mAttrNum; 00183 int mRotationFieldIdx, mSizeScaleFieldIdx; 00184 00186 #if QT_VERSION < 0x40600 00187 QMap<QgsSymbolV2*, QgsSymbolV2*> mTempSymbols; 00188 #else 00189 QHash<QgsSymbolV2*, QgsSymbolV2*> mTempSymbols; 00190 #endif 00191 00192 QgsSymbolV2* symbolForValue( double value ); 00193 }; 00194 00195 #endif // QGSGRADUATEDSYMBOLRENDERERV2_H