Map API refactoring
[GPXSee.git] / src / map / wmsmap.h
blobeb21a31e654476f5af4373b57693bd0087408a5c
1 #ifndef WMSMAP_H
2 #define WMSMAP_H
4 #include "transform.h"
5 #include "projection.h"
6 #include "map.h"
7 #include "wms.h"
8 #include "rectd.h"
10 class TileLoader;
12 class WMSMap : public Map
14 Q_OBJECT
16 public:
17 WMSMap(const QString &fileName, const QString &name, const WMS::Setup &setup,
18 int tileSize, QObject *parent = 0);
20 QString name() const {return _name;}
22 QRectF bounds();
23 RectC llBounds(const Projection &) {return _wms->bbox();}
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 _wms->isReady();}
41 bool isValid() const {return _wms->isValid();}
42 QString errorString() const {return _wms->errorString();}
44 private slots:
45 void wmsReady();
47 private:
48 QString tileUrl() const;
49 double sd2res(double scaleDenominator) const;
50 void computeZooms();
51 void updateTransform();
52 qreal tileSize() const;
53 void init();
55 QString _name;
56 WMS *_wms;
57 TileLoader *_tileLoader;
58 RectD _bounds;
59 Transform _transform;
60 QVector<double> _zooms;
61 int _zoom;
62 int _tileSize;
63 qreal _mapRatio;
66 #endif // WMSMAP_H