16#ifndef QGSDEMTERRAINTILELOADER_P_H
17#define QGSDEMTERRAINTILELOADER_P_H
38#include <QElapsedTimer>
39#include <QFutureWatcher>
41#include <QtConcurrent/QtConcurrentRun>
52class QgsDemTerrainTileLoader :
public QgsTerrainTileLoader
57 QgsDemTerrainTileLoader( QgsTerrainEntity *terrain, QgsChunkNode *node, QgsTerrainGenerator *terrainGenerator );
59 void start()
override;
61 Qt3DCore::QEntity *createEntity( Qt3DCore::QEntity *parent )
override;
64 void onHeightMapReady(
int jobId,
const QByteArray &heightMap );
67 int mHeightMapJobId = -1;
68 QByteArray mHeightMap;
70 float mSkirtHeight = 0;
71 QgsTerrainGenerator *mTerrainGenerator;
81class QgsDemHeightMapGenerator :
public QObject
89 QgsDemHeightMapGenerator( QgsRasterLayer *dtm,
const QgsTilingScheme &tilingScheme,
int resolution,
const QgsCoordinateTransformContext &transformContext );
90 ~QgsDemHeightMapGenerator()
override;
93 int render(
const QgsChunkNodeId &nodeId );
96 void waitForFinished();
99 int resolution()
const {
return mResolution; }
102 float heightAt(
double x,
double y );
106 void heightMapReady(
int jobId,
const QByteArray &heightMap );
109 void onFutureFinished();
113 const QgsRectangle mDtmExtent;
116 QgsRasterDataProvider *mClonedProvider =
nullptr;
118 QgsTilingScheme mTilingScheme;
124 std::unique_ptr<QgsTerrainDownloader> mDownloader;
129 QgsChunkNodeId tileId;
131 QFuture<QByteArray> future;
135 QHash<QFutureWatcher<QByteArray> *, JobData> mJobs;
137 void lazyLoadDtmCoarseData(
int res,
const QgsRectangle &rect );
138 mutable QMutex mLazyLoadDtmCoarseDataMutex;
140 QByteArray mDtmCoarseData;
142 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.