summaryrefslogtreecommitdiff
path: root/src/mbgl/map/transform.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/map/transform.cpp')
-rw-r--r--src/mbgl/map/transform.cpp24
1 files changed, 7 insertions, 17 deletions
diff --git a/src/mbgl/map/transform.cpp b/src/mbgl/map/transform.cpp
index eab9e97bc0..d325271388 100644
--- a/src/mbgl/map/transform.cpp
+++ b/src/mbgl/map/transform.cpp
@@ -37,10 +37,10 @@ static double _normalizeAngle(double angle, double anchorAngle)
return angle;
}
-Transform::Transform(std::function<void(MapChange)> callback_,
+Transform::Transform(MapObserver& observer_,
ConstrainMode constrainMode,
ViewportMode viewportMode)
- : callback(std::move(callback_)), state(constrainMode, viewportMode) {
+ : observer(observer_), state(constrainMode, viewportMode) {
}
#pragma mark - Map View
@@ -50,16 +50,12 @@ bool Transform::resize(const Size size) {
return false;
}
- if (callback) {
- callback(MapChangeRegionWillChange);
- }
+ observer.onCameraWillChange(MapObserver::CameraChangeMode::Immediate);
state.size = size;
state.constrain(state.scale, state.x, state.y);
- if (callback) {
- callback(MapChangeRegionDidChange);
- }
+ observer.onCameraDidChange(MapObserver::CameraChangeMode::Immediate);
return true;
}
@@ -556,9 +552,7 @@ void Transform::startTransition(const CameraOptions& camera,
}
bool isAnimated = duration != Duration::zero();
- if (callback) {
- callback(isAnimated ? MapChangeRegionWillChangeAnimated : MapChangeRegionWillChange);
- }
+ observer.onCameraWillChange(isAnimated ? MapObserver::CameraChangeMode::Animated : MapObserver::CameraChangeMode::Immediate);
// Associate the anchor, if given, with a coordinate.
optional<ScreenCoordinate> anchor = camera.anchor;
@@ -588,9 +582,7 @@ void Transform::startTransition(const CameraOptions& camera,
if (animation.transitionFrameFn) {
animation.transitionFrameFn(t);
}
- if (callback) {
- callback(MapChangeRegionIsChanging);
- }
+ observer.onCameraIsChanging();
} else {
transitionFinishFn();
transitionFinishFn = nullptr;
@@ -609,9 +601,7 @@ void Transform::startTransition(const CameraOptions& camera,
if (animation.transitionFinishFn) {
animation.transitionFinishFn();
}
- if (callback) {
- callback(isAnimated ? MapChangeRegionDidChangeAnimated : MapChangeRegionDidChange);
- }
+ observer.onCameraDidChange(isAnimated ? MapObserver::CameraChangeMode::Animated : MapObserver::CameraChangeMode::Immediate);
};
if (!isAnimated) {