summaryrefslogtreecommitdiffstats
path: root/core/jni/android/graphics
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2012-07-10 12:02:33 -0700
committerRomain Guy <romainguy@google.com>2012-07-10 12:02:33 -0700
commit053a82cc18b8ad9b6cb321b57893225411ccf146 (patch)
treed00ae1cc7b6af8ebacf9902689214dacb2d1e228 /core/jni/android/graphics
parent3849f93b3c2b29ca3873b602897dccac039a0b98 (diff)
downloadframeworks_base-053a82cc18b8ad9b6cb321b57893225411ccf146.zip
frameworks_base-053a82cc18b8ad9b6cb321b57893225411ccf146.tar.gz
frameworks_base-053a82cc18b8ad9b6cb321b57893225411ccf146.tar.bz2
Properly resize paletted bitmaps when adjusting for density
If an app used a GIF file in the wrong density bucket, the auto-scaling code would not properly resize the bitmap. Change-Id: I28f6506a94b20d11b3ba53ac442abec2b92e093e
Diffstat (limited to 'core/jni/android/graphics')
-rw-r--r--core/jni/android/graphics/BitmapFactory.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/core/jni/android/graphics/BitmapFactory.cpp b/core/jni/android/graphics/BitmapFactory.cpp
index 416370e..69ef080 100644
--- a/core/jni/android/graphics/BitmapFactory.cpp
+++ b/core/jni/android/graphics/BitmapFactory.cpp
@@ -327,7 +327,18 @@ static jobject doDecode(JNIEnv* env, SkStream* stream, jobject padding,
const float sx = scaledWidth / float(decoded->width());
const float sy = scaledHeight / float(decoded->height());
- bitmap->setConfig(decoded->getConfig(), scaledWidth, scaledHeight);
+ SkBitmap::Config config = decoded->config();
+ switch (config) {
+ case SkBitmap::kNo_Config:
+ case SkBitmap::kIndex8_Config:
+ case SkBitmap::kRLE_Index8_Config:
+ config = SkBitmap::kARGB_8888_Config;
+ break;
+ default:
+ break;
+ }
+
+ bitmap->setConfig(config, scaledWidth, scaledHeight);
bitmap->setIsOpaque(decoded->isOpaque());
bitmap->allocPixels(&javaAllocator, NULL);
bitmap->eraseColor(0);