16#ifndef QGSDEMTERRAINTILELOADER_P_H
17#define QGSDEMTERRAINTILELOADER_P_H
37#include <QElapsedTimer>
38#include <QFutureWatcher>
53class QgsDemTerrainTileLoader :
public QgsTerrainTileLoader
58 QgsDemTerrainTileLoader( QgsTerrainEntity *terrain, QgsChunkNode *node, QgsTerrainGenerator *terrainGenerator );
60 void start()
override;
62 Qt3DCore::QEntity *createEntity( Qt3DCore::QEntity *parent )
override;
65 void onHeightMapReady(
int jobId,
const QByteArray &heightMap );
68 int mHeightMapJobId = -1;
69 QByteArray mHeightMap;
71 float mSkirtHeight = 0;
72 QgsTerrainGenerator *mTerrainGenerator;
82class QgsDemHeightMapGenerator :
public QObject
90 QgsDemHeightMapGenerator( QgsRasterLayer *dtm,
const QgsTilingScheme &tilingScheme,
int resolution,
const QgsCoordinateTransformContext &transformContext );
91 ~QgsDemHeightMapGenerator()
override;
94 int render(
const QgsChunkNodeId &nodeId );
97 void waitForFinished();
100 int resolution()
const {
return mResolution; }
103 float heightAt(
double x,
double y );
107 void heightMapReady(
int jobId,
const QByteArray &heightMap );
110 void onFutureFinished();
114 const QgsRectangle mDtmExtent;
117 QgsRasterDataProvider *mClonedProvider =
nullptr;
119 QgsTilingScheme mTilingScheme;
125 std::unique_ptr<QgsTerrainDownloader> mDownloader;
130 QgsChunkNodeId tileId;
132 QFuture<QByteArray> future;
136 QHash<QFutureWatcher<QByteArray> *, JobData> mJobs;
138 void lazyLoadDtmCoarseData(
int res,
const QgsRectangle &rect );
139 mutable QMutex mLazyLoadDtmCoarseDataMutex;
141 std::unique_ptr<QgsRasterBlock> mDtmCoarseRasterBlock;
143 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.