16#ifndef QGSRULEBASEDRENDERER_H
17#define QGSRULEBASEDRENDERER_H
108 QList<QgsRuleBasedRenderer::RenderJob *>
jobs;
115 for (
auto it = rh.
jobs.constBegin(); it != rh.
jobs.constEnd(); ++it )
123 : zIndex( other.zIndex ), jobs()
125 for (
auto it = other.
jobs.constBegin(); it != other.
jobs.constEnd(); ++it )
137 typedef QList<QgsRuleBasedRenderer::Rule *>
RuleList;
162 const QString &label = QString(),
const QString &description = QString(),
bool elseRule =
false );
175 QString
dump(
int indent = 0 )
const;
186 bool needsGeometry()
const;
210 bool isScaleOK(
double scale )
const;
213 QString
label()
const {
return mLabel; }
260 bool active()
const {
return mIsActive; }
276 void setLabel(
const QString &label ) { mLabel = label; }
301 void setFilterExpression(
const QString &filterExp );
308 void setDescription(
const QString &description ) { mDescription = description; }
320 void toSld( QDomDocument &doc, QDomElement &element, QVariantMap props ) const;
327 QDomElement save( QDomDocument &doc,
QgsSymbolMap &symbolMap ) const;
339 bool hasActiveChildren() const;
342 QSet<
int> collectZLevels();
348 void setNormZLevels( const QMap<
int,
int> &zLevelsToNormLevels )
SIP_SKIP;
432 void removeChildAt(
int i );
451 void setIsElse(
bool iselse );
458 bool isElse()
const {
return mElseRule; }
479 Rule *mParent =
nullptr;
480 std::unique_ptr< QgsSymbol > mSymbol;
481 double mMaximumScale = 0;
482 double mMinimumScale = 0;
483 QString mFilterExp, mLabel, mDescription;
484 bool mElseRule =
false;
487 bool mIsActive =
true;
492 std::unique_ptr< QgsExpression > mFilter;
494 QSet<int> mSymbolNormZLevels;
501 void updateElseRules();
522 bool canSkipRender() override;
527 QSet<QString> usedAttributes( const
QgsRenderContext &context ) const override;
529 bool filterNeedsGeometry() const override;
533 void toSld( QDomDocument &doc, QDomElement &element, const QVariantMap &props = QVariantMap() ) const override;
543 bool legendSymbolItemsCheckable() const override;
544 bool legendSymbolItemChecked( const QString &key ) override;
545 void checkLegendSymbolItem( const QString &key,
bool state = true ) override;
546 QString legendKeyToExpression( const QString &key,
QgsVectorLayer *layer,
bool &ok ) const override;
550 QString dump() const override;
582 static
void convertToDataDefinedSymbology(
QgsSymbol *symbol, const QString &sizeScaleField, const QString &rotationField = QString() );
The Qgis class provides global constants for use throughout the application.
Custom exception class for Coordinate Reference System related exceptions.
Class for parsing and evaluation of expressions (formerly called "search strings").
virtual QgsLegendSymbolList legendSymbolItems() const
Returns a list of symbology items for the legend.
virtual QgsSymbolList symbols(QgsRenderContext &context) const
Returns list of symbols used by the renderer.
virtual bool renderFeature(const QgsFeature &feature, QgsRenderContext &context, int layer=-1, bool selected=false, bool drawVertexMarker=false)
Render a feature using this renderer in the given context.
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.
@ ScaleDependent
Depends on scale if feature will be rendered (rule based )
virtual bool accept(QgsStyleEntityVisitorInterface *visitor) const
Accepts the specified symbology visitor, causing it to visit all symbols associated with the renderer...
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...
Container of fields for a vector layer.
The class is used as a container of context for various read/write operations on other objects.
Contains information about the context of a rendering operation.
This class keeps data about a rules for rule-based renderer.
QString ruleKey() const
Unique rule identifier (for identification of rule within renderer)
void setDescription(const QString &description)
Set a human readable description for this rule.
bool dependsOnScale() const
RenderResult
The result of rendering a rule.
@ Inactive
The rule is inactive.
double maximumScale() const
Returns the maximum map scale (i.e.
QgsRuleBasedRenderer::Rule * parent()
The parent rule.
bool isElse() const
Check if this rule is an ELSE rule.
void setMaximumScale(double scale)
Sets the maximum map scale (i.e.
void setActive(bool state)
Sets if this rule is active.
Rule(const Rule &rh)=delete
Rules cannot be copied.
Rule & operator=(const Rule &rh)=delete
Rules cannot be copied.
QgsExpression * filter() const
A filter that will check if this rule applies.
double minimumScale() const
Returns the minimum map scale (i.e.
QString description() const
A human readable description for this rule.
void setMinimumScale(double scale)
Sets the minimum map scale (i.e.
void setLabel(const QString &label)
void setRuleKey(const QString &key)
Override the assigned rule key (should be used just internally by rule-based renderer)
QString filterExpression() const
A filter that will check if this rule applies.
bool active() const
Returns if this rule is active.
QList< QgsRuleBasedRenderer::RenderLevel > RenderQueue
Rendering queue: a list of rendering levels.
QList< QgsRuleBasedRenderer::Rule * > RuleList
QgsRuleBasedRenderer::Rule * rootRule()
An interface for classes which can visit style entity (e.g.
Abstract base class for all rendered symbols.
Represents a vector layer which manages a vector based data sets.
#define SIP_THROW(name,...)
QList< QgsLegendSymbolItem > QgsLegendSymbolList
QMap< QString, QgsSymbol * > QgsSymbolMap
QList< QgsSymbol * > QgsSymbolList
Feature for rendering by a QgsRuleBasedRenderer.
FeatureToRender(const QgsFeature &_f, int _flags)
A QgsRuleBasedRenderer rendering job, consisting of a feature to be rendered with a particular symbol...
RenderJob(const QgsRuleBasedRenderer::FeatureToRender &_ftr, QgsSymbol *_s)
Constructor for a render job, with the specified feature to render and symbol.
QgsRuleBasedRenderer::FeatureToRender ftr
Feature to render.
Render level: a list of jobs to be drawn at particular level for a QgsRuleBasedRenderer.
QList< QgsRuleBasedRenderer::RenderJob * > jobs
List of jobs to render, owned by this object.
QgsRuleBasedRenderer::RenderLevel & operator=(const QgsRuleBasedRenderer::RenderLevel &rh)
RenderLevel(const QgsRuleBasedRenderer::RenderLevel &other)