From bdf6c62a19c50822977387a1be084071f94768d4 Mon Sep 17 00:00:00 2001 From: Mike Reed Date: Wed, 5 Jul 2017 22:40:23 -0400 Subject: srgb conversion needs to be in unpremul Bug: skia: Change-Id: Ic7dffb2cb30aae33a6c127ab10ea4282e1360114 Reviewed-on: https://skia-review.googlesource.com/21536 Commit-Queue: Mike Reed Reviewed-by: Florin Malita --- gm/srgb.cpp | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 gm/srgb.cpp (limited to 'gm/srgb.cpp') diff --git a/gm/srgb.cpp b/gm/srgb.cpp new file mode 100644 index 0000000000..bbf0abddec --- /dev/null +++ b/gm/srgb.cpp @@ -0,0 +1,42 @@ +/* + * Copyright 2017 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "gm.h" +#include "sk_tool_utils.h" +#include "SkCanvas.h" +#include "SkImage.h" +#include "Resources.h" +#include "SkColorFilter.h" + +DEF_SIMPLE_GM(srgb_colorfilter, canvas, 512, 256*3) { + auto img = GetResourceAsImage("mandrill_256.png"); + + const float array[] = { + 1, 0, 0, 0, 0, + 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, + -1, 0, 0, 1, 0, + }; + auto cf0 = SkColorFilter::MakeMatrixFilterRowMajor255(array); + auto cf1 = SkColorFilter::MakeLinearToSRGBGamma(); + auto cf2 = SkColorFilter::MakeSRGBToLinearGamma(); + + SkPaint p; + p.setColorFilter(cf0); + canvas->drawImage(img, 0, 0, nullptr); + canvas->drawImage(img, 256, 0, &p); + + p.setColorFilter(cf1); + canvas->drawImage(img, 0, 256, &p); + p.setColorFilter(SkColorFilter::MakeComposeFilter(cf1, cf0)); + canvas->drawImage(img, 256, 256, &p); + + p.setColorFilter(cf2); + canvas->drawImage(img, 0, 512, &p); + p.setColorFilter(SkColorFilter::MakeComposeFilter(cf2, cf0)); + canvas->drawImage(img, 256, 512, &p); +} -- cgit v1.2.3