Quantum GIS API Documentation  1.7.4
src/core/symbology-ng/qgsgraduatedsymbolrendererv2.h
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines