QGIS API Documentation 3.99.0-Master (d270888f95f)
Loading...
Searching...
No Matches
qgsrendererregistry.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsrendererregistry.cpp
3 ---------------------
4 begin : November 2009
5 copyright : (C) 2009 by Martin Dobias
6 email : wonder dot sk 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#include "qgsrendererregistry.h"
16
17#include <QString>
18
19using namespace Qt::StringLiterals;
20
21// default renderers
30#include "qgsheatmaprenderer.h"
31#include "qgs25drenderer.h"
34#include "qgsvectorlayer.h"
35#include "qgsmarkersymbol.h"
36
38{
39 // add default renderers
40 addRenderer( new QgsRendererMetadata( u"nullSymbol"_s,
41 QObject::tr( "No Symbols" ),
43
44 addRenderer( new QgsRendererMetadata( u"singleSymbol"_s,
45 QObject::tr( "Single Symbol" ),
48
49 addRenderer( new QgsRendererMetadata( u"categorizedSymbol"_s,
50 QObject::tr( "Categorized" ),
52
53 addRenderer( new QgsRendererMetadata( u"graduatedSymbol"_s,
54 QObject::tr( "Graduated" ),
56
57 addRenderer( new QgsRendererMetadata( u"RuleRenderer"_s,
58 QObject::tr( "Rule-based" ),
61
62 addRenderer( new QgsRendererMetadata( u"pointDisplacement"_s,
63 QObject::tr( "Point Displacement" ),
65 QIcon(),
66 nullptr,
68
69 addRenderer( new QgsRendererMetadata( u"pointCluster"_s,
70 QObject::tr( "Point Cluster" ),
72 QIcon(),
73 nullptr,
75
76 addRenderer( new QgsRendererMetadata( u"mergedFeatureRenderer"_s,
77 QObject::tr( "Merged Features" ),
79 QIcon(),
80 nullptr,
82
83 addRenderer( new QgsRendererMetadata( u"invertedPolygonRenderer"_s,
84 QObject::tr( "Inverted Polygons" ),
86 QIcon(),
87 nullptr,
89
90 addRenderer( new QgsRendererMetadata( u"heatmapRenderer"_s,
91 QObject::tr( "Heatmap" ),
93 QIcon(),
94 nullptr,
96
97
98 addRenderer( new QgsRendererMetadata( u"25dRenderer"_s,
99 QObject::tr( "2.5 D" ),
101 QIcon(),
102 nullptr,
104
105 addRenderer( new QgsRendererMetadata( u"embeddedSymbol"_s,
106 QObject::tr( "Embedded Symbols" ),
108}
109
111{
112 qDeleteAll( mRenderers );
113}
114
116{
117 if ( !metadata || mRenderers.contains( metadata->name() ) )
118 return false;
119
120 mRenderers[metadata->name()] = metadata;
121 mRenderersOrder << metadata->name();
122 return true;
123}
124
125bool QgsRendererRegistry::removeRenderer( const QString &rendererName )
126{
127 if ( !mRenderers.contains( rendererName ) )
128 return false;
129
130 delete mRenderers[rendererName];
131 mRenderers.remove( rendererName );
132 mRenderersOrder.removeAll( rendererName );
133 return true;
134}
135
137{
138 return mRenderers.value( rendererName );
139}
140
142{
143 QStringList renderers;
144 const auto constMRenderersOrder = mRenderersOrder;
145 for ( const QString &renderer : constMRenderersOrder )
146 {
147 QgsRendererAbstractMetadata *r = mRenderers.value( renderer );
148 if ( r && r->compatibleLayerTypes() & layerTypes )
149 renderers << renderer;
150 }
151 return renderers;
152}
153
154QStringList QgsRendererRegistry::renderersList( const QgsVectorLayer *layer ) const
155{
157
158 switch ( layer->geometryType() )
159 {
162 break;
163
166 break;
167
170 break;
171
174 break;
175 }
176
177 return renderersList( layerType );
178}
@ Point
Points.
Definition qgis.h:366
@ Line
Lines.
Definition qgis.h:367
@ Polygon
Polygons.
Definition qgis.h:368
@ Unknown
Unknown types.
Definition qgis.h:369
@ Null
No geometry.
Definition qgis.h:370
static QgsFeatureRenderer * create(QDomElement &element, const QgsReadWriteContext &context)
Create a new 2.5D renderer from XML.
static QgsFeatureRenderer * create(QDomElement &element, const QgsReadWriteContext &context)
Creates a categorized renderer from an XML element.
static QgsFeatureRenderer * create(QDomElement &element, const QgsReadWriteContext &context)
Creates a new embedded symbol renderer from an XML element, using the supplied read/write context.
static QgsFeatureRenderer * create(QDomElement &element, const QgsReadWriteContext &context)
create renderer from XML element
static QgsFeatureRenderer * create(QDomElement &element, const QgsReadWriteContext &context)
Creates a new heatmap renderer instance from XML.
static QgsFeatureRenderer * create(QDomElement &element, const QgsReadWriteContext &context)
Creates a renderer out of an XML, for loading.
static QgsFeatureRenderer * create(QDomElement &element, const QgsReadWriteContext &context)
Creates a renderer out of an XML, for loading.
static QgsFeatureRenderer * create(QDomElement &element, const QgsReadWriteContext &context)
Creates a null renderer from XML element.
static QgsFeatureRenderer * create(QDomElement &symbologyElem, const QgsReadWriteContext &context)
Creates a renderer from XML element.
static QgsFeatureRenderer * create(QDomElement &symbologyElem, const QgsReadWriteContext &context)
Create a renderer from XML element.
Stores metadata about one renderer class.
LayerType
Layer types the renderer is compatible with.
@ All
Compatible with all vector layers.
@ LineLayer
Compatible with line layers.
@ PolygonLayer
Compatible with polygon layers.
@ PointLayer
Compatible with point layers.
virtual QgsRendererAbstractMetadata::LayerTypes compatibleLayerTypes() const
Returns flags indicating the types of layer the renderer is compatible with.
QString name() const
Returns the unique name of the renderer.
Convenience metadata class that uses static functions to create renderer and its widget.
bool addRenderer(QgsRendererAbstractMetadata *metadata)
Adds a renderer to the registry.
QStringList renderersList(QgsRendererAbstractMetadata::LayerTypes layerTypes=QgsRendererAbstractMetadata::All) const
Returns a list of available renderers.
QgsRendererAbstractMetadata * rendererMetadata(const QString &rendererName)
Returns the metadata for a specified renderer.
bool removeRenderer(const QString &rendererName)
Removes a renderer from registry.
static QgsFeatureRenderer * create(QDomElement &element, const QgsReadWriteContext &context)
Creates a new rule-based renderer instance from XML.
static QgsFeatureRenderer * createFromSld(QDomElement &element, Qgis::GeometryType geomType)
Creates a new rule based renderer from an SLD XML element.
static QgsFeatureRenderer * createFromSld(QDomElement &element, Qgis::GeometryType geomType)
Creates a new single symbol renderer from an SLD element.
static QgsFeatureRenderer * create(QDomElement &element, const QgsReadWriteContext &context)
Creates a new single symbol renderer from an XML element, using the supplied read/write context.
Represents a vector layer which manages a vector based dataset.
Q_INVOKABLE Qgis::GeometryType geometryType() const
Returns point, line or polygon.