1 // SPDX-License-Identifier: LGPL-2.1-or-later 2 // 3 // SPDX-FileCopyrightText: 2011 Niko Sams <niko.sams@gmail.com> 4 // 5 6 7 #ifndef MARBLE_ELEVATIONMODEL_H 8 #define MARBLE_ELEVATIONMODEL_H 9 10 #include "marble_export.h" 11 12 #include <QObject> 13 14 class QImage; 15 16 namespace Marble 17 { 18 class GeoDataCoordinates; 19 20 namespace { 21 unsigned int const invalidElevationData = 32768; 22 } 23 24 class TileId; 25 class ElevationModelPrivate; 26 class HttpDownloadManager; 27 class PluginManager; 28 29 class MARBLE_EXPORT ElevationModel : public QObject 30 { 31 Q_OBJECT 32 public: 33 explicit ElevationModel( HttpDownloadManager *downloadManager, PluginManager* pluginManager, QObject *parent = nullptr ); 34 ~ElevationModel() override; 35 36 qreal height( qreal lon, qreal lat ) const; 37 QVector<GeoDataCoordinates> heightProfile( qreal fromLon, qreal fromLat, qreal toLon, qreal toLat ) const; 38 39 Q_SIGNALS: 40 /** 41 * Elevation tiles loaded. You will get more accurate results when querying height 42 * for at least one that was queried before. 43 **/ 44 void updateAvailable(); 45 46 private: 47 Q_PRIVATE_SLOT( d, void tileCompleted( const TileId&, const QImage& ) ) 48 49 private: 50 friend class ElevationModelPrivate; 51 ElevationModelPrivate *d; 52 }; 53 54 } 55 56 #endif // MARBLE_ELEVATIONMODEL_H 57