aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar scroggo@google.com <scroggo@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-10-02 15:50:19 +0000
committerGravatar scroggo@google.com <scroggo@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-10-02 15:50:19 +0000
commit354fd97ee00d2b604bf72132b7449b32a88dc2db (patch)
tree5887cdd74abd7ee3a74ddba6f1ce31ca245b427f /src
parentf614b76377cd4a273065ab01efabf9ded344eac2 (diff)
Do not convert non gray PNG to A8.
If the user requested A8, but the source is not gray, switch to ARGB8888. BUG=https://b.corp.google.com/issue?id=9189955 R=reed@google.com Review URL: https://codereview.chromium.org/24882002 git-svn-id: http://skia.googlecode.com/svn/trunk@11573 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src')
-rw-r--r--src/images/SkImageDecoder_libpng.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/images/SkImageDecoder_libpng.cpp b/src/images/SkImageDecoder_libpng.cpp
index e942f21c78..fc220eae1a 100644
--- a/src/images/SkImageDecoder_libpng.cpp
+++ b/src/images/SkImageDecoder_libpng.cpp
@@ -532,9 +532,13 @@ bool SkPNGImageDecoder::getBitmapConfig(png_structp png_ptr, png_infop info_ptr,
*configp = SkBitmap::kARGB_8888_Config;
}
} else {
- if (*configp != SkBitmap::kRGB_565_Config &&
- *configp != SkBitmap::kARGB_4444_Config &&
- *configp != SkBitmap::kA8_Config) {
+ if (SkBitmap::kA8_Config == *configp) {
+ if (k8BitGray_SrcDepth != srcDepth) {
+ // Converting a non grayscale image to A8 is not currently supported.
+ *configp = SkBitmap::kARGB_8888_Config;
+ }
+ } else if (*configp != SkBitmap::kRGB_565_Config &&
+ *configp != SkBitmap::kARGB_4444_Config) {
*configp = SkBitmap::kARGB_8888_Config;
}
}