diff options
author | Brian Osman <brianosman@google.com> | 2017-07-25 10:48:19 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-07-25 15:28:03 +0000 |
commit | fa3ed03720b5083afd3620c9239863f05f2eedbd (patch) | |
tree | 6d0f8d3548aab6330a27178222a54035e395c5e7 /gm | |
parent | 323ae0eb4b8295352b259f8e4bfc80511a2348f9 (diff) |
Add GM to test SkToSRGBColorFilter
Bug: skia:
Change-Id: If342ad5503d1b427f2d04ce15b75f0f7fa2706c1
Reviewed-on: https://skia-review.googlesource.com/26426
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Diffstat (limited to 'gm')
-rw-r--r-- | gm/srgb_color_filter.cpp | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/gm/srgb_color_filter.cpp b/gm/srgb_color_filter.cpp new file mode 100644 index 0000000000..76c724faaf --- /dev/null +++ b/gm/srgb_color_filter.cpp @@ -0,0 +1,57 @@ +/* + * 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 "SkPM4fPriv.h" +#include "SkToSRGBColorFilter.h" + +DEF_SIMPLE_GM_BG(srgb_color_filter, canvas, 130, 130, SK_ColorBLACK) { + // Src bitmap with some colors that we're going to interpret as being in a few different spaces + SkBitmap bmp; + bmp.allocN32Pixels(3, 2); + SkPMColor* pixels = reinterpret_cast<SkPMColor*>(bmp.getPixels()); + pixels[0] = SkPackARGB32(0xFF, 0xA0, 0x00, 0x00); + pixels[1] = SkPackARGB32(0xFF, 0x00, 0xA0, 0x00); + pixels[2] = SkPackARGB32(0xFF, 0x00, 0x00, 0xA0); + pixels[3] = SkPackARGB32(0xFF, 0x00, 0xA0, 0xA0); + pixels[4] = SkPackARGB32(0xFF, 0xA0, 0x00, 0xA0); + pixels[5] = SkPackARGB32(0xFF, 0xA0, 0xA0, 0x00); + + // Reference image + canvas->drawBitmapRect(bmp, SkRect::MakeXYWH(10, 10, 50, 50), nullptr); + + auto srgb = SkColorSpace::MakeSRGB(); + auto rec2020 = SkColorSpace::MakeRGB(SkColorSpace::kSRGB_RenderTargetGamma, + SkColorSpace::kRec2020_Gamut); + + // NarrowGamut RGB (an artifically smaller than sRGB gamut) + SkColorSpacePrimaries narrowPrimaries = { + 0.54f, 0.33f, // Rx, Ry + 0.33f, 0.50f, // Gx, Gy + 0.25f, 0.20f, // Bx, By + 0.3127f, 0.3290f, // Wx, Wy + }; + SkMatrix44 narrowGamutRGBMatrix(SkMatrix44::kUninitialized_Constructor); + narrowPrimaries.toXYZD50(&narrowGamutRGBMatrix); + auto narrow = SkColorSpace::MakeRGB(SkColorSpace::kSRGB_RenderTargetGamma, + narrowGamutRGBMatrix); + + SkPaint paint; + + // Transforming sRGB -> sRGB should do nothing. Top two squares should look identical. + paint.setColorFilter(SkToSRGBColorFilter::Make(srgb)); + canvas->drawBitmapRect(bmp, SkRect::MakeXYWH(70, 10, 50, 50), &paint); + + // Rec2020 -> sRGB should produce more vivid colors. + paint.setColorFilter(SkToSRGBColorFilter::Make(rec2020)); + canvas->drawBitmapRect(bmp, SkRect::MakeXYWH(10, 70, 50, 50), &paint); + + // Narrow -> sRGB should produce more muted colors. + paint.setColorFilter(SkToSRGBColorFilter::Make(narrow)); + canvas->drawBitmapRect(bmp, SkRect::MakeXYWH(70, 70, 50, 50), &paint); +} |