15#ifndef QGSRULEBASEDLABELING_H 
   16#define QGSRULEBASEDLABELING_H 
   45    typedef QList<QgsRuleBasedLabeling::Rule *> 
RuleList;
 
   47    typedef std::vector<std::pair<QgsRuleBasedLabeling::Rule *, QgsVectorLayerLabelProvider *>> RuleToProviderVec;
 
   60        Rule( 
QgsPalLayerSettings *settings 
SIP_TRANSFER, 
double maximumScale = 0, 
double minimumScale = 0, 
const QString &filterExp = QString(), 
const QString &description = QString(), 
bool elseRule = 
false );
 
  122        bool active()
 const { 
return mIsActive; }
 
  129        bool isElse()
 const { 
return mElseRule; }
 
  167        void setDescription( 
const QString &description ) { mDescription = description; }
 
  229        void removeChildAt( 
int i );
 
  277        void subProviderIds( QStringList &list ) const 
SIP_SKIP;
 
  300        bool requiresAdvancedEffects() const;
 
  313        bool hasNonDefaultCompositionMode() const;
 
  347        bool isScaleOK( 
double scale ) 
const;
 
  357        void updateElseRules();
 
  360        Rule *mParent = 
nullptr; 
 
  361        std::unique_ptr<QgsPalLayerSettings> mSettings;
 
  362        double mMaximumScale = 0;
 
  363        double mMinimumScale = 0;
 
  365        QString mDescription;
 
  366        bool mElseRule = 
false;
 
  369        bool mIsActive = 
true; 
 
  371        QString mRuleKey = QUuid::createUuid().toString(); 
 
  373        std::unique_ptr<QgsExpression> mFilter;
 
 
  383    const Rule *rootRule() const 
SIP_SKIP;
 
  390    QString type() const override;
 
  395    QStringList subProviders() const override;
 
  407    bool requiresAdvancedEffects() const override;
 
  408    bool hasNonDefaultCompositionMode() const override;
 
  409    Q_DECL_DEPRECATED 
void toSld( QDomNode &parent, const QVariantMap &properties ) const override 
SIP_DEPRECATED;
 
  411    void multiplyOpacity( 
double opacityFactor ) override;
 
  415    std::unique_ptr<
Rule> mRootRule;
 
 
  434    bool prepare( 
QgsRenderContext &context, QSet<QString> &attributeNames ) 
override;
 
  442    QList<QgsAbstractLabelProvider *> 
subProviders() 
override;
 
  446    std::unique_ptr<QgsRuleBasedLabeling> 
mRules;
 
  448    std::vector<std::pair<QgsRuleBasedLabeling::Rule *, QgsVectorLayerLabelProvider *>> 
mSubProviders;
 
 
Abstract base class - its implementations define different approaches to the labeling of a vector lay...
 
virtual QStringList subProviders() const
Gets list of sub-providers within the layer's labeling.
 
virtual void setSettings(QgsPalLayerSettings *settings, const QString &providerId=QString())=0
Set pal settings for a specific provider (takes ownership).
 
virtual QgsAbstractVectorLayerLabeling * clone() const =0
Returns a new copy of the object.
 
Handles parsing and evaluation of expressions (formerly called "search strings").
 
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
 
A geometry is the spatial representation of a feature.
 
Describes a feature that should be used within the labeling engine.
 
Contains settings for how a map layer will be labeled.
 
A container for the context for various read/write operations on objects.
 
Contains information about the context of a rendering operation.
 
Label provider for rule based labeling.
 
std::unique_ptr< QgsRuleBasedLabeling > mRules
owned copy
 
std::vector< std::pair< QgsRuleBasedLabeling::Rule *, QgsVectorLayerLabelProvider * > > mSubProviders
label providers are owned by labeling engine
 
A child rule for QgsRuleBasedLabeling.
 
QgsRuleBasedLabeling::RuleList & children()
Returns all children rules of this rule.
 
void setRuleKey(const QString &key)
Override the assigned rule key (should be used just internally by rule-based labeling)
 
void setMaximumScale(double scale)
Sets the maximum map scale (i.e.
 
Rule(const Rule &rh)=delete
 
double maximumScale() const
Returns the maximum map scale (i.e.
 
void setDescription(const QString &description)
Set a human readable description for this rule.
 
bool dependsOnScale() const
Determines if scale based labeling is active.
 
const QgsRuleBasedLabeling::RuleList & children() const
Returns all children rules of this rule.
 
QString filterExpression() const
A filter that will check if this rule applies.
 
QgsRuleBasedLabeling::Rule * parent()
The parent rule.
 
const QgsRuleBasedLabeling::Rule * parent() const
The parent rule.
 
bool active() const
Returns if this rule is active.
 
QgsPalLayerSettings * settings() const
Returns the labeling settings.
 
RegisterResult
The result of registering a rule.
 
@ Inactive
The rule is inactive.
 
void setActive(bool state)
Sets if this rule is active.
 
bool isElse() const
Check if this rule is an ELSE rule.
 
void setMinimumScale(double scale)
Sets the minimum map scale (i.e.
 
Rule & operator=(const Rule &rh)=delete
 
void setFilterExpression(const QString &filterExp)
Set the expression used to check if a given feature shall be rendered with this rule.
 
double minimumScale() const
Returns the minimum map scale (i.e.
 
void setIsElse(bool iselse)
Sets if this rule is an ELSE rule.
 
QString ruleKey() const
Unique rule identifier (for identification of rule within labeling, used as provider ID)
 
QString description() const
A human readable description for this rule.
 
Rule based labeling for a vector layer.
 
QList< QgsRuleBasedLabeling::Rule * > RuleList
 
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.
 
Implements a label provider for vector layers.
 
Represents a vector layer which manages a vector based dataset.
 
bool qgsDoubleNear(double a, double b, double epsilon=4 *std::numeric_limits< double >::epsilon())
Compare two doubles (but allow some difference)