5#ifndef FLUTTER_IMPELLER_GEOMETRY_PATH_BUILDER_H_
6#define FLUTTER_IMPELLER_GEOMETRY_PATH_BUILDER_H_
35 void Reserve(
size_t point_size,
size_t verb_size);
59 bool relative =
false);
69 bool relative =
false);
78 bool use_center =
false);
157 Point subpath_start_;
159 Path::Data prototype_;
165 PathBuilder& AddRoundedRectBottomRight(
Rect rect, RoundingRadii radii);
169 void AddContourComponent(
const Point& destination,
bool is_closed =
false);
171 void SetContourClosed(
bool is_closed);
173 void AddLinearComponent(
const Point& p1,
const Point& p2);
175 void AddQuadraticComponent(
const Point& p1,
const Point& cp,
const Point& p2);
177 void AddCubicComponent(
const Point& p1,
187 std::optional<std::pair<Point, Point>> GetMinMaxCoveragePoints()
const;
static SkScalar center(float pos0, float pos1)
PathBuilder & AddRect(Rect rect)
Path TakePath(FillType fill=FillType::kNonZero)
PathBuilder & AddArc(const Rect &oval_bounds, Radians start, Radians sweep, bool use_center=false)
PathBuilder & LineTo(Point point, bool relative=false)
Insert a line from the current position to point.
PathBuilder & MoveTo(Point point, bool relative=false)
PathBuilder & SetBounds(Rect bounds)
Set the bounding box that will be used by Path.GetBoundingBox in place of performing the computation.
void Reserve(size_t point_size, size_t verb_size)
Reserve [point_size] points and [verb_size] verbs in the underlying path buffer.
PathBuilder & AddOval(const Rect &rect)
static constexpr const Scalar kArcApproximationMagic
PathBuilder & AddCircle(const Point ¢er, Scalar radius)
PathBuilder & AddPath(const Path &path)
Path CopyPath(FillType fill=FillType::kNonZero)
PathBuilder & VerticalLineTo(Scalar y, bool relative=false)
PathBuilder & Shift(Point offset)
Transform the existing path segments and contours by the given offset.
PathBuilder & AddLine(const Point &p1, const Point &p2)
Move to point p1, then insert a line from p1 to p2.
PathBuilder & AddRoundedRect(Rect rect, RoundingRadii radii)
PathBuilder & AddQuadraticCurve(Point p1, Point cp, Point p2)
Move to point p1, then insert a quadradic curve from p1 to p2 with the control point cp.
PathBuilder & CubicCurveTo(Point controlPoint1, Point controlPoint2, Point point, bool relative=false)
Insert a cubic curve from the curren position to point using the control points controlPoint1 and con...
PathBuilder & AddCubicCurve(Point p1, Point cp1, Point cp2, Point p2)
Move to point p1, then insert a cubic curve from p1 to p2 with control points cp1 and cp2.
PathBuilder & HorizontalLineTo(Scalar x, bool relative=false)
PathBuilder & SetConvexity(Convexity value)
PathBuilder & QuadraticCurveTo(Point controlPoint, Point point, bool relative=false)
Insert a quadradic curve from the current position to point using the control point controlPoint.
Paths are lightweight objects that describe a collection of linear, quadratic, or cubic segments....
RoundingRadii(Scalar radius)
RoundingRadii(Point radii)
RoundingRadii(Scalar p_top_left, Scalar p_bottom_left, Scalar p_top_right, Scalar p_bottom_right)
RoundingRadii(Size radii)
constexpr bool IsZero() const