Map API refactoring
[GPXSee.git] / src / map / wmtsmap.h
blob68af58c00fa3cfb0c792248334cb8dbb0239095c
1 #ifndef WMTSMAP_H
2 #define WMTSMAP_H
4 #include "transform.h"
5 #include "projection.h"
6 #include "map.h"
7 #include "rectd.h"
8 #include "wmts.h"
10 class TileLoader;
12 class WMTSMap : public Map
14 Q_OBJECT
16 public:
17 WMTSMap(const QString &fileName, const QString &name,
18 const WMTS::Setup &setup, qreal tileRatio, QObject *parent = 0);
20 QString name() const {return _name;}
22 QRectF bounds();
23 RectC llBounds(const Projection &);
25 int zoom() const {return _zoom;}
26 void setZoom(int zoom);
27 int zoomFit(const QSize &size, const RectC &rect);
28 int zoomIn();
29 int zoomOut();
31 QPointF ll2xy(const Coordinates &c);
32 Coordinates xy2ll(const QPointF &p);
34 void draw(QPainter *painter, const QRectF &rect, Flags flags);
36 void load(const Projection &in, const Projection &out, qreal deviceRatio,
37 bool hidpi);
38 void clearCache();
40 bool isReady() const {return _wmts->isReady();}
41 bool isValid() const {return _wmts->isValid();}
42 QString errorString() const {return _wmts->errorString();}
44 private slots:
45 void wmtsReady();
47 private:
48 double sd2res(double scaleDenominator) const;
49 Transform transform(int zoom) const;
50 QRectF tileBounds(int zoom) const;
51 void updateTransform();
52 QSizeF tileSize(const WMTS::Zoom &zoom) const;
53 qreal coordinatesRatio() const;
54 qreal imageRatio() const;
55 void init();
57 QString _name;
58 WMTS *_wmts;
59 TileLoader *_tileLoader;
60 Transform _transform;
61 RectD _bounds;
62 int _zoom;
63 qreal _mapRatio, _tileRatio;
66 #endif // WMTSMAP_H