|
QGIS API Documentation
3.4.15-Madeira (e83d02e274)
|
This class keeps data about a rules for 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 (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. More... | |
| Rule (const Rule &rh)=delete | |
| Rules cannot be copied. More... | |
| ~Rule () | |
| bool | active () const |
| Returns if this rule is active. More... | |
| void | appendChild (QgsRuleBasedRenderer::Rule *rule) |
| add child rule, take ownership, sets this as parent More... | |
| const QgsRuleBasedRenderer::RuleList & | children () |
| Returns all children rules of this rule. More... | |
| QgsRuleBasedRenderer::Rule * | clone () const |
| clone this rule, return new instance More... | |
| QSet< int > | collectZLevels () |
| Gets all used z-levels from this rule and children. More... | |
| bool | dependsOnScale () const |
| QgsRuleBasedRenderer::RuleList | descendants () const |
| Returns all children, grand-children, grand-grand-children, grand-gra... More... | |
| QString | description () const |
| A human readable description for this rule. More... | |
| QString | dump (int indent=0) const |
| Dump for debug purpose. More... | |
| QgsExpression * | filter () const |
| A filter that will check if this rule applies. More... | |
| QString | filterExpression () const |
| A filter that will check if this rule applies. More... | |
| QgsRuleBasedRenderer::Rule * | findRuleByKey (const QString &key) |
| Try to find a rule given its unique key. More... | |
| void | insertChild (int i, QgsRuleBasedRenderer::Rule *rule) |
| add child rule, take ownership, sets this as parent More... | |
| bool | isElse () const |
| Check if this rule is an ELSE rule. More... | |
| bool | isFilterOK (const QgsFeature &f, QgsRenderContext *context=nullptr) const |
| Check if a given feature shall be rendered by this rule. More... | |
| bool | isScaleOK (double scale) const |
| Check if this rule applies for a given scale. More... | |
| QString | label () const |
| QSet< QString > | legendKeysForFeature (const QgsFeature &feature, QgsRenderContext *context=nullptr) |
| Returns which legend keys match the feature. More... | |
| QgsLegendSymbolList | legendSymbolItems (int currentLevel=-1) const |
| double | maximumScale () const |
| Returns the maximum map scale (i.e. More... | |
| double | minimumScale () const |
| Returns the minimum map scale (i.e. More... | |
| bool | needsGeometry () const |
| Returns true if this rule or one of its chilren needs the geometry to be applied. More... | |
| Rule & | operator= (const Rule &rh)=delete |
| Rules cannot be copied. More... | |
| QgsRuleBasedRenderer::Rule * | parent () |
| The parent rule. More... | |
| void | removeChild (QgsRuleBasedRenderer::Rule *rule) |
| delete child rule More... | |
| void | removeChildAt (int i) |
| delete child rule More... | |
| 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. More... | |
| QString | ruleKey () const |
| Unique rule identifier (for identification of rule within renderer) More... | |
| 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. More... | |
| QDomElement | save (QDomDocument &doc, QgsSymbolMap &symbolMap) const |
| void | setActive (bool state) |
| Sets if this rule is active. More... | |
| void | setDescription (const QString &description) |
| Set a human readable description for this rule. More... | |
| void | setFilterExpression (const QString &filterExp) |
| Set the expression used to check if a given feature shall be rendered with this rule. More... | |
| void | setIsElse (bool iselse) |
| Sets if this rule is an ELSE rule. More... | |
| void | setLabel (const QString &label) |
| void | setMaximumScale (double scale) |
| Sets the maximum map scale (i.e. More... | |
| void | setMinimumScale (double scale) |
| Sets the minimum map scale (i.e. More... | |
| void | setNormZLevels (const QMap< int, int > &zLevelsToNormLevels) |
| assign normalized z-levels [0..N-1] for this rule's symbol for quick access during rendering More... | |
| void | setRuleKey (const QString &key) |
| Override the assigned rule key (should be used just internally by rule-based renderer) More... | |
| void | setSymbol (QgsSymbol *sym) |
| Sets a new symbol (or NULL). Deletes old symbol. More... | |
| bool | startRender (QgsRenderContext &context, const QgsFields &fields, QString &filter) |
| prepare the rule for rendering and its children (build active children array) More... | |
| void | stopRender (QgsRenderContext &context) |
| Stop a rendering process. More... | |
| QgsSymbol * | symbol () |
| QgsSymbolList | symbols (const QgsRenderContext &context=QgsRenderContext()) const |
| QgsSymbolList | symbolsForFeature (const QgsFeature &feature, QgsRenderContext *context=nullptr) |
| tell which symbols will be used to render the feature More... | |
| QgsRuleBasedRenderer::Rule * | takeChild (QgsRuleBasedRenderer::Rule *rule) |
| take child rule out, set parent as null More... | |
| QgsRuleBasedRenderer::Rule * | takeChildAt (int i) |
| take child rule out, set parent as null More... | |
| void | toSld (QDomDocument &doc, QDomElement &element, QgsStringMap props) const |
| QSet< QString > | usedAttributes (const QgsRenderContext &context) const |
| Returns the attributes used to evaluate the expression of this rule. More... | |
| bool | willRenderFeature (const QgsFeature &feature, QgsRenderContext *context=nullptr) |
| only tell whether a feature will be rendered without actually rendering it More... | |
Static Public Member Functions | |
| static QgsRuleBasedRenderer::Rule * | create (QDomElement &ruleElem, QgsSymbolMap &symbolMap) |
| Create a rule from an XML definition. More... | |
| static QgsRuleBasedRenderer::Rule * | createFromSld (QDomElement &element, QgsWkbTypes::GeometryType geomType) |
| Create a rule from the SLD provided in element and for the specified geometry type. More... | |
Protected Member Functions | |
| void | initFilter () |
This class keeps data about a rules for 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 131 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 135 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 38 of file qgsrulebasedrenderer.cpp.
| QgsRuleBasedRenderer::Rule::~Rule | ( | ) |
Definition at line 55 of file qgsrulebasedrenderer.cpp.
|
delete |
Rules cannot be copied.
|
inline |
Returns if this rule is active.
Definition at line 242 of file qgsrulebasedrenderer.h.
| void QgsRuleBasedRenderer::Rule::appendChild | ( | QgsRuleBasedRenderer::Rule * | rule | ) |
add child rule, take ownership, sets this as parent
Definition at line 80 of file qgsrulebasedrenderer.cpp.
|
inline |
Returns all children rules of this rule.
Definition at line 377 of file qgsrulebasedrenderer.h.
| QgsRuleBasedRenderer::Rule * QgsRuleBasedRenderer::Rule::clone | ( | ) | const |
clone this rule, return new instance
Definition at line 270 of file qgsrulebasedrenderer.cpp.
| QSet< int > QgsRuleBasedRenderer::Rule::collectZLevels | ( | ) |
Gets all used z-levels from this rule and children.
Definition at line 471 of file qgsrulebasedrenderer.cpp.
|
static |
Create a rule from an XML definition.
| ruleElem | The XML rule element |
| symbolMap | Symbol map |
Definition at line 681 of file qgsrulebasedrenderer.cpp.
|
static |
Create a rule from the SLD provided in element and for the specified geometry type.
Definition at line 739 of file qgsrulebasedrenderer.cpp.
|
inline |
Definition at line 196 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 728 of file qgsrulebasedrenderer.cpp.
|
inline |
A human readable description for this rule.
Definition at line 235 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 157 of file qgsrulebasedrenderer.cpp.
|
inline |
A filter that will check if this rule applies.
Definition at line 222 of file qgsrulebasedrenderer.h.
|
inline |
A filter that will check if this rule applies.
Definition at line 228 of file qgsrulebasedrenderer.h.
| QgsRuleBasedRenderer::Rule * QgsRuleBasedRenderer::Rule::findRuleByKey | ( | const QString & | key | ) |
Try to find a rule given its unique key.
Definition at line 123 of file qgsrulebasedrenderer.cpp.
|
protected |
Definition at line 61 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 87 of file qgsrulebasedrenderer.cpp.
|
inline |
Check if this rule is an ELSE rule.
Definition at line 429 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 |
Definition at line 247 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 257 of file qgsrulebasedrenderer.cpp.
|
inline |
Definition at line 195 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 614 of file qgsrulebasedrenderer.cpp.
| QgsLegendSymbolList QgsRuleBasedRenderer::Rule::legendSymbolItems | ( | int | currentLevel = -1 | ) | const |
Definition at line 230 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 206 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 216 of file qgsrulebasedrenderer.h.
| bool QgsRuleBasedRenderer::Rule::needsGeometry | ( | ) | const |
Returns true if this rule or one of its chilren needs the geometry to be applied.
Definition at line 192 of file qgsrulebasedrenderer.cpp.
|
inline |
| void QgsRuleBasedRenderer::Rule::removeChild | ( | QgsRuleBasedRenderer::Rule * | rule | ) |
delete child rule
Definition at line 94 of file qgsrulebasedrenderer.cpp.
| void QgsRuleBasedRenderer::Rule::removeChildAt | ( | int | i | ) |
delete child rule
Definition at line 101 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 514 of file qgsrulebasedrenderer.cpp.
|
inline |
Unique rule identifier (for identification of rule within renderer)
Definition at line 248 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 647 of file qgsrulebasedrenderer.cpp.
| QDomElement QgsRuleBasedRenderer::Rule::save | ( | QDomDocument & | doc, |
| QgsSymbolMap & | symbolMap | ||
| ) | const |
Definition at line 281 of file qgsrulebasedrenderer.cpp.
|
inline |
Sets if this rule is active.
| state | Determines if the rule should be activated or deactivated |
Definition at line 296 of file qgsrulebasedrenderer.h.
|
inline |
Set a human readable description for this rule.
| description | Description |
Definition at line 290 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 224 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 149 of file qgsrulebasedrenderer.cpp.
|
inline |
Definition at line 258 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 276 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 267 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 495 of file qgsrulebasedrenderer.cpp.
|
inline |
Override the assigned rule key (should be used just internally by rule-based renderer)
Definition at line 254 of file qgsrulebasedrenderer.h.
| void QgsRuleBasedRenderer::Rule::setSymbol | ( | QgsSymbol * | sym | ) |
Sets a new symbol (or NULL). Deletes old symbol.
Definition at line 219 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 374 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 667 of file qgsrulebasedrenderer.cpp.
|
inline |
Definition at line 194 of file qgsrulebasedrenderer.h.
| QgsSymbolList QgsRuleBasedRenderer::Rule::symbols | ( | const QgsRenderContext & | context = QgsRenderContext() | ) | const |
Definition at line 206 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 599 of file qgsrulebasedrenderer.cpp.
| QgsRuleBasedRenderer::Rule * QgsRuleBasedRenderer::Rule::takeChild | ( | QgsRuleBasedRenderer::Rule * | rule | ) |
take child rule out, set parent as null
Definition at line 107 of file qgsrulebasedrenderer.cpp.
| QgsRuleBasedRenderer::Rule * QgsRuleBasedRenderer::Rule::takeChildAt | ( | int | i | ) |
take child rule out, set parent as null
Definition at line 115 of file qgsrulebasedrenderer.cpp.
| void QgsRuleBasedRenderer::Rule::toSld | ( | QDomDocument & | doc, |
| QDomElement & | element, | ||
| QgsStringMap | props | ||
| ) | const |
Definition at line 312 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 175 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 564 of file qgsrulebasedrenderer.cpp.
1.8.11