[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>
diff --git a/experimental/sksg/geometry/SkSGTrimEffect.cpp b/experimental/sksg/geometry/SkSGTrimEffect.cpp
index af0b640..4ee85c8 100644
--- a/experimental/sksg/geometry/SkSGTrimEffect.cpp
+++ b/experimental/sksg/geometry/SkSGTrimEffect.cpp
@@ -38,11 +38,17 @@
     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);
 }