diff options
author | Tobrun <tobrun.van.nuland@gmail.com> | 2018-01-30 13:49:55 +0100 |
---|---|---|
committer | Tobrun <tobrun.van.nuland@gmail.com> | 2018-01-30 13:49:55 +0100 |
commit | babdab0f4109dc5e90373727406ab7377b94eeea (patch) | |
tree | 2c4bdd2b0666314c2ee7570a508d23caa6d648bf | |
parent | ee0ef4f9e70c887585a960718b0a667f37443815 (diff) | |
download | qtlocation-mapboxgl-upstream/tvn-use-style-in-binding.tar.gz |
[android] - attempt to use style from core inside the style from androidupstream/tvn-use-style-in-binding
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Style.java | 4 | ||||
-rw-r--r-- | platform/android/src/style/style.cpp | 24 | ||||
-rw-r--r-- | platform/android/src/style/style.hpp | 11 |
3 files changed, 31 insertions, 8 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Style.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Style.java index 032bd028bb..fa1dff6903 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Style.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Style.java @@ -28,6 +28,10 @@ public class Style { private String url; private String json; + private Style(int nativePtr) { + this.nativePtr = nativePtr; + } + // todo make private Style() { initialize(); diff --git a/platform/android/src/style/style.cpp b/platform/android/src/style/style.cpp index 5e366e39a5..77225ad389 100644 --- a/platform/android/src/style/style.cpp +++ b/platform/android/src/style/style.cpp @@ -3,14 +3,26 @@ namespace mbgl { namespace android { -Style::Style(jni::JNIEnv &) { + Style::Style(jni::JNIEnv& env, mbgl::style::Style& coreStyle) + : style(coreStyle) + , javaPeer(createJavaPeer(env).NewGlobalRef(env)){ -} + } -Style::~Style() { -} + Style::~Style() { + } + + jni::Object<Style> Style::createJavaPeer(jni::JNIEnv& env) { + static auto constructor = Style::javaClass.template GetConstructor<jni::jlong>(env); + return jni::Object<Style>(Style::javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)).Get()); + } + + jni::Class<Style> Style::javaClass; + + jni::String Style::getJSON(jni::JNIEnv& env) { + return jni::Make<jni::String>(env, style.getJSON()); + } -jni::Class<Style> Style::javaClass; void Style::registerNative(jni::JNIEnv& env) { //Register classes @@ -21,7 +33,7 @@ void Style::registerNative(jni::JNIEnv& env) { // Register the peer jni::RegisterNativePeer<Style>( env, Style::javaClass, "nativePtr", - std::make_unique<Style, JNIEnv&>, + std::make_unique<Style, JNIEnv&, mbgl::style::Style&>, "initialize", "finalize" ); diff --git a/platform/android/src/style/style.hpp b/platform/android/src/style/style.hpp index 6c80c72bca..54897ac6c9 100644 --- a/platform/android/src/style/style.hpp +++ b/platform/android/src/style/style.hpp @@ -16,17 +16,24 @@ public: // TODO move to style package static constexpr auto Name() { return "com/mapbox/mapboxsdk/maps/Style"; }; - Style(jni::JNIEnv &); + Style(jni::JNIEnv&, mbgl::style::Style&); ~Style(); static jni::Class<Style> javaClass; // TODO add methods - static void registerNative(jni::JNIEnv &); + static void registerNative(jni::JNIEnv&); + + jni::Object<Style> createJavaPeer(jni::JNIEnv&); + jni::String getJSON(jni::JNIEnv&); private: + // Raw pointer that is valid at all times. + mbgl::style::Style& style; + // Set when the source is added to a map. + jni::UniqueObject<Style> javaPeer; }; } |