Aded support for downloading hillshading DEMs
[GPXSee.git] / src / map / map.h
blob12c50338756f453b284a8afea4c81f9404ac6539
1 #ifndef MAP_H
2 #define MAP_H
4 #include <QObject>
5 #include <QString>
6 #include <QRectF>
7 #include <QFlags>
8 #include "common/rectc.h"
9 #include "common/util.h"
12 class QPainter;
13 class Projection;
15 class Map : public QObject
17 Q_OBJECT
19 public:
20 enum Flag {
21 NoFlags = 0,
22 Block = 1,
23 OpenGL = 2,
24 HillShading = 4
26 Q_DECLARE_FLAGS(Flags, Flag)
28 Map(const QString &path, QObject *parent = 0)
29 : QObject(parent), _path(path) {}
30 virtual ~Map() {}
32 const QString &path() const {return _path;}
33 virtual QString name() const {return Util::file2name(path());}
35 virtual bool isValid() const {return true;}
36 virtual bool isReady() const {return true;}
37 virtual QString errorString() const {return QString();}
39 virtual void load(const Projection &, const Projection &, qreal, bool) {}
40 virtual void unload() {}
42 /* llBounds() is mandatory for maps that do not provide bounds() until
43 load() is called! */
44 virtual RectC llBounds();
45 virtual QRectF bounds() = 0;
46 virtual qreal resolution(const QRectF &rect);
48 virtual int zoom() const {return 0;}
49 virtual void setZoom(int) {}
50 virtual int zoomFit(const QSize &, const RectC &) {return 0;}
51 virtual int zoomIn() {return 0;}
52 virtual int zoomOut() {return 0;}
54 virtual QPointF ll2xy(const Coordinates &c) = 0;
55 virtual Coordinates xy2ll(const QPointF &p) = 0;
57 virtual void draw(QPainter *painter, const QRectF &rect, Flags flags) = 0;
59 virtual void clearCache() {}
60 virtual bool usesDEM() const {return false;}
62 signals:
63 void tilesLoaded();
64 void mapLoaded();
66 private:
67 QString _path;
70 Q_DECLARE_METATYPE(Map*)
71 Q_DECLARE_OPERATORS_FOR_FLAGS(Map::Flags)
73 #endif // MAP_H