QGIS API Documentation 4.0.0-Norrköping (1ddcee3d0e4)
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, QObject::tr( "No Symbols" ), QgsNullSymbolRenderer::create ) );
41
42 addRenderer( new QgsRendererMetadata( u"singleSymbol"_s, QObject::tr( "Single Symbol" ), QgsSingleSymbolRenderer::create, QgsSingleSymbolRenderer::createFromSld ) );
43
44 addRenderer( new QgsRendererMetadata( u"categorizedSymbol"_s, QObject::tr( "Categorized" ), QgsCategorizedSymbolRenderer::create ) );
45
46 addRenderer( new QgsRendererMetadata( u"graduatedSymbol"_s, QObject::tr( "Graduated" ), QgsGraduatedSymbolRenderer::create ) );
47
48 addRenderer( new QgsRendererMetadata( u"RuleRenderer"_s, QObject::tr( "Rule-based" ), QgsRuleBasedRenderer::create, QgsRuleBasedRenderer::createFromSld ) );
49
50 addRenderer( new QgsRendererMetadata( u"pointDisplacement"_s, QObject::tr( "Point Displacement" ), QgsPointDisplacementRenderer::create, QIcon(), nullptr, QgsRendererAbstractMetadata::PointLayer ) );
51
52 addRenderer( new QgsRendererMetadata( u"pointCluster"_s, QObject::tr( "Point Cluster" ), QgsPointClusterRenderer::create, QIcon(), nullptr, QgsRendererAbstractMetadata::PointLayer ) );
53
55 new QgsRendererMetadata( u"mergedFeatureRenderer"_s, QObject::tr( "Merged Features" ), QgsMergedFeatureRenderer::create, QIcon(), nullptr, QgsRendererAbstractMetadata::LineLayer | QgsRendererAbstractMetadata::PolygonLayer )
56 );
57
59 new QgsRendererMetadata( u"invertedPolygonRenderer"_s, QObject::tr( "Inverted Polygons" ), QgsInvertedPolygonRenderer::create, QIcon(), nullptr, QgsRendererAbstractMetadata::PolygonLayer )
60 );
61
62 addRenderer( new QgsRendererMetadata( u"heatmapRenderer"_s, QObject::tr( "Heatmap" ), QgsHeatmapRenderer::create, QIcon(), nullptr, QgsRendererAbstractMetadata::PointLayer ) );
63
64
65 addRenderer( new QgsRendererMetadata( u"25dRenderer"_s, QObject::tr( "2.5 D" ), Qgs25DRenderer::create, QIcon(), nullptr, QgsRendererAbstractMetadata::PolygonLayer ) );
66
67 addRenderer( new QgsRendererMetadata( u"embeddedSymbol"_s, QObject::tr( "Embedded Symbols" ), QgsEmbeddedSymbolRenderer::create ) );
68}
69
71{
72 qDeleteAll( mRenderers );
73}
74
76{
77 if ( !metadata || mRenderers.contains( metadata->name() ) )
78 return false;
79
80 mRenderers[metadata->name()] = metadata;
81 mRenderersOrder << metadata->name();
82 return true;
83}
84
85bool QgsRendererRegistry::removeRenderer( const QString &rendererName )
86{
87 if ( !mRenderers.contains( rendererName ) )
88 return false;
89
90 delete mRenderers[rendererName];
91 mRenderers.remove( rendererName );
92 mRenderersOrder.removeAll( rendererName );
93 return true;
94}
95
97{
98 return mRenderers.value( rendererName );
99}
100
102{
103 QStringList renderers;
104 const auto constMRenderersOrder = mRenderersOrder;
105 for ( const QString &renderer : constMRenderersOrder )
106 {
107 QgsRendererAbstractMetadata *r = mRenderers.value( renderer );
108 if ( r && r->compatibleLayerTypes() & layerTypes )
109 renderers << renderer;
110 }
111 return renderers;
112}
113
114QStringList QgsRendererRegistry::renderersList( const QgsVectorLayer *layer ) const
115{
117
118 switch ( layer->geometryType() )
119 {
122 break;
123
126 break;
127
130 break;
131
134 break;
135 }
136
137 return renderersList( layerType );
138}
@ Point
Points.
Definition qgis.h:380
@ Line
Lines.
Definition qgis.h:381
@ Polygon
Polygons.
Definition qgis.h:382
@ Unknown
Unknown types.
Definition qgis.h:383
@ Null
No geometry.
Definition qgis.h:384
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.