diff options
Diffstat (limited to 'platform/android/scripts/layer.cpp.ejs')
-rw-r--r-- | platform/android/scripts/layer.cpp.ejs | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/platform/android/scripts/layer.cpp.ejs b/platform/android/scripts/layer.cpp.ejs new file mode 100644 index 0000000000..b53bc3c4d6 --- /dev/null +++ b/platform/android/scripts/layer.cpp.ejs @@ -0,0 +1,64 @@ +<% + const type = locals.type; +-%> +// This file is generated. Edit android/platform/scripts/generate-style-code.js, then run `make style-code-android`. + +#include "<%- type %>_layer.hpp" + +#include <string> + +//XXX +#include <mbgl/platform/log.hpp> + +namespace mbgl { +namespace android { + +<% if (type === 'background') { -%> + <%- camelize(type) %>Layer::<%- camelize(type) %>Layer(jni::JNIEnv& env, jni::String layerId) + : Layer(env, std::make_unique<mbgl::style::<%- camelize(type) %>Layer>(jni::Make<std::string>(env, layerId))) { +<% } else { -%> + <%- camelize(type) %>Layer::<%- camelize(type) %>Layer(jni::JNIEnv& env, jni::String layerId, jni::String sourceId) + : Layer(env, std::make_unique<mbgl::style::<%- camelize(type) %>Layer>(jni::Make<std::string>(env, layerId), jni::Make<std::string>(env, sourceId))) { +<% } -%> + mbgl::Log::Debug(mbgl::Event::JNI, "<%- camelize(type) %>Layer constructed, owning reference"); + } + + <%- camelize(type) %>Layer::<%- camelize(type) %>Layer(mbgl::Map& map, mbgl::style::<%- camelize(type) %>Layer& coreLayer) + : Layer(map, coreLayer) { + + mbgl::Log::Debug(mbgl::Event::JNI, "<%- camelize(type) %>Layer Non-owning reference constructor"); + } + + <%- camelize(type) %>Layer::~<%- camelize(type) %>Layer() = default; + + jni::Class<<%- camelize(type) %>Layer> <%- camelize(type) %>Layer::javaClass; + + jni::jobject* <%- camelize(type) %>Layer::createJavaPeer(jni::JNIEnv& env) { + static auto constructor = <%- camelize(type) %>Layer::javaClass.template GetConstructor<jni::jlong>(env); + return <%- camelize(type) %>Layer::javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); + } + + void <%- camelize(type) %>Layer::registerNative(jni::JNIEnv& env) { + mbgl::Log::Debug(mbgl::Event::JNI, "Registering native background layer"); + + //Lookup the class + <%- camelize(type) %>Layer::javaClass = *jni::Class<<%- camelize(type) %>Layer>::Find(env).NewGlobalRef(env).release(); + + #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) + + //Register the peer + jni::RegisterNativePeer<<%- camelize(type) %>Layer>( + env, <%- camelize(type) %>Layer::javaClass, "nativePtr", +<% if (type === 'background') { -%> + std::make_unique<<%- camelize(type) %>Layer, JNIEnv&, jni::String>, +<% } else { -%> + std::make_unique<<%- camelize(type) %>Layer, JNIEnv&, jni::String, jni::String>, +<% } -%> + "initialize", + "finalize" + ); + + } + +} // namespace android +} // namespace mbgl |