aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Mike Klein <mtklein@chromium.org>2017-05-06 12:45:50 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-05-08 15:17:11 +0000
commit9bb75afed422f087ee68a53956c46b83c0aade34 (patch)
tree2a4b360bc25ed7026727e0901cc18cc228824909 /src
parentc2dd5ed93753dc54619fb713ebcf38bd1af08592 (diff)
Tighten up gradient clamp logic.
This is just a little refactor. Shouldn't change any logic or pixels. Change-Id: I782df78f2d693dc7e35c286b049730e763aa3dc8 Reviewed-on: https://skia-review.googlesource.com/15653 Reviewed-by: Florin Malita <fmalita@chromium.org> Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
Diffstat (limited to 'src')
-rw-r--r--src/effects/gradients/SkLinearGradient.cpp24
1 files changed, 9 insertions, 15 deletions
diff --git a/src/effects/gradients/SkLinearGradient.cpp b/src/effects/gradients/SkLinearGradient.cpp
index 0b51da1ec1..1c3dbffa99 100644
--- a/src/effects/gradients/SkLinearGradient.cpp
+++ b/src/effects/gradients/SkLinearGradient.cpp
@@ -92,21 +92,15 @@ bool SkLinearGradient::adjustMatrixAndAppendStages(SkArenaAlloc* alloc,
SkVector dx = matrix->mapVector(1, 0);
if (dx.fX >= 4) { return false; }
- auto* limit = alloc->make<float>(1.0f);
- if (fColorCount == 2 && fOrigPos == nullptr) {
- switch (fTileMode) {
- case kClamp_TileMode: p->append(SkRasterPipeline::clamp_x, limit); break;
- case kMirror_TileMode: p->append(SkRasterPipeline::mirror_x, limit); break;
- case kRepeat_TileMode: p->append(SkRasterPipeline::repeat_x, limit); break;
- }
- } else {
- switch (fTileMode) {
- // The search strategy does not need clamping. It has implicit hard stops at the
- // first and last stop.
- case kClamp_TileMode: break;
- case kMirror_TileMode: p->append(SkRasterPipeline::mirror_x, limit); break;
- case kRepeat_TileMode: p->append(SkRasterPipeline::repeat_x, limit); break;
- }
+ switch(fTileMode) {
+ case kMirror_TileMode: p->append(SkRasterPipeline::mirror_x, alloc->make<float>(1)); break;
+ case kRepeat_TileMode: p->append(SkRasterPipeline::repeat_x, alloc->make<float>(1)); break;
+ case kClamp_TileMode:
+ if (fColorCount == 2 && fOrigPos == nullptr) {
+ // The general strategy does not need clamping due to implicit hard stops at 0 and 1,
+ // but the 2-point specialization must be clamped.
+ p->append(SkRasterPipeline::clamp_x, alloc->make<float>(1));
+ }
}
return true;
}