QGIS API Documentation 3.43.0-Master (a6cade80589)
qgsgraduatedsymbolrenderer.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsgraduatedsymbolrenderer.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 QGSGRADUATEDSYMBOLRENDERER_H
16#define QGSGRADUATEDSYMBOLRENDERER_H
17
18#include "qgis_core.h"
19#include "qgis_sip.h"
20#include "qgis.h"
21#include "qgsrenderer.h"
22#include "qgsrendererrange.h"
24
25class QgsVectorLayer;
26class QgsColorRamp;
28class QgsSymbol;
29class QgsExpression;
30
37{
38 public:
39
40 QgsGraduatedSymbolRenderer( const QString &attrName = QString(), const QgsRangeList &ranges = QgsRangeList() );
41
43
44 Qgis::FeatureRendererFlags flags() const override;
45 QgsSymbol *symbolForFeature( const QgsFeature &feature, QgsRenderContext &context ) const override;
46 QgsSymbol *originalSymbolForFeature( const QgsFeature &feature, QgsRenderContext &context ) const override;
47 void startRender( QgsRenderContext &context, const QgsFields &fields ) override;
48 void stopRender( QgsRenderContext &context ) override;
49 QSet<QString> usedAttributes( const QgsRenderContext &context ) const override;
50 bool filterNeedsGeometry() const override;
51 QString dump() const override;
53 Q_DECL_DEPRECATED void toSld( QDomDocument &doc, QDomElement &element, const QVariantMap &props = QVariantMap() ) const override SIP_DEPRECATED;
54 bool toSld( QDomDocument &doc, QDomElement &element, QgsSldExportContext &context ) const override;
55 QgsFeatureRenderer::Capabilities capabilities() override { return SymbolLevels | Filter; }
56 QgsSymbolList symbols( QgsRenderContext &context ) const override;
57 bool accept( QgsStyleEntityVisitorInterface *visitor ) const override;
58
64 QString classAttribute() const { return mAttrName; }
65
71 void setClassAttribute( const QString &attr ) { mAttrName = attr; }
72
76 const QgsRangeList &ranges() const { return mRanges; }
77
78 bool updateRangeSymbol( int rangeIndex, QgsSymbol *symbol SIP_TRANSFER );
79 bool updateRangeLabel( int rangeIndex, const QString &label );
80 bool updateRangeUpperValue( int rangeIndex, double value );
81 bool updateRangeLowerValue( int rangeIndex, double value );
82 bool updateRangeRenderState( int rangeIndex, bool render );
83
87 void addClass( QgsSymbol *symbol );
88
92 void addClass( const QgsRendererRange &range ) SIP_PYNAME( addClassRange );
93
97 void addClass( double lower, double upper ) SIP_PYNAME( addClassLowerUpper );
98
106 void addBreak( double breakValue, bool updateSymbols = true );
107
108 void deleteClass( int idx );
109 void deleteAllClasses();
110
112 void moveClass( int from, int to );
113
118 bool rangesOverlap() const;
119
124 bool rangesHaveGaps() const;
125
126 void sortByValue( Qt::SortOrder order = Qt::AscendingOrder );
127 void sortByLabel( Qt::SortOrder order = Qt::AscendingOrder );
128
133 QgsClassificationMethod *classificationMethod() const;
134
140 void setClassificationMethod( QgsClassificationMethod *method SIP_TRANSFER );
141
155 // TODO QGIS 4: remove
156 // this could not be tagged with Q_DECL_DEPRECATED due to Doxygen warning
157 // might be fixed in newer Doxygen (does not on 1.8.13, might be ok on 1.8.16)
158
159
161 Q_DECL_DEPRECATED Mode mode() const SIP_DEPRECATED { return modeFromMethodId( mClassificationMethod->id() ); }
163 Q_DECL_DEPRECATED void setMode( Mode mode ) SIP_DEPRECATED;
164
170 Q_DECL_DEPRECATED bool useSymmetricMode() const SIP_DEPRECATED { return mClassificationMethod->symmetricModeEnabled(); }
171
177 Q_DECL_DEPRECATED void setUseSymmetricMode( bool useSymmetricMode ) SIP_DEPRECATED;
178
184 Q_DECL_DEPRECATED double symmetryPoint() const SIP_DEPRECATED { return mClassificationMethod->symmetryPoint(); }
185
191 Q_DECL_DEPRECATED void setSymmetryPoint( double symmetryPoint ) SIP_DEPRECATED;
192
193
199 Q_DECL_DEPRECATED bool astride() const SIP_DEPRECATED { return mClassificationMethod->symmetryAstride(); }
200
206 Q_DECL_DEPRECATED void setAstride( bool astride ) SIP_DEPRECATED;
207
217 Q_DECL_DEPRECATED static void makeBreaksSymmetric( QList<double> &breaks SIP_INOUT, double symmetryPoint, bool astride ) SIP_DEPRECATED;
218
229 Q_DECL_DEPRECATED static QList<double> calcEqualIntervalBreaks( double minimum, double maximum, int classes, bool useSymmetricMode, double symmetryPoint, bool astride ) SIP_DEPRECATED;
230
241 Q_DECL_DEPRECATED void updateClasses( QgsVectorLayer *vlayer, Mode mode, int nclasses, bool useSymmetricMode = false, double symmetryPoint = 0.0, bool astride = false ) SIP_DEPRECATED;
242
249 void updateClasses( const QgsVectorLayer *vl, int nclasses, QString &error SIP_OUT );
250
252
257 Q_DECL_DEPRECATED QgsRendererRangeLabelFormat labelFormat() const SIP_DEPRECATED;
258
265 Q_DECL_DEPRECATED void setLabelFormat( const QgsRendererRangeLabelFormat &labelFormat, bool updateRanges = false ) SIP_DEPRECATED;
266
268
273 void calculateLabelPrecision( bool updateRanges = true );
274
276
293 Q_DECL_DEPRECATED static QgsGraduatedSymbolRenderer *createRenderer( QgsVectorLayer *vlayer,
294 const QString &attrName,
295 int classes,
296 Mode mode,
297 QgsSymbol *symbol SIP_TRANSFER,
300 bool useSymmetricMode = false,
301 double symmetryPoint = 0.0,
302 const QStringList &listForCboPrettyBreaks = QStringList(),
303 bool astride = false ) SIP_DEPRECATED;
305
307 static QgsFeatureRenderer *create( QDomElement &element, const QgsReadWriteContext &context ) SIP_FACTORY;
308
309 QDomElement save( QDomDocument &doc, const QgsReadWriteContext &context ) override;
310 QgsLegendSymbolList legendSymbolItems() const override;
311 QSet< QString > legendKeysForFeature( const QgsFeature &feature, QgsRenderContext &context ) const override;
312 QString legendKeyToExpression( const QString &key, QgsVectorLayer *layer, bool &ok ) const override;
313
320 QgsSymbol *sourceSymbol();
321
329 const QgsSymbol *sourceSymbol() const SIP_SKIP;
330
338 void setSourceSymbol( QgsSymbol *sym SIP_TRANSFER );
339
345 QgsColorRamp *sourceColorRamp();
346
353 const QgsColorRamp *sourceColorRamp() const SIP_SKIP;
354
359 void setSourceColorRamp( QgsColorRamp *ramp SIP_TRANSFER );
360
366 void updateColorRamp( QgsColorRamp *ramp SIP_TRANSFER = nullptr );
367
374 void updateSymbols( QgsSymbol *sym );
375
380 void setSymbolSizes( double minSize, double maxSize );
381
385 double minSymbolSize() const;
386
390 double maxSymbolSize() const;
391
397 Qgis::GraduatedMethod graduatedMethod() const { return mGraduatedMethod; }
398
404 void setGraduatedMethod( Qgis::GraduatedMethod method ) { mGraduatedMethod = method; }
405
406 bool legendSymbolItemsCheckable() const override;
407 bool legendSymbolItemChecked( const QString &key ) override;
408 void checkLegendSymbolItem( const QString &key, bool state = true ) override;
409 void setLegendSymbolItem( const QString &key, QgsSymbol *symbol SIP_TRANSFER ) override;
410 QString legendClassificationAttribute() const override { return classAttribute(); }
411
416 static QgsGraduatedSymbolRenderer *convertFromRenderer( const QgsFeatureRenderer *renderer ) SIP_FACTORY;
417
427 void setDataDefinedSizeLegend( QgsDataDefinedSizeLegend *settings SIP_TRANSFER );
428
433 QgsDataDefinedSizeLegend *dataDefinedSizeLegend() const;
434
439 void updateRangeLabels();
440
447 const QgsRendererRange *rangeForValue( double value ) const;
448
449 protected:
450 QString mAttrName;
452 std::unique_ptr<QgsSymbol> mSourceSymbol;
453 std::unique_ptr<QgsColorRamp> mSourceColorRamp;
454
455 std::unique_ptr<QgsExpression> mExpression;
458
459 int mAttrNum = -1;
460 bool mCounting = false;
461
462 std::unique_ptr<QgsDataDefinedSizeLegend> mDataDefinedSizeLegend;
463
467 QgsSymbol *symbolForValue( double value ) const;
468
472 QString legendKeyForValue( double value ) const;
473
475 static QString graduatedMethodStr( Qgis::GraduatedMethod method ) SIP_SKIP;
476
477 std::shared_ptr<QgsClassificationMethod> mClassificationMethod;
478
479 private:
480
484 QVariant valueForFeature( const QgsFeature &feature, QgsRenderContext &context ) const;
485
487 QgsLegendSymbolList baseLegendSymbolItems() const;
488
489 // TODO QGIS 4: remove
491 static QString methodIdFromMode( QgsGraduatedSymbolRenderer::Mode mode );
492 static QgsGraduatedSymbolRenderer::Mode modeFromMethodId( const QString &methodId );
494
495#ifdef SIP_RUN
498#endif
499
500 friend class TestQgsGraduatedSymbolRenderer;
501
502};
503
504#endif // QGSGRADUATEDSYMBOLRENDERER_H
Provides global constants and enumerations for use throughout the application.
Definition qgis.h:54
QFlags< FeatureRendererFlag > FeatureRendererFlags
Flags controlling behavior of vector feature renderers.
Definition qgis.h:802
GraduatedMethod
Methods for modifying symbols by range in a graduated symbol renderer.
Definition qgis.h:3200
@ Color
Alter color of symbols.
An abstract class for implementations of classification methods.
Abstract base class for color ramps.
Object that keeps configuration of appearance of marker symbol's data-defined size in legend.
Handles parsing and evaluation of expressions (formerly called "search strings").
Abstract base class for all 2D vector feature renderers.
virtual bool legendSymbolItemsCheckable() const
Returns true if symbology items in legend are checkable.
virtual bool legendSymbolItemChecked(const QString &key)
Returns true if the legend symbology item with the specified key is checked.
virtual void setLegendSymbolItem(const QString &key, QgsSymbol *symbol)
Sets the symbol to be used for a legend symbol item.
virtual QgsSymbolList symbols(QgsRenderContext &context) const
Returns list of symbols used by the renderer.
virtual Qgis::FeatureRendererFlags flags() const
Returns flags associated with the renderer.
virtual void stopRender(QgsRenderContext &context)
Must be called when a render cycle has finished, to allow the renderer to clean up.
QFlags< Capability > Capabilities
virtual QString dump() const
Returns debug information about this renderer.
virtual QSet< QString > usedAttributes(const QgsRenderContext &context) const =0
Returns a list of attributes required by this renderer.
virtual QgsSymbol * symbolForFeature(const QgsFeature &feature, QgsRenderContext &context) const =0
To be overridden.
virtual void checkLegendSymbolItem(const QString &key, bool state=true)
Sets whether the legend symbology item with the specified ley should be checked.
@ Filter
Features may be filtered, i.e. some features may not be rendered (categorized, rule based ....
virtual bool filterNeedsGeometry() const
Returns true if this renderer requires the geometry to apply the filter.
virtual Q_DECL_DEPRECATED void toSld(QDomDocument &doc, QDomElement &element, const QVariantMap &props=QVariantMap()) const
Used from subclasses to create SLD Rule elements following SLD v1.1 specs.
virtual bool accept(QgsStyleEntityVisitorInterface *visitor) const
Accepts the specified symbology visitor, causing it to visit all symbols associated with the renderer...
virtual QgsSymbol * originalSymbolForFeature(const QgsFeature &feature, QgsRenderContext &context) const
Returns symbol for feature.
virtual void startRender(QgsRenderContext &context, const QgsFields &fields)
Must be called when a new render cycle is started.
virtual QgsFeatureRenderer * clone() const =0
Create a deep copy of this renderer.
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Definition qgsfeature.h:58
Container of fields for a vector layer.
Definition qgsfields.h:46
A vector feature renderer which uses numeric attributes to classify features into different ranges.
QString legendClassificationAttribute() const override
If supported by the renderer, return classification attribute for the use in legend.
std::unique_ptr< QgsDataDefinedSizeLegend > mDataDefinedSizeLegend
Q_DECL_DEPRECATED bool useSymmetricMode() const
Returns if we want to classify symmetric around a given value.
std::unique_ptr< QgsSymbol > mSourceSymbol
void setGraduatedMethod(Qgis::GraduatedMethod method)
Set the method used for graduation (either size or color).
std::shared_ptr< QgsClassificationMethod > mClassificationMethod
Q_DECL_DEPRECATED bool astride() const
Returns if we want to have a central class astride the pivot value.
QgsFeatureRenderer::Capabilities capabilities() override
Returns details about internals of this renderer.
QString classAttribute() const
Returns the attribute name (or expression) used for the classification.
std::unique_ptr< QgsColorRamp > mSourceColorRamp
Q_DECL_DEPRECATED Mode mode() const
void setClassAttribute(const QString &attr)
Sets the attribute name (or expression) used for the classification.
std::unique_ptr< QgsExpression > mExpression
const QgsRangeList & ranges() const
Returns a list of all ranges used in the classification.
Q_DECL_DEPRECATED double symmetryPoint() const
Returns the pivot value for symmetric classification.
A container for the context for various read/write operations on objects.
Contains information about the context of a rendering operation.
Encapsulates the formatting for a QgsRendererRange label.
Represents a value range for a QgsGraduatedSymbolRenderer.
Holds SLD export options and other information related to SLD export of a QGIS layer style.
An interface for classes which can visit style entity (e.g.
Abstract base class for all rendered symbols.
Definition qgssymbol.h:231
Represents a vector layer which manages a vector based dataset.
#define Q_NOWARN_DEPRECATED_POP
Definition qgis.h:6835
#define Q_NOWARN_DEPRECATED_PUSH
Definition qgis.h:6834
#define SIP_DEPRECATED
Definition qgis_sip.h:106
#define SIP_SKIP
Definition qgis_sip.h:126
#define SIP_PYNAME(name)
Definition qgis_sip.h:81
#define SIP_TRANSFER
Definition qgis_sip.h:36
#define SIP_OUT
Definition qgis_sip.h:58
#define SIP_FACTORY
Definition qgis_sip.h:76
#define SIP_INOUT
Definition qgis_sip.h:71
QList< QgsLegendSymbolItem > QgsLegendSymbolList
QList< QgsSymbol * > QgsSymbolList
Definition qgsrenderer.h:48
QList< QgsRendererRange > QgsRangeList