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/bitmap.cpp | |
parent | 0b27909b8b9959a14f9075d3b61c33c93ddd8c31 (diff) |
[android] - add conversion of non ARGB_8888 images to c++, expose Bitmap#copy on the c++ side
Diffstat (limited to 'platform/android/src/bitmap.cpp')
-rw-r--r-- | platform/android/src/bitmap.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/platform/android/src/bitmap.cpp b/platform/android/src/bitmap.cpp index 50088116f..46e725305 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 |