 |
Skia
2D Graphics Library
|
Go to the documentation of this file.
8 #ifndef SkPathBuilder_DEFINED
9 #define SkPathBuilder_DEFINED
14 #include "include/private/SkTDArray.h"
55 return this->conicTo(pts[0], pts[1], w);
63 return this->cubicTo(pts[0], pts[1], pts[2]);
71 return this->polylineTo(list.begin(), SkToInt(list.size()));
80 return this->rQuadTo({x1, y1}, {x2, y2});
84 return this->rConicTo({x1, y1}, {x2, y2}, w);
88 return this->rCubicTo({x1, y1}, {x2, y2}, {x3, y3});
186 return this->addRect(rect, dir, 0);
190 return this->addOval(rect, dir, 1);
202 return this->addPolygon(list.begin(), SkToInt(list.size()), isClosed);
211 this->incReserve(extraPtCount, extraPtCount);
222 SkTDArray<SkPoint> fPts;
223 SkTDArray<uint8_t> fVerbs;
224 SkTDArray<SkScalar> fConicWeights;
229 unsigned fSegmentMask;
239 IsA fIsA = kIsA_JustMoves;
241 bool fIsACCW =
false;
244 SkPathConvexity fOverrideConvexity = SkPathConvexity::kUnknown;
246 int countVerbs()
const {
return fVerbs.count(); }
250 fIsA = kIsA_MoreThanMoves;
251 if (fNeedsMoveVerb) {
252 this->moveTo(fLastMovePoint);
261 void privateSetConvexity(SkPathConvexity c) { fOverrideConvexity = c; }
263 friend class SkPathPriv;
SkPathBuilder & rConicTo(SkPoint p1, SkPoint p2, SkScalar w)
SkPathBuilder & addPolygon(const std::initializer_list< SkPoint > &list, bool isClosed)
Definition: SkPathBuilder.h:201
SkPathBuilder & moveTo(SkPoint pt)
SkPathBuilder & addPath(const SkPath &)
SkPathBuilder & cubicTo(SkPoint pt1, SkPoint pt2, SkPoint pt3)
SkPathBuilder(const SkPathBuilder &)=default
SkPathBuilder & addOval(const SkRect &, SkPathDirection, unsigned startIndex)
SkPathBuilder & conicTo(SkPoint pt1, SkPoint pt2, SkScalar w)
SkPathBuilder(SkPathFillType)
SkPathBuilder & lineTo(SkPoint pt)
SkPathBuilder & addArc(const SkRect &oval, SkScalar startAngleDeg, SkScalar sweepAngleDeg)
Appends arc to the builder, as the start of new contour.
static constexpr SkPoint Make(SkScalar x, SkScalar y)
Sets fX to x, fY to y.
Definition: SkPoint.h:170
SkPathBuilder & rCubicTo(SkPoint pt1, SkPoint pt2, SkPoint pt3)
void incReserve(int extraPtCount)
Definition: SkPathBuilder.h:210
SkPathBuilder & addRect(const SkRect &rect, SkPathDirection dir=SkPathDirection::kCW)
Definition: SkPathBuilder.h:185
SkPathDirection
Definition: SkPathTypes.h:36
SkPathBuilder & lineTo(SkScalar x, SkScalar y)
Definition: SkPathBuilder.h:42
SkRect computeBounds() const
SkPathBuilder & cubicTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, SkScalar x3, SkScalar y3)
Definition: SkPathBuilder.h:59
SkPathBuilder & polylineTo(const std::initializer_list< SkPoint > &list)
Definition: SkPathBuilder.h:70
SkPathBuilder & moveTo(SkScalar x, SkScalar y)
Definition: SkPathBuilder.h:39
SkPathBuilder & arcTo(const SkRect &oval, SkScalar startAngleDeg, SkScalar sweepAngleDeg, bool forceMoveTo)
Appends arc to the builder.
SkPathFillType
Definition: SkPathTypes.h:13
SkPathBuilder & quadTo(const SkPoint pts[2])
Definition: SkPathBuilder.h:48
SkPathBuilder & addCircle(SkScalar center_x, SkScalar center_y, SkScalar radius, SkPathDirection dir=SkPathDirection::kCW)
SkPathBuilder & rCubicTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, SkScalar x3, SkScalar y3)
Definition: SkPathBuilder.h:87
SkPathBuilder & conicTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, SkScalar w)
Definition: SkPathBuilder.h:51
SkPathBuilder & addRRect(const SkRRect &rrect, SkPathDirection dir=SkPathDirection::kCW)
Definition: SkPathBuilder.h:192
SkPathBuilder & polylineTo(const SkPoint pts[], int count)
Definition: SkPoint.h:160
SkPathBuilder & rLineTo(SkScalar x, SkScalar y)
Definition: SkPathBuilder.h:77
SkPathBuilder & addRRect(const SkRRect &, SkPathDirection, unsigned startIndex)
#define SK_API
Definition: SkTypes.h:181
SkPathBuilder & offset(SkScalar dx, SkScalar dy)
SkPathBuilder(const SkPath &)
SkPathBuilder & rLineTo(SkPoint pt)
SkPathBuilder & conicTo(const SkPoint pts[2], SkScalar w)
Definition: SkPathBuilder.h:54
void incReserve(int extraPtCount, int extraVerbCount)
SkPathBuilder & quadTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2)
Definition: SkPathBuilder.h:45
SkPathBuilder & toggleInverseFillType()
Definition: SkPathBuilder.h:216
SkPathBuilder & operator=(const SkPathBuilder &)=default
SkPathBuilder & rConicTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, SkScalar w)
Definition: SkPathBuilder.h:83
SkPathBuilder & setIsVolatile(bool isVolatile)
Definition: SkPathBuilder.h:34
SkPathBuilder & arcTo(SkPoint r, SkScalar xAxisRotate, ArcSize largeArc, SkPathDirection sweep, SkPoint xy)
Appends arc to SkPath.
SkPathFillType fillType() const
Definition: SkPathBuilder.h:27
float SkScalar
Definition: SkScalar.h:16
SkPathBuilder & setFillType(SkPathFillType ft)
Definition: SkPathBuilder.h:33
SkPathBuilder & addPolygon(const SkPoint pts[], int count, bool isClosed)
@ kCW
clockwise direction for adding closed contours
SkPathBuilder & addOval(const SkRect &rect, SkPathDirection dir=SkPathDirection::kCW)
Definition: SkPathBuilder.h:188
SkPathBuilder & addRect(const SkRect &, SkPathDirection, unsigned startIndex)
SkPathBuilder & arcTo(SkPoint p1, SkPoint p2, SkScalar radius)
Appends arc to SkPath, after appending line if needed.
SkPathBuilder & cubicTo(const SkPoint pts[3])
Definition: SkPathBuilder.h:62
@ kLarge_ArcSize
larger of arc pair
Definition: SkPathBuilder.h:134
SkPathBuilder & rQuadTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2)
Definition: SkPathBuilder.h:79
SkPathBuilder & operator=(const SkPath &)
SkPathBuilder & quadTo(SkPoint pt1, SkPoint pt2)
Definition: SkPathBuilder.h:16
@ kSmall_ArcSize
smaller of arc pair
Definition: SkPathBuilder.h:133
SkPathBuilder & rQuadTo(SkPoint pt1, SkPoint pt2)
ArcSize
Definition: SkPathBuilder.h:132