8#ifndef SkPathBuilder_DEFINED
9#define SkPathBuilder_DEFINED
21#include <initializer_list>
37 SkRect computeBounds()
const;
64 return this->conicTo(pts[0], pts[1],
w);
72 return this->cubicTo(pts[0], pts[1], pts[2]);
80 return this->polylineTo(list.begin(),
SkToInt(list.size()));
89 return this->rQuadTo({x1, y1}, {x2, y2});
93 return this->rConicTo({x1, y1}, {x2, y2},
w);
97 return this->rCubicTo({x1, y1}, {x2, y2}, {x3, y3});
195 return this->addRect(rect, dir, 0);
199 return this->addOval(rect, dir, 1);
211 return this->addPolygon(list.begin(),
SkToInt(list.size()), isClosed);
218 void incReserve(
int extraPtCount,
int extraVerbCount);
220 this->incReserve(extraPtCount, extraPtCount);
238 unsigned fSegmentMask;
249 IsA fIsA = kIsA_JustMoves;
251 bool fIsACCW =
false;
253 int countVerbs()
const {
return fVerbs.
size(); }
257 fIsA = kIsA_MoreThanMoves;
258 if (fNeedsMoveVerb) {
259 this->moveTo(fLastMovePoint);
constexpr int SkToInt(S x)
SkPathBuilder & lineTo(SkScalar x, SkScalar y)
SkPathBuilder & polylineTo(const std::initializer_list< SkPoint > &list)
SkPathBuilder & toggleInverseFillType()
SkPathBuilder & operator=(const SkPathBuilder &)=default
SkPathBuilder(const SkPathBuilder &)=default
void incReserve(int extraPtCount)
SkPathBuilder & setFillType(SkPathFillType ft)
SkPathFillType fillType() const
SkPathBuilder & quadTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2)
SkPathBuilder & cubicTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, SkScalar x3, SkScalar y3)
SkPathBuilder & quadTo(const SkPoint pts[2])
SkPathBuilder & rQuadTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2)
SkPathBuilder & rLineTo(SkScalar x, SkScalar y)
SkPathBuilder & addPolygon(const std::initializer_list< SkPoint > &list, bool isClosed)
SkPathBuilder & conicTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, SkScalar w)
SkPathBuilder & addRRect(const SkRRect &rrect, SkPathDirection dir=SkPathDirection::kCW)
SkPathBuilder & moveTo(SkScalar x, SkScalar y)
SkPathBuilder & cubicTo(const SkPoint pts[3])
SkPathBuilder & addRect(const SkRect &rect, SkPathDirection dir=SkPathDirection::kCW)
SkPathBuilder & rConicTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, SkScalar w)
SkPathBuilder & setIsVolatile(bool isVolatile)
SkPathBuilder & conicTo(const SkPoint pts[2], SkScalar w)
@ kSmall_ArcSize
smaller of arc pair
@ kLarge_ArcSize
larger of arc pair
SkPathBuilder & rCubicTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, SkScalar x3, SkScalar y3)
SkPathBuilder & addOval(const SkRect &rect, SkPathDirection dir=SkPathDirection::kCW)
static sk_sp< SkImage > make(sk_sp< SkColorSpace > cs)
static constexpr SkPoint Make(float x, float y)