summaryrefslogtreecommitdiff
path: root/platform/android/src/style/layers/layer_manager.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/src/style/layers/layer_manager.hpp')
-rw-r--r--platform/android/src/style/layers/layer_manager.hpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/platform/android/src/style/layers/layer_manager.hpp b/platform/android/src/style/layers/layer_manager.hpp
new file mode 100644
index 0000000000..7684108555
--- /dev/null
+++ b/platform/android/src/style/layers/layer_manager.hpp
@@ -0,0 +1,39 @@
+#pragma once
+
+#include <mbgl/map/map.hpp>
+#include <mbgl/style/layer.hpp>
+
+#include "layer.hpp"
+
+#include <jni/jni.hpp>
+
+#include <memory>
+#include <vector>
+
+namespace mbgl {
+namespace android {
+
+/**
+ * @brief A singleton class forwarding calls to the corresponding \c JavaLayerPeerFactory instance.
+ */
+class LayerManagerAndroid : public mbgl::style::LayerManager {
+public:
+ ~LayerManagerAndroid() override;
+ static LayerManagerAndroid* get();
+
+ jni::Local<jni::Object<Layer>> createJavaLayerPeer(jni::JNIEnv&, mbgl::Map&, mbgl::style::Layer&);
+ jni::Local<jni::Object<Layer>> createJavaLayerPeer(jni::JNIEnv& env, mbgl::Map& map, std::unique_ptr<mbgl::style::Layer>);
+
+ void registerNative(jni::JNIEnv&);
+
+private:
+ LayerManagerAndroid();
+ JavaLayerPeerFactory* getPeerFactory(mbgl::style::Layer*);
+ // mbgl:style::LayerManager overrides.
+ std::unique_ptr<style::Layer> createLayer(const std::string& type, const std::string& id, const style::conversion::Convertible& value, style::conversion::Error& error) final;
+
+ std::vector<std::unique_ptr<JavaLayerPeerFactory>> factories;
+};
+
+}
+}