diff options
author | Romain Guy <romainguy@google.com> | 2012-07-10 12:02:33 -0700 |
---|---|---|
committer | Romain Guy <romainguy@google.com> | 2012-07-10 12:02:33 -0700 |
commit | 053a82cc18b8ad9b6cb321b57893225411ccf146 (patch) | |
tree | d00ae1cc7b6af8ebacf9902689214dacb2d1e228 /core/jni/android/graphics | |
parent | 3849f93b3c2b29ca3873b602897dccac039a0b98 (diff) | |
download | frameworks_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.cpp | 13 |
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); |