diff options
Diffstat (limited to 'platform/android/src/style/layers/layer_manager.hpp')
-rw-r--r-- | platform/android/src/style/layers/layer_manager.hpp | 39 |
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; +}; + +} +} |