summaryrefslogtreecommitdiff
path: root/src/mbgl/map
diff options
context:
space:
mode:
authorBruno de Oliveira Abinader <bruno@mapbox.com>2017-04-03 17:07:17 +0300
committerBruno de Oliveira Abinader <bruno@mapbox.com>2017-04-10 18:01:28 +0300
commite5aa4d70cd7b39302ddf1ec4df240a14accfb474 (patch)
tree8e8595f32fa4f30316e68f533ee4dd289adf11fb /src/mbgl/map
parent76edc6ee69ec9a8aaa0b0207aed06f257ff5fd83 (diff)
downloadqtlocation-mapboxgl-e5aa4d70cd7b39302ddf1ec4df240a14accfb474.tar.gz
[core] Updated Size::isEmpty and TransformState::valid checks
Diffstat (limited to 'src/mbgl/map')
-rw-r--r--src/mbgl/map/transform.cpp10
-rw-r--r--src/mbgl/map/transform.hpp2
-rw-r--r--src/mbgl/map/transform_state.cpp7
-rw-r--r--src/mbgl/map/transform_state.hpp4
4 files changed, 16 insertions, 7 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;