diff options
Diffstat (limited to 'experimental/sksg/geometry')
-rw-r--r-- | experimental/sksg/geometry/SkSGTrimEffect.cpp | 17 | ||||
-rw-r--r-- | experimental/sksg/geometry/SkSGTrimEffect.h | 13 |
2 files changed, 8 insertions, 22 deletions
diff --git a/experimental/sksg/geometry/SkSGTrimEffect.cpp b/experimental/sksg/geometry/SkSGTrimEffect.cpp index fea8249161..b8c59bcfe8 100644 --- a/experimental/sksg/geometry/SkSGTrimEffect.cpp +++ b/experimental/sksg/geometry/SkSGTrimEffect.cpp @@ -42,22 +42,7 @@ SkRect TrimEffect::onRevalidate(InvalidationController* ic, const SkMatrix& ctm) const auto childbounds = fChild->revalidate(ic, ctm); const auto path = fChild->asPath(); - // TODO: relocate these funky semantics to a Skottie composite helper, - // and refactor TrimEffect as a thin SkTrimpPathEffect wrapper. - auto start = SkTMin(fStart, fEnd) + fOffset, - stop = SkTMax(fStart, fEnd) + fOffset; - - sk_sp<SkPathEffect> trim; - if (stop - start < 1) { - start -= SkScalarFloorToScalar(start); - stop -= SkScalarFloorToScalar(stop); - - trim = start <= stop - ? SkTrimPathEffect::Make(start, stop, SkTrimPathEffect::Mode::kNormal) - : SkTrimPathEffect::Make(stop, start, SkTrimPathEffect::Mode::kInverted); - } - - if (trim) { + if (auto trim = SkTrimPathEffect::Make(fStart, fStop, fMode)) { fTrimmedPath.reset(); SkStrokeRec rec(SkStrokeRec::kHairline_InitStyle); SkAssertResult(trim->filterPath(&fTrimmedPath, path, &rec, &childbounds)); diff --git a/experimental/sksg/geometry/SkSGTrimEffect.h b/experimental/sksg/geometry/SkSGTrimEffect.h index 4e950a7ade..18f15921e7 100644 --- a/experimental/sksg/geometry/SkSGTrimEffect.h +++ b/experimental/sksg/geometry/SkSGTrimEffect.h @@ -11,6 +11,7 @@ #include "SkSGGeometryNode.h" #include "SkPath.h" +#include "SkTrimPathEffect.h" class SkCanvas; class SkPaint; @@ -28,9 +29,9 @@ public: ~TrimEffect() override; - SG_ATTRIBUTE(Start , SkScalar, fStart ) - SG_ATTRIBUTE(End , SkScalar, fEnd ) - SG_ATTRIBUTE(Offset, SkScalar, fOffset) + SG_ATTRIBUTE(Start , SkScalar , fStart ) + SG_ATTRIBUTE(Stop , SkScalar , fStop ) + SG_ATTRIBUTE(Mode , SkTrimPathEffect::Mode, fMode ) protected: void onClip(SkCanvas*, bool antiAlias) const override; @@ -45,9 +46,9 @@ private: const sk_sp<GeometryNode> fChild; SkPath fTrimmedPath; - SkScalar fStart = 0, // starting t - fEnd = 1, // ending t - fOffset = 0; // t offset + SkScalar fStart = 0, + fStop = 1; + SkTrimPathEffect::Mode fMode = SkTrimPathEffect::Mode::kNormal; using INHERITED = GeometryNode; }; |