Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(988)

Unified Diff: tests/ImageDecodingTest.cpp

Issue 16816016: Fix for PNG, coding style, skip opaque. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/images/SkImageDecoder_libpng.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/ImageDecodingTest.cpp
diff --git a/tests/ImageDecodingTest.cpp b/tests/ImageDecodingTest.cpp
index 5c9d5c58992745568d1a5b366ddb0762d07747e1..f30a0b25b7c115eed29990fb780ad1d373b95360 100644
--- a/tests/ImageDecodingTest.cpp
+++ b/tests/ImageDecodingTest.cpp
@@ -20,7 +20,7 @@ __SK_FORCE_IMAGE_DECODER_LINKING;
* Interprets c as an unpremultiplied color, and returns the
* premultiplied equivalent.
*/
-SkPMColor SkPreMultiplyUnPMColor(SkPMColor c) {
+static SkPMColor premultiply_unpmcolor(SkPMColor c) {
U8CPU a = SkGetPackedA32(c);
U8CPU r = SkGetPackedR32(c);
U8CPU g = SkGetPackedG32(c);
@@ -29,6 +29,31 @@ SkPMColor SkPreMultiplyUnPMColor(SkPMColor c) {
}
/**
+ * Return true if this stream format should be skipped, due
+ * to do being an opaque format or not a valid format.
+ */
+static bool skip_image_format(SkImageDecoder::Format format) {
+ switch (format) {
+ case SkImageDecoder::kPNG_Format:
+ case SkImageDecoder::kWEBP_Format:
+ return false;
+ // Skip unknown since it will not be decoded anyway.
+ case SkImageDecoder::kUnknown_Format:
+ // Technically ICO and BMP supports alpha channels, but our image
+ // decoders do not, so skip them as well.
+ case SkImageDecoder::kICO_Format:
+ case SkImageDecoder::kBMP_Format:
+ // The rest of these are opaque.
+ case SkImageDecoder::kWBMP_Format:
+ case SkImageDecoder::kGIF_Format:
+ case SkImageDecoder::kJPEG_Format:
+ return true;
+ }
+ SkASSERT(false);
+ return true;
+}
+
+/**
* Test decoding an image in premultiplied mode and unpremultiplied mode and compare
* them.
*/
@@ -39,8 +64,8 @@ static void compare_unpremul(skiatest::Reporter* reporter, const SkString& filen
SkFILEStream stream(filename.c_str());
- // JPEG is always opaque, so requesting unpremultiplied does not change anything.
- if (SkImageDecoder::GetStreamFormat(&stream) == SkImageDecoder::kJPEG_Format) {
+ SkImageDecoder::Format format = SkImageDecoder::GetStreamFormat(&stream);
+ if (skip_image_format(format)) {
return;
}
@@ -89,7 +114,7 @@ static void compare_unpremul(skiatest::Reporter* reporter, const SkString& filen
const SkPMColor c0 = *bm8888.getAddr32(i, j);
// "c1" is the result of premultiplying the color of the unpremultiplied
// bitmap at (i, j).
- const SkPMColor c1 = SkPreMultiplyUnPMColor(*bm8888Unpremul.getAddr32(i, j));
+ const SkPMColor c1 = premultiply_unpmcolor(*bm8888Unpremul.getAddr32(i, j));
// Compute the difference for each component.
int da = SkAbs32(SkGetPackedA32(c0) - SkGetPackedA32(c1));
int dr = SkAbs32(SkGetPackedR32(c0) - SkGetPackedR32(c1));
« no previous file with comments | « src/images/SkImageDecoder_libpng.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698