aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/CodecTest.cpp
diff options
context:
space:
mode:
authorGravatar Matt Sarett <msarett@google.com>2017-03-21 16:14:42 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-03-22 13:57:58 +0000
commite3b95ce468c73af8247ba9582a7b84548b19f06a (patch)
tree5823adacd215f5b9f7030287fec35727332d041a /tests/CodecTest.cpp
parentc3efe6785666cdd13848e63f36fdadca26c48649 (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: I029312406dee8734744cc3058acd1f153aefcd83 Reviewed-on: https://skia-review.googlesource.com/9971 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.cpp28
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);
+}