|
QGIS API Documentation 3.99.0-Master (d270888f95f)
|
Represents an individual rule for a rule-based renderer. More...
#include <qgsrulebasedrenderer.h>
Public Types | |
| enum | RenderResult { Filtered = 0 , Inactive , Rendered } |
| The result of rendering a rule. More... | |
Public Member Functions | |
| Rule (const Rule &rh)=delete | |
| Rule (QgsSymbol *symbol, int maximumScale=0, int minimumScale=0, const QString &filterExp=QString(), const QString &label=QString(), const QString &description=QString(), bool elseRule=false) | |
| Constructor takes ownership of the symbol. | |
| ~Rule () | |
| bool | accept (QgsStyleEntityVisitorInterface *visitor) const |
| Accepts the specified symbology visitor, causing it to visit all child rules associated with the rule. | |
| bool | active () const |
| Returns if this rule is active. | |
| void | appendChild (QgsRuleBasedRenderer::Rule *rule) |
| add child rule, take ownership, sets this as parent | |
| const QgsRuleBasedRenderer::RuleList & | children () const |
| Returns all children rules of this rule. | |
| QgsRuleBasedRenderer::Rule * | clone () const |
| clone this rule, return new instance | |
| QSet< int > | collectZLevels () |
| Gets all used z-levels from this rule and children. | |
| bool | dependsOnScale () const |
| QgsRuleBasedRenderer::RuleList | descendants () const |
| Returns all children, grand-children, grand-grand-children, grand-gra... you get it. | |
| QString | description () const |
| A human readable description for this rule. | |
| QString | dump (int indent=0) const |
| Dump for debug purpose. | |
| QgsExpression * | filter () const |
| A filter that will check if this rule applies. | |
| QString | filterExpression () const |
| A filter that will check if this rule applies. | |
| QgsRuleBasedRenderer::Rule * | findRuleByKey (const QString &key) |
| Try to find a rule given its unique key. | |
| bool | hasActiveChildren () const |
Returns true if the rule has any active children. | |
| void | insertChild (int i, QgsRuleBasedRenderer::Rule *rule) |
| add child rule, take ownership, sets this as parent | |
| bool | isElse () const |
| Check if this rule is an ELSE rule. | |
| bool | isFilterOK (const QgsFeature &f, QgsRenderContext *context=nullptr) const |
| Check if a given feature shall be rendered by this rule. | |
| bool | isScaleOK (double scale) const |
| Check if this rule applies for a given scale. | |
| QString | label () const |
| QSet< QString > | legendKeysForFeature (const QgsFeature &feature, QgsRenderContext *context=nullptr) |
| Returns which legend keys match the feature. | |
| QgsLegendSymbolList | legendSymbolItems (int currentLevel=-1) const |
| double | maximumScale () const |
| Returns the maximum map scale (i.e. | |
| double | minimumScale () const |
| Returns the minimum map scale (i.e. | |
| bool | needsGeometry () const |
Returns true if this rule or one of its children needs the geometry to be applied. | |
| Rule & | operator= (const Rule &rh)=delete |
| QgsRuleBasedRenderer::Rule * | parent () |
| The parent rule. | |
| void | removeChild (QgsRuleBasedRenderer::Rule *rule) |
| delete child rule | |
| void | removeChildAt (int i) |
| delete child rule | |
| QgsRuleBasedRenderer::Rule::RenderResult | renderFeature (QgsRuleBasedRenderer::FeatureToRender &featToRender, QgsRenderContext &context, QgsRuleBasedRenderer::RenderQueue &renderQueue) |
| Render a given feature, will recursively call subclasses and only render if the constraints apply. | |
| QString | ruleKey () const |
| Unique rule identifier (for identification of rule within renderer). | |
| QgsRuleBasedRenderer::RuleList | rulesForFeature (const QgsFeature &feature, QgsRenderContext *context=nullptr, bool onlyActive=true) |
| Returns the list of rules used to render the feature in a specific context. | |
| QDomElement | save (QDomDocument &doc, QgsSymbolMap &symbolMap) const |
| void | setActive (bool state) |
| Sets if this rule is active. | |
| void | setDescription (const QString &description) |
| Set a human readable description for this rule. | |
| void | setFilterExpression (const QString &filterExp) |
| Set the expression used to check if a given feature shall be rendered with this rule. | |
| void | setIsElse (bool iselse) |
| Sets if this rule is an ELSE rule. | |
| void | setLabel (const QString &label) |
| void | setMaximumScale (double scale) |
| Sets the maximum map scale (i.e. | |
| void | setMinimumScale (double scale) |
| Sets the minimum map scale (i.e. | |
| void | setNormZLevels (const QMap< int, int > &zLevelsToNormLevels) |
| assign normalized z-levels [0..N-1] for this rule's symbol for quick access during rendering | |
| void | setRuleKey (const QString &key) |
| Override the assigned rule key (should be used just internally by rule-based renderer). | |
| void | setSymbol (QgsSymbol *sym) |
Sets a new symbol (or nullptr). Deletes old symbol. | |
| bool | startRender (QgsRenderContext &context, const QgsFields &fields, QString &filter) |
| prepare the rule for rendering and its children (build active children array) | |
| void | stopRender (QgsRenderContext &context) |
| Stop a rendering process. | |
| QgsSymbol * | symbol () |
| QgsSymbolList | symbols (const QgsRenderContext &context=QgsRenderContext()) const |
| Returns a list of the symbols used by this rule and all children of this rule. | |
| QgsSymbolList | symbolsForFeature (const QgsFeature &feature, QgsRenderContext *context=nullptr) |
| tell which symbols will be used to render the feature | |
| QgsRuleBasedRenderer::Rule * | takeChild (QgsRuleBasedRenderer::Rule *rule) |
take child rule out, set parent as nullptr | |
| QgsRuleBasedRenderer::Rule * | takeChildAt (int i) |
take child rule out, set parent as nullptr | |
| bool | toSld (QDomDocument &doc, QDomElement &element, QgsSldExportContext &context) const |
| Saves the rule to SLD. | |
| Q_DECL_DEPRECATED void | toSld (QDomDocument &doc, QDomElement &element, QVariantMap props) const |
| Saves the symbol layer as SLD. | |
| QSet< QString > | usedAttributes (const QgsRenderContext &context) const |
| Returns the attributes used to evaluate the expression of this rule. | |
| bool | willRenderFeature (const QgsFeature &feature, QgsRenderContext *context=nullptr) |
| only tell whether a feature will be rendered without actually rendering it | |
Static Public Member Functions | |
| static QgsRuleBasedRenderer::Rule * | create (QDomElement &ruleElem, QgsSymbolMap &symbolMap, bool reuseId=true, const QgsReadWriteContext &context=QgsReadWriteContext()) |
| Create a rule from an XML definition. | |
| static QgsRuleBasedRenderer::Rule * | createFromSld (QDomElement &element, Qgis::GeometryType geomType) |
| Create a rule from the SLD provided in element and for the specified geometry type. | |
Protected Member Functions | |
| void | initFilter () |
Represents an individual rule for a rule-based renderer.
A rule consists of a symbol, filter expression and range of scales. If filter is empty, it matches all features. If scale range has both values zero, it matches all scales. If one of the min/max scale denominators is zero, there is no lower/upper bound for scales. A rule matches if both filter and scale range match.
Definition at line 151 of file qgsrulebasedrenderer.h.
The result of rendering a rule.
| Enumerator | |
|---|---|
| Filtered | The rule does not apply. |
| Inactive | The rule is inactive. |
| Rendered | Something was rendered. |
Definition at line 155 of file qgsrulebasedrenderer.h.
| QgsRuleBasedRenderer::Rule::Rule | ( | QgsSymbol * | symbol, |
| int | maximumScale = 0, | ||
| int | minimumScale = 0, | ||
| const QString & | filterExp = QString(), | ||
| const QString & | label = QString(), | ||
| const QString & | description = QString(), | ||
| bool | elseRule = false ) |
Constructor takes ownership of the symbol.
Definition at line 45 of file qgsrulebasedrenderer.cpp.
| QgsRuleBasedRenderer::Rule::~Rule | ( | ) |
Definition at line 61 of file qgsrulebasedrenderer.cpp.
|
delete |
| bool QgsRuleBasedRenderer::Rule::accept | ( | QgsStyleEntityVisitorInterface * | visitor | ) | const |
Accepts the specified symbology visitor, causing it to visit all child rules associated with the rule.
Returns true if the visitor should continue visiting other objects, or false if visiting should be canceled.
Definition at line 164 of file qgsrulebasedrenderer.cpp.
|
inline |
Returns if this rule is active.
true if the rule is active Definition at line 259 of file qgsrulebasedrenderer.h.
| void QgsRuleBasedRenderer::Rule::appendChild | ( | QgsRuleBasedRenderer::Rule * | rule | ) |
add child rule, take ownership, sets this as parent
Definition at line 86 of file qgsrulebasedrenderer.cpp.
|
inline |
Returns all children rules of this rule.
Definition at line 414 of file qgsrulebasedrenderer.h.
| QgsRuleBasedRenderer::Rule * QgsRuleBasedRenderer::Rule::clone | ( | ) | const |
clone this rule, return new instance
Definition at line 315 of file qgsrulebasedrenderer.cpp.
| QSet< int > QgsRuleBasedRenderer::Rule::collectZLevels | ( | ) |
Gets all used z-levels from this rule and children.
Definition at line 555 of file qgsrulebasedrenderer.cpp.
|
static |
Create a rule from an XML definition.
| ruleElem | The XML rule element |
| symbolMap | Symbol map |
| reuseId | set to true to create an exact copy of the original symbol or false to create a new rule with the same parameters as the original but a new unique ruleKey(). (Since QGIS 3.30) |
| context | The rendering context (Since QGIS 4.0) |
Definition at line 791 of file qgsrulebasedrenderer.cpp.
|
static |
Create a rule from the SLD provided in element and for the specified geometry type.
Definition at line 855 of file qgsrulebasedrenderer.cpp.
|
inline |
Definition at line 215 of file qgsrulebasedrenderer.h.
| QgsRuleBasedRenderer::RuleList QgsRuleBasedRenderer::Rule::descendants | ( | ) | const |
Returns all children, grand-children, grand-grand-children, grand-gra... you get it.
Definition at line 844 of file qgsrulebasedrenderer.cpp.
|
inline |
A human readable description for this rule.
Definition at line 252 of file qgsrulebasedrenderer.h.
| QString QgsRuleBasedRenderer::Rule::dump | ( | int | indent = 0 | ) | const |
Dump for debug purpose.
| indent | How many characters to indent. Will increase by two with every of the recursive calls |
Definition at line 193 of file qgsrulebasedrenderer.cpp.
|
inline |
A filter that will check if this rule applies.
Definition at line 239 of file qgsrulebasedrenderer.h.
|
inline |
A filter that will check if this rule applies.
Definition at line 245 of file qgsrulebasedrenderer.h.
| QgsRuleBasedRenderer::Rule * QgsRuleBasedRenderer::Rule::findRuleByKey | ( | const QString & | key | ) |
Try to find a rule given its unique key.
Definition at line 129 of file qgsrulebasedrenderer.cpp.
| bool QgsRuleBasedRenderer::Rule::hasActiveChildren | ( | ) | const |
Returns true if the rule has any active children.
Definition at line 550 of file qgsrulebasedrenderer.cpp.
|
protected |
Definition at line 67 of file qgsrulebasedrenderer.cpp.
| void QgsRuleBasedRenderer::Rule::insertChild | ( | int | i, |
| QgsRuleBasedRenderer::Rule * | rule ) |
add child rule, take ownership, sets this as parent
Definition at line 93 of file qgsrulebasedrenderer.cpp.
|
inline |
Check if this rule is an ELSE rule.
true if this rule is an else rule Definition at line 465 of file qgsrulebasedrenderer.h.
| bool QgsRuleBasedRenderer::Rule::isFilterOK | ( | const QgsFeature & | f, |
| QgsRenderContext * | context = nullptr ) const |
Check if a given feature shall be rendered by this rule.
| f | The feature to test |
| context | The context in which the rendering happens |
true if the feature shall be rendered Definition at line 287 of file qgsrulebasedrenderer.cpp.
| bool QgsRuleBasedRenderer::Rule::isScaleOK | ( | double | scale | ) | const |
Check if this rule applies for a given scale.
The scale value indicates the scale denominator, e.g. 1000.0 for a 1:1000 map. If set to 0, it will always return true.
Definition at line 297 of file qgsrulebasedrenderer.cpp.
|
inline |
Definition at line 214 of file qgsrulebasedrenderer.h.
| QSet< QString > QgsRuleBasedRenderer::Rule::legendKeysForFeature | ( | const QgsFeature & | feature, |
| QgsRenderContext * | context = nullptr ) |
Returns which legend keys match the feature.
Definition at line 706 of file qgsrulebasedrenderer.cpp.
| QgsLegendSymbolList QgsRuleBasedRenderer::Rule::legendSymbolItems | ( | int | currentLevel = -1 | ) | const |
Definition at line 270 of file qgsrulebasedrenderer.cpp.
|
inline |
Returns the maximum map scale (i.e.
most "zoomed in" scale) at which the rule will be active. The scale value indicates the scale denominator, e.g. 1000.0 for a 1:1000 map. A scale of 0 indicates no maximum scale visibility.
Definition at line 224 of file qgsrulebasedrenderer.h.
|
inline |
Returns the minimum map scale (i.e.
most "zoomed out" scale) at which the rule will be active. The scale value indicates the scale denominator, e.g. 1000.0 for a 1:1000 map. A scale of 0 indicates no minimum scale visibility.
Definition at line 233 of file qgsrulebasedrenderer.h.
| bool QgsRuleBasedRenderer::Rule::needsGeometry | ( | ) | const |
Returns true if this rule or one of its children needs the geometry to be applied.
Definition at line 230 of file qgsrulebasedrenderer.cpp.
|
inline |
| void QgsRuleBasedRenderer::Rule::removeChild | ( | QgsRuleBasedRenderer::Rule * | rule | ) |
delete child rule
Definition at line 100 of file qgsrulebasedrenderer.cpp.
| void QgsRuleBasedRenderer::Rule::removeChildAt | ( | int | i | ) |
delete child rule
Definition at line 107 of file qgsrulebasedrenderer.cpp.
| QgsRuleBasedRenderer::Rule::RenderResult QgsRuleBasedRenderer::Rule::renderFeature | ( | QgsRuleBasedRenderer::FeatureToRender & | featToRender, |
| QgsRenderContext & | context, | ||
| QgsRuleBasedRenderer::RenderQueue & | renderQueue ) |
Render a given feature, will recursively call subclasses and only render if the constraints apply.
| featToRender | The feature to render |
| context | The rendering context |
| renderQueue | The rendering queue to which the feature should be added |
Definition at line 599 of file qgsrulebasedrenderer.cpp.
|
inline |
Unique rule identifier (for identification of rule within renderer).
Definition at line 264 of file qgsrulebasedrenderer.h.
| QgsRuleBasedRenderer::RuleList QgsRuleBasedRenderer::Rule::rulesForFeature | ( | const QgsFeature & | feature, |
| QgsRenderContext * | context = nullptr, | ||
| bool | onlyActive = true ) |
Returns the list of rules used to render the feature in a specific context.
| feature | The feature for which rules have to be find |
| context | The rendering context |
| onlyActive | true to search for active rules only, false otherwise |
Definition at line 756 of file qgsrulebasedrenderer.cpp.
| QDomElement QgsRuleBasedRenderer::Rule::save | ( | QDomDocument & | doc, |
| QgsSymbolMap & | symbolMap ) const |
Definition at line 327 of file qgsrulebasedrenderer.cpp.
|
inline |
Sets if this rule is active.
| state | Determines if the rule should be activated or deactivated |
Definition at line 311 of file qgsrulebasedrenderer.h.
|
inline |
Set a human readable description for this rule.
| description | Description |
Definition at line 305 of file qgsrulebasedrenderer.h.
| void QgsRuleBasedRenderer::Rule::setFilterExpression | ( | const QString & | filterExp | ) |
Set the expression used to check if a given feature shall be rendered with this rule.
| filterExp | An expression |
Definition at line 264 of file qgsrulebasedrenderer.cpp.
| void QgsRuleBasedRenderer::Rule::setIsElse | ( | bool | iselse | ) |
Sets if this rule is an ELSE rule.
| iselse | If true, this rule is an ELSE rule |
Definition at line 157 of file qgsrulebasedrenderer.cpp.
|
inline |
Definition at line 273 of file qgsrulebasedrenderer.h.
|
inline |
Sets the maximum map scale (i.e.
most "zoomed in" scale) at which the rule will be active. The scale value indicates the scale denominator, e.g. 1000.0 for a 1:1000 map. A scale of 0 indicates no maximum scale visibility.
Definition at line 291 of file qgsrulebasedrenderer.h.
|
inline |
Sets the minimum map scale (i.e.
most "zoomed out" scale) at which the rule will be active. The scale value indicates the scale denominator, e.g. 1000.0 for a 1:1000 map. A scale of 0 indicates no minimum scale visibility.
Definition at line 282 of file qgsrulebasedrenderer.h.
| void QgsRuleBasedRenderer::Rule::setNormZLevels | ( | const QMap< int, int > & | zLevelsToNormLevels | ) |
assign normalized z-levels [0..N-1] for this rule's symbol for quick access during rendering
Definition at line 579 of file qgsrulebasedrenderer.cpp.
|
inline |
Override the assigned rule key (should be used just internally by rule-based renderer).
Definition at line 269 of file qgsrulebasedrenderer.h.
| void QgsRuleBasedRenderer::Rule::setSymbol | ( | QgsSymbol * | sym | ) |
Sets a new symbol (or nullptr). Deletes old symbol.
Definition at line 259 of file qgsrulebasedrenderer.cpp.
| bool QgsRuleBasedRenderer::Rule::startRender | ( | QgsRenderContext & | context, |
| const QgsFields & | fields, | ||
| QString & | filter ) |
prepare the rule for rendering and its children (build active children array)
Definition at line 444 of file qgsrulebasedrenderer.cpp.
| void QgsRuleBasedRenderer::Rule::stopRender | ( | QgsRenderContext & | context | ) |
Stop a rendering process.
Used to clean up the internal state of this rule
| context | The rendering context |
Definition at line 776 of file qgsrulebasedrenderer.cpp.
|
inline |
Definition at line 213 of file qgsrulebasedrenderer.h.
| QgsSymbolList QgsRuleBasedRenderer::Rule::symbols | ( | const QgsRenderContext & | context = QgsRenderContext() | ) | const |
Returns a list of the symbols used by this rule and all children of this rule.
Definition at line 245 of file qgsrulebasedrenderer.cpp.
| QgsSymbolList QgsRuleBasedRenderer::Rule::symbolsForFeature | ( | const QgsFeature & | feature, |
| QgsRenderContext * | context = nullptr ) |
tell which symbols will be used to render the feature
Definition at line 690 of file qgsrulebasedrenderer.cpp.
| QgsRuleBasedRenderer::Rule * QgsRuleBasedRenderer::Rule::takeChild | ( | QgsRuleBasedRenderer::Rule * | rule | ) |
take child rule out, set parent as nullptr
Definition at line 113 of file qgsrulebasedrenderer.cpp.
| QgsRuleBasedRenderer::Rule * QgsRuleBasedRenderer::Rule::takeChildAt | ( | int | i | ) |
take child rule out, set parent as nullptr
Definition at line 121 of file qgsrulebasedrenderer.cpp.
| bool QgsRuleBasedRenderer::Rule::toSld | ( | QDomDocument & | doc, |
| QDomElement & | element, | ||
| QgsSldExportContext & | context ) const |
| void QgsRuleBasedRenderer::Rule::toSld | ( | QDomDocument & | doc, |
| QDomElement & | element, | ||
| QVariantMap | props ) const |
Saves the symbol layer as SLD.
Definition at line 359 of file qgsrulebasedrenderer.cpp.
| QSet< QString > QgsRuleBasedRenderer::Rule::usedAttributes | ( | const QgsRenderContext & | context | ) | const |
Returns the attributes used to evaluate the expression of this rule.
Definition at line 212 of file qgsrulebasedrenderer.cpp.
| bool QgsRuleBasedRenderer::Rule::willRenderFeature | ( | const QgsFeature & | feature, |
| QgsRenderContext * | context = nullptr ) |
only tell whether a feature will be rendered without actually rendering it
Definition at line 654 of file qgsrulebasedrenderer.cpp.