diff options
author | Tobrun <tobrun.van.nuland@gmail.com> | 2018-02-02 11:16:01 +0100 |
---|---|---|
committer | Tobrun <tobrun@mapbox.com> | 2018-02-12 15:56:58 +0100 |
commit | ff747a8c53805a270451cd6052d02073e45546a7 (patch) | |
tree | dd2e34be697edf8f4c55e6b90ffa00cd043b9089 /platform/android/src | |
parent | 0b27909b8b9959a14f9075d3b61c33c93ddd8c31 (diff) | |
download | qtlocation-mapboxgl-ff747a8c53805a270451cd6052d02073e45546a7.tar.gz |
[android] - add conversion of non ARGB_8888 images to c++, expose Bitmap#copy on the c++ side
Diffstat (limited to 'platform/android/src')
-rw-r--r-- | platform/android/src/bitmap.cpp | 10 | ||||
-rw-r--r-- | platform/android/src/bitmap.hpp | 1 |
2 files changed, 9 insertions, 2 deletions
diff --git a/platform/android/src/bitmap.cpp b/platform/android/src/bitmap.cpp index 50088116f4..46e7253050 100644 --- a/platform/android/src/bitmap.cpp +++ b/platform/android/src/bitmap.cpp @@ -110,8 +110,7 @@ PremultipliedImage Bitmap::GetImage(jni::JNIEnv& env, jni::Object<Bitmap> bitmap } if (info.format != ANDROID_BITMAP_FORMAT_RGBA_8888) { - // TODO: convert - throw std::runtime_error("bitmap decoding: bitmap format invalid"); + bitmap = Bitmap::Copy(env, bitmap); } const PixelGuard guard(env, bitmap); @@ -128,5 +127,12 @@ PremultipliedImage Bitmap::GetImage(jni::JNIEnv& env, jni::Object<Bitmap> bitmap return { Size{ info.width, info.height }, std::move(pixels) }; } +jni::Object<Bitmap> Bitmap::Copy(jni::JNIEnv& env, jni::Object<Bitmap> bitmap) { + using Signature = jni::Object<Bitmap>(jni::Object<Config>, jni::jboolean); + auto static method = _class.GetMethod<Signature>(env, "copy"); + auto config = Bitmap::Config::Create(env, Bitmap::Config::Value::ARGB_8888); + return bitmap.Call(env, method, config, (jni::jboolean) false); +} + } // namespace android } // namespace mbgl diff --git a/platform/android/src/bitmap.hpp b/platform/android/src/bitmap.hpp index f64f42ae87..c4e41db1e0 100644 --- a/platform/android/src/bitmap.hpp +++ b/platform/android/src/bitmap.hpp @@ -43,6 +43,7 @@ public: static PremultipliedImage GetImage(jni::JNIEnv&, jni::Object<Bitmap>); static jni::Object<Bitmap> CreateBitmap(jni::JNIEnv&, const PremultipliedImage&); + static jni::Object<Bitmap> Copy(jni::JNIEnv&, jni::Object<Bitmap>); private: static jni::Class<Bitmap> _class; |