From ab4a0c164b5a44d5bfd37069cfe499db31e7620c Mon Sep 17 00:00:00 2001 From: Mike Reed Date: Tue, 26 Jan 2010 10:13:53 -0500 Subject: add API to change default config on image decoders. May be called by the browser to get high-quality images when running in a 32bit window --- core/jni/android/graphics/BitmapFactory.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'core/jni') diff --git a/core/jni/android/graphics/BitmapFactory.cpp b/core/jni/android/graphics/BitmapFactory.cpp index 65f6845..9965fe5 100644 --- a/core/jni/android/graphics/BitmapFactory.cpp +++ b/core/jni/android/graphics/BitmapFactory.cpp @@ -645,6 +645,23 @@ static jbyteArray nativeScaleNinePatch(JNIEnv* env, jobject, jbyteArray chunkObj return chunkObject; } +static void nativeSetDefaultConfig(JNIEnv* env, jobject, int nativeConfig) { + SkBitmap::Config config = static_cast(nativeConfig); + + // these are the only default configs that make sense for codecs right now + static const SkBitmap::Config gValidDefConfig[] = { + SkBitmap::kRGB_565_Config, + SkBitmap::kARGB_8888_Config, + }; + + for (size_t i = 0; i < SK_ARRAY_COUNT(gValidDefConfig); i++) { + if (config == gValidDefConfig[i]) { + SkImageDecoder::SetDeviceConfig(config); + break; + } + } +} + /////////////////////////////////////////////////////////////////////////////// static JNINativeMethod gMethods[] = { @@ -671,8 +688,9 @@ static JNINativeMethod gMethods[] = { { "nativeScaleNinePatch", "([BFLandroid/graphics/Rect;)[B", (void*)nativeScaleNinePatch - } + }, + { "nativeSetDefaultConfig", "(I)V", (void*)nativeSetDefaultConfig }, }; static JNINativeMethod gOptionsMethods[] = { -- cgit v1.1