diff options
author | Mike Reed <reed@google.com> | 2017-06-09 10:51:52 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-06-09 17:13:53 +0000 |
commit | 01b2b83aba10bc3767d660cd619c1da58b5eb0b5 (patch) | |
tree | e9336afbe6552b1d603ed11645af813ea91c01bb /gm/colorfilterimagefilter.cpp | |
parent | 6a0feba05bd57e84103cebc695d4a217ec9e472e (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.cpp | 30 |
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); + } +} |