diff options
author | Matt Sarett <msarett@google.com> | 2017-04-05 17:36:04 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-04-05 22:56:37 +0000 |
commit | 7abfb5e1547bcbf626b2078991a9fe31c24b5d10 (patch) | |
tree | a49a9092113724118589802260e854cf812e5791 /tests/CodecTest.cpp | |
parent | 3dbef9f184cfecadf14d4c424cf02ee2e8f68d44 (diff) |
SkImageEncoder: Be more lenient on inputs
(1) Some clients want us to write ICC profiles, even though they
have not opted into linear unpremultiplication. This CL allows
that behavior.
(2) We should not assert that the transfer function must be linear
or srgb. Particularly in non-linear blending modes, skia is
willing to support a larger set of transfer functions.
(3) We still need to require linear or srgb when in kRespect transfer
function mode. We have not yet implemented linear unpremultiplies
for arbitrary transfer functions.
Bug: skia:
Change-Id: Idce9f07c3d36eca4d78ede5e2650b2cab412904c
Reviewed-on: https://skia-review.googlesource.com/11349
Commit-Queue: Matt Sarett <msarett@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Diffstat (limited to 'tests/CodecTest.cpp')
-rw-r--r-- | tests/CodecTest.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/tests/CodecTest.cpp b/tests/CodecTest.cpp index 3897878879..2c601fadb0 100644 --- a/tests/CodecTest.cpp +++ b/tests/CodecTest.cpp @@ -1547,7 +1547,8 @@ static void encode_format(SkDynamicMemoryWStream* stream, const SkPixmap& pixmap } } -static void test_encode_icc(skiatest::Reporter* r, SkEncodedImageFormat format) { +static void test_encode_icc(skiatest::Reporter* r, SkEncodedImageFormat format, + SkTransferFunctionBehavior unpremulBehavior) { // Test with sRGB color space. SkBitmap srgbBitmap; SkImageInfo srgbInfo = SkImageInfo::MakeS32(1, 1, kOpaque_SkAlphaType); @@ -1557,7 +1558,7 @@ static void test_encode_icc(skiatest::Reporter* r, SkEncodedImageFormat format) srgbBitmap.peekPixels(&pixmap); SkDynamicMemoryWStream srgbBuf; SkEncodeOptions opts; - opts.fUnpremulBehavior = SkTransferFunctionBehavior::kRespect; + opts.fUnpremulBehavior = unpremulBehavior; encode_format(&srgbBuf, pixmap, opts, format); sk_sp<SkData> srgbData = srgbBuf.detachAsData(); std::unique_ptr<SkCodec> srgbCodec(SkCodec::NewFromData(srgbData)); @@ -1587,7 +1588,10 @@ static void test_encode_icc(skiatest::Reporter* r, SkEncodedImageFormat format) } DEF_TEST(Codec_EncodeICC, r) { - test_encode_icc(r, SkEncodedImageFormat::kPNG); - test_encode_icc(r, SkEncodedImageFormat::kJPEG); - test_encode_icc(r, SkEncodedImageFormat::kWEBP); + test_encode_icc(r, SkEncodedImageFormat::kPNG, SkTransferFunctionBehavior::kRespect); + test_encode_icc(r, SkEncodedImageFormat::kJPEG, SkTransferFunctionBehavior::kRespect); + test_encode_icc(r, SkEncodedImageFormat::kWEBP, SkTransferFunctionBehavior::kRespect); + test_encode_icc(r, SkEncodedImageFormat::kPNG, SkTransferFunctionBehavior::kIgnore); + test_encode_icc(r, SkEncodedImageFormat::kJPEG, SkTransferFunctionBehavior::kIgnore); + test_encode_icc(r, SkEncodedImageFormat::kWEBP, SkTransferFunctionBehavior::kIgnore); } |