29#include <QDomDocument>
33using namespace Qt::StringLiterals;
49 return u
"INVERTED: NULL"_s;
72 auto r = std::make_unique<QgsInvertedPolygonRenderer>();
74 QDomElement embeddedRendererElem = element.firstChildElement( u
"renderer-v2"_s );
75 if ( !embeddedRendererElem.isNull() )
78 r->setEmbeddedRenderer( renderer.release() );
80 r->setPreprocessingEnabled( element.attribute( u
"preprocessing"_s, u
"0"_s ).toInt() == 1 );
89 rendererElem.setAttribute( u
"type"_s, u
"invertedPolygonRenderer"_s );
94 const QDomElement embeddedRendererElem =
mSubRenderer->save( doc, context );
95 rendererElem.appendChild( embeddedRendererElem );
105 if ( renderer->
type() ==
"invertedPolygonRenderer"_L1 )
109 else if ( renderer->
type() ==
"singleSymbol"_L1 || renderer->
type() ==
"categorizedSymbol"_L1 || renderer->
type() ==
"graduatedSymbol"_L1 || renderer->
type() ==
"RuleRenderer"_L1 )
111 auto res = std::make_unique< QgsInvertedPolygonRenderer >( renderer->
clone() );
115 else if ( renderer->
type() ==
"mergedFeatureRenderer"_L1 )
static std::unique_ptr< QgsFeatureRenderer > load(QDomElement &symbologyElem, const QgsReadWriteContext &context)
create a renderer from XML element
QgsFeatureRenderer(const QString &type)
void copyRendererData(QgsFeatureRenderer *destRenderer) const
Clones generic renderer data to another renderer.
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.
static std::unique_ptr< QgsFeatureRenderer > defaultRenderer(Qgis::GeometryType geomType)
Returns a new renderer - used by default in vector layers.
virtual QgsFeatureRenderer * clone() const =0
Create a deep copy of this renderer.
static std::unique_ptr< QgsInvertedPolygonRenderer > convertFromRenderer(const QgsFeatureRenderer *renderer)
Creates a QgsInvertedPolygonRenderer by a conversion from an existing renderer.
bool preprocessingEnabled() const
Returns true if the geometries are to be preprocessed (merged with an union) before rendering.
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.
static std::unique_ptr< QgsFeatureRenderer > create(QDomElement &element, const QgsReadWriteContext &context)
Creates a renderer out of an XML, for loading.
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.
std::unique_ptr< QgsFeatureRenderer > mSubRenderer
Embedded renderer.
A container for the context for various read/write operations on objects.
#define RENDERER_TAG_NAME