diff options
author | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2020-03-25 10:38:03 +0200 |
---|---|---|
committer | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2020-03-25 07:01:42 -0400 |
commit | 2b37d81d73820b7393a134b865dc38a742ca90ca (patch) | |
tree | d58f1a0dd2b227b174b64df1485e15ab1fd10148 /platform/android/src/style/sources/source.cpp | |
parent | 77d95d27ceeec502bf3d316660594abf4ed61517 (diff) | |
download | qtlocation-mapboxgl-2b37d81d73820b7393a134b865dc38a742ca90ca.tar.gz |
[android] Expose getLayer, getSource and Observer interface for snapshotter
So that users can modify properties of an existing layer / source objects
Diffstat (limited to 'platform/android/src/style/sources/source.cpp')
-rw-r--r-- | platform/android/src/style/sources/source.cpp | 43 |
1 files changed, 26 insertions, 17 deletions
diff --git a/platform/android/src/style/sources/source.cpp b/platform/android/src/style/sources/source.cpp index f4040a5718..5c43c2ae7c 100644 --- a/platform/android/src/style/sources/source.cpp +++ b/platform/android/src/style/sources/source.cpp @@ -34,33 +34,42 @@ namespace mbgl { namespace android { - static std::unique_ptr<Source> createSourcePeer(jni::JNIEnv& env, mbgl::style::Source& coreSource, AndroidRendererFrontend& frontend) { - if (coreSource.is<mbgl::style::VectorSource>()) { - return std::make_unique<VectorSource>(env, *coreSource.as<mbgl::style::VectorSource>(), frontend); - } else if (coreSource.is<mbgl::style::RasterSource>()) { - return std::make_unique<RasterSource>(env, *coreSource.as<mbgl::style::RasterSource>(), frontend); - } else if (coreSource.is<mbgl::style::GeoJSONSource>()) { - return std::make_unique<GeoJSONSource>(env, *coreSource.as<mbgl::style::GeoJSONSource>(), frontend); - } else if (coreSource.is<mbgl::style::ImageSource>()) { - return std::make_unique<ImageSource>(env, *coreSource.as<mbgl::style::ImageSource>(), frontend); - } else { - return std::make_unique<UnknownSource>(env, coreSource, frontend); - } +static std::unique_ptr<Source> createSourcePeer(jni::JNIEnv& env, + mbgl::style::Source& coreSource, + AndroidRendererFrontend* frontend) { + if (coreSource.is<mbgl::style::VectorSource>()) { + return std::make_unique<VectorSource>(env, *coreSource.as<mbgl::style::VectorSource>(), frontend); + } else if (coreSource.is<mbgl::style::RasterSource>()) { + return std::make_unique<RasterSource>(env, *coreSource.as<mbgl::style::RasterSource>(), frontend); + } else if (coreSource.is<mbgl::style::GeoJSONSource>()) { + return std::make_unique<GeoJSONSource>(env, *coreSource.as<mbgl::style::GeoJSONSource>(), frontend); + } else if (coreSource.is<mbgl::style::ImageSource>()) { + return std::make_unique<ImageSource>(env, *coreSource.as<mbgl::style::ImageSource>(), frontend); + } else { + return std::make_unique<UnknownSource>(env, coreSource, frontend); } +} const jni::Object<Source>& Source::peerForCoreSource(jni::JNIEnv& env, mbgl::style::Source& coreSource, AndroidRendererFrontend& frontend) { if (!coreSource.peer.has_value()) { - coreSource.peer = createSourcePeer(env, coreSource, frontend); + coreSource.peer = createSourcePeer(env, coreSource, &frontend); } return coreSource.peer.get<std::unique_ptr<Source>>()->javaPeer; } - Source::Source(jni::JNIEnv& env, mbgl::style::Source& coreSource, const jni::Object<Source>& obj, AndroidRendererFrontend& frontend) - : source(coreSource) - , javaPeer(jni::NewGlobal(env, obj)) - , rendererFrontend(&frontend) { + const jni::Object<Source>& Source::peerForCoreSource(jni::JNIEnv& env, mbgl::style::Source& coreSource) { + if (!coreSource.peer.has_value()) { + coreSource.peer = createSourcePeer(env, coreSource, nullptr); + } + return coreSource.peer.get<std::unique_ptr<Source>>()->javaPeer; } + Source::Source(jni::JNIEnv& env, + mbgl::style::Source& coreSource, + const jni::Object<Source>& obj, + AndroidRendererFrontend* frontend) + : source(coreSource), javaPeer(jni::NewGlobal(env, obj)), rendererFrontend(frontend) {} + Source::Source(jni::JNIEnv&, std::unique_ptr<mbgl::style::Source> coreSource) : ownedSource(std::move(coreSource)) , source(*ownedSource) { |