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

Unified Diff: tests/CodecTest.cpp

Issue 2290843002: Add Gray support to SkPNGImageEncoder (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: use sk_bzero() Created 4 years, 4 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/SkPNGImageEncoder.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/CodecTest.cpp
diff --git a/tests/CodecTest.cpp b/tests/CodecTest.cpp
index 8023ff219d5873632db3708054a850fe4e8d3025..fcbfadd0680bc25225fd1f0bb1f94d85dc779a60 100644
--- a/tests/CodecTest.cpp
+++ b/tests/CodecTest.cpp
@@ -1074,29 +1074,22 @@ DEF_TEST(Codec_ColorXform, r) {
check_color_xform(r, "mandrill_512.png");
}
-DEF_TEST(Codec_Png565, r) {
- // Create an arbitrary 565 bitmap.
- const char* path = "mandrill_512_q075.jpg";
- SkAutoTDelete<SkStream> stream(resource(path));
- SkAutoTDelete<SkCodec> codec(SkCodec::NewFromStream(stream.release()));
- SkImageInfo info565 = codec->getInfo().makeColorType(kRGB_565_SkColorType);
- SkBitmap bm1;
- bm1.allocPixels(info565);
- SkCodec::Result result = codec->getPixels(info565, bm1.getPixels(), bm1.rowBytes());
- REPORTER_ASSERT(r, SkCodec::kSuccess == result);
+static void check_round_trip(skiatest::Reporter* r, const SkBitmap& bm1) {
+ SkColorType origColorType = bm1.colorType();
+ SkAlphaType origAlphaType = bm1.alphaType();
// Encode the image to png.
sk_sp<SkData> data =
sk_sp<SkData>(SkImageEncoder::EncodeData(bm1, SkImageEncoder::kPNG_Type, 100));
// Prepare to decode. The codec should recognize that the PNG is 565.
- codec.reset(SkCodec::NewFromData(data.get()));
- REPORTER_ASSERT(r, kRGB_565_SkColorType == codec->getInfo().colorType());
- REPORTER_ASSERT(r, kOpaque_SkAlphaType == codec->getInfo().alphaType());
+ SkAutoTDelete<SkCodec> codec(SkCodec::NewFromData(data.get()));
+ REPORTER_ASSERT(r, origColorType == codec->getInfo().colorType());
+ REPORTER_ASSERT(r, origAlphaType == codec->getInfo().alphaType());
SkBitmap bm2;
bm2.allocPixels(codec->getInfo());
- result = codec->getPixels(codec->getInfo(), bm2.getPixels(), bm2.rowBytes());
+ SkCodec::Result result = codec->getPixels(codec->getInfo(), bm2.getPixels(), bm2.rowBytes());
REPORTER_ASSERT(r, SkCodec::kSuccess == result);
SkMD5::Digest d1, d2;
@@ -1104,3 +1097,26 @@ DEF_TEST(Codec_Png565, r) {
md5(bm2, &d2);
REPORTER_ASSERT(r, d1 == d2);
}
+
+DEF_TEST(Codec_PngRoundTrip, r) {
+ // Create an arbitrary 565 bitmap.
+ const char* path = "mandrill_512_q075.jpg";
+ SkAutoTDelete<SkStream> stream(resource(path));
+ SkAutoTDelete<SkCodec> codec(SkCodec::NewFromStream(stream.release()));
+ SkImageInfo info565 = codec->getInfo().makeColorType(kRGB_565_SkColorType);
+ SkBitmap bm1;
+ bm1.allocPixels(info565);
+ SkCodec::Result result = codec->getPixels(info565, bm1.getPixels(), bm1.rowBytes());
+ REPORTER_ASSERT(r, SkCodec::kSuccess == result);
+ check_round_trip(r, bm1);
+
+ // Create an arbitrary gray bitmap.
+ path = "grayscale.jpg";
+ stream.reset(resource(path));
+ codec.reset(SkCodec::NewFromStream(stream.release()));
+ SkBitmap bm2;
+ bm2.allocPixels(codec->getInfo());
+ result = codec->getPixels(codec->getInfo(), bm2.getPixels(), bm2.rowBytes());
+ REPORTER_ASSERT(r, SkCodec::kSuccess == result);
+ check_round_trip(r, bm2);
+}
« no previous file with comments | « src/images/SkPNGImageEncoder.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698