29#include <QDomDocument>
46 return QStringLiteral(
"INVERTED: NULL" );
71 QDomElement embeddedRendererElem = element.firstChildElement( QStringLiteral(
"renderer-v2" ) );
72 if ( !embeddedRendererElem.isNull() )
77 r->
setPreprocessingEnabled( element.attribute( QStringLiteral(
"preprocessing" ), QStringLiteral(
"0" ) ).toInt() == 1 );
86 rendererElem.setAttribute( QStringLiteral(
"type" ), QStringLiteral(
"invertedPolygonRenderer" ) );
87 rendererElem.setAttribute( QStringLiteral(
"preprocessing" ),
preprocessingEnabled() ? QStringLiteral(
"1" ) : QStringLiteral(
"0" ) );
91 const QDomElement embeddedRendererElem =
mSubRenderer->save( doc, context );
92 rendererElem.appendChild( embeddedRendererElem );
102 if ( renderer->
type() == QLatin1String(
"invertedPolygonRenderer" ) )
106 else if ( renderer->
type() == QLatin1String(
"singleSymbol" ) ||
107 renderer->
type() == QLatin1String(
"categorizedSymbol" ) ||
108 renderer->
type() == QLatin1String(
"graduatedSymbol" ) ||
109 renderer->
type() == QLatin1String(
"RuleRenderer" ) )
111 auto res = std::make_unique< QgsInvertedPolygonRenderer >( renderer->
clone() );
113 return res.release();
115 else if ( renderer->
type() == QLatin1String(
"mergedFeatureRenderer" ) )
119 return res.release();
QgsFeatureRenderer(const QString &type)
static QgsFeatureRenderer * defaultRenderer(Qgis::GeometryType geomType)
Returns a new renderer - used by default in vector layers.
void copyRendererData(QgsFeatureRenderer *destRenderer) const
Clones generic renderer data to another renderer.
static QgsFeatureRenderer * load(QDomElement &symbologyElem, const QgsReadWriteContext &context)
create a renderer from XML element
void saveRendererData(QDomDocument &doc, QDomElement &element, const QgsReadWriteContext &context)
Saves generic renderer data into the specified element.
virtual const QgsFeatureRenderer * embeddedRenderer() const
Returns the current embedded renderer (subrenderer) for this feature renderer.
virtual QgsFeatureRenderer * clone() const =0
Create a deep copy of this renderer.
bool preprocessingEnabled() const
Returns true if the geometries are to be preprocessed (merged with an union) before rendering.
static QgsInvertedPolygonRenderer * convertFromRenderer(const QgsFeatureRenderer *renderer)
Creates a QgsInvertedPolygonRenderer by a conversion from an existing renderer.
static QgsFeatureRenderer * create(QDomElement &element, const QgsReadWriteContext &context)
Creates a renderer out of an XML, for loading.
void setPreprocessingEnabled(bool enabled)
Sets whether geometries preprocessing is enabled.
QString dump() const override
Returns debug information about this renderer.
QgsInvertedPolygonRenderer * clone() const override
Create a deep copy of this renderer.
QDomElement save(QDomDocument &doc, const QgsReadWriteContext &context) override
Stores renderer properties to an XML element.
QgsInvertedPolygonRenderer(QgsFeatureRenderer *embeddedRenderer=nullptr)
Constructor.
QgsMergedFeatureRenderer(QgsFeatureRenderer *embeddedRenderer)
Constructor for QgsMergedFeatureRenderer.
@ InvertOnly
Invert features only (polygons only).
GeometryOperation mOperation
Operation to apply to collected geometries.
void setEmbeddedRenderer(QgsFeatureRenderer *subRenderer) override
Sets an embedded renderer (subrenderer) for this feature renderer.
std::unique_ptr< QgsFeatureRenderer > mSubRenderer
Embedded renderer.
A container for the context for various read/write operations on objects.
#define RENDERER_TAG_NAME