QGIS API Documentation 3.99.0-Master (d270888f95f)
Loading...
Searching...
No Matches
qgsnullsymbolrenderer.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsnullsymbolrenderer.cpp
3 ---------------------
4 begin : November 2014
5 copyright : (C) 2014 by Nyall Dawson
6 email : nyall dot dawson at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
17
18#include "qgsgeometry.h"
19#include "qgssymbol.h"
20
21#include <QDomDocument>
22#include <QDomElement>
23#include <QString>
24
25using namespace Qt::StringLiterals;
26
31
33
35{
36 return nullptr;
37}
38
43
44bool QgsNullSymbolRenderer::renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer, bool selected, bool drawVertexMarker )
45{
46 //render selected features or features being edited only
47 if ( !selected && !drawVertexMarker )
48 {
49 return true;
50 }
51
52 if ( !feature.hasGeometry() ||
53 feature.geometry().type() == Qgis::GeometryType::Null ||
55 return true;
56
57 if ( !mSymbol )
58 {
59 //create default symbol
60 mSymbol.reset( QgsSymbol::defaultSymbol( feature.geometry().type() ) );
61 mSymbol->startRender( context );
62 }
63
64 mSymbol->renderFeature( feature, context, layer, selected, drawVertexMarker, mCurrentVertexMarkerType, mCurrentVertexMarkerSize );
65
66 return true;
67}
68
70{
72
73 if ( mSymbol )
74 {
75 mSymbol->stopRender( context );
76 }
77}
78
80{
81 //return true for every feature - so they are still selectable
82 return true;
83}
84
86{
87 return QSet<QString>();
88}
89
91{
92 return u"NULL"_s;
93}
94
101
106
108{
109 Q_UNUSED( element )
110 Q_UNUSED( context )
112 return r;
113}
114
115QDomElement QgsNullSymbolRenderer::save( QDomDocument &doc, const QgsReadWriteContext &context )
116{
117 Q_UNUSED( context )
118 QDomElement rendererElem = doc.createElement( RENDERER_TAG_NAME );
119 rendererElem.setAttribute( u"type"_s, u"nullSymbol"_s );
120
121 saveRendererData( doc, rendererElem, context );
122
123 return rendererElem;
124}
125
127{
128 auto res = std::make_unique< QgsNullSymbolRenderer >();
129 renderer->copyRendererData( res.get() );
130 return res.release();
131}
@ Unknown
Unknown types.
Definition qgis.h:369
@ Null
No geometry.
Definition qgis.h:370
QgsFeatureRenderer(const QString &type)
virtual void stopRender(QgsRenderContext &context)
Must be called when a render cycle has finished, to allow the renderer to clean up.
void copyRendererData(QgsFeatureRenderer *destRenderer) const
Clones generic renderer data to another renderer.
Qgis::VertexMarkerType mCurrentVertexMarkerType
The current type of editing marker.
void saveRendererData(QDomDocument &doc, QDomElement &element, const QgsReadWriteContext &context)
Saves generic renderer data into the specified element.
double mCurrentVertexMarkerSize
The current size of editing marker.
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Definition qgsfeature.h:60
QgsGeometry geometry
Definition qgsfeature.h:71
bool hasGeometry() const
Returns true if the feature has an associated geometry.
Qgis::GeometryType type
~QgsNullSymbolRenderer() override
bool renderFeature(const QgsFeature &feature, QgsRenderContext &context, int layer=-1, bool selected=false, bool drawVertexMarker=false) override
Render a feature using this renderer in the given context.
QDomElement save(QDomDocument &doc, const QgsReadWriteContext &context) override
Stores renderer properties to an XML element.
QgsSymbol * originalSymbolForFeature(const QgsFeature &feature, QgsRenderContext &context) const override
Returns symbol for feature.
QgsSymbol * symbolForFeature(const QgsFeature &feature, QgsRenderContext &context) const override
To be overridden.
QSet< QString > usedAttributes(const QgsRenderContext &context) const override
Returns a list of attributes required by this renderer.
bool willRenderFeature(const QgsFeature &feature, QgsRenderContext &context) const override
Returns whether the renderer will render a feature or not.
static QgsNullSymbolRenderer * convertFromRenderer(const QgsFeatureRenderer *renderer)
Creates a QgsNullSymbolRenderer from an existing renderer.
void stopRender(QgsRenderContext &context) override
Must be called when a render cycle has finished, to allow the renderer to clean up.
QgsSymbolList symbols(QgsRenderContext &context) const override
Returns list of symbols used by the renderer.
QgsFeatureRenderer * clone() const override
Create a deep copy of this renderer.
QString dump() const override
Returns debug information about this renderer.
static QgsFeatureRenderer * create(QDomElement &element, const QgsReadWriteContext &context)
Creates a null renderer from XML element.
A container for the context for various read/write operations on objects.
Contains information about the context of a rendering operation.
Abstract base class for all rendered symbols.
Definition qgssymbol.h:231
void renderFeature(const QgsFeature &feature, QgsRenderContext &context, int layer=-1, bool selected=false, bool drawVertexMarker=false, Qgis::VertexMarkerType currentVertexMarkerType=Qgis::VertexMarkerType::SemiTransparentCircle, double currentVertexMarkerSize=0.0)
Render a feature.
static QgsSymbol * defaultSymbol(Qgis::GeometryType geomType)
Returns a new default symbol for the specified geometry type.
#define RENDERER_TAG_NAME
Definition qgsrenderer.h:57
QList< QgsSymbol * > QgsSymbolList
Definition qgsrenderer.h:51