diff options
author | Florin Malita <fmalita@chromium.org> | 2018-01-21 11:47:22 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-01-21 17:28:11 +0000 |
commit | 07853659fae395877fd5e09e92ae3b690ba3c222 (patch) | |
tree | a245f13b0b11fa41ad0e7c21f7c4d62df084a1d6 /experimental | |
parent | ee6de4b5fac0ab2adbb7789c16acef8e35062f7b (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.cpp | 12 |
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); } |