aboutsummaryrefslogtreecommitdiffhomepage
path: root/experimental
diff options
context:
space:
mode:
authorGravatar Florin Malita <fmalita@chromium.org>2018-01-21 11:47:22 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-01-21 17:28:11 +0000
commit07853659fae395877fd5e09e92ae3b690ba3c222 (patch)
treea245f13b0b11fa41ad0e7c21f7c4d62df084a1d6 /experimental
parentee6de4b5fac0ab2adbb7789c16acef8e35062f7b (diff)
[sksg] Improved trim-path emulation
Skip zero-length trims, simplify dashing. TBR= Change-Id: I0b30d78a1eeb93131ba0bd915431ab21d05cc00a Reviewed-on: https://skia-review.googlesource.com/97663 Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'experimental')
-rw-r--r--experimental/sksg/geometry/SkSGTrimEffect.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/experimental/sksg/geometry/SkSGTrimEffect.cpp b/experimental/sksg/geometry/SkSGTrimEffect.cpp
index af0b640a4c..4ee85c8a73 100644
--- a/experimental/sksg/geometry/SkSGTrimEffect.cpp
+++ b/experimental/sksg/geometry/SkSGTrimEffect.cpp
@@ -38,11 +38,17 @@ void TrimEffect::onDraw(SkCanvas* canvas, const SkPaint& paint) const {
const auto start = SkScalarPin(fStart , 0, 1) * pathLen,
end = SkScalarPin(fEnd , 0, 1) * pathLen,
offset = SkScalarPin(fOffset, 0, 1) * pathLen,
- len = SkTMax<SkScalar>(end - start, 0);
+ len = end - start;
- const SkScalar dashes[4] = { 0, start, len, pathLen - end };
+ if (len <= 0) {
+ return;
+ }
+
+ const SkScalar dashes[] = { len, pathLen - len };
SkPaint dashedPaint(paint);
- dashedPaint.setPathEffect(SkDashPathEffect::Make(dashes, 4, -offset));
+ dashedPaint.setPathEffect(SkDashPathEffect::Make(dashes,
+ SK_ARRAY_COUNT(dashes),
+ -start - offset));
canvas->drawPath(path, dashedPaint);
}