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.

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