aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/colorfilterimagefilter.cpp
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2017-06-09 10:51:52 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-06-09 17:13:53 +0000
commit01b2b83aba10bc3767d660cd619c1da58b5eb0b5 (patch)
treee9336afbe6552b1d603ed11645af813ea91c01bb /gm/colorfilterimagefilter.cpp
parent6a0feba05bd57e84103cebc695d4a217ec9e472e (diff)
Extend composeshader to support a lerp parameter
Bug: skia: Change-Id: I3bbb2cb8d0a84fca0309654498548ebc94d8938f Reviewed-on: https://skia-review.googlesource.com/18460 Commit-Queue: Mike Reed <reed@google.com> Reviewed-by: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'gm/colorfilterimagefilter.cpp')
-rw-r--r--gm/colorfilterimagefilter.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/gm/colorfilterimagefilter.cpp b/gm/colorfilterimagefilter.cpp
index 5ef6379b9c..73b9f20d2b 100644
--- a/gm/colorfilterimagefilter.cpp
+++ b/gm/colorfilterimagefilter.cpp
@@ -223,3 +223,33 @@ DEF_SIMPLE_GM(colorfiltershader, canvas, 610, 610) {
canvas->translate(0, 150);
}
}
+
+DEF_SIMPLE_GM(mixershader, canvas, 800, 700) {
+ auto shaderA = GetResourceAsImage("mandrill_128.png")->makeShader(SkShader::kClamp_TileMode,
+ SkShader::kClamp_TileMode);
+ const SkColor colors[] = { SK_ColorGREEN, 0 };
+ auto shaderB = SkGradientShader::MakeRadial({60, 60}, 55, colors, nullptr, 2,
+ SkShader::kClamp_TileMode,
+ SkGradientShader::kInterpolateColorsInPremul_Flag,
+ nullptr);
+ const SkBlendMode modes[] = {
+ SkBlendMode::kSrc, SkBlendMode::kModulate, SkBlendMode::kColorBurn, SkBlendMode::kPlus,
+ SkBlendMode::kDstATop,
+ };
+ SkPaint paint;
+ SkRect r = SkRect::MakeWH(120, 120);
+
+ canvas->translate(10, 10);
+ for (auto mode : modes) {
+ canvas->save();
+ const int count = 6;
+ for (int x = 0; x < count; ++x) {
+ const float t = x * 1.0f / (count - 1);
+ paint.setShader(SkShader::MakeCompose(shaderA, shaderB, mode, t));
+ canvas->drawRect(r, paint);
+ canvas->translate(r.width() + 10, 0);
+ }
+ canvas->restore();
+ canvas->translate(0, r.height() + 20);
+ }
+}