QgsInvertedPolygonRenderer class
QgsInvertedPolygonRenderer is a polygon-only feature renderer used to display features inverted, where the exterior is turned to an interior and where the exterior theoretically spans the entire plane, allowing to mask the surroundings of some features.
Contents
It is designed on top of another feature renderer, which is called "embedded" Most of the methods are then only proxies to the embedded renderer.
Features are collected to form one "inverted" polygon during renderFeature() and rendered on stopRender().
Public static functions
- static auto convertFromRenderer(const QgsFeatureRenderer* renderer) -> QgsInvertedPolygonRenderer*
- Creates a QgsInvertedPolygonRenderer by a conversion from an existing renderer.
- static auto create(QDomElement& element, const QgsReadWriteContext& context) -> QgsFeatureRenderer*
- Creates a renderer out of an XML, for loading.
Constructors, destructors, conversion operators
- QgsInvertedPolygonRenderer(QgsFeatureRenderer* embeddedRenderer = nullptr)
- Constructor.
- QgsInvertedPolygonRenderer(const QgsInvertedPolygonRenderer&) deleted
- Direct copies are forbidden. Use clone() instead.
Public functions
- auto capabilities() -> QgsFeatureRenderer::Capabilities override
- Proxy that will call this method on the embedded renderer.
- void checkLegendSymbolItem(const QString& key, bool state = true) override
- item in symbology was checked
- auto clone() const -> QgsInvertedPolygonRenderer* override
- Create a deep copy of this renderer.
- auto dump() const -> QString override
- Returns debug information about this renderer.
- auto embeddedRenderer() const -> const QgsFeatureRenderer* override
- Returns the current embedded renderer (subrenderer) for this feature renderer.
- auto filterNeedsGeometry() const -> bool override
- Returns true if this renderer requires the geometry to apply the filter.
- auto legendSymbolItemChecked(const QString& key) -> bool override
- items of symbology items in legend is checked
- auto legendSymbolItems() const -> QgsLegendSymbolList override
- Proxy that will call this method on the embedded renderer.
- auto legendSymbolItemsCheckable() const -> bool override
- items of symbology items in legend should be checkable
- auto operator=(const QgsInvertedPolygonRenderer&) -> QgsInvertedPolygonRenderer& deleted
- Direct copies are forbidden. Use clone() instead.
- auto originalSymbolForFeature(const QgsFeature& feature, QgsRenderContext& context) const -> QgsSymbol* override
- Proxy that will call this method on the embedded renderer.
- auto originalSymbolsForFeature(const QgsFeature& feature, QgsRenderContext& context) const -> QgsSymbolList override
- Proxy that will call this method on the embedded renderer.
- auto preprocessingEnabled() const -> bool
- auto renderFeature(const QgsFeature& feature, QgsRenderContext& context, int layer = -1, bool selected = false, bool drawVertexMarker = false) -> bool override
- Renders a given feature.
- auto save(QDomDocument& doc, const QgsReadWriteContext& context) -> QDomElement override
- store renderer info to XML element
- void setEmbeddedRenderer(QgsFeatureRenderer* subRenderer) override
- Sets an embedded renderer (subrenderer) for this feature renderer.
- void setLegendSymbolItem(const QString& key, QgsSymbol* symbol) override
- Sets the symbol to be used for a legend symbol item.
- void setPreprocessingEnabled(bool enabled)
- void startRender(QgsRenderContext& context, const QgsFields& fields) override
- Must be called when a new render cycle is started.
- void stopRender(QgsRenderContext& context) override
- The actual rendering will take place here.
- auto symbolForFeature(const QgsFeature& feature, QgsRenderContext& context) const -> QgsSymbol* override
- Proxy that will call this method on the embedded renderer.
- auto symbols(QgsRenderContext& context) const -> QgsSymbolList override
- Proxy that will call this method on the embedded renderer.
- auto symbolsForFeature(const QgsFeature& feature, QgsRenderContext& context) const -> QgsSymbolList override
- Proxy that will call this method on the embedded renderer.
- auto usedAttributes(const QgsRenderContext& context) const -> QSet<QString> override
- Proxy that will call this method on the embedded renderer.
- auto willRenderFeature(const QgsFeature& feature, QgsRenderContext& context) const -> bool override
- Proxy that will call this method on the embedded renderer.
Function documentation
static QgsInvertedPolygonRenderer* QgsInvertedPolygonRenderer:: convertFromRenderer(const QgsFeatureRenderer* renderer)
Creates a QgsInvertedPolygonRenderer by a conversion from an existing renderer.
| Returns | a new renderer if the conversion was possible, otherwise 0. |
|---|
QgsInvertedPolygonRenderer:: QgsInvertedPolygonRenderer(QgsFeatureRenderer* embeddedRenderer = nullptr)
Constructor.
| Parameters | |
|---|---|
| embeddedRenderer | optional embeddedRenderer. If null, a default one will be assigned. Ownership will be transferred. |
void QgsInvertedPolygonRenderer:: checkLegendSymbolItem(const QString& key,
bool state = true) override
item in symbology was checked
QgsInvertedPolygonRenderer* QgsInvertedPolygonRenderer:: clone() const override
Create a deep copy of this renderer.
| Returns | A copy of this renderer |
|---|
Should be implemented by all subclasses and generate a proper subclass.
const QgsFeatureRenderer* QgsInvertedPolygonRenderer:: embeddedRenderer() const override
Returns the current embedded renderer (subrenderer) for this feature renderer.
The base class implementation does not use subrenderers and will always return null.
bool QgsInvertedPolygonRenderer:: legendSymbolItemChecked(const QString& key) override
items of symbology items in legend is checked
bool QgsInvertedPolygonRenderer:: legendSymbolItemsCheckable() const override
items of symbology items in legend should be checkable
bool QgsInvertedPolygonRenderer:: preprocessingEnabled() const
| Returns | true if the geometries are to be preprocessed (merged with an union) before rendering. |
|---|
bool QgsInvertedPolygonRenderer:: renderFeature(const QgsFeature& feature,
QgsRenderContext& context,
int layer = -1,
bool selected = false,
bool drawVertexMarker = false) override
Renders a given feature.
| Parameters | |
|---|---|
| feature | the feature to render |
| context | the rendering context |
| layer | the symbol layer to render, if that makes sense |
| selected | whether this feature has been selected (this will add decorations) |
| drawVertexMarker | whether this feature has vertex markers (in edit mode usually) |
| Returns | true if the rendering was OK |
This will here collect features. The actual rendering will be postponed to stopRender()
void QgsInvertedPolygonRenderer:: setEmbeddedRenderer(QgsFeatureRenderer* subRenderer) override
Sets an embedded renderer (subrenderer) for this feature renderer.
| Parameters | |
|---|---|
| subRenderer | the embedded renderer. Ownership will be transferred. |
The base class implementation does nothing with subrenderers, but individual derived classes can use these to modify their behavior.
void QgsInvertedPolygonRenderer:: setLegendSymbolItem(const QString& key,
QgsSymbol* symbol) override
Sets the symbol to be used for a legend symbol item.
| Parameters | |
|---|---|
| key | rule key for legend symbol |
| symbol | new symbol for legend item. Ownership is transferred to renderer. |
void QgsInvertedPolygonRenderer:: setPreprocessingEnabled(bool enabled)
| Parameters | |
|---|---|
| enabled | enables or disables the preprocessing. When enabled, geometries will be merged with an union before being rendered. It allows fixing some rendering artifacts (when rendering overlapping polygons for instance). This will involve some CPU-demanding computations and is thus disabled by default. |
void QgsInvertedPolygonRenderer:: startRender(QgsRenderContext& context,
const QgsFields& fields) override
Must be called when a new render cycle is started.
| Parameters | |
|---|---|
| context | Additional information passed to the renderer about the job which will be rendered |
| fields | The fields available for rendering |
A call to startRender() must always be followed by a corresponding call to stopRender() after all features have been rendered.
void QgsInvertedPolygonRenderer:: stopRender(QgsRenderContext& context) override
The actual rendering will take place here.
Features collected during renderFeature() are rendered using the embedded feature renderer