QGIS API Documentation  2.14.0-Essen
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
QgsRuleBasedLabeling::Rule Class Reference

#include <qgsrulebasedlabeling.h>

Public Types

enum  RegisterResult { Filtered = 0, Inactive, Registered }
 The result of registering a rule. More...
 

Public Member Functions

 Rule (QgsPalLayerSettings *settings, int scaleMinDenom=0, int scaleMaxDenom=0, const QString &filterExp=QString(), const QString &description=QString(), bool elseRule=false)
 takes ownership of settings More...
 
 ~Rule ()
 
bool active () const
 Returns if this rule is active. More...
 
void appendChild (Rule *rule)
 add child rule, take ownership, sets this as parent More...
 
const RuleListchildren () const
 Return all children rules of this rule. More...
 
RuleListchildren ()
 Return all children rules of this rule. More...
 
Ruleclone () const
 clone this rule, return new instance More...
 
void createSubProviders (QgsVectorLayer *layer, RuleToProviderMap &subProviders)
 add providers More...
 
bool dependsOnScale () const
 Determines if scale based labeling is active. More...
 
QString description () const
 A human readable description for this rule. More...
 
QString filterExpression () const
 A filter that will check if this rule applies. More...
 
void insertChild (int i, Rule *rule)
 add child rule, take ownership, sets this as parent More...
 
bool isElse () const
 Check if this rule is an ELSE rule. More...
 
const Ruleparent () const
 The parent rule. More...
 
Ruleparent ()
 The parent rule. More...
 
void prepare (const QgsRenderContext &context, QStringList &attributeNames, RuleToProviderMap &subProviders)
 call prepare() on sub-providers and populate attributeNames More...
 
RegisterResult registerFeature (QgsFeature &feature, QgsRenderContext &context, RuleToProviderMap &subProviders, QgsGeometry *obstacleGeometry=nullptr)
 register individual features More...
 
void removeChildAt (int i)
 delete child rule More...
 
QDomElement save (QDomDocument &doc) const
 store labeling info to XML element More...
 
int scaleMaxDenom () const
 The maximum scale denominator at which this label rule should be applied. More...
 
int scaleMinDenom () const
 The minimum scale at which this label rule should be applied. More...
 
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 setScaleMaxDenom (int scaleMaxDenom)
 Set the maximum denominator for which this rule shall apply. More...
 
void setScaleMinDenom (int scaleMinDenom)
 Set the minimum denominator for which this rule shall apply. More...
 
void setSettings (QgsPalLayerSettings *settings)
 set new settings (or NULL). Deletes old settings if any. More...
 
QgsPalLayerSettingssettings () const
 Get the labeling settings. More...
 

Static Public Member Functions

static Rulecreate (const QDomElement &ruleElem)
 Create a rule from an XML definition. More...
 

Protected Member Functions

void initFilter ()
 Initialize filters. More...
 
bool isFilterOK (QgsFeature &f, QgsRenderContext &context) const
 Check if a given feature shall be labelled by this rule. More...
 
bool isScaleOK (double scale) const
 Check if this rule applies for a given scale. More...
 
void updateElseRules ()
 Check which child rules are else rules and update the internal list of else rules. More...
 

Protected Attributes

RuleList mChildren
 
QString mDescription
 
bool mElseRule
 
RuleList mElseRules
 
QgsExpressionmFilter
 
QString mFilterExp
 
bool mIsActive
 
RulemParent
 
int mScaleMaxDenom
 
int mScaleMinDenom
 
QgsPalLayerSettingsmSettings
 

Detailed Description

Note
not available in Python bindings
this class is not a part of public API yet. See notes in QgsLabelingEngineV2

Definition at line 51 of file qgsrulebasedlabeling.h.

Member Enumeration Documentation

The result of registering a rule.

Enumerator
Filtered 

The rule does not apply.

Inactive 

The rule is inactive.

Registered 

Something was registered.

Definition at line 59 of file qgsrulebasedlabeling.h.

Constructor & Destructor Documentation

QgsRuleBasedLabeling::Rule::Rule ( QgsPalLayerSettings settings,
int  scaleMinDenom = 0,
int  scaleMaxDenom = 0,
const QString filterExp = QString(),
const QString description = QString(),
bool  elseRule = false 
)

takes ownership of settings

Definition at line 59 of file qgsrulebasedlabeling.cpp.

QgsRuleBasedLabeling::Rule::~Rule ( )

Definition at line 70 of file qgsrulebasedlabeling.cpp.

Member Function Documentation

bool QgsRuleBasedLabeling::Rule::active ( ) const
inline

Returns if this rule is active.

Returns
True if the rule is active

Definition at line 113 of file qgsrulebasedlabeling.h.

void QgsRuleBasedLabeling::Rule::appendChild ( QgsRuleBasedLabeling::Rule rule)

add child rule, take ownership, sets this as parent

Definition at line 116 of file qgsrulebasedlabeling.cpp.

const RuleList& QgsRuleBasedLabeling::Rule::children ( ) const
inline

Return all children rules of this rule.

Returns
A list of rules

Definition at line 170 of file qgsrulebasedlabeling.h.

RuleList& QgsRuleBasedLabeling::Rule::children ( )
inline

Return all children rules of this rule.

Returns
A list of rules

Definition at line 176 of file qgsrulebasedlabeling.h.

QgsRuleBasedLabeling::Rule * QgsRuleBasedLabeling::Rule::clone ( ) const

clone this rule, return new instance

Definition at line 137 of file qgsrulebasedlabeling.cpp.

QgsRuleBasedLabeling::Rule * QgsRuleBasedLabeling::Rule::create ( const QDomElement ruleElem)
static

Create a rule from an XML definition.

Parameters
ruleElemThe XML rule element
Returns
A new rule

Definition at line 148 of file qgsrulebasedlabeling.cpp.

void QgsRuleBasedLabeling::Rule::createSubProviders ( QgsVectorLayer layer,
QgsRuleBasedLabeling::RuleToProviderMap subProviders 
)

add providers

Definition at line 216 of file qgsrulebasedlabeling.cpp.

bool QgsRuleBasedLabeling::Rule::dependsOnScale ( ) const
inline

Determines if scale based labeling is active.

Returns
True if scale based labeling is active

Definition at line 76 of file qgsrulebasedlabeling.h.

QString QgsRuleBasedLabeling::Rule::description ( ) const
inline

A human readable description for this rule.

Returns
Description

Definition at line 107 of file qgsrulebasedlabeling.h.

QString QgsRuleBasedLabeling::Rule::filterExpression ( ) const
inline

A filter that will check if this rule applies.

Returns
An expression

Definition at line 101 of file qgsrulebasedlabeling.h.

void QgsRuleBasedLabeling::Rule::initFilter ( )
protected

Initialize filters.

Automatically called by setFilterExpression.

Definition at line 87 of file qgsrulebasedlabeling.cpp.

void QgsRuleBasedLabeling::Rule::insertChild ( int  i,
QgsRuleBasedLabeling::Rule rule 
)

add child rule, take ownership, sets this as parent

Definition at line 123 of file qgsrulebasedlabeling.cpp.

bool QgsRuleBasedLabeling::Rule::isElse ( ) const
inline

Check if this rule is an ELSE rule.

Returns
True if this rule is an else rule

Definition at line 119 of file qgsrulebasedlabeling.h.

bool QgsRuleBasedLabeling::Rule::isFilterOK ( QgsFeature f,
QgsRenderContext context 
) const
protected

Check if a given feature shall be labelled by this rule.

Parameters
fThe feature to test
contextThe context in which the rendering happens
Returns
True if the feature shall be rendered

Definition at line 304 of file qgsrulebasedlabeling.cpp.

bool QgsRuleBasedLabeling::Rule::isScaleOK ( double  scale) const
protected

Check if this rule applies for a given scale.

Parameters
scaleThe scale to check. If set to 0, it will always return true.
Returns
If the rule will be evaluated at this scale

Definition at line 314 of file qgsrulebasedlabeling.cpp.

const Rule* QgsRuleBasedLabeling::Rule::parent ( ) const
inline

The parent rule.

Returns
Parent rule

Definition at line 182 of file qgsrulebasedlabeling.h.

Rule* QgsRuleBasedLabeling::Rule::parent ( )
inline

The parent rule.

Returns
Parent rule

Definition at line 188 of file qgsrulebasedlabeling.h.

void QgsRuleBasedLabeling::Rule::prepare ( const QgsRenderContext context,
QStringList attributeNames,
QgsRuleBasedLabeling::RuleToProviderMap subProviders 
)

call prepare() on sub-providers and populate attributeNames

Definition at line 232 of file qgsrulebasedlabeling.cpp.

QgsRuleBasedLabeling::Rule::RegisterResult QgsRuleBasedLabeling::Rule::registerFeature ( QgsFeature feature,
QgsRenderContext context,
QgsRuleBasedLabeling::RuleToProviderMap subProviders,
QgsGeometry obstacleGeometry = nullptr 
)

register individual features

Definition at line 257 of file qgsrulebasedlabeling.cpp.

void QgsRuleBasedLabeling::Rule::removeChildAt ( int  i)

delete child rule

Definition at line 130 of file qgsrulebasedlabeling.cpp.

QDomElement QgsRuleBasedLabeling::Rule::save ( QDomDocument doc) const

store labeling info to XML element

Definition at line 188 of file qgsrulebasedlabeling.cpp.

int QgsRuleBasedLabeling::Rule::scaleMaxDenom ( ) const
inline

The maximum scale denominator at which this label rule should be applied.

E.g. Denominator 1000 is a scale of 1:1000, where a rule with maximum denominator of 900 will be applied while a rule with 2000 will not be applied.

Returns
The maximum scale denominator

Definition at line 96 of file qgsrulebasedlabeling.h.

int QgsRuleBasedLabeling::Rule::scaleMinDenom ( ) const
inline

The minimum scale at which this label rule should be applied.

E.g. Denominator 1000 is a scale of 1:1000, where a rule with minimum denominator of 900 will not be applied while a rule with 2000 will be applied.

Returns
The minimum scale denominator

Definition at line 86 of file qgsrulebasedlabeling.h.

void QgsRuleBasedLabeling::Rule::setActive ( bool  state)
inline

Sets if this rule is active.

Parameters
stateDetermines if the rule should be activated or deactivated

Definition at line 154 of file qgsrulebasedlabeling.h.

void QgsRuleBasedLabeling::Rule::setDescription ( const QString description)
inline

Set a human readable description for this rule.

Parameters
descriptionDescription

Definition at line 149 of file qgsrulebasedlabeling.h.

void QgsRuleBasedLabeling::Rule::setFilterExpression ( const QString filterExp)
inline

Set the expression used to check if a given feature shall be rendered with this rule.

Parameters
filterExpAn expression

Definition at line 143 of file qgsrulebasedlabeling.h.

void QgsRuleBasedLabeling::Rule::setIsElse ( bool  iselse)
inline

Sets if this rule is an ELSE rule.

Parameters
iselseIf true, this rule is an ELSE rule

Definition at line 160 of file qgsrulebasedlabeling.h.

void QgsRuleBasedLabeling::Rule::setScaleMaxDenom ( int  scaleMaxDenom)
inline

Set the maximum denominator for which this rule shall apply.

E.g. 100'000 if it shall be evaluated between 1:1000 and 1:100'000 Set to 0 to disable the maximum check

Parameters
scaleMaxDenommaximum scale denominator for this rule

Definition at line 137 of file qgsrulebasedlabeling.h.

void QgsRuleBasedLabeling::Rule::setScaleMinDenom ( int  scaleMinDenom)
inline

Set the minimum denominator for which this rule shall apply.

E.g. 1000 if it shall be evaluated between 1:1000 and 1:100'000 Set to 0 to disable the minimum check

Parameters
scaleMinDenomThe minimum scale denominator for this rule

Definition at line 130 of file qgsrulebasedlabeling.h.

void QgsRuleBasedLabeling::Rule::setSettings ( QgsPalLayerSettings settings)

set new settings (or NULL). Deletes old settings if any.

Definition at line 78 of file qgsrulebasedlabeling.cpp.

QgsPalLayerSettings* QgsRuleBasedLabeling::Rule::settings ( ) const
inline

Get the labeling settings.

May return a null pointer.

Definition at line 69 of file qgsrulebasedlabeling.h.

void QgsRuleBasedLabeling::Rule::updateElseRules ( )
protected

Check which child rules are else rules and update the internal list of else rules.

Definition at line 105 of file qgsrulebasedlabeling.cpp.

Member Data Documentation

RuleList QgsRuleBasedLabeling::Rule::mChildren
protected

Definition at line 258 of file qgsrulebasedlabeling.h.

QString QgsRuleBasedLabeling::Rule::mDescription
protected

Definition at line 256 of file qgsrulebasedlabeling.h.

bool QgsRuleBasedLabeling::Rule::mElseRule
protected

Definition at line 257 of file qgsrulebasedlabeling.h.

RuleList QgsRuleBasedLabeling::Rule::mElseRules
protected

Definition at line 259 of file qgsrulebasedlabeling.h.

QgsExpression* QgsRuleBasedLabeling::Rule::mFilter
protected

Definition at line 263 of file qgsrulebasedlabeling.h.

QString QgsRuleBasedLabeling::Rule::mFilterExp
protected

Definition at line 256 of file qgsrulebasedlabeling.h.

bool QgsRuleBasedLabeling::Rule::mIsActive
protected

Definition at line 260 of file qgsrulebasedlabeling.h.

Rule* QgsRuleBasedLabeling::Rule::mParent
protected

Definition at line 253 of file qgsrulebasedlabeling.h.

int QgsRuleBasedLabeling::Rule::mScaleMaxDenom
protected

Definition at line 255 of file qgsrulebasedlabeling.h.

int QgsRuleBasedLabeling::Rule::mScaleMinDenom
protected

Definition at line 255 of file qgsrulebasedlabeling.h.

QgsPalLayerSettings* QgsRuleBasedLabeling::Rule::mSettings
protected

Definition at line 254 of file qgsrulebasedlabeling.h.


The documentation for this class was generated from the following files: