diff options
author | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2017-03-13 16:16:38 +0200 |
---|---|---|
committer | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2017-03-15 14:53:32 +0200 |
commit | fc70cbf1e12e27737c7a256682524cd617d18f71 (patch) | |
tree | 10bf1b6c629bb4c642d060182ab1443cdf0084a4 /src | |
parent | 98f5b71e6db748a2576e9fc6f17b9e76505df1aa (diff) | |
download | qtlocation-mapboxgl-fc70cbf1e12e27737c7a256682524cd617d18f71.tar.gz |
[core] Replace MapChange enum with MapObserver
Diffstat (limited to 'src')
-rw-r--r-- | src/mbgl/map/backend.cpp | 5 | ||||
-rw-r--r-- | src/mbgl/map/map.cpp | 26 | ||||
-rw-r--r-- | src/mbgl/map/transform.cpp | 24 | ||||
-rw-r--r-- | src/mbgl/map/transform.hpp | 7 |
4 files changed, 23 insertions, 39 deletions
diff --git a/src/mbgl/map/backend.cpp b/src/mbgl/map/backend.cpp index 8a06fe2d91..2a171cdb76 100644 --- a/src/mbgl/map/backend.cpp +++ b/src/mbgl/map/backend.cpp @@ -14,9 +14,4 @@ gl::Context& Backend::getContext() { Backend::~Backend() = default; -void Backend::notifyMapChange(MapChange) { - // no-op -} - - } // namespace mbgl diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp index f4e994c931..a006571892 100644 --- a/src/mbgl/map/map.cpp +++ b/src/mbgl/map/map.cpp @@ -70,6 +70,7 @@ public: void loadStyleJSON(const std::string&); Map& map; + MapObserver& observer; Backend& backend; FileSource& fileSource; Scheduler& scheduler; @@ -134,10 +135,11 @@ Map::Impl::Impl(Map& map_, ConstrainMode constrainMode_, ViewportMode viewportMode_) : map(map_), + observer(backend_), backend(backend_), fileSource(fileSource_), scheduler(scheduler_), - transform([this](MapChange change) { backend.notifyMapChange(change); }, + transform(observer, constrainMode_, viewportMode_), mode(mode_), @@ -264,10 +266,10 @@ void Map::Impl::render(View& view) { if (mode == MapMode::Continuous) { if (renderState == RenderState::Never) { - backend.notifyMapChange(MapChangeWillStartRenderingMap); + observer.onWillStartRenderingMap(); } - backend.notifyMapChange(MapChangeWillStartRenderingFrame); + observer.onWillStartRenderingFrame(); FrameData frameData { timePoint, pixelRatio, @@ -282,18 +284,16 @@ void Map::Impl::render(View& view) { painter->cleanup(); - backend.notifyMapChange(style->isLoaded() ? - MapChangeDidFinishRenderingFrameFullyRendered : - MapChangeDidFinishRenderingFrame); + observer.onDidFinishRenderingFrame(style->isLoaded() ? MapObserver::RenderMode::Full : MapObserver::RenderMode::Partial); if (!style->isLoaded()) { renderState = RenderState::Partial; } else if (renderState != RenderState::Fully) { renderState = RenderState::Fully; - backend.notifyMapChange(MapChangeDidFinishRenderingMapFullyRendered); + observer.onDidFinishRenderingMap(MapObserver::RenderMode::Full); if (loading) { loading = false; - backend.notifyMapChange(MapChangeDidFinishLoadingMap); + observer.onDidFinishLoadingMap(); } } @@ -341,7 +341,7 @@ void Map::setStyleURL(const std::string& url) { impl->loading = true; - impl->backend.notifyMapChange(MapChangeWillStartLoadingMap); + impl->observer.onWillStartLoadingMap(); impl->styleRequest = nullptr; impl->styleURL = url; @@ -385,7 +385,7 @@ void Map::setStyleJSON(const std::string& json) { impl->loading = true; - impl->backend.notifyMapChange(MapChangeWillStartLoadingMap); + impl->observer.onWillStartLoadingMap(); impl->styleURL.clear(); impl->styleJSON.clear(); @@ -1086,7 +1086,7 @@ void Map::onLowMemory() { } void Map::Impl::onSourceAttributionChanged(style::Source&, const std::string&) { - backend.notifyMapChange(MapChangeSourceDidChange); + observer.onSourceDidChange(); } void Map::Impl::onUpdate(Update flags) { @@ -1095,11 +1095,11 @@ void Map::Impl::onUpdate(Update flags) { } void Map::Impl::onStyleLoaded() { - backend.notifyMapChange(MapChangeDidFinishLoadingStyle); + observer.onDidFinishLoadingStyle(); } void Map::Impl::onStyleError() { - backend.notifyMapChange(MapChangeDidFailLoadingMap); + observer.onDidFailLoadingMap(); } void Map::Impl::onResourceError(std::exception_ptr error) { 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) { diff --git a/src/mbgl/map/transform.hpp b/src/mbgl/map/transform.hpp index 66c9915715..087ae8e690 100644 --- a/src/mbgl/map/transform.hpp +++ b/src/mbgl/map/transform.hpp @@ -1,8 +1,8 @@ #pragma once #include <mbgl/map/camera.hpp> +#include <mbgl/map/map_observer.hpp> #include <mbgl/map/mode.hpp> -#include <mbgl/map/change.hpp> #include <mbgl/map/transform_state.hpp> #include <mbgl/map/update.hpp> #include <mbgl/util/chrono.hpp> @@ -18,7 +18,7 @@ namespace mbgl { class Transform : private util::noncopyable { public: - Transform(std::function<void(MapChange)> = nullptr, + Transform(MapObserver& = MapObserver::nullObserver(), ConstrainMode = ConstrainMode::HeightOnly, ViewportMode = ViewportMode::Default); @@ -163,8 +163,7 @@ public: LatLng screenCoordinateToLatLng(const ScreenCoordinate&) const; private: - std::function<void(MapChange)> callback; - + MapObserver& observer; TransformState state; void startTransition(const CameraOptions&, |