summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkevin <kevin.li@mapbox.com>2020-03-17 14:02:48 +0800
committerkevin <kevin.li@mapbox.com>2020-03-24 10:39:42 +0800
commit91c76dad529ea85a011f3c57030721eda40a6c68 (patch)
treeb54a5a37ad3668b0976ceb01e381a334124df963
parentf8977feba2be26431daa91d515f88325f954e07b (diff)
downloadqtlocation-mapboxgl-91c76dad529ea85a011f3c57030721eda40a6c68.tar.gz
Implement addImages function
-rw-r--r--platform/android/src/snapshotter/map_snapshotter.cpp36
-rw-r--r--platform/android/src/snapshotter/map_snapshotter.hpp8
2 files changed, 34 insertions, 10 deletions
diff --git a/platform/android/src/snapshotter/map_snapshotter.cpp b/platform/android/src/snapshotter/map_snapshotter.cpp
index 3ec16e8baa..62ee5ff67e 100644
--- a/platform/android/src/snapshotter/map_snapshotter.cpp
+++ b/platform/android/src/snapshotter/map_snapshotter.cpp
@@ -252,6 +252,17 @@ void MapSnapshotter::addSource(JNIEnv& env, const jni::Object<Source>& obj, jlon
jni::ThrowNew(env, jni::FindClass(env, "com/mapbox/mapboxsdk/style/sources/CannotAddSourceException"), error.what());
}
}
+
+void MapSnapshotter::addImages(JNIEnv& env, const jni::Array<jni::Object<mbgl::android::Image>>& jimages) {
+ jni::NullCheck(env, &jimages);
+ std::size_t len = jimages.Length(env);
+
+ for (std::size_t i = 0; i < len; i++) {
+ auto image = mbgl::android::Image::getImage(env, jimages.Get(env, i));
+ snapshotter->getStyle().addImage(std::make_unique<mbgl::style::Image>(image));
+ }
+}
+
// Static methods //
void MapSnapshotter::registerNative(jni::JNIEnv& env) {
@@ -261,22 +272,35 @@ void MapSnapshotter::registerNative(jni::JNIEnv& env) {
#define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name)
// Register the peer
- jni::RegisterNativePeer<MapSnapshotter>(env, javaClass, "nativePtr",
- jni::MakePeer<MapSnapshotter, const jni::Object<MapSnapshotter>&, const jni::Object<FileSource>&, jni::jfloat, jni::jint, jni::jint, const jni::String&, const jni::String&, const jni::Object<LatLngBounds>&, const jni::Object<CameraPosition>&, jni::jboolean, const jni::String&>,
- "nativeInitialize",
- "finalize",
+ jni::RegisterNativePeer<MapSnapshotter>(env,
+ javaClass,
+ "nativePtr",
+ jni::MakePeer<MapSnapshotter,
+ const jni::Object<MapSnapshotter>&,
+ const jni::Object<FileSource>&,
+ jni::jfloat,
+ jni::jint,
+ jni::jint,
+ const jni::String&,
+ const jni::String&,
+ const jni::Object<LatLngBounds>&,
+ const jni::Object<CameraPosition>&,
+ jni::jboolean,
+ const jni::String&>,
+ "nativeInitialize",
+ "finalize",
METHOD(&MapSnapshotter::setStyleUrl, "setStyleUrl"),
METHOD(&MapSnapshotter::addLayerAt, "nativeAddLayerAt"),
METHOD(&MapSnapshotter::addLayerBelow, "nativeAddLayerBelow"),
METHOD(&MapSnapshotter::addLayerAbove, "nativeAddLayerAbove"),
METHOD(&MapSnapshotter::addSource, "nativeAddSource"),
+ METHOD(&MapSnapshotter::addImages, "nativeAddImages"),
METHOD(&MapSnapshotter::setStyleJson, "setStyleJson"),
METHOD(&MapSnapshotter::setSize, "setSize"),
METHOD(&MapSnapshotter::setCameraPosition, "setCameraPosition"),
METHOD(&MapSnapshotter::setRegion, "setRegion"),
METHOD(&MapSnapshotter::start, "nativeStart"),
- METHOD(&MapSnapshotter::cancel, "nativeCancel")
- );
+ METHOD(&MapSnapshotter::cancel, "nativeCancel"));
}
} // namespace android
diff --git a/platform/android/src/snapshotter/map_snapshotter.hpp b/platform/android/src/snapshotter/map_snapshotter.hpp
index 9239a5ea19..87bc470272 100644
--- a/platform/android/src/snapshotter/map_snapshotter.hpp
+++ b/platform/android/src/snapshotter/map_snapshotter.hpp
@@ -1,18 +1,17 @@
#pragma once
+#include <jni/jni.hpp>
#include <mbgl/map/map_snapshotter.hpp>
#include <mbgl/util/util.hpp>
+#include <memory>
#include "../file_source.hpp"
#include "../geometry/lat_lng_bounds.hpp"
#include "../map/camera_position.hpp"
+#include "../map/image.hpp"
#include "../style/layers/layer.hpp"
#include "../style/sources/source.hpp"
-#include <jni/jni.hpp>
-
-#include <memory>
-
namespace mbgl {
namespace android {
@@ -56,6 +55,7 @@ public:
void addLayerBelow(JNIEnv&, jlong, const jni::String&);
void addLayerAbove(JNIEnv&, jlong, const jni::String&);
void addSource(JNIEnv&, const jni::Object<Source>&, jlong nativePtr);
+ void addImages(JNIEnv&, const jni::Array<jni::Object<mbgl::android::Image>>&);
// MapSnapshotterObserver overrides
void onDidFailLoadingStyle(const std::string&) override;