aboutsummaryrefslogtreecommitdiffhomepage
path: root/experimental/sksg/geometry
diff options
context:
space:
mode:
Diffstat (limited to 'experimental/sksg/geometry')
-rw-r--r--experimental/sksg/geometry/SkSGTrimEffect.cpp17
-rw-r--r--experimental/sksg/geometry/SkSGTrimEffect.h13
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;
};