diff options
author | Florin Malita <fmalita@chromium.org> | 2017-07-07 09:23:16 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-07-11 14:45:21 +0000 |
commit | 327290fcafab2e702c839da8f3b7b29428294ea2 (patch) | |
tree | 822c353942bf6673eea7deb1f9554d04254c3abe /src/shaders/gradients/SkGradientShader.cpp | |
parent | 012893b4aad813254881fd77f31399cf3d9c965d (diff) |
Devolve SkTwoPointConicalGradient to SkRadialGradient when possible
Blink attempts this optimization explicitly, but Skia seems like a
better home for it.
Change-Id: I2ecd8d0b4e91fbd9be6f89005319b2d9f04836ba
Reviewed-on: https://skia-review.googlesource.com/21821
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'src/shaders/gradients/SkGradientShader.cpp')
-rw-r--r-- | src/shaders/gradients/SkGradientShader.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/shaders/gradients/SkGradientShader.cpp b/src/shaders/gradients/SkGradientShader.cpp index 6e952ae17f..213db4e4ff 100644 --- a/src/shaders/gradients/SkGradientShader.cpp +++ b/src/shaders/gradients/SkGradientShader.cpp @@ -1175,6 +1175,11 @@ sk_sp<SkShader> SkGradientShader::MakeTwoPointConical(const SkPoint& start, if (startRadius < 0 || endRadius < 0) { return nullptr; } + if (SkScalarNearlyZero((start - end).length()) && SkScalarNearlyZero(startRadius)) { + // We can treat this gradient as radial, which is faster. + return MakeRadial(start, endRadius, colors, std::move(colorSpace), pos, colorCount, + mode, flags, localMatrix); + } if (!valid_grad(colors, pos, colorCount, mode)) { return nullptr; } |