QGIS API Documentation
4.3.0-Master (6313fb5bce0)
Loading...
Searching...
No Matches
src
core
tiledscene
qgstiledscenerendererregistry.cpp
Go to the documentation of this file.
1
/***************************************************************************
2
qgstiledscenerendererregistry.cpp
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
#include "
qgstiledscenerendererregistry.h
"
16
17
#include "
qgstiledscenerenderer.h
"
18
19
#include <QString>
20
21
using namespace
Qt::StringLiterals;
22
23
// default renderers
24
#include "
qgstiledscenetexturerenderer.h
"
25
#include "
qgstiledscenewireframerenderer.h
"
26
27
QgsTiledSceneRenderer
*
QgsTiledSceneRendererMetadata::createRenderer
( QDomElement &elem,
const
QgsReadWriteContext
&context )
28
{
29
return
mCreateFunc
?
mCreateFunc
( elem, context ).release() :
nullptr
;
30
}
31
32
33
QgsTiledSceneRendererRegistry::QgsTiledSceneRendererRegistry
()
34
{
35
// add default renderers
36
addRenderer
(
new
QgsTiledSceneRendererMetadata
( u
"texture"
_s, QObject::tr(
"Textured"
),
QgsTiledSceneTextureRenderer::create
) );
37
addRenderer
(
new
QgsTiledSceneRendererMetadata
( u
"wireframe"
_s, QObject::tr(
"Wireframe"
),
QgsTiledSceneWireframeRenderer::create
) );
38
}
39
40
QgsTiledSceneRendererRegistry::~QgsTiledSceneRendererRegistry
()
41
{
42
qDeleteAll( mRenderers );
43
}
44
45
bool
QgsTiledSceneRendererRegistry::addRenderer
(
QgsTiledSceneRendererAbstractMetadata
*metadata )
46
{
47
if
( !metadata || mRenderers.contains( metadata->
name
() ) )
48
return
false
;
49
50
mRenderers[metadata->
name
()] = metadata;
51
mRenderersOrder << metadata->
name
();
52
return
true
;
53
}
54
55
bool
QgsTiledSceneRendererRegistry::removeRenderer
(
const
QString &rendererName )
56
{
57
if
( !mRenderers.contains( rendererName ) )
58
return
false
;
59
60
delete
mRenderers[rendererName];
61
mRenderers.remove( rendererName );
62
mRenderersOrder.removeAll( rendererName );
63
return
true
;
64
}
65
66
QgsTiledSceneRendererAbstractMetadata
*
QgsTiledSceneRendererRegistry::rendererMetadata
(
const
QString &rendererName )
67
{
68
return
mRenderers.value( rendererName );
69
}
70
71
QStringList
QgsTiledSceneRendererRegistry::renderersList
()
const
72
{
73
QStringList renderers;
74
for
(
const
QString &renderer : mRenderersOrder )
75
{
76
QgsTiledSceneRendererAbstractMetadata
*r = mRenderers.value( renderer );
77
if
( r )
78
renderers << renderer;
79
}
80
return
renderers;
81
}
82
83
std::unique_ptr<QgsTiledSceneRenderer>
QgsTiledSceneRendererRegistry::defaultRenderer
(
const
QgsTiledSceneLayer
* )
84
{
85
return
std::make_unique<QgsTiledSceneTextureRenderer>();
86
}
QgsReadWriteContext
A container for the context for various read/write operations on objects.
Definition
qgsreadwritecontext.h:38
QgsTiledSceneLayer
Represents a map layer supporting display of tiled scene objects.
Definition
qgstiledscenelayer.h:40
QgsTiledSceneRendererAbstractMetadata
Stores metadata about one tiled scene renderer class.
Definition
qgstiledscenerendererregistry.h:45
QgsTiledSceneRendererAbstractMetadata::name
QString name() const
Returns the unique name of the renderer.
Definition
qgstiledscenerendererregistry.h:65
QgsTiledSceneRendererMetadata
Convenience metadata class that uses static functions to create tiled scene renderer and its widget.
Definition
qgstiledscenerendererregistry.h:129
QgsTiledSceneRendererMetadata::createRenderer
QgsTiledSceneRenderer * createRenderer(QDomElement &elem, const QgsReadWriteContext &context) override
Returns new instance of the renderer given the DOM element.
Definition
qgstiledscenerendererregistry.cpp:27
QgsTiledSceneRendererMetadata::mCreateFunc
QgsTiledSceneRendererCreateFunc mCreateFunc
pointer to function that creates an instance of the renderer when loading project / style
Definition
qgstiledscenerendererregistry.h:160
QgsTiledSceneRendererRegistry::rendererMetadata
QgsTiledSceneRendererAbstractMetadata * rendererMetadata(const QString &rendererName)
Returns the metadata for a specified renderer.
Definition
qgstiledscenerendererregistry.cpp:66
QgsTiledSceneRendererRegistry::removeRenderer
bool removeRenderer(const QString &rendererName)
Removes a renderer from registry.
Definition
qgstiledscenerendererregistry.cpp:55
QgsTiledSceneRendererRegistry::renderersList
QStringList renderersList() const
Returns a list of available renderers.
Definition
qgstiledscenerendererregistry.cpp:71
QgsTiledSceneRendererRegistry::~QgsTiledSceneRendererRegistry
~QgsTiledSceneRendererRegistry()
Definition
qgstiledscenerendererregistry.cpp:40
QgsTiledSceneRendererRegistry::defaultRenderer
static std::unique_ptr< QgsTiledSceneRenderer > defaultRenderer(const QgsTiledSceneLayer *layer)
Returns a new default tiled scene renderer for a specified layer.
Definition
qgstiledscenerendererregistry.cpp:83
QgsTiledSceneRendererRegistry::QgsTiledSceneRendererRegistry
QgsTiledSceneRendererRegistry()
Definition
qgstiledscenerendererregistry.cpp:33
QgsTiledSceneRendererRegistry::addRenderer
bool addRenderer(QgsTiledSceneRendererAbstractMetadata *metadata)
Adds a renderer to the registry.
Definition
qgstiledscenerendererregistry.cpp:45
QgsTiledSceneRenderer
Abstract base class for 2d tiled scene renderers.
Definition
qgstiledscenerenderer.h:117
QgsTiledSceneTextureRenderer::create
static std::unique_ptr< QgsTiledSceneRenderer > create(QDomElement &element, const QgsReadWriteContext &context)
Creates a textured renderer from an XML element.
Definition
qgstiledscenetexturerenderer.cpp:50
QgsTiledSceneWireframeRenderer::create
static std::unique_ptr< QgsTiledSceneRenderer > create(QDomElement &element, const QgsReadWriteContext &context)
Creates a textured renderer from an XML element.
Definition
qgstiledscenewireframerenderer.cpp:54
qgstiledscenerenderer.h
qgstiledscenerendererregistry.h
qgstiledscenetexturerenderer.h
qgstiledscenewireframerenderer.h
Generated on
for QGIS API Documentation by
1.15.0