summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBruno de Oliveira Abinader <bruno@mapbox.com>2017-03-13 16:16:38 +0200
committerBruno de Oliveira Abinader <bruno@mapbox.com>2017-03-15 14:53:32 +0200
commitfc70cbf1e12e27737c7a256682524cd617d18f71 (patch)
tree10bf1b6c629bb4c642d060182ab1443cdf0084a4 /src
parent98f5b71e6db748a2576e9fc6f17b9e76505df1aa (diff)
downloadqtlocation-mapboxgl-fc70cbf1e12e27737c7a256682524cd617d18f71.tar.gz
[core] Replace MapChange enum with MapObserver
Diffstat (limited to 'src')
-rw-r--r--src/mbgl/map/backend.cpp5
-rw-r--r--src/mbgl/map/map.cpp26
-rw-r--r--src/mbgl/map/transform.cpp24
-rw-r--r--src/mbgl/map/transform.hpp7
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&,