QGIS API Documentation 3.99.0-Master (2fe06baccd8)
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:
47
55 QgsTiledSceneRendererAbstractMetadata( const QString &name, const QString &visibleName, const QIcon &icon = QIcon() )
56 : mName( name )
58 , mIcon( icon )
59 {}
61
66 QString name() const { return mName; }
67
72 QString visibleName() const { return mVisibleName; }
73
78 QIcon icon() const { return mIcon; }
79
84 void setIcon( const QIcon &icon ) { mIcon = icon; }
85
90 virtual QgsTiledSceneRenderer *createRenderer( QDomElement &elem, const QgsReadWriteContext &context ) = 0 SIP_FACTORY;
91
92#ifndef SIP_RUN
93
104 { Q_UNUSED( layer ) Q_UNUSED( style ); Q_UNUSED( oldRenderer ); return nullptr; }
105#endif
106
107 protected:
109 QString mName;
113 QIcon mIcon;
114};
115
116typedef QgsTiledSceneRenderer *( *QgsTiledSceneRendererCreateFunc )( QDomElement &, const QgsReadWriteContext & ) SIP_SKIP;
117typedef QgsTiledSceneRendererWidget *( *QgsTiledSceneRendererWidgetFunc )( QgsTiledSceneLayer *, QgsStyle *, QgsTiledSceneRenderer * ) SIP_SKIP;
118
125{
126 public:
127
133 const QString &visibleName,
135 const QIcon &icon = QIcon(),
136 QgsTiledSceneRendererWidgetFunc pfWidget = nullptr ) SIP_SKIP
138 , mCreateFunc( pfCreate )
139 , mWidgetFunc( pfWidget )
140 {}
141
142 QgsTiledSceneRenderer *createRenderer( QDomElement &elem, const QgsReadWriteContext &context ) override SIP_FACTORY
143 { return mCreateFunc ? mCreateFunc( elem, context ) : nullptr; }
144
145#ifndef SIP_RUN
147 { return mWidgetFunc ? mWidgetFunc( layer, style, renderer ) : nullptr; }
148#endif
149
154
157
158 protected:
163
164 private:
165#ifdef SIP_RUN
167#endif
168
169};
170
171
183{
184 public:
185
188
191
199
206 bool removeRenderer( const QString &rendererName );
207
212 QgsTiledSceneRendererAbstractMetadata *rendererMetadata( const QString &rendererName );
213
217 QStringList renderersList() const;
218
225
226 private:
227#ifdef SIP_RUN
229#endif
230
232 QMap<QString, QgsTiledSceneRendererAbstractMetadata *> mRenderers;
233
235 QStringList mRenderersOrder;
236};
237
238#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:88
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:124
#define SIP_SKIP
Definition qgis_sip.h:134
#define SIP_TRANSFER
Definition qgis_sip.h:36
#define SIP_FACTORY
Definition qgis_sip.h:84
QgsTiledSceneRenderer *(* QgsTiledSceneRendererCreateFunc)(QDomElement &, const QgsReadWriteContext &)
QgsTiledSceneRendererWidget *(* QgsTiledSceneRendererWidgetFunc)(QgsTiledSceneLayer *, QgsStyle *, QgsTiledSceneRenderer *)