From 6a71e17dbbf95ca249912b7d1eae3790532948ba Mon Sep 17 00:00:00 2001 From: Tobrun Date: Fri, 27 Oct 2017 15:57:35 -0700 Subject: [android] - make snapshot logo optional --- .../com/mapbox/mapboxsdk/snapshotter/MapSnapshot.java | 11 ++++++++++- .../mapbox/mapboxsdk/snapshotter/MapSnapshotter.java | 18 +++++++++++++++--- platform/android/src/snapshotter/map_snapshot.cpp | 5 +++-- platform/android/src/snapshotter/map_snapshot.hpp | 1 + platform/android/src/snapshotter/map_snapshotter.cpp | 7 +++++-- platform/android/src/snapshotter/map_snapshotter.hpp | 2 ++ 6 files changed, 36 insertions(+), 8 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/snapshotter/MapSnapshot.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/snapshotter/MapSnapshot.java index aefa962402..eb4f94c428 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/snapshotter/MapSnapshot.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/snapshotter/MapSnapshot.java @@ -15,14 +15,16 @@ public class MapSnapshot { private long nativePtr = 0; private Bitmap bitmap; private String[] attributions; + private boolean showLogo; /** * Created from native side */ - private MapSnapshot(long nativePtr, Bitmap bitmap, String[] attributions) { + private MapSnapshot(long nativePtr, Bitmap bitmap, String[] attributions, boolean showLogo) { this.nativePtr = nativePtr; this.bitmap = bitmap; this.attributions = attributions; + this.showLogo = showLogo; } /** @@ -47,6 +49,13 @@ public class MapSnapshot { return attributions; } + /** + * @return Flag indicating to show the Mapbox logo. + */ + boolean isShowLogo() { + return showLogo; + } + // Unused, needed for peer binding private native void initialize(); diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/snapshotter/MapSnapshotter.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/snapshotter/MapSnapshotter.java index 37d05fc328..00fa0171cd 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/snapshotter/MapSnapshotter.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/snapshotter/MapSnapshotter.java @@ -74,6 +74,7 @@ public class MapSnapshotter { private String styleUrl = Style.MAPBOX_STREETS; private LatLngBounds region; private CameraPosition cameraPosition; + private boolean showLogo = true; /** * @param width the width of the image @@ -123,6 +124,15 @@ public class MapSnapshotter { return this; } + /** + * @param showLogo The flag indicating to show the Mapbox logo. + * @return the mutated {@link Options} + */ + public Options withLogo(boolean showLogo) { + this.showLogo = showLogo; + return this; + } + /** * @return the width of the image */ @@ -182,7 +192,7 @@ public class MapSnapshotter { nativeInitialize(this, fileSource, options.pixelRatio, options.width, options.height, options.styleUrl, options.region, options.cameraPosition, - programCacheDir); + options.showLogo, programCacheDir); } /** @@ -266,7 +276,9 @@ public class MapSnapshotter { */ protected void onSnapshotReady(MapSnapshot snapshot) { if (callback != null) { - addOverlay(snapshot.getBitmap()); + if (snapshot.isShowLogo()) { + addOverlay(snapshot.getBitmap()); + } callback.onSnapshotReady(snapshot); reset(); } @@ -294,7 +306,7 @@ public class MapSnapshotter { FileSource fileSource, float pixelRatio, int width, int height, String styleUrl, LatLngBounds region, CameraPosition position, - String programCacheDir); + boolean showLogo, String programCacheDir); protected native void nativeStart(); diff --git a/platform/android/src/snapshotter/map_snapshot.cpp b/platform/android/src/snapshotter/map_snapshot.cpp index 843a8a487a..f5092b3c56 100644 --- a/platform/android/src/snapshotter/map_snapshot.cpp +++ b/platform/android/src/snapshotter/map_snapshot.cpp @@ -27,14 +27,15 @@ jni::Object MapSnapshot::New(JNIEnv& env, PremultipliedImage&& image, float pixelRatio, std::vector attributions, + bool showLogo, mbgl::MapSnapshotter::PointForFn pointForFn) { // Create the bitmap auto bitmap = Bitmap::CreateBitmap(env, std::move(image)); // Create the Mapsnapshot peers - static auto constructor = javaClass.GetConstructor, jni::Array>(env); + static auto constructor = javaClass.GetConstructor, jni::Array, jni::jboolean>(env); auto nativePeer = std::make_unique(pixelRatio, pointForFn); - return javaClass.New(env, constructor, reinterpret_cast(nativePeer.release()), bitmap, jni::Make>(env, attributions)); + return javaClass.New(env, constructor, reinterpret_cast(nativePeer.release()), bitmap, jni::Make>(env, attributions), (jni::jboolean) showLogo); } jni::Class MapSnapshot::javaClass; diff --git a/platform/android/src/snapshotter/map_snapshot.hpp b/platform/android/src/snapshotter/map_snapshot.hpp index 64090bb48b..4673dcd16e 100644 --- a/platform/android/src/snapshotter/map_snapshot.hpp +++ b/platform/android/src/snapshotter/map_snapshot.hpp @@ -26,6 +26,7 @@ public: PremultipliedImage&& image, float pixelRatio, std::vector attributions, + bool showLogo, PointForFn pointForFn); MapSnapshot(jni::JNIEnv&) {}; diff --git a/platform/android/src/snapshotter/map_snapshotter.cpp b/platform/android/src/snapshotter/map_snapshotter.cpp index 3c6623af40..637eb5c1fd 100644 --- a/platform/android/src/snapshotter/map_snapshotter.cpp +++ b/platform/android/src/snapshotter/map_snapshotter.cpp @@ -22,6 +22,7 @@ MapSnapshotter::MapSnapshotter(jni::JNIEnv& _env, jni::String styleURL, jni::Object region, jni::Object position, + jni::jboolean _showLogo, jni::String _programCacheDir) : javaPeer(SeizeGenericWeakRef(_env, jni::Object(jni::NewWeakGlobalRef(_env, _obj.Get()).release()))) , pixelRatio(_pixelRatio) @@ -41,6 +42,8 @@ MapSnapshotter::MapSnapshotter(jni::JNIEnv& _env, bounds = LatLngBounds::getLatLngBounds(_env, region); } + showLogo = _showLogo; + // Create the core snapshotter snapshotter = std::make_unique(fileSource, *threadPool, @@ -70,7 +73,7 @@ void MapSnapshotter::start(JNIEnv&) { javaPeer->Call(*_env, onSnapshotFailed, jni::Make(*_env, util::toString(err))); } else { // Create the wrapper - auto mapSnapshot = android::MapSnapshot::New(*_env, std::move(image), pixelRatio, attributions, pointForFn); + auto mapSnapshot = android::MapSnapshot::New(*_env, std::move(image), pixelRatio, attributions, showLogo, pointForFn); // invoke callback static auto onSnapshotReady = javaClass.GetMethod)>(*_env, "onSnapshotReady"); @@ -117,7 +120,7 @@ void MapSnapshotter::registerNative(jni::JNIEnv& env) { // Register the peer jni::RegisterNativePeer(env, MapSnapshotter::javaClass, "nativePtr", - std::make_unique, jni::Object, jni::jfloat, jni::jint, jni::jint, jni::String, jni::Object, jni::Object, jni::String>, + std::make_unique, jni::Object, jni::jfloat, jni::jint, jni::jint, jni::String, jni::Object, jni::Object, jni::jboolean, jni::String>, "nativeInitialize", "finalize", METHOD(&MapSnapshotter::setStyleUrl, "setStyleUrl"), diff --git a/platform/android/src/snapshotter/map_snapshotter.hpp b/platform/android/src/snapshotter/map_snapshotter.hpp index fa8a2d7a5a..8cd85060bf 100644 --- a/platform/android/src/snapshotter/map_snapshotter.hpp +++ b/platform/android/src/snapshotter/map_snapshotter.hpp @@ -36,6 +36,7 @@ public: jni::String styleURL, jni::Object region, jni::Object position, + jni::jboolean showLogo, jni::String programCacheDir); ~MapSnapshotter(); @@ -59,6 +60,7 @@ private: GenericUniqueWeakObject javaPeer; float pixelRatio; + bool showLogo; std::shared_ptr threadPool; std::unique_ptr> snapshotCallback; -- cgit v1.2.1