diff options
author | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2017-04-03 17:07:17 +0300 |
---|---|---|
committer | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2017-04-10 18:01:28 +0300 |
commit | e5aa4d70cd7b39302ddf1ec4df240a14accfb474 (patch) | |
tree | 8e8595f32fa4f30316e68f533ee4dd289adf11fb /src | |
parent | 76edc6ee69ec9a8aaa0b0207aed06f257ff5fd83 (diff) | |
download | qtlocation-mapboxgl-e5aa4d70cd7b39302ddf1ec4df240a14accfb474.tar.gz |
[core] Updated Size::isEmpty and TransformState::valid checks
Diffstat (limited to 'src')
-rw-r--r-- | src/mbgl/map/transform.cpp | 10 | ||||
-rw-r--r-- | src/mbgl/map/transform.hpp | 2 | ||||
-rw-r--r-- | src/mbgl/map/transform_state.cpp | 7 | ||||
-rw-r--r-- | src/mbgl/map/transform_state.hpp | 4 | ||||
-rw-r--r-- | src/mbgl/util/offscreen_texture.cpp | 4 | ||||
-rw-r--r-- | src/mbgl/util/tile_cover.cpp | 2 |
6 files changed, 20 insertions, 9 deletions
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<Impl>(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<UnwrappedTileID> tileCover(const LatLngBounds& bounds_, int32_t z) { } std::vector<UnwrappedTileID> tileCover(const TransformState& state, int32_t z) { + assert(state.valid()); + const double w = state.getSize().width; const double h = state.getSize().height; return tileCover( |