diff options
author | Sudarsana Babu Nagineni <sudarsana.babu@mapbox.com> | 2019-03-07 14:29:19 +0200 |
---|---|---|
committer | Sudarsana Babu Nagineni <sudarsana.babu@mapbox.com> | 2019-03-08 18:20:55 +0200 |
commit | 5e2b6bf636472a4464e6ab3ae0d9d01c68de041b (patch) | |
tree | d4a924f2ac4174a034448388fb65b033b801a83d /src | |
parent | c4115f0539be1834db40b318eb4ebb9e27d1eafb (diff) | |
download | qtlocation-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.json | 2 | ||||
-rw-r--r-- | src/mbgl/map/map.cpp | 13 | ||||
-rw-r--r-- | src/mbgl/map/map_options.cpp | 85 |
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 |