16#ifndef QGSRULEBASEDCHUNKLOADER_H
17#define QGSRULEBASEDCHUNKLOADER_H
36#include <QFutureWatcher>
45class QgsFeature3DHandler;
59class QgsRuleBasedChunkLoader :
public QgsQuadtreeChunkLoader
65 QgsRuleBasedChunkLoader(
const Qgs3DRenderContext &context, QgsVectorLayer *vl, QgsRuleBased3DRenderer::Rule *rootRule,
double zMin,
double zMax,
int maxFeatures );
66 ~QgsRuleBasedChunkLoader()
override;
68 QFuture<QgsChunkLoaderResult> loadChunk( QgsChunkNode *node )
override;
69 QFuture<QVector<QgsChunkNode *>> createChildren( QgsChunkNode *node )
override;
74 QHash< QString, bool > map;
82 Qgs3DRenderContext renderCtx;
85 static void loadChunkInWorker(
86 QPromise<ChunkData> &promise,
88 Qgs3DRenderContext renderCtx,
89 const std::unique_ptr<QgsRuleBased3DRenderer::Rule> &rootRule,
90 const std::unique_ptr<QgsVectorLayerFeatureSource> &source,
91 const QgsFeatureRequest &req,
94 const std::shared_ptr<NodeIsLeafMap> &nodesAreLeaves
97 Qt3DCore::QEntity *createEntity( QgsChunkNode *node, ChunkData data, Qt3DCore::QEntity *parent );
99 Qgs3DRenderContext mRenderContext;
100 QgsVectorLayer *mLayer;
101 std::unique_ptr<QgsRuleBased3DRenderer::Rule> mRootRule;
102 std::shared_ptr<NodeIsLeafMap> mNodesAreLeafs;
118class QgsRuleBasedChunkedEntity :
public QgsAbstractFeatureBasedChunkedEntity
123 explicit QgsRuleBasedChunkedEntity( Qgs3DMapSettings *map, QgsVectorLayer *vl,
double zMin,
double zMax,
const QgsVectorLayer3DTilingSettings &tilingSettings, QgsRuleBased3DRenderer::Rule *rootRule );
125 ~QgsRuleBasedChunkedEntity()
override;
128 bool applyTerrainOffset()
const override;
Abstract base class for 3D symbols that are used by VectorLayer3DRenderer objects.
QHash< const QgsRuleBased3DRenderer::Rule *, QgsFeature3DHandler * > RuleToHandlerMap
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.