QGIS API Documentation 3.99.0-Master (26c88405ac0)
Loading...
Searching...
No Matches
qgs3dterrainregistry.h
Go to the documentation of this file.
1/***************************************************************************
2 qgs3dterrainregistry.h
3 --------------------------------------
4 Date : November 2024
5 Copyright : (C) 2024 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
16#ifndef QGS3DTERRAINREGISTRY_H
17#define QGS3DTERRAINREGISTRY_H
18
19#include "qgis_3d.h"
20#include "qgis_sip.h"
21
22#include <QDomElement>
23#include <QIcon>
24#include <QMap>
25#include <QString>
26
31class QgsRectangle;
32
43{
44 public:
45
51 Qgs3DTerrainAbstractMetadata( const QString &type, const QString &visibleName, const QIcon &icon = QIcon() )
52 : mType( type )
53 , mVisibleName( visibleName )
54 , mIcon( icon )
55 {}
56
57 virtual ~Qgs3DTerrainAbstractMetadata() = default;
58
62 QString type() const { return mType; }
63
67 QString visibleName() const { return mVisibleName; }
68
72 QIcon icon() const { return mIcon; }
73
80
89
90 private:
91 QString mType;
92 QString mVisibleName;
93 QIcon mIcon;
94};
95
97SIP_SKIP typedef QgsAbstractTerrainSettings *( *QgsTerrainSettingsCreateFunc )();
99SIP_SKIP typedef QgsTerrainGenerator *( *QgsTerrainGeneratorCreateFunc )();
100
101#ifndef SIP_RUN
102
112{
113 public:
114
123 Qgs3DTerrainMetadata( const QString &type, const QString &visibleName, QgsTerrainSettingsCreateFunc pfSettingsCreate, QgsTerrainGeneratorCreateFunc pfGeneratorCreate, const QIcon &icon = QIcon() )
125 , mCreateFunc( pfSettingsCreate )
126 , mGeneratorCreateFunc( pfGeneratorCreate )
127 {}
128
133
137 QgsTerrainGeneratorCreateFunc createGeneratorFunction() const { return mGeneratorCreateFunc; }
138
139 QgsAbstractTerrainSettings *createTerrainSettings() override SIP_FACTORY { return mCreateFunc ? mCreateFunc() : nullptr; }
140 QgsTerrainGenerator *createTerrainGenerator() override { return mGeneratorCreateFunc ? mGeneratorCreateFunc() : nullptr; }
141
142 private:
144 QgsTerrainGeneratorCreateFunc mGeneratorCreateFunc;
145};
146#endif
147
148
158class _3D_EXPORT Qgs3DTerrainRegistry
159{
160 public:
163
166
168 Qgs3DTerrainAbstractMetadata *terrainMetadata( const QString &type ) const;
169
173 QStringList types() const;
174
177
186
196 SIP_SKIP QgsTerrainGenerator *createTerrainGenerator( const QString &type ) const;
197
202
203 private:
204#ifdef SIP_RUN
206#endif
207
208 QMap<QString, Qgs3DTerrainAbstractMetadata *> mMetadata;
210 QStringList mTerrainOrder;
211};
212
213
214#endif // QGS3DTERRAINREGISTRY_H
Stores metadata about one 3D terrain class.
Qgs3DTerrainAbstractMetadata(const QString &type, const QString &visibleName, const QIcon &icon=QIcon())
Constructor for Qgs3DTerrainAbstractMetadata, with the specified type and visibleName.
QString type() const
Returns the unique terrain type string.
virtual ~Qgs3DTerrainAbstractMetadata()=default
QString visibleName() const
Returns the terrain's visible (translated) name.
virtual QgsTerrainGenerator * createTerrainGenerator()
Creates a new instance of this terrain generator type.
QIcon icon() const
Returns an icon representing the terrain type, if available.
virtual QgsAbstractTerrainSettings * createTerrainSettings()=0
Creates a new instance of this terrain settings type.
QgsTerrainGeneratorCreateFunc createGeneratorFunction() const
Returns the terrain generator creation function.
QgsTerrainSettingsCreateFunc createSettingsFunction() const
Returns the terrain setting's creation function.
Qgs3DTerrainMetadata(const QString &type, const QString &visibleName, QgsTerrainSettingsCreateFunc pfSettingsCreate, QgsTerrainGeneratorCreateFunc pfGeneratorCreate, const QIcon &icon=QIcon())
Constructor for Qgs3DTerrainMetadata, with the specified type and visibleName.
QgsTerrainGenerator * createTerrainGenerator() override
Creates a new instance of this terrain generator type.
QgsAbstractTerrainSettings * createTerrainSettings() override
Creates a new instance of this terrain settings type.
QgsAbstractTerrainSettings * configureTerrainFromProject(QgsProjectElevationProperties *properties)
Create terrain settings directly from a project's elevation properties.
QgsAbstractTerrainSettings * createTerrainSettings(const QString &type) const
Creates a new instance of the terrain settings of the specified type.
Qgs3DTerrainRegistry & operator=(const Qgs3DTerrainRegistry &rh)=delete
QgsTerrainGenerator * createTerrainGenerator(const QString &type) const
Creates a new instance of the terrain generator of the specified type.
Qgs3DTerrainAbstractMetadata * terrainMetadata(const QString &type) const
Returns metadata for specified terrain type. Returns nullptr if not found.
QStringList types() const
Returns a list of all available terrain types.
Qgs3DTerrainRegistry(const Qgs3DTerrainRegistry &rh)=delete
bool addType(Qgs3DTerrainAbstractMetadata *metadata)
Registers a new terrain type. Takes ownership of the metadata instance.
Base class for all terrain settings classes.
Contains elevation properties for a QgsProject.
A container for the context for various read/write operations on objects.
A rectangle specified with double values.
Base class for generators of terrain.
#define SIP_SKIP
Definition qgis_sip.h:134
#define SIP_TRANSFER
Definition qgis_sip.h:36
#define SIP_FACTORY
Definition qgis_sip.h:84
QgsAbstractTerrainSettings *(* QgsTerrainSettingsCreateFunc)()
Terrain settings creation function.
QgsTerrainGenerator *(* QgsTerrainGeneratorCreateFunc)()
Terrain generator creation function.