QGIS API Documentation 3.30.0-'s-Hertogenbosch (f186b8efe0)
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"
33#include "qgsrasterinterface.h"
34
35#include <QDomElement>
36#include <QString>
37#include <QPainter>
38#include <QElapsedTimer>
39
44
45#define SIP_NO_FILE
46
58{
59 public:
60
64
65 bool render() override;
66 bool forceRasterRender() const override;
67 void setLayerRenderingTimeHint( int time ) override;
68
69 QgsFeedback *feedback() const override { return mFeedback.get(); }
70
71 private:
72 QVector<IndexedPointCloudNode> traverseTree( const QgsPointCloudIndex *pc, const QgsRenderContext &context, IndexedPointCloudNode n, double maxErrorPixels, double nodeErrorPixels );
73 int renderNodesSync( const QVector<IndexedPointCloudNode> &nodes, QgsPointCloudIndex *pc, QgsPointCloudRenderContext &context, QgsPointCloudRequest &request, bool &canceled );
74 int renderNodesAsync( const QVector<IndexedPointCloudNode> &nodes, QgsPointCloudIndex *pc, QgsPointCloudRenderContext &context, QgsPointCloudRequest &request, bool &canceled );
75 int renderNodesSorted( const QVector<IndexedPointCloudNode> &nodes, QgsPointCloudIndex *pc, QgsPointCloudRenderContext &context, QgsPointCloudRequest &request, bool &canceled, Qgis::PointCloudDrawOrder order );
76
77 QgsPointCloudLayer *mLayer = nullptr;
78
79 std::unique_ptr< QgsPointCloudRenderer > mRenderer;
80
81 QgsVector3D mScale;
82 QgsVector3D mOffset;
83 double mZOffset = 0;
84 double mZScale = 1.0;
85
86 QgsPointCloudAttributeCollection mLayerAttributes;
88 QgsGeometry mCloudExtent;
89 QList< QgsMapClippingRegion > mClippingRegions;
90
91 int mRenderTimeHint = 0;
92 bool mBlockRenderUpdates = false;
93 QElapsedTimer mElapsedTimer;
94
95 std::unique_ptr<QgsFeedback> mFeedback = nullptr;
96};
97
98#endif // QGSPOINTCLOUDLAYERRENDERER_H
Represents a indexed point cloud node in octree.
PointCloudDrawOrder
Pointcloud rendering order for 2d views.
Definition: qgis.h:2497
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Definition: qgsfeedback.h:45
A geometry is the spatial representation of a feature.
Definition: qgsgeometry.h:164
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 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.