16#ifndef QGSDEMTERRAINTILELOADER_P_H
17#define QGSDEMTERRAINTILELOADER_P_H
38#include <QElapsedTimer>
39#include <QFutureWatcher>
51class QgsDemTerrainTileLoader :
public QgsTerrainTileLoader
56 QgsDemTerrainTileLoader( QgsTerrainEntity *terrain, QgsChunkNode *node, QgsTerrainGenerator *terrainGenerator );
58 void start()
override;
60 Qt3DCore::QEntity *createEntity( Qt3DCore::QEntity *parent )
override;
63 void onHeightMapReady(
int jobId,
const QByteArray &heightMap );
66 int mHeightMapJobId = -1;
67 QByteArray mHeightMap;
69 float mSkirtHeight = 0;
70 QgsTerrainGenerator *mTerrainGenerator;
80class QgsDemHeightMapGenerator :
public QObject
88 QgsDemHeightMapGenerator( QgsRasterLayer *dtm,
const QgsTilingScheme &tilingScheme,
int resolution,
const QgsCoordinateTransformContext &transformContext );
89 ~QgsDemHeightMapGenerator()
override;
92 int render(
const QgsChunkNodeId &nodeId );
95 void waitForFinished();
98 int resolution()
const {
return mResolution; }
101 float heightAt(
double x,
double y );
105 void heightMapReady(
int jobId,
const QByteArray &heightMap );
108 void onFutureFinished();
112 const QgsRectangle mDtmExtent;
115 QgsRasterDataProvider *mClonedProvider =
nullptr;
117 QgsTilingScheme mTilingScheme;
123 std::unique_ptr<QgsTerrainDownloader> mDownloader;
128 QgsChunkNodeId tileId;
130 QFuture<QByteArray> future;
134 QHash<QFutureWatcher<QByteArray> *, JobData> mJobs;
136 void lazyLoadDtmCoarseData(
int res,
const QgsRectangle &rect );
137 mutable QMutex mLazyLoadDtmCoarseDataMutex;
139 QByteArray mDtmCoarseData;
141 QgsCoordinateTransformContext mTransformContext;
Contains information about the context in which a coordinate transform is executed.
Base class for raster data providers.
Represents a raster layer.
Takes care of downloading terrain data from a publicly available data source.
Base class for generators of terrain.