From e5aa4d70cd7b39302ddf1ec4df240a14accfb474 Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Mon, 3 Apr 2017 17:07:17 +0300 Subject: [core] Updated Size::isEmpty and TransformState::valid checks --- src/mbgl/map/transform.cpp | 10 ++++++---- src/mbgl/map/transform.hpp | 2 +- src/mbgl/map/transform_state.cpp | 7 +++++-- src/mbgl/map/transform_state.hpp | 4 ++++ src/mbgl/util/offscreen_texture.cpp | 4 ++-- src/mbgl/util/tile_cover.cpp | 2 ++ 6 files changed, 20 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/mbgl/map/transform.cpp b/src/mbgl/map/transform.cpp index c30b8d9687..5104aa0562 100644 --- a/src/mbgl/map/transform.cpp +++ b/src/mbgl/map/transform.cpp @@ -45,9 +45,13 @@ Transform::Transform(MapObserver& observer_, #pragma mark - Map View -bool Transform::resize(const Size size) { +void Transform::resize(const Size size) { + if (size.isEmpty()) { + throw std::runtime_error("failed to resize: size is empty"); + } + if (state.size == size) { - return false; + return; } observer.onCameraWillChange(MapObserver::CameraChangeMode::Immediate); @@ -56,8 +60,6 @@ bool Transform::resize(const Size size) { state.constrain(state.scale, state.x, state.y); observer.onCameraDidChange(MapObserver::CameraChangeMode::Immediate); - - return true; } #pragma mark - Camera diff --git a/src/mbgl/map/transform.hpp b/src/mbgl/map/transform.hpp index f11ac81287..15b97cb198 100644 --- a/src/mbgl/map/transform.hpp +++ b/src/mbgl/map/transform.hpp @@ -25,7 +25,7 @@ public: Transform(const TransformState &state_) : observer(MapObserver::nullObserver()), state(state_) {} // Map view - bool resize(Size size); + void resize(Size size); // Camera /** Returns the current camera options. */ diff --git a/src/mbgl/map/transform_state.cpp b/src/mbgl/map/transform_state.cpp index 3fae7b205c..2e97cc9bc8 100644 --- a/src/mbgl/map/transform_state.cpp +++ b/src/mbgl/map/transform_state.cpp @@ -27,6 +27,9 @@ void TransformState::matrixFor(mat4& matrix, const UnwrappedTileID& tileID) cons } void TransformState::getProjMatrix(mat4& projMatrix) const { + if (size.isEmpty()) { + return; + } // Find the distance from the center point [width/2, height/2] to the // center top point [width/2, 0] in Z units, using the law of sines. @@ -216,7 +219,7 @@ double TransformState::scaleZoom(double s) const { } ScreenCoordinate TransformState::latLngToScreenCoordinate(const LatLng& latLng) const { - if (!size) { + if (size.isEmpty()) { return {}; } @@ -229,7 +232,7 @@ ScreenCoordinate TransformState::latLngToScreenCoordinate(const LatLng& latLng) } LatLng TransformState::screenCoordinateToLatLng(const ScreenCoordinate& point, LatLng::WrapMode wrapMode) const { - if (!size) { + if (size.isEmpty()) { return {}; } diff --git a/src/mbgl/map/transform_state.hpp b/src/mbgl/map/transform_state.hpp index a35aa5a255..d281c31995 100644 --- a/src/mbgl/map/transform_state.hpp +++ b/src/mbgl/map/transform_state.hpp @@ -74,6 +74,10 @@ public: double zoomScale(double zoom) const; double scaleZoom(double scale) const; + bool valid() const { + return !size.isEmpty() && (scale >= min_scale && scale <= max_scale); + } + private: bool rotatedNorth() const; void constrain(double& scale, double& x, double& y) const; diff --git a/src/mbgl/util/offscreen_texture.cpp b/src/mbgl/util/offscreen_texture.cpp index cbe33c8d58..56ef60b15c 100644 --- a/src/mbgl/util/offscreen_texture.cpp +++ b/src/mbgl/util/offscreen_texture.cpp @@ -9,7 +9,7 @@ namespace mbgl { class OffscreenTexture::Impl { public: Impl(gl::Context& context_, const Size size_) : context(context_), size(std::move(size_)) { - assert(size); + assert(!size.isEmpty()); } void bind() { @@ -45,7 +45,7 @@ private: OffscreenTexture::OffscreenTexture(gl::Context& context, const Size size) : impl(std::make_unique(context, std::move(size))) { - assert(size); + assert(!size.isEmpty()); } OffscreenTexture::~OffscreenTexture() = default; diff --git a/src/mbgl/util/tile_cover.cpp b/src/mbgl/util/tile_cover.cpp index 7699739588..b53e91162c 100644 --- a/src/mbgl/util/tile_cover.cpp +++ b/src/mbgl/util/tile_cover.cpp @@ -156,6 +156,8 @@ std::vector tileCover(const LatLngBounds& bounds_, int32_t z) { } std::vector tileCover(const TransformState& state, int32_t z) { + assert(state.valid()); + const double w = state.getSize().width; const double h = state.getSize().height; return tileCover( -- cgit v1.2.1