QGIS API Documentation 3.99.0-Master (26c88405ac0)
Loading...
Searching...
No Matches
qgstiledscenerenderer.h
Go to the documentation of this file.
1/***************************************************************************
2 qgstiledscenerenderer.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/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#ifndef QGSTILEDSCENERENDERER_H
19#define QGSTILEDSCENERENDERER_H
20
21#include "qgis_core.h"
22#include "qgis_sip.h"
23#include "qgsrendercontext.h"
24
27
37{
38 public:
39
44
47
51 QgsRenderContext &renderContext() { return mRenderContext; }
52
57 const QgsRenderContext &renderContext() const SIP_SKIP { return mRenderContext; }
58
64 QgsFeedback *feedback() const { return mFeedback; }
65
71 QImage textureImage() const;
72
78 void setTextureImage( const QImage &image );
79
85 void setTextureCoordinates(
86 float textureX1, float textureY1,
87 float textureX2, float textureY2,
88 float textureX3, float textureY3
89 );
90
96 void textureCoordinates( float &textureX1 SIP_OUT, float &textureY1 SIP_OUT, float &textureX2 SIP_OUT, float &textureY2 SIP_OUT, float &textureX3 SIP_OUT, float &textureY3 SIP_OUT ) const;
97
98 private:
99#ifdef SIP_RUN
101#endif
102
103 QgsRenderContext &mRenderContext;
104 QgsFeedback *mFeedback = nullptr;
105 QImage mTextureImage;
106 float mTextureCoordinates[6] { 0, 0, 0, 0, 0, 0 };
107
108};
109
118class CORE_EXPORT QgsTiledSceneRenderer
119{
120
121#ifdef SIP_RUN
123
124 const QString type = sipCpp->type();
125 if ( type == QLatin1String( "texture" ) )
126 sipType = sipType_QgsTiledSceneTextureRenderer;
127 else if ( type == QLatin1String( "wireframe" ) )
128 sipType = sipType_QgsTiledSceneWireframeRenderer;
129 else
130 sipType = 0;
131
132 SIP_END
133#endif
134
135 public:
136
138
139 virtual ~QgsTiledSceneRenderer() = default;
140
144 virtual QString type() const = 0;
145
151
154
157
161 virtual Qgis::TiledSceneRendererFlags flags() const;
162
170 static QgsTiledSceneRenderer *load( QDomElement &element, const QgsReadWriteContext &context ) SIP_FACTORY;
171
176 virtual QDomElement save( QDomDocument &doc, const QgsReadWriteContext &context ) const = 0;
177
188 double maximumScreenError() const;
189
200 void setMaximumScreenError( double error );
201
209
217
223 void setTileBorderRenderingEnabled( bool enabled ) { mTileBorderRendering = enabled; }
224
230 bool isTileBorderRenderingEnabled() const { return mTileBorderRendering; }
231
241 virtual void startRender( QgsTiledSceneRenderContext &context );
242
253 virtual void stopRender( QgsTiledSceneRenderContext &context );
254
258 virtual QList<QgsLayerTreeModelLegendNode *> createLegendNodes( QgsLayerTreeLayer *nodeLayer ) SIP_FACTORY;
259
263 virtual QStringList legendRuleKeys() const;
264
268 virtual void renderTriangle( QgsTiledSceneRenderContext &context, const QPolygonF &triangle ) = 0;
269
273 virtual void renderLine( QgsTiledSceneRenderContext &context, const QPolygonF &line ) = 0;
274
275 protected:
276
280 void copyCommonProperties( QgsTiledSceneRenderer *destination ) const;
281
288 void restoreCommonProperties( const QDomElement &element, const QgsReadWriteContext &context );
289
296 void saveCommonProperties( QDomElement &element, const QgsReadWriteContext &context ) const;
297
298 private:
299#ifdef SIP_RUN
301#endif
302
303#ifdef QGISDEBUG
305 QThread *mThread = nullptr;
306#endif
307
308 double mMaximumScreenError = 3;
309 Qgis::RenderUnit mMaximumScreenErrorUnit = Qgis::RenderUnit::Millimeters;
310 bool mTileBorderRendering = false;
311
312};
313
314#endif // QGSTILEDSCENERENDERER_H
RenderUnit
Rendering size units.
Definition qgis.h:5183
@ Millimeters
Millimeters.
Definition qgis.h:5184
QFlags< TiledSceneRendererFlag > TiledSceneRendererFlags
Flags which control how tiled scene 2D renderers behave.
Definition qgis.h:5713
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Definition qgsfeedback.h:44
Layer tree node points to a map layer.
An abstract interface for legend items returned from QgsMapLayerLegend implementation.
A container for the context for various read/write operations on objects.
Contains information about the context of a rendering operation.
Encapsulates the render context for a 2D tiled scene rendering operation.
QgsFeedback * feedback() const
Returns the feedback object used to cancel rendering.
QgsTiledSceneRenderContext & operator=(const QgsTiledSceneRenderContext &)=delete
QgsRenderContext & renderContext()
Returns a reference to the context's render context.
QgsTiledSceneRenderContext(const QgsTiledSceneRenderContext &rh)=delete
const QgsRenderContext & renderContext() const
Returns a reference to the context's render context.
QgsTiledSceneRenderContext(QgsRenderContext &context, QgsFeedback *feedback=nullptr)
Constructor for QgsTiledSceneRenderContext.
void setTileBorderRenderingEnabled(bool enabled)
Sets whether to render the borders of tiles.
void saveCommonProperties(QDomElement &element, const QgsReadWriteContext &context) const
Saves common renderer properties (such as point size and screen error) to the specified DOM element.
virtual QString type() const =0
Returns the identifier of the renderer type.
void setMaximumScreenErrorUnit(Qgis::RenderUnit unit)
Sets the unit for the maximum screen error allowed when rendering the tiled scene.
QgsTiledSceneRenderer(const QgsTiledSceneRenderer &other)=delete
QgsTiledSceneRenderer cannot be copied – use clone() instead.
virtual QDomElement save(QDomDocument &doc, const QgsReadWriteContext &context) const =0
Saves the renderer configuration to an XML element.
Qgis::RenderUnit maximumScreenErrorUnit() const
Returns the unit for the maximum screen error allowed when rendering the tiled scene.
virtual ~QgsTiledSceneRenderer()=default
virtual QgsTiledSceneRenderer * clone() const =0
Create a deep copy of this renderer.
static QgsTiledSceneRenderer * load(QDomElement &element, const QgsReadWriteContext &context)
Creates a renderer from an XML element.
QgsTiledSceneRenderer()=default
double maximumScreenError() const
Returns the maximum screen error allowed when rendering the tiled scene.
QgsTiledSceneRenderer & operator=(const QgsTiledSceneRenderer &other)=delete
QgsTiledSceneRenderer cannot be copied – use clone() instead.
virtual void renderTriangle(QgsTiledSceneRenderContext &context, const QPolygonF &triangle)=0
Renders a triangle.
void setMaximumScreenError(double error)
Sets the maximum screen error allowed when rendering the tiled scene.
virtual void renderLine(QgsTiledSceneRenderContext &context, const QPolygonF &line)=0
Renders a line.
void restoreCommonProperties(const QDomElement &element, const QgsReadWriteContext &context)
Restores common renderer properties (such as screen error) from the specified DOM element.
bool isTileBorderRenderingEnabled() const
Returns whether to render also borders of tiles.
virtual Qgis::TiledSceneRendererFlags flags() const
Returns flags which control how the renderer behaves.
void copyCommonProperties(QgsTiledSceneRenderer *destination) const
Copies common tiled scene renderer properties (such as screen error) to the destination renderer.
#define SIP_CONVERT_TO_SUBCLASS_CODE(code)
Definition qgis_sip.h:199
#define SIP_SKIP
Definition qgis_sip.h:134
#define SIP_OUT
Definition qgis_sip.h:58
#define SIP_FACTORY
Definition qgis_sip.h:84
#define SIP_END
Definition qgis_sip.h:216