QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
qgspointcloudlayerrenderer.h
Go to the documentation of this file.
1/***************************************************************************
2 qgspointcloudlayerrenderer.h
3 --------------------
4 begin : October 2020
5 copyright : (C) 2020 by Peter Petrik
6 email : zilolv 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 QGSPOINTCLOUDLAYERRENDERER_H
19#define QGSPOINTCLOUDLAYERRENDERER_H
20
21#include "qgis_core.h"
22#include "qgscolorramp.h"
23#include "qgsmaplayerrenderer.h"
24#include "qgsreadwritecontext.h"
25#include "qgspointcloudindex.h"
26#include "qgsgeometry.h"
27
28#include "qgserror.h"
29#include "qgspointcloudindex.h"
30#include "qgsidentifycontext.h"
34#include "qgsrasterinterface.h"
35
36#include <QDomElement>
37#include <QString>
38#include <QPainter>
39#include <QElapsedTimer>
40
45class QgsPointCloudSubIndex;
46
47#define SIP_NO_FILE
48
60{
61 public:
62
66
67 bool render() override;
68 Qgis::MapLayerRendererFlags flags() const override;
69 bool forceRasterRender() const override;
70 void setLayerRenderingTimeHint( int time ) override;
71
72 QgsFeedback *feedback() const override { return mFeedback.get(); }
73
74 private:
75 QVector<IndexedPointCloudNode> traverseTree( const QgsPointCloudIndex *pc, const QgsRenderContext &context, IndexedPointCloudNode n, double maxErrorPixels, double nodeErrorPixels );
76 int renderNodesSync( const QVector<IndexedPointCloudNode> &nodes, QgsPointCloudIndex *pc, QgsPointCloudRenderContext &context, QgsPointCloudRequest &request, bool &canceled );
77 int renderNodesAsync( const QVector<IndexedPointCloudNode> &nodes, QgsPointCloudIndex *pc, QgsPointCloudRenderContext &context, QgsPointCloudRequest &request, bool &canceled );
78 int renderNodesSorted( const QVector<IndexedPointCloudNode> &nodes, QgsPointCloudIndex *pc, QgsPointCloudRenderContext &context, QgsPointCloudRequest &request, bool &canceled, Qgis::PointCloudDrawOrder order );
79 void renderTriangulatedSurface( QgsPointCloudRenderContext &context );
80 bool renderIndex( QgsPointCloudIndex *pc );
81
82 QgsPointCloudLayer *mLayer = nullptr;
83 QString mLayerName;
84
85 std::unique_ptr< QgsPointCloudRenderer > mRenderer;
86 std::unique_ptr< QgsPointCloudExtentRenderer > mSubIndexExtentRenderer;
87
88 QgsVector3D mScale;
89 QgsVector3D mOffset;
90 double mZOffset = 0;
91 double mZScale = 1.0;
92
93 QgsPointCloudAttributeCollection mLayerAttributes;
95 QgsGeometry mCloudExtent;
96 QList< QgsMapClippingRegion > mClippingRegions;
97 const QVector< QgsPointCloudSubIndex > mSubIndexes;
98
99 int mRenderTimeHint = 0;
100 bool mBlockRenderUpdates = false;
101 QElapsedTimer mElapsedTimer;
102
103 std::unique_ptr<QgsFeedback> mFeedback = nullptr;
104
105 bool mEnableProfile = false;
106 quint64 mPreparationTime = 0;
107};
108
109#endif // QGSPOINTCLOUDLAYERRENDERER_H
Represents a indexed point cloud node in octree.
QFlags< MapLayerRendererFlag > MapLayerRendererFlags
Flags which control how map layer renderers behave.
Definition: qgis.h:2298
PointCloudDrawOrder
Pointcloud rendering order for 2d views.
Definition: qgis.h:3500
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Definition: qgsfeedback.h:44
A geometry is the spatial representation of a feature.
Definition: qgsgeometry.h:162
Base class for utility classes that encapsulate information necessary for rendering of map layers.
virtual bool render()=0
Do the rendering (based on data stored in the class).
virtual bool forceRasterRender() const
Returns true if the renderer must be rendered to a raster paint device (e.g.
virtual Qgis::MapLayerRendererFlags flags() const
Returns flags which control how the map layer rendering behaves.
virtual void setLayerRenderingTimeHint(int time)
Sets approximate render time (in ms) for the layer to render.
Collection of point cloud attributes.
Represents a indexed point clouds data in octree.
Implementation of threaded rendering for point cloud layers.
QgsFeedback * feedback() const override
Access to feedback object of the layer renderer (may be nullptr)
Represents a map layer supporting display of point clouds.
Encapsulates the render context for a 2D point cloud rendering operation.
Abstract base class for 2d point cloud renderers.
Point cloud data request.
Contains information about the context of a rendering operation.
Class for storage of 3D vectors similar to QVector3D, with the difference that it uses double precisi...
Definition: qgsvector3d.h:31