aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/srgb.cpp
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2017-07-05 22:40:23 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-07-06 12:51:24 +0000
commitbdf6c62a19c50822977387a1be084071f94768d4 (patch)
tree825f8775a882b22dcd6d0b308ae022548651d611 /gm/srgb.cpp
parentae68a399cdf3d94aff28e497d5360bc288f2131d (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.cpp42
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);
+}