diff options
author | Matt Sarett <msarett@google.com> | 2017-03-22 12:53:27 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-03-22 17:34:32 +0000 |
commit | 4ef01482025e2e629e35458aa214436d3b4138e8 (patch) | |
tree | 114f744241a26f3e2875562bc2ee4871f0c97e1c /tests/CodecTest.cpp | |
parent | 801f8b824fee6397422e47537f0f13034ac54ce6 (diff) |
Add support for writing icc profiles to the jpeg encoder
Also, share the impl for skjpeg_error_mgr between the
jpeg decoder and encoder. They are already identical
anyway.
BUG=skia:
Change-Id: I4d67f28126388fef3057d62b6e0b203e21ed4afb
Reviewed-on: https://skia-review.googlesource.com/10011
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
Diffstat (limited to 'tests/CodecTest.cpp')
-rw-r--r-- | tests/CodecTest.cpp | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/tests/CodecTest.cpp b/tests/CodecTest.cpp index 65e5475e54..da75ffb414 100644 --- a/tests/CodecTest.cpp +++ b/tests/CodecTest.cpp @@ -1530,7 +1530,22 @@ DEF_TEST(Codec_InvalidAnimated, r) { } } -DEF_TEST(Codec_EncodeICC, r) { +static void encode_format(SkDynamicMemoryWStream* stream, const SkPixmap& pixmap, + const SkEncodeOptions& opts, SkEncodedImageFormat format) { + switch (format) { + case SkEncodedImageFormat::kPNG: + SkEncodeImageAsPNG(stream, pixmap, opts); + break; + case SkEncodedImageFormat::kJPEG: + SkEncodeImageAsJPEG(stream, pixmap, opts); + break; + default: + SkASSERT(false); + break; + } +} + +static void test_encode_icc(skiatest::Reporter* r, SkEncodedImageFormat format) { // Test with sRGB color space. SkBitmap srgbBitmap; SkImageInfo srgbInfo = SkImageInfo::MakeS32(1, 1, kOpaque_SkAlphaType); @@ -1541,7 +1556,7 @@ DEF_TEST(Codec_EncodeICC, r) { SkDynamicMemoryWStream srgbBuf; SkEncodeOptions opts; opts.fColorBehavior = SkEncodeOptions::ColorBehavior::kCorrect; - SkEncodeImageAsPNG(&srgbBuf, pixmap, opts); + encode_format(&srgbBuf, pixmap, opts, format); sk_sp<SkData> srgbData = srgbBuf.detachAsData(); std::unique_ptr<SkCodec> srgbCodec(SkCodec::NewFromData(srgbData)); REPORTER_ASSERT(r, srgbCodec->getInfo().colorSpace() == SkColorSpace::MakeSRGB().get()); @@ -1551,7 +1566,7 @@ DEF_TEST(Codec_EncodeICC, r) { sk_sp<SkColorSpace> p3 = SkColorSpace::MakeRGB(SkColorSpace::kSRGB_RenderTargetGamma, SkColorSpace::kDCIP3_D65_Gamut); pixmap.setColorSpace(p3); - SkEncodeImageAsPNG(&p3Buf, pixmap, opts); + encode_format(&p3Buf, pixmap, opts, format); sk_sp<SkData> p3Data = p3Buf.detachAsData(); std::unique_ptr<SkCodec> p3Codec(SkCodec::NewFromData(p3Data)); REPORTER_ASSERT(r, p3Codec->getInfo().colorSpace()->gammaCloseToSRGB()); @@ -1564,7 +1579,12 @@ DEF_TEST(Codec_EncodeICC, r) { for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { - REPORTER_ASSERT(r, color_space_almost_equal(mat0.get(0, 0), mat1.get(0, 0))); + REPORTER_ASSERT(r, color_space_almost_equal(mat0.get(i, j), mat1.get(i, j))); } } } + +DEF_TEST(Codec_EncodeICC, r) { + test_encode_icc(r, SkEncodedImageFormat::kPNG); + test_encode_icc(r, SkEncodedImageFormat::kJPEG); +} |