summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSudarsana Babu Nagineni <sudarsana.babu@mapbox.com>2019-03-07 14:29:19 +0200
committerSudarsana Babu Nagineni <sudarsana.babu@mapbox.com>2019-03-08 18:20:55 +0200
commit5e2b6bf636472a4464e6ab3ae0d9d01c68de041b (patch)
treed4a924f2ac4174a034448388fb65b033b801a83d /src
parentc4115f0539be1834db40b318eb4ebb9e27d1eafb (diff)
downloadqtlocation-mapboxgl-5e2b6bf636472a4464e6ab3ae0d9d01c68de041b.tar.gz
[core] Add MapOptions to define properties of Map
To simplify the Map constructor, introduce MapOptions interface to define the properties that can be set on a Map.
Diffstat (limited to 'src')
-rw-r--r--src/core-files.json2
-rw-r--r--src/mbgl/map/map.cpp13
-rw-r--r--src/mbgl/map/map_options.cpp85
3 files changed, 92 insertions, 8 deletions
diff --git a/src/core-files.json b/src/core-files.json
index bba2a94bf2..4521457bb1 100644
--- a/src/core-files.json
+++ b/src/core-files.json
@@ -44,6 +44,7 @@
"src/mbgl/layout/symbol_projection.cpp",
"src/mbgl/map/map.cpp",
"src/mbgl/map/map_impl.cpp",
+ "src/mbgl/map/map_options.cpp",
"src/mbgl/map/transform.cpp",
"src/mbgl/map/transform_state.cpp",
"src/mbgl/math/log2.cpp",
@@ -329,6 +330,7 @@
"mbgl/map/change.hpp": "include/mbgl/map/change.hpp",
"mbgl/map/map.hpp": "include/mbgl/map/map.hpp",
"mbgl/map/map_observer.hpp": "include/mbgl/map/map_observer.hpp",
+ "mbgl/map/map_options.hpp": "include/mbgl/map/map_options.hpp",
"mbgl/map/mode.hpp": "include/mbgl/map/mode.hpp",
"mbgl/map/projection_mode.hpp": "include/mbgl/map/projection_mode.hpp",
"mbgl/math/clamp.hpp": "include/mbgl/math/clamp.hpp",
diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp
index 42e14abeb5..556038d2d8 100644
--- a/src/mbgl/map/map.cpp
+++ b/src/mbgl/map/map.cpp
@@ -33,10 +33,7 @@ Map::Map(RendererFrontend& rendererFrontend,
const float pixelRatio,
FileSource& fileSource,
Scheduler& scheduler,
- MapMode mapMode,
- ConstrainMode constrainMode,
- ViewportMode viewportMode,
- bool crossSourceCollisions)
+ const MapOptions& options)
: impl(std::make_unique<Impl>(*this,
rendererFrontend,
mapObserver,
@@ -44,10 +41,10 @@ Map::Map(RendererFrontend& rendererFrontend,
scheduler,
size,
pixelRatio,
- mapMode,
- constrainMode,
- viewportMode,
- crossSourceCollisions)) {}
+ options.mapMode(),
+ options.constrainMode(),
+ options.viewportMode(),
+ options.crossSourceCollisions())) {}
Map::~Map() = default;
diff --git a/src/mbgl/map/map_options.cpp b/src/mbgl/map/map_options.cpp
new file mode 100644
index 0000000000..118fcaf3df
--- /dev/null
+++ b/src/mbgl/map/map_options.cpp
@@ -0,0 +1,85 @@
+#include <mbgl/map/map_options.hpp>
+#include <mbgl/util/constants.hpp>
+
+#include <cassert>
+
+namespace mbgl {
+
+class MapOptions::Impl {
+public:
+ MapMode mapMode = MapMode::Continuous;
+ ConstrainMode constrainMode = ConstrainMode::HeightOnly;
+ ViewportMode viewportMode = ViewportMode::Default;
+ std::string cachePath;
+ std::string assetRoot;
+ uint64_t maximumSize{mbgl::util::DEFAULT_MAX_CACHE_SIZE};
+ bool crossSourceCollisions = true;
+};
+
+MapOptions::MapOptions() : impl_(std::make_shared<MapOptions::Impl>()) {}
+MapOptions::~MapOptions() = default;
+
+MapOptions& MapOptions::withMapMode(MapMode mode) {
+ impl_->mapMode = mode;
+ return *this;
+}
+
+MapMode MapOptions::mapMode() const {
+ return impl_->mapMode;
+}
+
+MapOptions& MapOptions::withConstrainMode(ConstrainMode mode) {
+ impl_->constrainMode = mode;
+ return *this;
+}
+
+ConstrainMode MapOptions::constrainMode() const {
+ return impl_->constrainMode;
+}
+
+MapOptions& MapOptions::withViewportMode(ViewportMode mode) {
+ impl_->viewportMode = mode;
+ return *this;
+}
+
+ViewportMode MapOptions::viewportMode() const {
+ return impl_->viewportMode;
+}
+
+MapOptions& MapOptions::withCachePath(std::string path) {
+ impl_->cachePath = std::move(path);
+ return *this;
+}
+
+const std::string& MapOptions::cachePath() const {
+ return impl_->cachePath;
+}
+
+MapOptions& MapOptions::withAssetRoot(std::string path) {
+ impl_->assetRoot = std::move(path);
+ return *this;
+}
+
+const std::string& MapOptions::assetRoot() const {
+ return impl_->assetRoot;
+}
+
+MapOptions& MapOptions::withMaximumCacheSize(uint64_t size) {
+ impl_->maximumSize = size;
+ return *this;
+}
+
+uint64_t MapOptions::maximumCacheSize() const {
+ return impl_->maximumSize;
+}
+
+MapOptions& MapOptions::withCrossSourceCollisions(bool enableCollisions) {
+ impl_->crossSourceCollisions = enableCollisions;
+ return *this;
+}
+
+bool MapOptions::crossSourceCollisions() const {
+ return impl_->crossSourceCollisions;
+}
+
+} // namespace mbgl