QGIS API Documentation 3.99.0-Master (26c88405ac0)
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
25 : QgsFeatureRenderer( QStringLiteral( "nullSymbol" ) )
26{
27}
28
30
32{
33 return nullptr;
34}
35
40
41bool QgsNullSymbolRenderer::renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer, bool selected, bool drawVertexMarker )
42{
43 //render selected features or features being edited only
44 if ( !selected && !drawVertexMarker )
45 {
46 return true;
47 }
48
49 if ( !feature.hasGeometry() ||
50 feature.geometry().type() == Qgis::GeometryType::Null ||
52 return true;
53
54 if ( !mSymbol )
55 {
56 //create default symbol
57 mSymbol.reset( QgsSymbol::defaultSymbol( feature.geometry().type() ) );
58 mSymbol->startRender( context );
59 }
60
61 mSymbol->renderFeature( feature, context, layer, selected, drawVertexMarker, mCurrentVertexMarkerType, mCurrentVertexMarkerSize );
62
63 return true;
64}
65
67{
69
70 if ( mSymbol )
71 {
72 mSymbol->stopRender( context );
73 }
74}
75
77{
78 //return true for every feature - so they are still selectable
79 return true;
80}
81
83{
84 return QSet<QString>();
85}
86
88{
89 return QStringLiteral( "NULL" );
90}
91
98
103
105{
106 Q_UNUSED( element )
107 Q_UNUSED( context )
109 return r;
110}
111
112QDomElement QgsNullSymbolRenderer::save( QDomDocument &doc, const QgsReadWriteContext &context )
113{
114 Q_UNUSED( context )
115 QDomElement rendererElem = doc.createElement( RENDERER_TAG_NAME );
116 rendererElem.setAttribute( QStringLiteral( "type" ), QStringLiteral( "nullSymbol" ) );
117
118 saveRendererData( doc, rendererElem, context );
119
120 return rendererElem;
121}
122
124{
125 auto res = std::make_unique< QgsNullSymbolRenderer >();
126 renderer->copyRendererData( res.get() );
127 return res.release();
128}
@ Unknown
Unknown types.
Definition qgis.h:362
@ Null
No geometry.
Definition qgis.h:363
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:58
QgsGeometry geometry
Definition qgsfeature.h:69
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:55
QList< QgsSymbol * > QgsSymbolList
Definition qgsrenderer.h:49