From 1f71b3a3b2c8e52b7f1f729f3f92cf0c7086e49b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20T=C5=AFma?= Date: Thu, 23 Aug 2018 20:26:10 +0200 Subject: [PATCH] Code/API cleanup --- gpxsee.pro | 6 ++-- src/GUI/mapview.cpp | 21 ++++++------ src/map/atlas.cpp | 13 ++++---- src/map/atlas.h | 4 +-- src/map/emptymap.cpp | 4 +-- src/map/emptymap.h | 2 +- src/map/geotiffmap.cpp | 73 ++++++++++++++++++------------------------ src/map/geotiffmap.h | 12 +++---- src/map/image.cpp | 29 +++++++++++++++++ src/map/image.h | 23 +++++++++++++ src/map/jnxmap.cpp | 4 +-- src/map/jnxmap.h | 2 +- src/map/map.h | 13 ++++++-- src/map/onlinemap.cpp | 4 +-- src/map/onlinemap.h | 2 +- src/map/ozimap.cpp | 60 +++++++++++++--------------------- src/map/ozimap.h | 12 +++---- src/map/wmsmap.cpp | 4 +-- src/map/wmsmap.h | 2 +- src/map/wmtsmap.cpp | 4 +-- src/map/wmtsmap.h | 2 +- 21 files changed, 168 insertions(+), 128 deletions(-) create mode 100644 src/map/image.cpp create mode 100644 src/map/image.h diff --git a/gpxsee.pro b/gpxsee.pro index e70238a6..9f788372 100644 --- a/gpxsee.pro +++ b/gpxsee.pro @@ -140,7 +140,8 @@ HEADERS += src/config.h \ src/GUI/kv.h \ src/data/locparser.h \ src/data/slfparser.h \ - src/map/geotiffmap.h + src/map/geotiffmap.h \ + src/map/image.h SOURCES += src/main.cpp \ src/common/coordinates.cpp \ src/common/rectc.cpp \ @@ -244,7 +245,8 @@ SOURCES += src/main.cpp \ src/map/map.cpp \ src/data/locparser.cpp \ src/data/slfparser.cpp \ - src/map/geotiffmap.cpp + src/map/geotiffmap.cpp \ + src/map/image.cpp RESOURCES += gpxsee.qrc TRANSLATIONS = lang/gpxsee_cs.ts \ diff --git a/src/GUI/mapview.cpp b/src/GUI/mapview.cpp index 85245a5d..b504107e 100644 --- a/src/GUI/mapview.cpp +++ b/src/GUI/mapview.cpp @@ -27,7 +27,6 @@ MapView::MapView(Map *map, POI *poi, QWidget *parent) Q_ASSERT(map != 0); Q_ASSERT(poi != 0); - _opengl = false; _scene = new QGraphicsScene(this); setScene(_scene); setDragMode(QGraphicsView::ScrollHandDrag); @@ -42,11 +41,11 @@ MapView::MapView(Map *map, POI *poi, QWidget *parent) _scene->addItem(_mapScale); _map = map; + _map->load(); #ifdef ENABLE_HIDPI _ratio = devicePixelRatioF(); _map->setDevicePixelRatio(_ratio); #endif // ENABLE_HIDPI - _map->load(); connect(_map, SIGNAL(loaded()), this, SLOT(reloadMap())); _poi = poi; @@ -76,6 +75,7 @@ MapView::MapView(Map *map, POI *poi, QWidget *parent) _poiSize = 8; _poiColor = Qt::black; + _opengl = false; _plot = false; _digitalZoom = 0; @@ -269,11 +269,10 @@ void MapView::setMap(Map *map) disconnect(_map, SIGNAL(loaded()), this, SLOT(reloadMap())); _map = map; + _map->load(); #ifdef ENABLE_HIDPI _map->setDevicePixelRatio(_ratio); #endif // ENABLE_HIDPI - _map->setOpenGLEnabled(_opengl); - _map->load(); connect(_map, SIGNAL(loaded()), this, SLOT(reloadMap())); digitalZoom(0); @@ -509,7 +508,6 @@ void MapView::plot(QPainter *painter, const QRectF &target, qreal scale, #ifdef ENABLE_HIDPI _map->setDevicePixelRatio(1.0); #endif // ENABLE_HIDPI - _map->setOpenGLEnabled(false); // Compute sizes & ratios orig = viewport()->rect(); @@ -571,7 +569,6 @@ void MapView::plot(QPainter *painter, const QRectF &target, qreal scale, #ifdef ENABLE_HIDPI _map->setDevicePixelRatio(_ratio); #endif // ENABLE_HIDPI - _map->setOpenGLEnabled(_opengl); _plot = false; setUpdatesEnabled(true); } @@ -769,9 +766,17 @@ void MapView::drawBackground(QPainter *painter, const QRectF &rect) if (_showMap) { QRectF ir = rect.intersected(_map->bounds()); + Map::Flags flags = Map::NoFlags; + if (_opacity < 1.0) painter->setOpacity(_opacity); - _map->draw(painter, ir, _plot); + + if (_plot) + flags = Map::Block; + else if (_opengl) + flags = Map::OpenGL; + + _map->draw(painter, ir, flags); } } @@ -818,8 +823,6 @@ void MapView::useOpenGL(bool use) setViewport(new OPENGL_WIDGET); else setViewport(new QWidget); - - _map->setOpenGLEnabled(_opengl); } void MapView::useAntiAliasing(bool use) diff --git a/src/map/atlas.cpp b/src/map/atlas.cpp index 83ef1943..34d8c50c 100644 --- a/src/map/atlas.cpp +++ b/src/map/atlas.cpp @@ -255,14 +255,12 @@ Coordinates Atlas::xy2ll(const QPointF &p) return _maps.at(idx)->xy2ll(p2); } -void Atlas::draw(QPainter *painter, const QRectF &rect, bool block) +void Atlas::draw(QPainter *painter, const QRectF &rect, Flags flags) { - Q_UNUSED(block); - // All in one map for (int i = _zooms.at(_zoom).first; i <= _zooms.at(_zoom).last; i++) { if (_bounds.at(i).xy.contains(rect)) { - draw(painter, rect, i); + draw(painter, rect, i, flags); return; } } @@ -271,11 +269,12 @@ void Atlas::draw(QPainter *painter, const QRectF &rect, bool block) for (int i = _zooms.at(_zoom).first; i <= _zooms.at(_zoom).last; i++) { QRectF ir = rect.intersected(_bounds.at(i).xy); if (!ir.isNull()) - draw(painter, ir, i); + draw(painter, ir, i, flags); } } -void Atlas::draw(QPainter *painter, const QRectF &rect, int mapIndex) +void Atlas::draw(QPainter *painter, const QRectF &rect, int mapIndex, + Flags flags) { OziMap *map = _maps.at(mapIndex); const QPointF offset = _bounds.at(mapIndex).xy.topLeft(); @@ -284,7 +283,7 @@ void Atlas::draw(QPainter *painter, const QRectF &rect, int mapIndex) map->load(); painter->translate(offset); - map->draw(painter, pr, true); + map->draw(painter, pr, flags); painter->translate(-offset); } diff --git a/src/map/atlas.h b/src/map/atlas.h index 0a198a6b..05b3f83f 100644 --- a/src/map/atlas.h +++ b/src/map/atlas.h @@ -26,7 +26,7 @@ public: QPointF ll2xy(const Coordinates &c); Coordinates xy2ll(const QPointF &p); - void draw(QPainter *painter, const QRectF &rect, bool block); + void draw(QPainter *painter, const QRectF &rect, Flags flags); void setDevicePixelRatio(qreal ratio); void unload(); @@ -53,7 +53,7 @@ private: Bounds(const RectD &pp, const QRectF &xy) : pp(pp), xy(xy) {} }; - void draw(QPainter *painter, const QRectF &rect, int mapIndex); + void draw(QPainter *painter, const QRectF &rect, int mapIndex, Flags flags); void computeZooms(); void computeBounds(); diff --git a/src/map/emptymap.cpp b/src/map/emptymap.cpp index 967d86a1..65e430a0 100644 --- a/src/map/emptymap.cpp +++ b/src/map/emptymap.cpp @@ -85,11 +85,11 @@ int EmptyMap::zoomOut() return _zoom; } -void EmptyMap::draw(QPainter *painter, const QRectF &rect, bool block) +void EmptyMap::draw(QPainter *painter, const QRectF &rect, Flags flags) { Q_UNUSED(painter); Q_UNUSED(rect); - Q_UNUSED(block); + Q_UNUSED(flags); } QPointF EmptyMap::ll2xy(const Coordinates &c) diff --git a/src/map/emptymap.h b/src/map/emptymap.h index 3e190c23..ee3e82fd 100644 --- a/src/map/emptymap.h +++ b/src/map/emptymap.h @@ -24,7 +24,7 @@ public: QPointF ll2xy(const Coordinates &c); Coordinates xy2ll(const QPointF &p); - void draw(QPainter *painter, const QRectF &rect, bool block); + void draw(QPainter *painter, const QRectF &rect, Flags flags); private: int _zoom; diff --git a/src/map/geotiffmap.cpp b/src/map/geotiffmap.cpp index d89fdca3..bc756eb6 100644 --- a/src/map/geotiffmap.cpp +++ b/src/map/geotiffmap.cpp @@ -3,29 +3,29 @@ #include #include "config.h" #include "geotiff.h" +#include "image.h" #include "geotiffmap.h" GeoTIFFMap::GeoTIFFMap(const QString &fileName, QObject *parent) - : Map(parent), _img(0), _ratio(1.0), _opengl(false), _valid(false) + : Map(parent), _fileName(fileName), _img(0), _ratio(1.0), _valid(false) { + QImageReader ir(fileName); + if (!ir.canRead()) { + _errorString = "Unsupported/invalid image file"; + return; + } + _size = ir.size(); + GeoTIFF gt(fileName); if (!gt.isValid()) { _errorString = gt.errorString(); return; } else { - _path = fileName; _projection = gt.projection(); _transform = gt.transform(); } - QImageReader img(_path); - _size = img.size(); - if (!_size.isValid()) { - _errorString = QString("%1: Invalid image file").arg(_path); - return; - } - _valid = true; } @@ -36,30 +36,10 @@ GeoTIFFMap::~GeoTIFFMap() QString GeoTIFFMap::name() const { - QFileInfo fi(_path); + QFileInfo fi(_fileName); return fi.fileName(); } -void GeoTIFFMap::load() -{ - if (!_img) { - _img = new QImage(_path); - if (!_img || _img->isNull()) { - qWarning("%s: error loading map image", qPrintable(_path)); - return; - } -#ifdef ENABLE_HIDPI - _img->setDevicePixelRatio(_ratio); -#endif // ENABLE_HIDPI - } -} - -void GeoTIFFMap::unload() -{ - delete _img; - _img = 0; -} - QPointF GeoTIFFMap::ll2xy(const Coordinates &c) { return QPointF(_transform.proj2img(_projection.ll2xy(c))) / _ratio; @@ -75,16 +55,27 @@ QRectF GeoTIFFMap::bounds() return QRectF(QPointF(0, 0), _size / _ratio); } -void GeoTIFFMap::draw(QPainter *painter, const QRectF &rect, bool block) +void GeoTIFFMap::draw(QPainter *painter, const QRectF &rect, Flags flags) { - Q_UNUSED(block) - - if (_img && !_img->isNull()) { - QRectF sr(rect.topLeft() * _ratio, rect.size() * _ratio); - if (_opengl) { - QImage img(_img->copy(sr.toRect())); - painter->drawImage(rect.topLeft(), img); - } else - painter->drawImage(rect.topLeft(), *_img, sr); - } + if (_img) + _img->draw(painter, rect, flags); +} + +void GeoTIFFMap::setDevicePixelRatio(qreal ratio) +{ + _ratio = ratio; + if (_img) + _img->setDevicePixelRatio(_ratio); +} + +void GeoTIFFMap::load() +{ + if (!_img) + _img = new Image(_fileName); +} + +void GeoTIFFMap::unload() +{ + delete _img; + _img = 0; } diff --git a/src/map/geotiffmap.h b/src/map/geotiffmap.h index c5ec942c..7f29eec5 100644 --- a/src/map/geotiffmap.h +++ b/src/map/geotiffmap.h @@ -5,6 +5,8 @@ #include "projection.h" #include "map.h" +class Image; + class GeoTIFFMap : public Map { Q_OBJECT @@ -26,24 +28,22 @@ public: QPointF ll2xy(const Coordinates &c); Coordinates xy2ll(const QPointF &p); - void draw(QPainter *painter, const QRectF &rect, bool block); + void draw(QPainter *painter, const QRectF &rect, Flags flags); - void setDevicePixelRatio(qreal ratio) {_ratio = ratio;} - void setOpenGLEnabled(bool enabled) {_opengl = enabled;} void load(); void unload(); + void setDevicePixelRatio(qreal ratio); bool isValid() const {return _valid;} QString errorString() const {return _errorString;} private: - QString _path; + QString _fileName; Projection _projection; Transform _transform; - QImage *_img; + Image *_img; QSize _size; qreal _ratio; - bool _opengl; bool _valid; QString _errorString; diff --git a/src/map/image.cpp b/src/map/image.cpp new file mode 100644 index 00000000..ca171b37 --- /dev/null +++ b/src/map/image.cpp @@ -0,0 +1,29 @@ +#include +#include "config.h" +#include "image.h" + + +#define TILE_SIZE 256 + +Image::Image(const QString &fileName) : _img(fileName), _ratio(1.0) +{ +} + +void Image::draw(QPainter *painter, const QRectF &rect, Map::Flags flags) +{ + QRectF sr(rect.topLeft() * _ratio, rect.size() * _ratio); + + if (flags & Map::OpenGL) { + QImage img(_img.copy(sr.toRect())); + painter->drawImage(rect.topLeft(), img); + } else + painter->drawImage(rect.topLeft(), _img, sr); +} + +void Image::setDevicePixelRatio(qreal ratio) +{ +#ifdef ENABLE_HIDPI + _ratio = ratio; + _img.setDevicePixelRatio(_ratio); +#endif // ENABLE_HIDPI +} diff --git a/src/map/image.h b/src/map/image.h new file mode 100644 index 00000000..2e34b05f --- /dev/null +++ b/src/map/image.h @@ -0,0 +1,23 @@ +#ifndef IMAGE_H +#define IMAGE_H + +#include +#include "map.h" + +class QPainter; + +class Image +{ +public: + Image(const QString &fileName); + + QSize size() const {return _img.size();} + void draw(QPainter *painter, const QRectF &rect, Map::Flags flags); + void setDevicePixelRatio(qreal ratio); + +private: + QImage _img; + qreal _ratio; +}; + +#endif // IMAGE_H diff --git a/src/map/jnxmap.cpp b/src/map/jnxmap.cpp index 35dbafa7..52aac1cc 100644 --- a/src/map/jnxmap.cpp +++ b/src/map/jnxmap.cpp @@ -245,9 +245,9 @@ bool JNXMap::cb(Tile *tile, void *context) return true; } -void JNXMap::draw(QPainter *painter, const QRectF &rect, bool block) +void JNXMap::draw(QPainter *painter, const QRectF &rect, Flags flags) { - Q_UNUSED(block); + Q_UNUSED(flags); const RTree &tree = _zooms.at(_zoom).tree; Ctx ctx(painter, &_file, _ratio); QRectF rr(rect.topLeft() * _ratio, rect.size() * _ratio); diff --git a/src/map/jnxmap.h b/src/map/jnxmap.h index c2bd16a3..7c9ca4a1 100644 --- a/src/map/jnxmap.h +++ b/src/map/jnxmap.h @@ -30,7 +30,7 @@ public: QPointF ll2xy(const Coordinates &c); Coordinates xy2ll(const QPointF &p); - void draw(QPainter *painter, const QRectF &rect, bool block); + void draw(QPainter *painter, const QRectF &rect, Flags flags); void setDevicePixelRatio(qreal ratio) {_ratio = ratio;} diff --git a/src/map/map.h b/src/map/map.h index 4fc01d24..003a9016 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -4,6 +4,7 @@ #include #include #include +#include #include "common/coordinates.h" class QPainter; @@ -14,6 +15,13 @@ class Map : public QObject Q_OBJECT public: + enum Flag { + NoFlags = 0, + Block = 1, + OpenGL = 2 + }; + Q_DECLARE_FLAGS(Flags, Flag) + Map(QObject *parent = 0) : QObject(parent) {} virtual ~Map() {} @@ -31,13 +39,12 @@ public: virtual QPointF ll2xy(const Coordinates &c) = 0; virtual Coordinates xy2ll(const QPointF &p) = 0; - virtual void draw(QPainter *painter, const QRectF &rect, bool block) = 0; + virtual void draw(QPainter *painter, const QRectF &rect, Flags flags) = 0; virtual void clearCache() {} virtual void load() {} virtual void unload() {} virtual void setDevicePixelRatio(qreal ratio) {Q_UNUSED(ratio);} - virtual void setOpenGLEnabled(bool enabled) {Q_UNUSED(enabled);} virtual bool isValid() const {return true;} virtual QString errorString() const {return QString();} @@ -46,4 +53,6 @@ signals: void loaded(); }; +Q_DECLARE_OPERATORS_FOR_FLAGS(Map::Flags) + #endif // MAP_H diff --git a/src/map/onlinemap.cpp b/src/map/onlinemap.cpp index 52be8800..eb736a5e 100644 --- a/src/map/onlinemap.cpp +++ b/src/map/onlinemap.cpp @@ -126,7 +126,7 @@ qreal OnlineMap::tileSize() const return (TILE_SIZE / coordinatesRatio()); } -void OnlineMap::draw(QPainter *painter, const QRectF &rect, bool block) +void OnlineMap::draw(QPainter *painter, const QRectF &rect, Flags flags) { qreal scale = zoom2scale(_zoom); @@ -141,7 +141,7 @@ void OnlineMap::draw(QPainter *painter, const QRectF &rect, bool block) for (int j = 0; j < ceil(s.height() / tileSize()); j++) tiles.append(Tile(QPoint(tile.x() + i, tile.y() + j), _zoom)); - if (block) + if (flags & Map::Block) _tileLoader->loadTilesSync(tiles); else _tileLoader->loadTilesAsync(tiles); diff --git a/src/map/onlinemap.h b/src/map/onlinemap.h index 4620e5fb..abc60668 100644 --- a/src/map/onlinemap.h +++ b/src/map/onlinemap.h @@ -29,7 +29,7 @@ public: QPointF ll2xy(const Coordinates &c); Coordinates xy2ll(const QPointF &p); - void draw(QPainter *painter, const QRectF &rect, bool block); + void draw(QPainter *painter, const QRectF &rect, Flags flags); void setDevicePixelRatio(qreal ratio) {_deviceRatio = ratio;} void clearCache() {_tileLoader->clearCache();} diff --git a/src/map/ozimap.cpp b/src/map/ozimap.cpp index 41274942..bf6e8e3b 100644 --- a/src/map/ozimap.cpp +++ b/src/map/ozimap.cpp @@ -3,21 +3,20 @@ #include #include #include -#include #include #include #include "common/coordinates.h" #include "common/rectc.h" #include "tar.h" #include "ozf.h" +#include "image.h" #include "mapfile.h" #include "config.h" #include "ozimap.h" OziMap::OziMap(const QString &fileName, QObject *parent) - : Map(parent), _img(0), _tar(0), _ozf(0), _zoom(0), _ratio(1.0), - _opengl(false), _valid(false) + : Map(parent), _img(0), _tar(0), _ozf(0), _zoom(0), _ratio(1.0), _valid(false) { QFileInfo fi(fileName); QString suffix = fi.suffix().toLower(); @@ -79,8 +78,7 @@ OziMap::OziMap(const QString &fileName, QObject *parent) } OziMap::OziMap(const QString &fileName, Tar &tar, QObject *parent) - : Map(parent), _img(0), _tar(0), _ozf(0), _zoom(0), _ratio(1.0), - _opengl(false), _valid(false) + : Map(parent), _img(0), _tar(0), _ozf(0), _zoom(0), _ratio(1.0), _valid(false) { QFileInfo fi(fileName); QFileInfo map(fi.absolutePath()); @@ -140,20 +138,19 @@ bool OziMap::setImageInfo(const QString &path) if (OZF::isOZF(_map.path)) { _ozf = new OZF(_map.path); - if (!_ozf->open()) { - _errorString = QString("%1: Error loading OZF file") - .arg(_ozf->fileName()); + if (!_ozf || !_ozf->open()) { + _errorString = QString("%1: Error loading OZF file").arg(_map.path); return false; } _scale = _ozf->scale(_zoom); } else { - QImageReader img(_map.path); - _map.size = img.size(); - if (!_map.size.isValid()) { - _errorString = QString("%1: Error reading map image") - .arg(QFileInfo(_map.path).fileName()); + QImageReader ir(_map.path); + if (!ir.canRead()) { + _errorString = QString("%1: Unsupported/invalid image file") + .arg(_map.path); return false; } + _map.size = ir.size(); } return true; @@ -208,16 +205,8 @@ void OziMap::load() return; } - if (!_ozf && !_img && _map.isValid()) { - _img = new QImage(_map.path); - if (!_img || _img->isNull()) { - qWarning("%s: error loading map image", qPrintable(_map.path)); - return; - } -#ifdef ENABLE_HIDPI - _img->setDevicePixelRatio(_ratio); -#endif // ENABLE_HIDPI - } + if (!_tile.isValid() && !_ozf && !_img) + _img = new Image(_map.path); } void OziMap::unload() @@ -302,26 +291,16 @@ void OziMap::drawOZF(QPainter *painter, const QRectF &rect) const } } -void OziMap::drawImage(QPainter *painter, const QRectF &rect) const +void OziMap::draw(QPainter *painter, const QRectF &rect, Flags flags) { - QRectF sr(rect.topLeft() * _ratio, rect.size() * _ratio); - if (_opengl) { - QImage img(_img->copy(sr.toRect())); - painter->drawImage(rect.topLeft(), img); - } else - painter->drawImage(rect.topLeft(), *_img, sr); -} - -void OziMap::draw(QPainter *painter, const QRectF &rect, bool block) -{ - Q_UNUSED(block); + Q_UNUSED(flags); if (_ozf) drawOZF(painter, rect); + else if (_img) + _img->draw(painter, rect, flags); else if (_tile.isValid()) drawTiled(painter, rect); - else if (_img && !_img->isNull()) - drawImage(painter, rect); } QPointF OziMap::ll2xy(const Coordinates &c) @@ -391,3 +370,10 @@ void OziMap::rescale(int zoom) _zoom = zoom; _scale = _ozf->scale(zoom); } + +void OziMap::setDevicePixelRatio(qreal ratio) +{ + _ratio = ratio; + if (_img) + _img->setDevicePixelRatio(_ratio); +} diff --git a/src/map/ozimap.h b/src/map/ozimap.h index badf6a4f..cf03d480 100644 --- a/src/map/ozimap.h +++ b/src/map/ozimap.h @@ -7,7 +7,7 @@ class Tar; class OZF; -class QImage; +class Image; class OziMap : public Map { @@ -31,10 +31,9 @@ public: QPointF ll2xy(const Coordinates &c); Coordinates xy2ll(const QPointF &p); - void draw(QPainter *painter, const QRectF &rect, bool block); + void draw(QPainter *painter, const QRectF &rect, Flags flags); - void setDevicePixelRatio(qreal ratio) {_ratio = ratio;} - void setOpenGLEnabled(bool enabled) {_opengl = enabled;} + void setDevicePixelRatio(qreal ratio); void load(); void unload(); @@ -61,21 +60,20 @@ private: void drawTiled(QPainter *painter, const QRectF &rect) const; void drawOZF(QPainter *painter, const QRectF &rect) const; - void drawImage(QPainter *painter, const QRectF &rect) const; + void drawImage(QPainter *painter, const QRectF &rect, Flags flags) const; void rescale(int zoom); QString _name; Projection _projection; Transform _transform; - QImage *_img; + Image *_img; Tar *_tar; OZF *_ozf; ImageInfo _map, _tile; int _zoom; QPointF _scale; qreal _ratio; - bool _opengl; bool _valid; QString _errorString; diff --git a/src/map/wmsmap.cpp b/src/map/wmsmap.cpp index a92c1a20..4a3dcd4d 100644 --- a/src/map/wmsmap.cpp +++ b/src/map/wmsmap.cpp @@ -192,7 +192,7 @@ qreal WMSMap::tileSize() const return (TILE_SIZE / _ratio); } -void WMSMap::draw(QPainter *painter, const QRectF &rect, bool block) +void WMSMap::draw(QPainter *painter, const QRectF &rect, Flags flags) { QPoint tl = QPoint((int)floor(rect.left() / tileSize()), (int)floor(rect.top() / tileSize())); @@ -214,7 +214,7 @@ void WMSMap::draw(QPainter *painter, const QRectF &rect, bool block) } } - if (block) + if (flags & Map::Block) _tileLoader->loadTilesSync(tiles); else _tileLoader->loadTilesAsync(tiles); diff --git a/src/map/wmsmap.h b/src/map/wmsmap.h index d2d5e061..c8f18fbc 100644 --- a/src/map/wmsmap.h +++ b/src/map/wmsmap.h @@ -29,7 +29,7 @@ public: QPointF ll2xy(const Coordinates &c); Coordinates xy2ll(const QPointF &p); - void draw(QPainter *painter, const QRectF &rect, bool block); + void draw(QPainter *painter, const QRectF &rect, Flags flags); void setDevicePixelRatio(qreal ratio) {_ratio = ratio;} void clearCache(); diff --git a/src/map/wmtsmap.cpp b/src/map/wmtsmap.cpp index 342509e5..7a5856a2 100644 --- a/src/map/wmtsmap.cpp +++ b/src/map/wmtsmap.cpp @@ -169,7 +169,7 @@ QSizeF WMTSMap::tileSize(const WMTS::Zoom &zoom) const zoom.tile().height() / coordinatesRatio()); } -void WMTSMap::draw(QPainter *painter, const QRectF &rect, bool block) +void WMTSMap::draw(QPainter *painter, const QRectF &rect, Flags flags) { const WMTS::Zoom &z = _zooms.at(_zoom); QSizeF ts(tileSize(z)); @@ -184,7 +184,7 @@ void WMTSMap::draw(QPainter *painter, const QRectF &rect, bool block) for (int j = tl.y(); j < br.y(); j++) tiles.append(Tile(QPoint(i, j), z.id())); - if (block) + if (flags & Map::Block) _tileLoader->loadTilesSync(tiles); else _tileLoader->loadTilesAsync(tiles); diff --git a/src/map/wmtsmap.h b/src/map/wmtsmap.h index b1db5ce3..11d6015e 100644 --- a/src/map/wmtsmap.h +++ b/src/map/wmtsmap.h @@ -29,7 +29,7 @@ public: QPointF ll2xy(const Coordinates &c); Coordinates xy2ll(const QPointF &p); - void draw(QPainter *painter, const QRectF &rect, bool block); + void draw(QPainter *painter, const QRectF &rect, Flags flags); void setDevicePixelRatio(qreal ratio) {_deviceRatio = ratio;} void clearCache();