16#ifndef QGSCATEGORIZEDCHUNKLOADER_H
17#define QGSCATEGORIZEDCHUNKLOADER_H
35#include <QFutureWatcher>
44class QgsFeature3DHandler;
58class QgsCategorizedChunkLoader :
public QgsQuadtreeChunkLoader
64 QgsCategorizedChunkLoader(
const Qgs3DRenderContext &context, QgsVectorLayer *vectorLayer,
const QgsCategorized3DRenderer *renderer,
double zMin,
double zMax,
int maxFeatures );
65 ~QgsCategorizedChunkLoader()
override;
67 QFuture<QgsChunkLoaderResult> loadChunk( QgsChunkNode *node )
override;
68 QFuture<QVector<QgsChunkNode *>> createChildren( QgsChunkNode *node )
override;
74 QHash< QString, bool > map;
79 struct ChunkLoadingContext
85 std::shared_ptr<QgsVectorLayerFeatureSource> source;
86 Qgs3DRenderContext renderCtx;
87 std::vector<std::shared_ptr<QgsFeature3DHandler>> handlers;
89 QHash<QString, QgsFeature3DHandler *> featuresHandlerHash;
90 std::shared_ptr<QgsExpression> expression;
91 int attributeIdx = -1;
93 std::shared_ptr<NodeIsLeafMap> nodesAreLeafs;
96 static void loadChunkInWorker( QPromise<ChunkLoadingContext> &promise, ChunkLoadingContext ctx, QgsFeatureRequest request );
97 Qt3DCore::QEntity *createEntity( ChunkLoadingContext ctx, Qt3DCore::QEntity *parent );
98 static void processFeature( ChunkLoadingContext &ctx,
const QgsFeature &feature );
100 Qgs3DRenderContext mRenderContext;
101 const QgsVectorLayer *mLayer =
nullptr;
103 QString mAttributeName;
104 std::shared_ptr<NodeIsLeafMap> mNodesAreLeafs;
105 int mMaxFeatures = 0;
107 friend class QgsCategorizedChunkedEntity;
121class QgsCategorizedChunkedEntity :
public QgsAbstractFeatureBasedChunkedEntity
126 explicit QgsCategorizedChunkedEntity(
127 Qgs3DMapSettings *mapSettings, QgsVectorLayer *vectorLayer,
double zMin,
double zMax,
const QgsVectorLayer3DTilingSettings &tilingSettings,
const QgsCategorized3DRenderer *renderer
130 ~QgsCategorizedChunkedEntity()
override;
133 bool applyTerrainOffset()
const override;
Abstract base class for 3D symbols that are used by VectorLayer3DRenderer objects.
Partial snapshot of vector layer's state (only the members necessary for access to features).
Represents a vector layer which manages a vector based dataset.
QList< Qgs3DRendererCategory > Qgs3DCategoryList