QGIS API Documentation 4.1.0-Master (5bf3c20f3c9)
Loading...
Searching...
No Matches
qgsvirtualpointcloudentity_p.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsvirtualpointcloudentity_p.h
3 --------------------------------------
4 Date : April 2023
5 Copyright : (C) 2023 by Stefanos Natsis
6 Email : uclaros 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
16#ifndef QGSVIRTUALPOINTCLOUDENTITY_P_H
17#define QGSVIRTUALPOINTCLOUDENTITY_P_H
18
20
21//
22// W A R N I N G
23// -------------
24//
25// This file is not part of the QGIS API. It exists purely as an
26// implementation detail. This header file may change from version to
27// version without notice, or even be removed.
28//
29
30#include "qgs3dmapsceneentity.h"
31#include "qgs3drendercontext.h"
32#include "qgschunkedentity.h"
35
36#define SIP_NO_FILE
37
38class QgsAABB;
39class QgsChunkBoundsEntity;
41class QgsVirtualPointCloudProvider;
44
45
56class QgsVirtualPointCloudEntity : public Qgs3DMapSceneEntity
57{
58 Q_OBJECT
59 public:
61 QgsVirtualPointCloudEntity(
62 Qgs3DMapSettings *map,
63 QgsPointCloudLayer *layer,
64 const QgsCoordinateTransform &coordinateTransform,
65 QgsPointCloud3DSymbol *symbol,
66 float maxScreenError,
67 bool showBoundingBoxes,
68 double zValueScale,
69 double zValueOffset,
70 int pointBudget
71 );
72
74 ~QgsVirtualPointCloudEntity() override;
75
77 void handleSceneUpdate( const SceneContext &sceneContext ) override;
78
79 QgsRange<float> getNearFarPlaneRange( const QMatrix4x4 &viewMatrix ) const override;
80
81 int pendingJobsCount() const override;
82
83 bool needsUpdate() const override;
84
85 public slots:
87 void createChunkedEntityForSubIndex( int i );
88
90 void setRenderSubIndexAsBbox( int i, bool asBbox );
91
92 signals:
93 void subIndexNeedsLoading( int i );
94
95 private:
97 void updateBboxEntity();
98
100 QList<QgsChunkedEntity *> chunkedEntities() const;
101
103 QgsVirtualPointCloudProvider *provider() const;
104
105 QgsPointCloudLayer *mLayer = nullptr;
106 QMap<int, QgsChunkedEntity *> mChunkedEntitiesMap;
107 QgsChunkBoundsEntity *mBboxesEntity = nullptr;
108 QgsPointCloudLayerChunkedEntity *mOverviewEntity = nullptr;
109 QList<QgsBox3D> mBboxes;
110 QgsCoordinateTransform mCoordinateTransform;
111 std::unique_ptr<QgsPointCloud3DSymbol> mSymbol;
112 double mZValueScale = 1.0;
113 double mZValueOffset = 0;
114 int mPointBudget = 1000000;
115 float mMaximumScreenSpaceError = -1.;
116 bool mShowBoundingBoxes = false;
117};
118
120
121#endif // QGSVIRTUALPOINTCLOUDENTITY_P_H
Definition of the world.
Axis-aligned bounding box - in world coords.
Definition qgsaabb.h:33
3D symbol that draws point cloud geometries as 3D objects.
Represents a map layer supporting display of point clouds.