QGIS API Documentation 4.1.0-Master (60fea48833c)
Loading...
Searching...
No Matches
qgsrendererregistry.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsrendererregistry.h
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#ifndef QGSRENDERERREGISTRY_H
16#define QGSRENDERERREGISTRY_H
17
18#include "qgis_core.h"
19#include "qgis_sip.h"
20
21#include <QDomElement>
22#include <QIcon>
23#include <QMap>
24#include <QStringList>
25
26// #include "qgis.h"
27#include "qgswkbtypes.h"
28
31class QgsVectorLayer;
32class QgsStyle;
34
43{
44 public:
55 Q_DECLARE_FLAGS( LayerTypes, LayerType )
56
57
64 QgsRendererAbstractMetadata( const QString &name, const QString &visibleName, const QIcon &icon = QIcon() )
65 : mName( name )
67 , mIcon( icon )
68 {}
69 virtual ~QgsRendererAbstractMetadata() = default;
70
75 QString name() const { return mName; }
76
81 QString visibleName() const { return mVisibleName; }
82
87 QIcon icon() const { return mIcon; }
88
93 void setIcon( const QIcon &icon ) { mIcon = icon; }
94
99
104 virtual QgsFeatureRenderer *createRenderer( QDomElement &elem, const QgsReadWriteContext &context ) = 0 SIP_FACTORY;
105
114 {
115 Q_UNUSED( layer )
116 Q_UNUSED( style );
117 Q_UNUSED( oldRenderer );
118 return nullptr;
119 }
120
125 {
126 Q_UNUSED( elem )
127 Q_UNUSED( geomType );
128 return nullptr;
129 }
130
131 protected:
133 QString mName;
137 QIcon mIcon;
138};
139
140
142
143
146typedef QgsFeatureRenderer *( *QgsRendererCreateFromSldFunc )( QDomElement &, Qgis::GeometryType geomType ) SIP_SKIP;
147
153{
154 public:
160 const QString &name,
161 const QString &visibleName,
162 QgsRendererCreateFunc pfCreate,
163 const QIcon &icon = QIcon(),
164 QgsRendererWidgetFunc pfWidget = nullptr,
167 mCreateFunc( pfCreate ),
168 mWidgetFunc( pfWidget ),
169 mCreateFromSldFunc( nullptr ),
170 mLayerTypes( layerTypes )
171 {}
172
175 const QString &name,
176 const QString &visibleName,
177 QgsRendererCreateFunc pfCreate,
178 QgsRendererCreateFromSldFunc pfCreateFromSld,
179 const QIcon &icon = QIcon(),
180 QgsRendererWidgetFunc pfWidget = nullptr,
183 mCreateFunc( pfCreate ),
184 mWidgetFunc( pfWidget ),
185 mCreateFromSldFunc( pfCreateFromSld ),
186 mLayerTypes( layerTypes )
187 {}
188
189 QgsFeatureRenderer *createRenderer( QDomElement &elem, const QgsReadWriteContext &context ) override SIP_FACTORY { return mCreateFunc ? mCreateFunc( elem, context ) : nullptr; }
191 {
192 return mWidgetFunc ? mWidgetFunc( layer, style, renderer ) : nullptr;
193 }
194 QgsFeatureRenderer *createRendererFromSld( QDomElement &elem, Qgis::GeometryType geomType ) override SIP_FACTORY { return mCreateFromSldFunc ? mCreateFromSldFunc( elem, geomType ) : nullptr; }
195
202
205
206 QgsRendererAbstractMetadata::LayerTypes compatibleLayerTypes() const override { return mLayerTypes; }
207
208 protected:
215
216 private:
217#ifdef SIP_RUN
219#endif
220
222};
223
224
234
235class CORE_EXPORT QgsRendererRegistry
236{
237 public:
240
243
251
258 bool removeRenderer( const QString &rendererName );
259
264 QgsRendererAbstractMetadata *rendererMetadata( const QString &rendererName );
265
271
276 QStringList renderersList( const QgsVectorLayer *layer ) const;
277
278 private:
279#ifdef SIP_RUN
281#endif
282
284 QMap<QString, QgsRendererAbstractMetadata *> mRenderers;
285
287 QStringList mRenderersOrder;
288};
289
290#endif // QGSRENDERERREGISTRY_H
Provides global constants and enumerations for use throughout the application.
Definition qgis.h:62
GeometryType
The geometry types are used to group Qgis::WkbType in a coarse way.
Definition qgis.h:379
Abstract base class for all 2D vector feature renderers.
A container for the context for various read/write operations on objects.
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.
QIcon icon() const
Returns an icon representing the renderer.
virtual ~QgsRendererAbstractMetadata()=default
void setIcon(const QIcon &icon)
Sets an icon representing the renderer.
QString mName
name used within QGIS for identification (the same what renderer's type() returns)
QString mVisibleName
name visible for users (translatable)
virtual QgsFeatureRenderer * createRenderer(QDomElement &elem, const QgsReadWriteContext &context)=0
Returns new instance of the renderer given the DOM element.
QgsRendererAbstractMetadata(const QString &name, const QString &visibleName, const QIcon &icon=QIcon())
Constructor for QgsRendererAbstractMetadata, with the specified name.
virtual QgsRendererAbstractMetadata::LayerTypes compatibleLayerTypes() const
Returns flags indicating the types of layer the renderer is compatible with.
QIcon mIcon
icon to be shown in the renderer properties dialog
QString visibleName() const
Returns a friendly display name of the renderer.
virtual QgsFeatureRenderer * createRendererFromSld(QDomElement &elem, Qgis::GeometryType geomType)
Returns a new instance of the renderer, converted from an SLD XML element.
virtual QgsRendererWidget * createRendererWidget(QgsVectorLayer *layer, QgsStyle *style, QgsFeatureRenderer *oldRenderer)
Returns new instance of settings widget for the renderer.
QString name() const
Returns the unique name of the renderer.
QgsFeatureRenderer * createRenderer(QDomElement &elem, const QgsReadWriteContext &context) override
Returns new instance of the renderer given the DOM element.
void setWidgetFunction(QgsRendererWidgetFunc f)
QgsRendererWidget * createRendererWidget(QgsVectorLayer *layer, QgsStyle *style, QgsFeatureRenderer *renderer) override
Returns new instance of settings widget for the renderer.
QgsRendererAbstractMetadata::LayerTypes compatibleLayerTypes() const override
Returns flags indicating the types of layer the renderer is compatible with.
QgsFeatureRenderer * createRendererFromSld(QDomElement &elem, Qgis::GeometryType geomType) override
Returns a new instance of the renderer, converted from an SLD XML element.
QgsRendererCreateFunc createFunction() const
QgsRendererMetadata(const QString &name, const QString &visibleName, QgsRendererCreateFunc pfCreate, const QIcon &icon=QIcon(), QgsRendererWidgetFunc pfWidget=nullptr, QgsRendererAbstractMetadata::LayerTypes layerTypes=QgsRendererAbstractMetadata::All)
Construct metadata.
QgsRendererCreateFromSldFunc mCreateFromSldFunc
pointer to function that creates an instance of the renderer from SLD
QgsRendererWidgetFunc widgetFunction() const
QgsRendererCreateFunc mCreateFunc
pointer to function that creates an instance of the renderer when loading project / style
QgsRendererMetadata(const QString &name, const QString &visibleName, QgsRendererCreateFunc pfCreate, QgsRendererCreateFromSldFunc pfCreateFromSld, const QIcon &icon=QIcon(), QgsRendererWidgetFunc pfWidget=nullptr, QgsRendererAbstractMetadata::LayerTypes layerTypes=QgsRendererAbstractMetadata::All)
QgsRendererCreateFromSldFunc createFromSldFunction() const
QgsRendererWidgetFunc mWidgetFunc
pointer to function that creates a widget for configuration of renderer's params
QgsRendererRegistry & operator=(const QgsRendererRegistry &rh)=delete
bool addRenderer(QgsRendererAbstractMetadata *metadata)
Adds a renderer to the registry.
QgsRendererRegistry(const QgsRendererRegistry &rh)=delete
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.
Base class for renderer settings widgets.
A database of saved style entities, including symbols, color ramps, text formats and others.
Definition qgsstyle.h:89
Represents a vector layer which manages a vector based dataset.
#define SIP_EXTERNAL
Definition qgis_sip.h:123
#define SIP_ENUM_BASETYPE(type)
Definition qgis_sip.h:274
#define SIP_SKIP
Definition qgis_sip.h:133
#define SIP_TRANSFER
Definition qgis_sip.h:35
#define SIP_FACTORY
Definition qgis_sip.h:83
Q_DECLARE_OPERATORS_FOR_FLAGS(QgsProjectionSelectionWidget::CrsOptions)
QgsFeatureRenderer *(* QgsRendererCreateFromSldFunc)(QDomElement &, Qgis::GeometryType geomType)
QgsRendererWidget *(* QgsRendererWidgetFunc)(QgsVectorLayer *, QgsStyle *, QgsFeatureRenderer *)
QgsFeatureRenderer *(* QgsRendererCreateFunc)(QDomElement &, const QgsReadWriteContext &)