aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/CodecTest.cpp
diff options
context:
space:
mode:
authorGravatar Matt Sarett <msarett@google.com>2017-04-05 17:36:04 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-04-05 22:56:37 +0000
commit7abfb5e1547bcbf626b2078991a9fe31c24b5d10 (patch)
treea49a9092113724118589802260e854cf812e5791 /tests/CodecTest.cpp
parent3dbef9f184cfecadf14d4c424cf02ee2e8f68d44 (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.cpp14
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);
}