16#ifndef QGSCATEGORIZEDCHUNKLOADER_H
17#define QGSCATEGORIZEDCHUNKLOADER_H
35#include <QFutureWatcher>
43class QgsFeature3DHandler;
57class QgsCategorizedChunkLoaderFactory :
public QgsQuadtreeChunkLoaderFactory
63 QgsCategorizedChunkLoaderFactory(
const Qgs3DRenderContext &context, QgsVectorLayer *vectorLayer,
const QgsCategorized3DRenderer *renderer,
double zMin,
double zMax,
int maxFeatures );
64 ~QgsCategorizedChunkLoaderFactory()
override;
67 virtual QgsChunkLoader *createChunkLoader( QgsChunkNode *node )
const override;
68 bool canCreateChildren( QgsChunkNode *node )
override;
69 QVector<QgsChunkNode *> createChildren( QgsChunkNode *node )
const override;
71 Qgs3DRenderContext mRenderContext;
72 const QgsVectorLayer *mLayer =
nullptr;
74 QString mAttributeName;
76 mutable QHash< QString, bool > mNodesAreLeafs;
89class QgsCategorizedChunkLoader :
public QgsChunkLoader
95 QgsCategorizedChunkLoader(
const QgsCategorizedChunkLoaderFactory *factory, QgsChunkNode *node );
96 ~QgsCategorizedChunkLoader()
override;
98 void start()
override;
99 virtual void cancel()
override;
100 virtual Qt3DCore::QEntity *createEntity( Qt3DCore::QEntity *parent )
override;
103 const QSet<QString> prepareHandlers(
const QgsBox3D &chunkExtent );
104 void processFeature(
const QgsFeature &feature )
const;
105 QString filter()
const;
108 const QgsCategorizedChunkLoaderFactory *mFactory =
nullptr;
109 Qgs3DRenderContext mContext;
110 std::unique_ptr<QgsVectorLayerFeatureSource> mSource;
111 bool mCanceled =
false;
112 QFutureWatcher<void> *mFutureWatcher =
nullptr;
113 bool mNodeIsLeaf =
false;
115 std::vector<std::unique_ptr<QgsFeature3DHandler>> mHandlers;
117 QHash<QString, QgsFeature3DHandler *> mFeaturesHandlerHash;
118 std::unique_ptr<QgsExpression> mExpression;
119 int mAttributeIdx = -1;
134class QgsCategorizedChunkedEntity :
public QgsAbstractFeatureBasedChunkedEntity
139 explicit QgsCategorizedChunkedEntity(
140 Qgs3DMapSettings *mapSettings, QgsVectorLayer *vectorLayer,
double zMin,
double zMax,
const QgsVectorLayer3DTilingSettings &tilingSettings,
const QgsCategorized3DRenderer *renderer
143 ~QgsCategorizedChunkedEntity()
override;
146 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