Skip to content
This repository has been archived by the owner on Aug 8, 2023. It is now read-only.

[core] Replace mbgl::MapChange with mbgl::MapObserver #8377

Merged
merged 7 commits into from
Mar 15, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions cmake/core-files.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ set(MBGL_CORE_FILES
include/mbgl/map/backend_scope.hpp
include/mbgl/map/camera.hpp
include/mbgl/map/map.hpp
include/mbgl/map/map_observer.hpp
include/mbgl/map/mode.hpp
include/mbgl/map/query.hpp
include/mbgl/map/view.hpp
Expand Down
7 changes: 2 additions & 5 deletions include/mbgl/map/backend.hpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#pragma once

#include <mbgl/map/change.hpp>
#include <mbgl/map/map_observer.hpp>

#include <memory>

Expand All @@ -12,7 +12,7 @@ class Context;

class BackendScope;

class Backend {
class Backend : public MapObserver {
public:
Backend();
virtual ~Backend();
Expand All @@ -24,9 +24,6 @@ class Backend {
// in the near future. (Not called for Map::renderStill() mode.)
virtual void invalidate() = 0;

// Notifies a watcher of map x/y/scale/rotation changes.
virtual void notifyMapChange(MapChange change);

protected:
// Called when the backend's GL context needs to be made active or inactive. These are called,
// as a matched pair, in four situations:
Expand Down
1 change: 1 addition & 0 deletions include/mbgl/map/map.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

#include <mbgl/util/optional.hpp>
#include <mbgl/util/chrono.hpp>
#include <mbgl/map/map_observer.hpp>
#include <mbgl/map/mode.hpp>
#include <mbgl/util/geo.hpp>
#include <mbgl/util/feature.hpp>
Expand Down
38 changes: 38 additions & 0 deletions include/mbgl/map/map_observer.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#pragma once

#include <cstdint>

namespace mbgl {

class MapObserver {
public:
static MapObserver& nullObserver() {
static MapObserver mapObserver;
return mapObserver;
}

enum class CameraChangeMode : uint32_t {
Immediate,
Animated
};

enum class RenderMode : uint32_t {
Partial,
Full
};

virtual void onCameraWillChange(CameraChangeMode) {}
virtual void onCameraIsChanging() {}
virtual void onCameraDidChange(CameraChangeMode) {}
virtual void onWillStartLoadingMap() {}
virtual void onDidFinishLoadingMap() {}
virtual void onDidFailLoadingMap() {}
virtual void onWillStartRenderingFrame() {}
virtual void onDidFinishRenderingFrame(RenderMode) {}
virtual void onWillStartRenderingMap() {}
virtual void onDidFinishRenderingMap(RenderMode) {}
virtual void onDidFinishLoadingStyle() {}
virtual void onSourceDidChange() {}
};

} // namespace mbgl
64 changes: 64 additions & 0 deletions platform/android/src/native_map_view.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,70 @@ void NativeMapView::notifyMapChange(mbgl::MapChange change) {
javaPeer->Call(*_env, onMapChanged, (int) change);
}

void NativeMapView::onCameraWillChange(MapObserver::CameraChangeMode mode) {
if (mode == MapObserver::CameraChangeMode::Immediate) {
notifyMapChange(MapChange::MapChangeRegionWillChange);
} else {
notifyMapChange(MapChange::MapChangeRegionWillChangeAnimated);
}
}

void NativeMapView::onCameraIsChanging() {
notifyMapChange(MapChange::MapChangeRegionIsChanging);
}

void NativeMapView::onCameraDidChange(MapObserver::CameraChangeMode mode) {
if (mode == MapObserver::CameraChangeMode::Immediate) {
notifyMapChange(MapChange::MapChangeRegionDidChange);
} else {
notifyMapChange(MapChange::MapChangeRegionDidChangeAnimated);
}
}

void NativeMapView::onWillStartLoadingMap() {
notifyMapChange(MapChange::MapChangeWillStartLoadingMap);
}

void NativeMapView::onDidFinishLoadingMap() {
notifyMapChange(MapChange::MapChangeDidFinishLoadingMap);
}

void NativeMapView::onDidFailLoadingMap() {
notifyMapChange(MapChange::MapChangeDidFailLoadingMap);
}

void NativeMapView::onWillStartRenderingFrame() {
notifyMapChange(MapChange::MapChangeWillStartRenderingFrame);
}

void NativeMapView::onDidFinishRenderingFrame(MapObserver::RenderMode mode) {
if (mode == MapObserver::RenderMode::Partial) {
notifyMapChange(MapChange::MapChangeDidFinishRenderingFrame);
} else {
notifyMapChange(MapChange::MapChangeDidFinishRenderingFrameFullyRendered);
}
}

void NativeMapView::onWillStartRenderingMap() {
notifyMapChange(MapChange::MapChangeWillStartRenderingMap);
}

void NativeMapView::onDidFinishRenderingMap(MapObserver::RenderMode mode) {
if (mode == MapObserver::RenderMode::Partial) {
notifyMapChange(MapChange::MapChangeDidFinishRenderingMap);
} else {
notifyMapChange(MapChange::MapChangeDidFinishRenderingMapFullyRendered);
}
}

void NativeMapView::onDidFinishLoadingStyle() {
notifyMapChange(MapChange::MapChangeDidFinishLoadingStyle);
}

void NativeMapView::onSourceDidChange() {
notifyMapChange(MapChange::MapChangeSourceDidChange);
}

// JNI Methods //

void NativeMapView::initializeDisplay(jni::JNIEnv&) {
Expand Down
19 changes: 18 additions & 1 deletion platform/android/src/native_map_view.hpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#pragma once

#include <mbgl/map/backend.hpp>
#include <mbgl/map/change.hpp>
#include <mbgl/map/camera.hpp>
#include <mbgl/map/map.hpp>
#include <mbgl/map/view.hpp>
Expand Down Expand Up @@ -51,7 +52,23 @@ class NativeMapView : public View, public Backend {
// mbgl::Backend //

void invalidate() override;
void notifyMapChange(mbgl::MapChange) override;

// Deprecated //
void notifyMapChange(mbgl::MapChange);

// mbgl::Backend (mbgl::MapObserver) //
void onCameraWillChange(MapObserver::CameraChangeMode) override;
void onCameraIsChanging() override;
void onCameraDidChange(MapObserver::CameraChangeMode) override;
void onWillStartLoadingMap() override;
void onDidFinishLoadingMap() override;
void onDidFailLoadingMap() override;
void onWillStartRenderingFrame() override;
void onDidFinishRenderingFrame(MapObserver::RenderMode) override;
void onWillStartRenderingMap() override;
void onDidFinishRenderingMap(MapObserver::RenderMode) override;
void onDidFinishLoadingStyle() override;
void onSourceDidChange() override;

// JNI //

Expand Down
6 changes: 0 additions & 6 deletions platform/default/mbgl/gl/headless_backend.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,4 @@ void HeadlessBackend::invalidate() {
assert(false);
}

void HeadlessBackend::notifyMapChange(MapChange change) {
if (mapChangeCallback) {
mapChangeCallback(change);
}
}

} // namespace mbgl
5 changes: 0 additions & 5 deletions platform/default/mbgl/gl/headless_backend.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,6 @@ class HeadlessBackend : public Backend {
~HeadlessBackend() override;

void invalidate() override;
void notifyMapChange(MapChange) override;

void setMapChangeCallback(std::function<void(MapChange)>&& cb) { mapChangeCallback = std::move(cb); }

struct Impl {
virtual ~Impl() {}
Expand All @@ -45,8 +42,6 @@ class HeadlessBackend : public Backend {

bool extensionsLoaded = false;
bool active = false;

std::function<void(MapChange)> mapChangeCallback;
};

} // namespace mbgl
10 changes: 0 additions & 10 deletions platform/glfw/glfw_view.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -538,16 +538,6 @@ void GLFWView::setWindowTitle(const std::string& title) {
glfwSetWindowTitle(window, (std::string { "Mapbox GL: " } + title).c_str());
}

void GLFWView::setMapChangeCallback(std::function<void(mbgl::MapChange)> callback) {
this->mapChangeCallback = callback;
}

void GLFWView::notifyMapChange(mbgl::MapChange change) {
if (mapChangeCallback) {
mapChangeCallback(change);
}
}

namespace mbgl {
namespace platform {

Expand Down
5 changes: 0 additions & 5 deletions platform/glfw/glfw_view.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,6 @@ class GLFWView : public mbgl::View, public mbgl::Backend {
// Internal
void report(float duration);

void setMapChangeCallback(std::function<void(mbgl::MapChange)> callback);
void notifyMapChange(mbgl::MapChange change) override;

mbgl::Color makeRandomColor() const;
mbgl::Point<double> makeRandomPoint() const;
static std::shared_ptr<const mbgl::SpriteImage>
Expand All @@ -81,8 +78,6 @@ class GLFWView : public mbgl::View, public mbgl::Backend {
mbgl::AnnotationIDs annotationIDs;
std::vector<std::string> spriteIDs;

std::function<void(mbgl::MapChange)> mapChangeCallback;

private:
mbgl::Map* map = nullptr;

Expand Down
Loading