diff options
author | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2015-09-15 14:15:37 +0300 |
---|---|---|
committer | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2015-10-21 11:06:51 -0700 |
commit | 5db4670d789b120363e460c37415add02bca55ee (patch) | |
tree | c89447eaba105695bdf338cbeb971b318b2f5e9a | |
parent | 717cbd32ade134cb36f350f64d8d35cf2d9d21fa (diff) | |
download | qtlocation-mapboxgl-5db4670d789b120363e460c37415add02bca55ee.tar.gz |
[core] Added more transform state getters
Some platforms requires specific information that was previously not
available in public API, but stored internally in TransformState object.
-rw-r--r-- | include/mbgl/map/map.hpp | 4 | ||||
-rw-r--r-- | src/mbgl/map/map.cpp | 16 | ||||
-rw-r--r-- | src/mbgl/map/transform.hpp | 4 | ||||
-rw-r--r-- | src/mbgl/map/transform_state.cpp | 48 | ||||
-rw-r--r-- | src/mbgl/map/transform_state.hpp | 17 |
5 files changed, 66 insertions, 23 deletions
diff --git a/include/mbgl/map/map.hpp b/include/mbgl/map/map.hpp index 70807f126f..9661bcc7bc 100644 --- a/include/mbgl/map/map.hpp +++ b/include/mbgl/map/map.hpp @@ -86,6 +86,10 @@ public: // Transition void cancelTransitions(); void setGestureInProgress(bool); + bool isGestureInProgress() const; + bool isRotating() const; + bool isScaling() const; + bool isPanning() const; // Camera void jumpTo(CameraOptions options); diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp index 4b6c9c8085..3e0feb266d 100644 --- a/src/mbgl/map/map.cpp +++ b/src/mbgl/map/map.cpp @@ -126,6 +126,22 @@ void Map::setGestureInProgress(bool inProgress) { update(Update::Repaint); } +bool Map::isGestureInProgress() const { + return transform->isGestureInProgress(); +} + +bool Map::isRotating() const { + return transform->isRotating(); +} + +bool Map::isScaling() const { + return transform->isScaling(); +} + +bool Map::isPanning() const { + return transform->isPanning(); +} + #pragma mark - void Map::jumpTo(CameraOptions options) { diff --git a/src/mbgl/map/transform.hpp b/src/mbgl/map/transform.hpp index 56001fad81..545d8a3b21 100644 --- a/src/mbgl/map/transform.hpp +++ b/src/mbgl/map/transform.hpp @@ -56,9 +56,13 @@ public: // Gesture void setGestureInProgress(bool); + bool isGestureInProgress() const { return state.isGestureInProgress(); } // Transform state const TransformState getState() const { return state; } + bool isRotating() const { return state.isRotating(); } + bool isScaling() const { return state.isScaling(); } + bool isPanning() const { return state.isPanning(); } private: void _moveBy(double dx, double dy, const Duration& = Duration::zero()); diff --git a/src/mbgl/map/transform_state.cpp b/src/mbgl/map/transform_state.cpp index ac3988dc56..dd67a17c67 100644 --- a/src/mbgl/map/transform_state.cpp +++ b/src/mbgl/map/transform_state.cpp @@ -105,6 +105,15 @@ const LatLng TransformState::getLatLng() const { return ll; } +double TransformState::pixel_x() const { + const double center = (width - scale * util::tileSize) / 2; + return center + x; +} + +double TransformState::pixel_y() const { + const double center = (height - scale * util::tileSize) / 2; + return center + y; +} #pragma mark - Zoom @@ -155,6 +164,30 @@ float TransformState::getPitch() const { return pitch; } + +#pragma mark - State + +bool TransformState::isChanging() const { + return rotating || scaling || panning || gestureInProgress; +} + +bool TransformState::isRotating() const { + return rotating; +} + +bool TransformState::isScaling() const { + return scaling; +} + +bool TransformState::isPanning() const { + return panning; +} + +bool TransformState::isGestureInProgress() const { + return gestureInProgress; +} + + #pragma mark - Projection double TransformState::lngX(double lng) const { @@ -277,13 +310,6 @@ mat4 TransformState::getPixelMatrix() const { } -#pragma mark - Changing - -bool TransformState::isChanging() const { - return rotating || scaling || panning || gestureInProgress; -} - - #pragma mark - (private helper functions) void TransformState::constrain(double& scale_, double& y_) const { @@ -299,12 +325,4 @@ void TransformState::constrain(double& scale_, double& y_) const { if (y_ < -max_y) y_ = -max_y; } -double TransformState::pixel_x() const { - const double center = (width - scale * util::tileSize) / 2; - return center + x; -} -double TransformState::pixel_y() const { - const double center = (height - scale * util::tileSize) / 2; - return center + y; -} diff --git a/src/mbgl/map/transform_state.hpp b/src/mbgl/map/transform_state.hpp index 6fcd35ffae..bb65e0ce71 100644 --- a/src/mbgl/map/transform_state.hpp +++ b/src/mbgl/map/transform_state.hpp @@ -36,6 +36,8 @@ public: // Position const LatLng getLatLng() const; + double pixel_x() const; + double pixel_y() const; // Zoom float getNormalizedZoom() const; @@ -48,18 +50,17 @@ public: // Rotation float getAngle() const; - float getAltitude() const; float getPitch() const; - // Changing + // State bool isChanging() const; - - double pixel_x() const; - double pixel_y() const; + bool isRotating() const; + bool isScaling() const; + bool isPanning() const; + bool isGestureInProgress() const; // Conversion and projection - vec2<double> latLngToPoint(const LatLng& latLng) const; LatLng pointToLatLng(const vec2<double> point) const; @@ -108,6 +109,6 @@ private: double Cc = (scale * util::tileSize) / util::M2PI; }; -} +} // namespace mbgl -#endif +#endif // MBGL_MAP_TRANSFORM_STATE |