QGIS API Documentation 4.0.0-Norrköping (1ddcee3d0e4)
Loading...
Searching...
No Matches
qgstiledscenerendererregistry.h
Go to the documentation of this file.
1/***************************************************************************
2 qgstiledscenerendererregistry.h
3 ---------------------
4 begin : August 2023
5 copyright : (C) 2023 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#ifndef QGSTILEDSCENERENDERERREGISTRY_H
16#define QGSTILEDSCENERENDERERREGISTRY_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
29class QgsStyle;
30#ifndef SIP_RUN
32#endif
33
34
45{
46 public:
54 QgsTiledSceneRendererAbstractMetadata( const QString &name, const QString &visibleName, const QIcon &icon = QIcon() )
55 : mName( name )
57 , mIcon( icon )
58 {}
60
65 QString name() const { return mName; }
66
71 QString visibleName() const { return mVisibleName; }
72
77 QIcon icon() const { return mIcon; }
78
83 void setIcon( const QIcon &icon ) { mIcon = icon; }
84
89 virtual QgsTiledSceneRenderer *createRenderer( QDomElement &elem, const QgsReadWriteContext &context ) = 0 SIP_FACTORY;
90
91#ifndef SIP_RUN
92
103 {
104 Q_UNUSED( layer )
105 Q_UNUSED( style );
106 Q_UNUSED( oldRenderer );
107 return nullptr;
108 }
109#endif
110
111 protected:
113 QString mName;
117 QIcon mIcon;
118};
119
120typedef QgsTiledSceneRenderer *( *QgsTiledSceneRendererCreateFunc )( QDomElement &, const QgsReadWriteContext & ) SIP_SKIP;
121typedef QgsTiledSceneRendererWidget *( *QgsTiledSceneRendererWidgetFunc )( QgsTiledSceneLayer *, QgsStyle *, QgsTiledSceneRenderer * ) SIP_SKIP;
122
129{
130 public:
135 QgsTiledSceneRendererMetadata( const QString &name, const QString &visibleName, QgsTiledSceneRendererCreateFunc pfCreate, const QIcon &icon = QIcon(), QgsTiledSceneRendererWidgetFunc pfWidget = nullptr )
137 mCreateFunc( pfCreate ),
138 mWidgetFunc( pfWidget )
139 {}
140
141 QgsTiledSceneRenderer *createRenderer( QDomElement &elem, const QgsReadWriteContext &context ) override SIP_FACTORY { return mCreateFunc ? mCreateFunc( elem, context ) : nullptr; }
142
143#ifndef SIP_RUN
145 {
146 return mWidgetFunc ? mWidgetFunc( layer, style, renderer ) : nullptr;
147 }
148#endif
149
154
157
158 protected:
163
164 private:
165#ifdef SIP_RUN
167#endif
168};
169
170
182{
183 public:
186
189
197
204 bool removeRenderer( const QString &rendererName );
205
210 QgsTiledSceneRendererAbstractMetadata *rendererMetadata( const QString &rendererName );
211
215 QStringList renderersList() const;
216
223
224 private:
225#ifdef SIP_RUN
227#endif
228
230 QMap<QString, QgsTiledSceneRendererAbstractMetadata *> mRenderers;
231
233 QStringList mRenderersOrder;
234};
235
236#endif // QGSTILEDSCENERENDERERREGISTRY_H
A container for the context for various read/write operations on objects.
A database of saved style entities, including symbols, color ramps, text formats and others.
Definition qgsstyle.h:89
Represents a map layer supporting display of tiled scene objects.
Stores metadata about one tiled scene renderer class.
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)
virtual QgsTiledSceneRendererWidget * createRendererWidget(QgsTiledSceneLayer *layer, QgsStyle *style, QgsTiledSceneRenderer *oldRenderer)
Returns new instance of settings widget for the renderer.
QIcon mIcon
icon to be shown in the renderer properties dialog
QgsTiledSceneRendererAbstractMetadata(const QString &name, const QString &visibleName, const QIcon &icon=QIcon())
Constructor for QgsTiledSceneRendererAbstractMetadata, with the specified name.
QIcon icon() const
Returns an icon representing the renderer.
QString name() const
Returns the unique name of the renderer.
QString visibleName() const
Returns a friendly display name of the renderer.
QString mVisibleName
name visible for users (translatable)
virtual QgsTiledSceneRenderer * createRenderer(QDomElement &elem, const QgsReadWriteContext &context)=0
Returns new instance of the renderer given the DOM element.
virtual ~QgsTiledSceneRendererAbstractMetadata()=default
QgsTiledSceneRendererWidget * createRendererWidget(QgsTiledSceneLayer *layer, QgsStyle *style, QgsTiledSceneRenderer *renderer) override
Returns new instance of settings widget for the renderer.
QgsTiledSceneRendererCreateFunc createFunction() const
QgsTiledSceneRendererWidgetFunc widgetFunction() const
QgsTiledSceneRenderer * createRenderer(QDomElement &elem, const QgsReadWriteContext &context) override
Returns new instance of the renderer given the DOM element.
void setWidgetFunction(QgsTiledSceneRendererWidgetFunc f)
QgsTiledSceneRendererMetadata(const QString &name, const QString &visibleName, QgsTiledSceneRendererCreateFunc pfCreate, const QIcon &icon=QIcon(), QgsTiledSceneRendererWidgetFunc pfWidget=nullptr)
Construct metadata.
QgsTiledSceneRendererCreateFunc mCreateFunc
pointer to function that creates an instance of the renderer when loading project / style
QgsTiledSceneRendererWidgetFunc mWidgetFunc
pointer to function that creates a widget for configuration of renderer's params
QgsTiledSceneRendererAbstractMetadata * rendererMetadata(const QString &rendererName)
Returns the metadata for a specified renderer.
bool removeRenderer(const QString &rendererName)
Removes a renderer from registry.
static QgsTiledSceneRenderer * defaultRenderer(const QgsTiledSceneLayer *layer)
Returns a new default tiled scene renderer for a specified layer.
QStringList renderersList() const
Returns a list of available renderers.
QgsTiledSceneRendererRegistry(const QgsTiledSceneRendererRegistry &rh)=delete
bool addRenderer(QgsTiledSceneRendererAbstractMetadata *metadata)
Adds a renderer to the registry.
QgsTiledSceneRendererRegistry & operator=(const QgsTiledSceneRendererRegistry &rh)=delete
Base class for tiled scene 2D renderer settings widgets.
Abstract base class for 2d tiled scene renderers.
#define SIP_EXTERNAL
Definition qgis_sip.h:123
#define SIP_SKIP
Definition qgis_sip.h:133
#define SIP_TRANSFER
Definition qgis_sip.h:35
#define SIP_FACTORY
Definition qgis_sip.h:83
QgsTiledSceneRenderer *(* QgsTiledSceneRendererCreateFunc)(QDomElement &, const QgsReadWriteContext &)
QgsTiledSceneRendererWidget *(* QgsTiledSceneRendererWidgetFunc)(QgsTiledSceneLayer *, QgsStyle *, QgsTiledSceneRenderer *)