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