From 2f88e8257b83b77f6c06c86c99f542976e7d5199 Mon Sep 17 00:00:00 2001 From: Sudarsana Babu Nagineni Date: Mon, 4 Mar 2019 17:33:43 +0200 Subject: [core] Remove Constrain mode options setLatLngBounds() API allows the map to be constrained to certain Lat/Lng limits, so there is no need of having Constrain mode options on Map to constrain the map boundaries. --- include/mbgl/map/map.hpp | 4 --- include/mbgl/map/map_options.hpp | 17 ------------ include/mbgl/map/mode.hpp | 8 ------ platform/android/src/native_map_view.cpp | 1 - platform/ios/src/MGLMapView.mm | 6 ----- platform/macos/src/MGLMapView.mm | 5 ---- platform/node/src/node_map.cpp | 2 -- platform/qt/include/qmapboxgl.hpp | 10 -------- platform/qt/src/qmapboxgl.cpp | 44 -------------------------------- src/mbgl/map/map.cpp | 12 --------- src/mbgl/map/map_impl.cpp | 5 +--- src/mbgl/map/map_impl.hpp | 1 - src/mbgl/map/map_options.cpp | 10 -------- src/mbgl/map/transform.cpp | 18 +++---------- src/mbgl/map/transform.hpp | 7 +---- src/mbgl/map/transform_state.cpp | 28 ++++---------------- src/mbgl/map/transform_state.hpp | 8 ++---- test/map/transform.test.cpp | 26 ------------------- 18 files changed, 12 insertions(+), 200 deletions(-) diff --git a/include/mbgl/map/map.hpp b/include/mbgl/map/map.hpp index 096bb90131..56aaffbcb7 100644 --- a/include/mbgl/map/map.hpp +++ b/include/mbgl/map/map.hpp @@ -90,10 +90,6 @@ public: void setNorthOrientation(NorthOrientation); NorthOrientation getNorthOrientation() const; - // Constrain mode - void setConstrainMode(ConstrainMode); - ConstrainMode getConstrainMode() const; - // Viewport mode void setViewportMode(ViewportMode); ViewportMode getViewportMode() const; diff --git a/include/mbgl/map/map_options.hpp b/include/mbgl/map/map_options.hpp index 13772332a8..1a72837c4c 100644 --- a/include/mbgl/map/map_options.hpp +++ b/include/mbgl/map/map_options.hpp @@ -35,23 +35,6 @@ public: */ MapMode mapMode() const; - /** - * @brief Sets the map constrain mode. This can be used to limit the map - * to wrap around the globe horizontally. By default, it is set to - * HeightOnly. - * - * @param mode Map constrain mode. - * @return reference to MapOptions for chaining options together. - */ - MapOptions& withConstrainMode(ConstrainMode mode); - - /** - * @brief Gets the previously set (or default) constrain mode. - * - * @return constrain mode. - */ - ConstrainMode constrainMode() const; - /** * @brief Sets the viewport mode. This can be used to flip the vertical * orientation of the map as some devices may use inverted orientation. diff --git a/include/mbgl/map/mode.hpp b/include/mbgl/map/mode.hpp index 4ee289d855..64b9271e4e 100644 --- a/include/mbgl/map/mode.hpp +++ b/include/mbgl/map/mode.hpp @@ -15,14 +15,6 @@ enum class MapMode : EnumType { Tile // a once-off still image of a single tile }; -// We can choose to constrain the map both horizontally or vertically, or only -// vertically e.g. while panning. -enum class ConstrainMode : EnumType { - None, - HeightOnly, - WidthAndHeight, -}; - // Satisfies embedding platforms that requires the viewport coordinate systems // to be set according to its standards. enum class ViewportMode : EnumType { diff --git a/platform/android/src/native_map_view.cpp b/platform/android/src/native_map_view.cpp index 98aaedb7ab..641a91b6de 100755 --- a/platform/android/src/native_map_view.cpp +++ b/platform/android/src/native_map_view.cpp @@ -81,7 +81,6 @@ NativeMapView::NativeMapView(jni::JNIEnv& _env, // Create Map options MapOptions options; options.withMapMode(MapMode::Continuous) - .withConstrainMode(ConstrainMode::HeightOnly) .withViewportMode(ViewportMode::Default) .withCrossSourceCollisions(_crossSourceCollisions); diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm index bc7b5da9ef..566901d1aa 100644 --- a/platform/ios/src/MGLMapView.mm +++ b/platform/ios/src/MGLMapView.mm @@ -471,7 +471,6 @@ public: mbgl::MapOptions mapOptions; mapOptions.withMapMode(mbgl::MapMode::Continuous) - .withConstrainMode(mbgl::ConstrainMode::None) .withViewportMode(mbgl::ViewportMode::Default) .withCrossSourceCollisions(enableCrossSourceCollisions); @@ -1231,11 +1230,6 @@ public: BOOL isVisible = self.superview && self.window; if (isVisible && ! _displayLink) { - if (_mbglMap && self.mbglMap.getConstrainMode() == mbgl::ConstrainMode::None) - { - self.mbglMap.setConstrainMode(mbgl::ConstrainMode::HeightOnly); - } - _displayLink = [self.window.screen displayLinkWithTarget:self selector:@selector(updateFromDisplayLink:)]; [self updateDisplayLinkPreferredFramesPerSecond]; [_displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes]; diff --git a/platform/macos/src/MGLMapView.mm b/platform/macos/src/MGLMapView.mm index 09fb37add3..5aa10e0158 100644 --- a/platform/macos/src/MGLMapView.mm +++ b/platform/macos/src/MGLMapView.mm @@ -288,7 +288,6 @@ public: mbgl::MapOptions mapOptions; mapOptions.withMapMode(mbgl::MapMode::Continuous) - .withConstrainMode(mbgl::ConstrainMode::None) .withViewportMode(mbgl::ViewportMode::Default) .withCrossSourceCollisions(enableCrossSourceCollisions); _mbglMap = new mbgl::Map(*_rendererFrontend, *_mbglView, self.size, config.scaleFactor, *config.fileSource, mapOptions); @@ -686,10 +685,6 @@ public: self.dormant = NO; } - if (window && _mbglMap->getConstrainMode() == mbgl::ConstrainMode::None) { - _mbglMap->setConstrainMode(mbgl::ConstrainMode::HeightOnly); - } - [window addObserver:self forKeyPath:@"contentLayoutRect" options:NSKeyValueObservingOptionInitial diff --git a/platform/node/src/node_map.cpp b/platform/node/src/node_map.cpp index cb923428ac..0050546b1e 100644 --- a/platform/node/src/node_map.cpp +++ b/platform/node/src/node_map.cpp @@ -618,7 +618,6 @@ void NodeMap::cancel() { frontend = std::make_unique(mbgl::Size{ 256, 256 }, pixelRatio, *this); mbgl::MapOptions options; options.withMapMode(mode) - .withConstrainMode(mbgl::ConstrainMode::HeightOnly) .withViewportMode(mbgl::ViewportMode::Default) .withCrossSourceCollisions(crossSourceCollisions); map = std::make_unique(*frontend, mapObserver, frontend->getSize(), pixelRatio, @@ -1207,7 +1206,6 @@ NodeMap::NodeMap(v8::Local options) pixelRatio, *this, mbgl::MapOptions().withMapMode(mode) - .withConstrainMode(mbgl::ConstrainMode::HeightOnly) .withViewportMode(mbgl::ViewportMode::Default) .withCrossSourceCollisions(crossSourceCollisions))), async(new uv_async_t) { diff --git a/platform/qt/include/qmapboxgl.hpp b/platform/qt/include/qmapboxgl.hpp index e83be37511..a0611014cf 100644 --- a/platform/qt/include/qmapboxgl.hpp +++ b/platform/qt/include/qmapboxgl.hpp @@ -31,12 +31,6 @@ public: Static }; - enum ConstrainMode { - NoConstrain = 0, - ConstrainHeightOnly, - ConstrainWidthAndHeight - }; - enum ViewportMode { DefaultViewport = 0, FlippedYViewport @@ -48,9 +42,6 @@ public: MapMode mapMode() const; void setMapMode(MapMode); - ConstrainMode constrainMode() const; - void setConstrainMode(ConstrainMode); - ViewportMode viewportMode() const; void setViewportMode(ViewportMode); @@ -78,7 +69,6 @@ public: private: GLContextMode m_contextMode; MapMode m_mapMode; - ConstrainMode m_constrainMode; ViewportMode m_viewportMode; unsigned m_cacheMaximumSize; diff --git a/platform/qt/src/qmapboxgl.cpp b/platform/qt/src/qmapboxgl.cpp index 7d3d722550..6df49a8247 100644 --- a/platform/qt/src/qmapboxgl.cpp +++ b/platform/qt/src/qmapboxgl.cpp @@ -71,11 +71,6 @@ static_assert(mbgl::underlying_type(QMapboxGLSettings::SharedGLContext) == mbgl: static_assert(mbgl::underlying_type(QMapboxGLSettings::Continuous) == mbgl::underlying_type(mbgl::MapMode::Continuous), "error"); static_assert(mbgl::underlying_type(QMapboxGLSettings::Static) == mbgl::underlying_type(mbgl::MapMode::Static), "error"); -// mbgl::ConstrainMode -static_assert(mbgl::underlying_type(QMapboxGLSettings::NoConstrain) == mbgl::underlying_type(mbgl::ConstrainMode::None), "error"); -static_assert(mbgl::underlying_type(QMapboxGLSettings::ConstrainHeightOnly) == mbgl::underlying_type(mbgl::ConstrainMode::HeightOnly), "error"); -static_assert(mbgl::underlying_type(QMapboxGLSettings::ConstrainWidthAndHeight) == mbgl::underlying_type(mbgl::ConstrainMode::WidthAndHeight), "error"); - // mbgl::ViewportMode static_assert(mbgl::underlying_type(QMapboxGLSettings::DefaultViewport) == mbgl::underlying_type(mbgl::ViewportMode::Default), "error"); static_assert(mbgl::underlying_type(QMapboxGLSettings::FlippedYViewport) == mbgl::underlying_type(mbgl::ViewportMode::FlippedY), "error"); @@ -212,24 +207,6 @@ std::unique_ptr toStyleImage(const QString &id, const QImage \sa mapMode() */ -/*! - \enum QMapboxGLSettings::ConstrainMode - - This enum determines if the map wraps. - - \value NoConstrain The map will wrap on the horizontal axis. Since it doesn't - make sense to wrap on the vertical axis in a Web Mercator projection, the map will scroll - and show some empty space. - - \value ConstrainHeightOnly The map will wrap around the horizontal axis, like a spinning - globe. This is the recommended constrain mode. - - \value ConstrainWidthAndHeight The map won't wrap and panning is restricted to the boundaries - of the map. - - \sa constrainMode() -*/ - /*! \enum QMapboxGLSettings::ViewportMode @@ -249,7 +226,6 @@ std::unique_ptr toStyleImage(const QString &id, const QImage QMapboxGLSettings::QMapboxGLSettings() : m_contextMode(QMapboxGLSettings::SharedGLContext) , m_mapMode(QMapboxGLSettings::Continuous) - , m_constrainMode(QMapboxGLSettings::ConstrainHeightOnly) , m_viewportMode(QMapboxGLSettings::DefaultViewport) , m_cacheMaximumSize(mbgl::util::DEFAULT_MAX_CACHE_SIZE) , m_cacheDatabasePath(":memory:") @@ -303,25 +279,6 @@ void QMapboxGLSettings::setMapMode(MapMode mode) m_mapMode = mode; } -/*! - Returns the constrain mode. This is used to limit the map to wrap - around the globe horizontally. - - By default, it is set to QMapboxGLSettings::ConstrainHeightOnly. -*/ -QMapboxGLSettings::ConstrainMode QMapboxGLSettings::constrainMode() const -{ - return m_constrainMode; -} - -/*! - Sets the map constrain \a mode. -*/ -void QMapboxGLSettings::setConstrainMode(ConstrainMode mode) -{ - m_constrainMode = mode; -} - /*! Returns the viewport mode. This is used to flip the vertical orientation of the map as some devices may use inverted orientation. @@ -1767,7 +1724,6 @@ QMapboxGLPrivate::QMapboxGLPrivate(QMapboxGL *q, const QMapboxGLSettings &settin mbgl::MapOptions options; options.withMapMode(static_cast(settings.mapMode())) - .withConstrainMode(static_cast(settings.constrainMode())) .withViewportMode(static_cast(settings.viewportMode())); // Setup the Map object diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp index 5bc7a37332..8b90aee492 100644 --- a/src/mbgl/map/map.cpp +++ b/src/mbgl/map/map.cpp @@ -39,7 +39,6 @@ Map::Map(RendererFrontend& rendererFrontend, size, pixelRatio, options.mapMode(), - options.constrainMode(), options.viewportMode(), options.crossSourceCollisions())) {} @@ -348,17 +347,6 @@ NorthOrientation Map::getNorthOrientation() const { return impl->transform.getNorthOrientation(); } -#pragma mark - Constrain mode - -void Map::setConstrainMode(mbgl::ConstrainMode mode) { - impl->transform.setConstrainMode(mode); - impl->onUpdate(); -} - -ConstrainMode Map::getConstrainMode() const { - return impl->transform.getConstrainMode(); -} - #pragma mark - Viewport mode void Map::setViewportMode(mbgl::ViewportMode mode) { diff --git a/src/mbgl/map/map_impl.cpp b/src/mbgl/map/map_impl.cpp index 04200c267f..15caa34af4 100644 --- a/src/mbgl/map/map_impl.cpp +++ b/src/mbgl/map/map_impl.cpp @@ -12,16 +12,13 @@ Map::Impl::Impl(Map& map_, Size size_, float pixelRatio_, MapMode mode_, - ConstrainMode constrainMode_, ViewportMode viewportMode_, bool crossSourceCollisions_) : map(map_), observer(mapObserver), rendererFrontend(frontend), fileSource(fileSource_), - transform(observer, - constrainMode_, - viewportMode_), + transform(observer, viewportMode_), mode(mode_), pixelRatio(pixelRatio_), crossSourceCollisions(crossSourceCollisions_), diff --git a/src/mbgl/map/map_impl.hpp b/src/mbgl/map/map_impl.hpp index 598b72907a..af64d8c0f6 100644 --- a/src/mbgl/map/map_impl.hpp +++ b/src/mbgl/map/map_impl.hpp @@ -34,7 +34,6 @@ public: float pixelRatio, MapMode, - ConstrainMode, ViewportMode, bool crossSourceCollisions); diff --git a/src/mbgl/map/map_options.cpp b/src/mbgl/map/map_options.cpp index 118fcaf3df..34586f364c 100644 --- a/src/mbgl/map/map_options.cpp +++ b/src/mbgl/map/map_options.cpp @@ -8,7 +8,6 @@ namespace mbgl { class MapOptions::Impl { public: MapMode mapMode = MapMode::Continuous; - ConstrainMode constrainMode = ConstrainMode::HeightOnly; ViewportMode viewportMode = ViewportMode::Default; std::string cachePath; std::string assetRoot; @@ -28,15 +27,6 @@ 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; diff --git a/src/mbgl/map/transform.cpp b/src/mbgl/map/transform.cpp index e60ce7a1bd..ea8d3fa482 100644 --- a/src/mbgl/map/transform.cpp +++ b/src/mbgl/map/transform.cpp @@ -37,9 +37,8 @@ static double _normalizeAngle(double angle, double anchorAngle) } Transform::Transform(MapObserver& observer_, - ConstrainMode constrainMode, ViewportMode viewportMode) - : observer(observer_), state(constrainMode, viewportMode) { + : observer(observer_), state(viewportMode) { } #pragma mark - Map View @@ -56,7 +55,7 @@ void Transform::resize(const Size size) { observer.onCameraWillChange(MapObserver::CameraChangeMode::Immediate); state.size = size; - state.constrain(state.scale, state.x, state.y); + state.constrain(state.scale, state.y); observer.onCameraDidChange(MapObserver::CameraChangeMode::Immediate); } @@ -405,24 +404,13 @@ double Transform::getPitch() const { void Transform::setNorthOrientation(NorthOrientation orientation) { state.orientation = orientation; - state.constrain(state.scale, state.x, state.y); + state.constrain(state.scale, state.y); } NorthOrientation Transform::getNorthOrientation() const { return state.getNorthOrientation(); } -#pragma mark - Constrain mode - -void Transform::setConstrainMode(mbgl::ConstrainMode mode) { - state.constrainMode = mode; - state.constrain(state.scale, state.x, state.y); -} - -ConstrainMode Transform::getConstrainMode() const { - return state.getConstrainMode(); -} - #pragma mark - Viewport mode void Transform::setViewportMode(mbgl::ViewportMode mode) { diff --git a/src/mbgl/map/transform.hpp b/src/mbgl/map/transform.hpp index c4e10ec797..e0cc5927d2 100644 --- a/src/mbgl/map/transform.hpp +++ b/src/mbgl/map/transform.hpp @@ -19,10 +19,9 @@ namespace mbgl { class Transform : private util::noncopyable { public: Transform(MapObserver& = MapObserver::nullObserver(), - ConstrainMode = ConstrainMode::HeightOnly, ViewportMode = ViewportMode::Default); - Transform(const TransformState &state_) : observer(MapObserver::nullObserver()), state(state_) {} + Transform(TransformState state_) : observer(MapObserver::nullObserver()), state(std::move(state_)) {} // Map view void resize(Size size); @@ -76,10 +75,6 @@ public: void setNorthOrientation(NorthOrientation); NorthOrientation getNorthOrientation() const; - // Constrain mode - void setConstrainMode(ConstrainMode); - ConstrainMode getConstrainMode() const; - // Viewport mode void setViewportMode(ViewportMode); ViewportMode getViewportMode() const; diff --git a/src/mbgl/map/transform_state.cpp b/src/mbgl/map/transform_state.cpp index e911067c5b..29152c10df 100644 --- a/src/mbgl/map/transform_state.cpp +++ b/src/mbgl/map/transform_state.cpp @@ -8,9 +8,8 @@ namespace mbgl { -TransformState::TransformState(ConstrainMode constrainMode_, ViewportMode viewportMode_) - : constrainMode(constrainMode_) - , viewportMode(viewportMode_) +TransformState::TransformState(ViewportMode viewportMode_) + : viewportMode(viewportMode_) { } @@ -118,12 +117,6 @@ double TransformState::getNorthOrientationAngle() const { return angleOrientation; } -#pragma mark - Constrain mode - -ConstrainMode TransformState::getConstrainMode() const { - return constrainMode; -} - #pragma mark - ViewportMode ViewportMode TransformState::getViewportMode() const { @@ -204,9 +197,8 @@ void TransformState::setMinZoom(const double minZoom) { double TransformState::getMinZoom() const { double test_scale = min_scale; - double unused_x = x; double unused_y = y; - constrain(test_scale, unused_x, unused_y); + constrain(test_scale, unused_y); return scaleZoom(test_scale); } @@ -370,11 +362,7 @@ bool TransformState::rotatedNorth() const { return (orientation == NO::Leftwards || orientation == NO::Rightwards); } -void TransformState::constrain(double& scale_, double& x_, double& y_) const { - if (constrainMode == ConstrainMode::None) { - return; - } - +void TransformState::constrain(double& scale_, double& y_) const { // Constrain scale to avoid zooming out far enough to show off-world areas on the Y axis. const double ratioY = (rotatedNorth() ? size.width : size.height) / util::tileSize; scale_ = util::max(scale_, ratioY); @@ -382,12 +370,6 @@ void TransformState::constrain(double& scale_, double& x_, double& y_) const { // Constrain min/max pan to avoid showing off-world areas on the Y axis. double max_y = (scale_ * util::tileSize - (rotatedNorth() ? size.width : size.height)) / 2; y_ = std::max(-max_y, std::min(y_, max_y)); - - if (constrainMode == ConstrainMode::WidthAndHeight) { - // Constrain min/max pan to avoid showing off-world areas on the X axis. - double max_x = (scale_ * util::tileSize - (rotatedNorth() ? size.height : size.width)) / 2; - x_ = std::max(-max_x, std::min(x_, max_x)); - } } void TransformState::moveLatLng(const LatLng& latLng, const ScreenCoordinate& anchor) { @@ -421,7 +403,7 @@ void TransformState::setLatLngZoom(const LatLng& latLng, double zoom) { void TransformState::setScalePoint(const double newScale, const ScreenCoordinate &point) { double constrainedScale = newScale; ScreenCoordinate constrainedPoint = point; - constrain(constrainedScale, constrainedPoint.x, constrainedPoint.y); + constrain(constrainedScale, constrainedPoint.y); scale = constrainedScale; x = constrainedPoint.x; diff --git a/src/mbgl/map/transform_state.hpp b/src/mbgl/map/transform_state.hpp index be7c300803..8067a8e1d8 100644 --- a/src/mbgl/map/transform_state.hpp +++ b/src/mbgl/map/transform_state.hpp @@ -23,7 +23,7 @@ class TransformState { friend class RendererState; public: - TransformState(ConstrainMode = ConstrainMode::HeightOnly, ViewportMode = ViewportMode::Default); + TransformState(ViewportMode = ViewportMode::Default); // Matrix void matrixFor(mat4&, const UnwrappedTileID&) const; @@ -36,9 +36,6 @@ public: NorthOrientation getNorthOrientation() const; double getNorthOrientationAngle() const; - // Constrain mode - ConstrainMode getConstrainMode() const; - // Viewport mode ViewportMode getViewportMode() const; @@ -95,7 +92,7 @@ public: private: bool rotatedNorth() const; - void constrain(double& scale, double& x, double& y) const; + void constrain(double& scale, double& y) const; optional bounds; @@ -120,7 +117,6 @@ private: void setScalePoint(const double scale, const ScreenCoordinate& point); private: - ConstrainMode constrainMode; ViewportMode viewportMode; // animation state diff --git a/test/map/transform.test.cpp b/test/map/transform.test.cpp index 04b9c1a931..43b63c17a6 100644 --- a/test/map/transform.test.cpp +++ b/test/map/transform.test.cpp @@ -159,32 +159,6 @@ TEST(Transform, UnwrappedLatLng) { ASSERT_NEAR(wrappedLeftwards.longitude(), -77.0, 1e-8); } -TEST(Transform, ConstrainHeightOnly) { - Transform transform(MapObserver::nullObserver(), ConstrainMode::HeightOnly); - transform.resize({ 2, 2 }); - - transform.jumpTo(CameraOptions().withCenter(LatLngBounds::world().southwest()).withZoom(util::MAX_ZOOM)); - ASSERT_NEAR(-util::LATITUDE_MAX, transform.getLatLng().latitude(), 1e-7); - ASSERT_NEAR(-util::LONGITUDE_MAX, transform.getLatLng().longitude(), 1e-7); - - transform.jumpTo(CameraOptions().withCenter(LatLngBounds::world().northeast())); - ASSERT_NEAR(util::LATITUDE_MAX, transform.getLatLng().latitude(), 1e-7); - ASSERT_NEAR(-util::LONGITUDE_MAX, transform.getLatLng().longitude(), 1e-7); -} - -TEST(Transform, ConstrainWidthAndHeight) { - Transform transform(MapObserver::nullObserver(), ConstrainMode::WidthAndHeight); - transform.resize({ 2, 2 }); - - transform.jumpTo(CameraOptions().withCenter(LatLngBounds::world().southwest()).withZoom(util::MAX_ZOOM)); - ASSERT_NEAR(-util::LATITUDE_MAX, transform.getLatLng().latitude(), 1e-7); - ASSERT_NEAR(-util::LONGITUDE_MAX, transform.getLatLng().longitude(), 1e-6); - - transform.jumpTo(CameraOptions().withCenter(LatLngBounds::world().northeast())); - ASSERT_NEAR(util::LATITUDE_MAX, transform.getLatLng().latitude(), 1e-7); - ASSERT_NEAR(-util::LONGITUDE_MAX, transform.getLatLng().longitude(), 1e-6); -} - TEST(Transform, Anchor) { Transform transform; transform.resize({ 1000, 1000 }); -- cgit v1.2.1