diff options
Diffstat (limited to 'dm')
-rw-r--r-- | dm/DM.cpp | 3 | ||||
-rw-r--r-- | dm/DMSrcSink.cpp | 5 | ||||
-rw-r--r-- | dm/DMSrcSink.h | 4 |
3 files changed, 9 insertions, 3 deletions
@@ -747,6 +747,9 @@ static bool gather_srcs() { src = new ColorCodecSrc(colorImage, ColorCodecSrc::kDst_HPZR30w_Mode); push_src("image", "color_codec_HPZR30w", src); + src = new ColorCodecSrc(colorImage, ColorCodecSrc::kDst_sRGB_Mode); + push_src("image", "color_codec_sRGB", src); + #if defined(SK_TEST_QCMS) src = new ColorCodecSrc(colorImage, ColorCodecSrc::kQCMS_HPZR30w_Mode); push_src("image", "color_codec_QCMS_HPZR30w", src); diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp index 97f1e48664..8afbfb9f2f 100644 --- a/dm/DMSrcSink.cpp +++ b/dm/DMSrcSink.cpp @@ -886,9 +886,12 @@ Error ColorCodecSrc::draw(SkCanvas* canvas) const { case kBaseline_Mode: canvas->drawBitmap(bitmap, 0, 0); break; + case kDst_sRGB_Mode: case kDst_HPZR30w_Mode: { sk_sp<SkColorSpace> srcSpace = sk_ref_sp(codec->getColorSpace()); - sk_sp<SkColorSpace> dstSpace = SkColorSpace::NewICC(dstData->data(), dstData->size()); + sk_sp<SkColorSpace> dstSpace = (kDst_sRGB_Mode == fMode) ? + SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named) : + SkColorSpace::NewICC(dstData->data(), dstData->size()); SkASSERT(dstSpace); std::unique_ptr<SkColorSpaceXform> xform = SkColorSpaceXform::New(srcSpace, dstSpace); diff --git a/dm/DMSrcSink.h b/dm/DMSrcSink.h index a2bfbca7f3..be7d68e638 100644 --- a/dm/DMSrcSink.h +++ b/dm/DMSrcSink.h @@ -215,10 +215,10 @@ public: // monitor, you're in luck! The unmarked outputs of this test should display // correctly on this monitor in the Chrome browser. If not, it's useful to know // that this monitor has a profile that is fairly similar to Adobe RGB. - // TODO (msarett): Should we add a new test with a new monitor and verify that outputs - // look identical on two different dsts? kDst_HPZR30w_Mode, + kDst_sRGB_Mode, + #if defined(SK_TEST_QCMS) // Use QCMS for color correction. kQCMS_HPZR30w_Mode, |