diff options
author | Mike Reed <reed@google.com> | 2017-07-05 22:40:23 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-07-06 12:51:24 +0000 |
commit | bdf6c62a19c50822977387a1be084071f94768d4 (patch) | |
tree | 825f8775a882b22dcd6d0b308ae022548651d611 /gm/srgb.cpp | |
parent | ae68a399cdf3d94aff28e497d5360bc288f2131d (diff) |
srgb conversion needs to be in unpremul
Bug: skia:
Change-Id: Ic7dffb2cb30aae33a6c127ab10ea4282e1360114
Reviewed-on: https://skia-review.googlesource.com/21536
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'gm/srgb.cpp')
-rw-r--r-- | gm/srgb.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
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); +} |