QGIS API Documentation 4.0.0-Norrköping (1ddcee3d0e4)
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
25#include <QString>
26
27using namespace Qt::StringLiterals;
28
31
41{
42 public:
47
50
54 QgsRenderContext &renderContext() { return mRenderContext; }
55
60 const QgsRenderContext &renderContext() const SIP_SKIP { return mRenderContext; }
61
67 QgsFeedback *feedback() const { return mFeedback; }
68
74 QImage textureImage() const;
75
81 void setTextureImage( const QImage &image );
82
88 void setTextureCoordinates( float textureX1, float textureY1, float textureX2, float textureY2, float textureX3, float textureY3 );
89
95 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;
96
97 private:
98#ifdef SIP_RUN
100#endif
101
102 QgsRenderContext &mRenderContext;
103 QgsFeedback *mFeedback = nullptr;
104 QImage mTextureImage;
105 float mTextureCoordinates[6] { 0, 0, 0, 0, 0, 0 };
106};
107
116class CORE_EXPORT QgsTiledSceneRenderer
117{
118#ifdef SIP_RUN
120
121 const QString type = sipCpp->type();
122 if ( type == "texture"_L1 )
123 sipType = sipType_QgsTiledSceneTextureRenderer;
124 else if ( type == "wireframe"_L1 )
125 sipType = sipType_QgsTiledSceneWireframeRenderer;
126 else
127 sipType = 0;
128
129 SIP_END
130#endif
131
132 public:
133
135
136 virtual ~QgsTiledSceneRenderer() = default;
137
141 virtual QString type() const = 0;
142
148
151
154
158 virtual Qgis::TiledSceneRendererFlags flags() const;
159
167 static QgsTiledSceneRenderer *load( QDomElement &element, const QgsReadWriteContext &context ) SIP_FACTORY;
168
173 virtual QDomElement save( QDomDocument &doc, const QgsReadWriteContext &context ) const = 0;
174
185 double maximumScreenError() const;
186
197 void setMaximumScreenError( double error );
198
206
214
220 void setTileBorderRenderingEnabled( bool enabled ) { mTileBorderRendering = enabled; }
221
227 bool isTileBorderRenderingEnabled() const { return mTileBorderRendering; }
228
238 virtual void startRender( QgsTiledSceneRenderContext &context );
239
250 virtual void stopRender( QgsTiledSceneRenderContext &context );
251
255 virtual QList<QgsLayerTreeModelLegendNode *> createLegendNodes( QgsLayerTreeLayer *nodeLayer ) SIP_FACTORY;
256
260 virtual QStringList legendRuleKeys() const;
261
265 virtual void renderTriangle( QgsTiledSceneRenderContext &context, const QPolygonF &triangle ) = 0;
266
270 virtual void renderLine( QgsTiledSceneRenderContext &context, const QPolygonF &line ) = 0;
271
272 protected:
276 void copyCommonProperties( QgsTiledSceneRenderer *destination ) const;
277
284 void restoreCommonProperties( const QDomElement &element, const QgsReadWriteContext &context );
285
292 void saveCommonProperties( QDomElement &element, const QgsReadWriteContext &context ) const;
293
294 private:
295#ifdef SIP_RUN
297#endif
298
299#ifdef QGISDEBUG
301 QThread *mThread = nullptr;
302#endif
303
304 double mMaximumScreenError = 3;
305 Qgis::RenderUnit mMaximumScreenErrorUnit = Qgis::RenderUnit::Millimeters;
306 bool mTileBorderRendering = false;
307};
308
309#endif // QGSTILEDSCENERENDERER_H
RenderUnit
Rendering size units.
Definition qgis.h:5340
@ Millimeters
Millimeters.
Definition qgis.h:5341
QFlags< TiledSceneRendererFlag > TiledSceneRendererFlags
Flags which control how tiled scene 2D renderers behave.
Definition qgis.h:6069
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:198
#define SIP_SKIP
Definition qgis_sip.h:133
#define SIP_OUT
Definition qgis_sip.h:57
#define SIP_FACTORY
Definition qgis_sip.h:83
#define SIP_END
Definition qgis_sip.h:215