aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorGravatar scroggo@google.com <scroggo@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-10-07 16:56:01 +0000
committerGravatar scroggo@google.com <scroggo@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-10-07 16:56:01 +0000
commitde09af3fd86c430a9ed9741dfd11e79e19eee105 (patch)
tree58ad7d5bca01aac639c0fbda9c235daceeacac8a /tools
parent7bf488401c0e6d6ad7eecffce0facdceeddbb414 (diff)
In skimage, copy to 8888 if encoding fails.
When writing the bitmap for visual comparison, rather than special casing A8, depend on the fact that the encoder will fail, and try copying to 8888 and encoding that if so. R=reed@google.com Review URL: https://codereview.chromium.org/25964003 git-svn-id: http://skia.googlecode.com/svn/trunk@11633 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'tools')
-rw-r--r--tools/skimage_main.cpp25
1 files changed, 14 insertions, 11 deletions
diff --git a/tools/skimage_main.cpp b/tools/skimage_main.cpp
index 0d60f8afe9..11aeb766fb 100644
--- a/tools/skimage_main.cpp
+++ b/tools/skimage_main.cpp
@@ -111,19 +111,22 @@ static SkBitmap::Config gPrefConfig(SkBitmap::kNo_Config);
SkAutoTUnref<skiagm::JsonExpectationsSource> gJsonExpectations;
static bool write_bitmap(const char outName[], const SkBitmap& bm) {
- const SkBitmap* bmPtr;
+ if (SkImageEncoder::EncodeFile(outName, bm, SkImageEncoder::kPNG_Type, 100)) {
+ return true;
+ }
+
+ if (bm.config() == SkBitmap::kARGB_8888_Config) {
+ // First attempt at encoding failed, and the bitmap was already 8888. Making
+ // a copy is not going to help.
+ return false;
+ }
+
+ // Encoding failed. Copy to 8888 and try again.
SkBitmap bm8888;
- if (bm.config() == SkBitmap::kA8_Config) {
- // Copy A8 into ARGB_8888, since our image encoders do not currently
- // support A8.
- if (!bm.copyTo(&bm8888, SkBitmap::kARGB_8888_Config)) {
- return false;
- }
- bmPtr = &bm8888;
- } else {
- bmPtr = &bm;
+ if (!bm.copyTo(&bm8888, SkBitmap::kARGB_8888_Config)) {
+ return false;
}
- return SkImageEncoder::EncodeFile(outName, *bmPtr, SkImageEncoder::kPNG_Type, 100);
+ return SkImageEncoder::EncodeFile(outName, bm8888, SkImageEncoder::kPNG_Type, 100);
}
/**