36 : fChild(
std::move(child)) {
65 fChild->revalidate(ic, ctm);
74 SkPath path = child->asPath();
98 const auto m = TransformPriv::As<SkMatrix>(fTransform);
100 SkPath path = child->asPath();
109 if (intervals.empty()) {
113 const auto* intervals_ptr = intervals.data();
114 auto intervals_count = intervals.size();
117 if (intervals_count & 1) {
118 intervals_count *= 2;
119 storage.
resize(intervals_count);
120 intervals_ptr = storage.
data();
122 std::copy(intervals.begin(), intervals.end(), storage.
begin());
123 std::copy(intervals.begin(), intervals.end(), storage.
begin() + intervals.size());
132 SkPath path = child->asPath();
134 if (
const auto dash_patheffect =
make_dash(fIntervals, fPhase)) {
136 SkASSERT(!dash_patheffect->needsCTM());
137 dash_patheffect->filterPath(&path, path, &rec,
nullptr);
144 SkPath path = child->asPath();
156 SkPath path = child->asPath();
161 paint.setStrokeWidth(std::abs(fOffset) * 2);
162 paint.setStrokeMiter(fMiterLimit);
163 paint.setStrokeJoin(fJoin);
static sk_sp< SkPathEffect > make_dash()
static void round(SkPoint *p)
#define SkAssertResult(cond)
static SkCanvas * trim(SkCanvas *canvas, SkScalar width, SkScalar height, const SkRect *content)
@ kDifference_SkPathOp
subtract the op path from the first path
@ kUnion_SkPathOp
union (inclusive-or) the two paths
#define INHERITED(method,...)
static bool SkScalarNearlyZero(SkScalar x, SkScalar tolerance=SK_ScalarNearlyZero)
constexpr int SkToInt(S x)
void clipPath(const SkPath &path, SkClipOp op, bool doAntiAlias)
void drawPath(const SkPath &path, const SkPaint &paint)
static sk_sp< SkPathEffect > Make(SkScalar radius)
static sk_sp< SkPathEffect > Make(const SkScalar intervals[], int count, SkScalar phase)
static const SkMatrix & I()
@ kStroke_Style
set to stroke geometry
static void ShrinkToFit(SkPath *path)
SkRect computeTightBounds() const
bool contains(SkScalar x, SkScalar y) const
static sk_sp< SkPathEffect > Make(SkScalar startT, SkScalar stopT, Mode=Mode::kNormal)
void resize(size_t count)
SkPath onRevalidateEffect(const sk_sp< GeometryNode > &) override
void onDraw(SkCanvas *, const SkPaint &) const final
~GeometryEffect() override
bool onContains(const SkPoint &) const final
virtual SkPath onRevalidateEffect(const sk_sp< GeometryNode > &)=0
void onClip(SkCanvas *, bool antiAlias) const final
GeometryEffect(sk_sp< GeometryNode >)
SkRect onRevalidate(InvalidationController *, const SkMatrix &) final
SkPath onAsPath() const final
void observeInval(const sk_sp< Node > &)
void unobserveInval(const sk_sp< Node > &)
SkPath onRevalidateEffect(const sk_sp< GeometryNode > &) override
SkPath onRevalidateEffect(const sk_sp< GeometryNode > &) override
SkPath onRevalidateEffect(const sk_sp< GeometryNode > &) override
SK_API bool FillPathWithPaint(const SkPath &src, const SkPaint &paint, SkPath *dst, const SkRect *cullRect, SkScalar resScale=1)
static SkColor4f transform(SkColor4f c, SkColorSpace *src, SkColorSpace *dst)