diff --git a/libs/map/mapview.cpp b/libs/map/mapview.cpp index 06866ca..3cf5430 100644 --- a/libs/map/mapview.cpp +++ b/libs/map/mapview.cpp @@ -81,6 +81,12 @@ void MapView::setZoom(double z) { } +void MapView::setContrast(double value) { + contrast = piClampd(value, 0., 100.); + update(); +} + + QString MapView::cachePath() const { return cache->cacheRoot(); } @@ -258,6 +264,11 @@ void MapView::wheelEvent(QWheelEvent * e) { void MapView::paintEvent(QPaintEvent *) { QPainter p(this); p.drawPixmap(0, 0, background); + if (contrast < 100.) { + auto col = palette().color(QPalette::Window); + col.setAlphaF(1. - contrast / 100.); + p.fillRect(rect(), col); + } drawItems(p); updateMouse(mapFromGlobal(QCursor::pos())); } diff --git a/libs/map/mapview.h b/libs/map/mapview.h index 86071cf..25de35c 100644 --- a/libs/map/mapview.h +++ b/libs/map/mapview.h @@ -36,6 +36,7 @@ class QAD_MAP_EXPORT MapView: public QWidget { Q_OBJECT Q_PROPERTY(QPointF center READ center WRITE setCenter) Q_PROPERTY(double zoom READ getZoom WRITE setZoom) + Q_PROPERTY(double contrast READ getContrast WRITE setContrast) Q_PROPERTY(bool offlineMode READ isOfflineMode WRITE setOfflineMode) friend class MapViewTileDownloader; @@ -58,6 +59,12 @@ public: double getZoom() const { return zoom_; } void setZoom(double z); + double getContrast() const { return contrast; } + + /// 0 - 100 + void setContrast(double value); + + /// {lat, lng} QPointF clickedCoordinate() const { return last_click_coord; } QString cachePath() const; @@ -107,7 +114,7 @@ private: QVector items_; QBrush brush_tr; bool is_pan = false, is_downloading = false, is_offline = false; - double zoom_ = 1., scale_ = 1., px2m = 1.; + double zoom_ = 1., scale_ = 1., px2m = 1., contrast = 100.; int zoom_level = 0, tiles_side = 1, max_level = 19; public slots: diff --git a/libs/map/mapview_tile_provider_base.h b/libs/map/mapview_tile_provider_base.h index f1bdc62..8d53fae 100644 --- a/libs/map/mapview_tile_provider_base.h +++ b/libs/map/mapview_tile_provider_base.h @@ -23,6 +23,7 @@ #include "mapview_types.h" #include "qad_map_export.h" +#include #include #include diff --git a/libs/map/plugin/mapplugin.cpp b/libs/map/plugin/mapplugin.cpp index b05cb1c..08e1891 100644 --- a/libs/map/plugin/mapplugin.cpp +++ b/libs/map/plugin/mapplugin.cpp @@ -1,6 +1,7 @@ #include "mapplugin.h" #include "mapview.h" +#include "mapview_tile_provider_osm.h" #include @@ -26,6 +27,7 @@ bool MapPlugin::isInitialized() const { QWidget * MapPlugin::createWidget(QWidget * parent) { MapView * w = new MapView(parent); + w->setTileProvider(new MapViewTileProvider_OSM()); return w; }