summaryrefslogtreecommitdiff
path: root/include/mbgl/map/transform.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/mbgl/map/transform.hpp')
-rw-r--r--include/mbgl/map/transform.hpp28
1 files changed, 13 insertions, 15 deletions
diff --git a/include/mbgl/map/transform.hpp b/include/mbgl/map/transform.hpp
index b15c119c44..ef89a4eefa 100644
--- a/include/mbgl/map/transform.hpp
+++ b/include/mbgl/map/transform.hpp
@@ -3,6 +3,7 @@
#include <mbgl/map/transform_state.hpp>
#include <mbgl/util/chrono.hpp>
+#include <mbgl/map/update.hpp>
#include <mbgl/util/geo.hpp>
#include <mbgl/util/noncopyable.hpp>
#include <mbgl/util/vec.hpp>
@@ -31,8 +32,6 @@ public:
void setLatLng(LatLng latLng, Duration = Duration::zero());
void setLatLngZoom(LatLng latLng, double zoom, Duration = Duration::zero());
inline const LatLng getLatLng() const { return current.getLatLng(); }
- void startPanning();
- void stopPanning();
// Zoom
void scaleBy(double ds, double cx = -1, double cy = -1, Duration = Duration::zero());
@@ -40,8 +39,6 @@ public:
void setZoom(double zoom, Duration = Duration::zero());
double getZoom() const;
double getScale() const;
- void startScaling();
- void stopScaling();
double getMinZoom() const;
double getMaxZoom() const;
@@ -50,14 +47,15 @@ public:
void setAngle(double angle, Duration = Duration::zero());
void setAngle(double angle, double cx, double cy);
double getAngle() const;
- void startRotating();
- void stopRotating();
// Transitions
bool needsTransition() const;
- void updateTransitions(TimePoint now);
+ UpdateType updateTransitions(TimePoint now);
void cancelTransitions();
+ // Gesture
+ void setGestureInProgress(bool);
+
// Transform state
const TransformState currentState() const;
const TransformState finalState() const;
@@ -69,13 +67,9 @@ private:
void _setScale(double scale, double cx, double cy, Duration = Duration::zero());
void _setScaleXY(double new_scale, double xn, double yn, Duration = Duration::zero());
void _setAngle(double angle, Duration = Duration::zero());
- void _clearPanning();
- void _clearRotating();
- void _clearScaling();
void constrain(double& scale, double& y) const;
-private:
View &view;
mutable std::recursive_mutex mtx;
@@ -92,10 +86,14 @@ private:
const double min_scale = std::pow(2, 0);
const double max_scale = std::pow(2, 18);
- std::forward_list<util::ptr<util::transition>> transitions;
- util::ptr<util::transition> scale_timeout;
- util::ptr<util::transition> rotate_timeout;
- util::ptr<util::transition> pan_timeout;
+ void startTransition(std::function<Update(double)> frame,
+ std::function<void()> finish,
+ Duration);
+
+ TimePoint transitionStart;
+ Duration transitionDuration;
+ std::function<Update(TimePoint)> transitionFrameFn;
+ std::function<void()> transitionFinishFn;
};
}