PathBuilder
class PathBuilder
PathBuilder
provides a fluent API to creates a list of PathNode
, used to describe a path.
Properties
val nodes: List<PathNode>
Returns the list of PathNode
currently held in this builder.
Functions
fun close(): PathBuilder
Closes the current contour by adding a PathNode.Close
to nodes
.
fun moveTo(x: Float, y: Float): PathBuilder
Start a new contour at position (x
, y
) by adding a PathNode.MoveTo
to nodes
.
Parameters
x | The x coordinate of the start of the new contour |
y | The y coordinate of the start of the new contour |
fun moveToRelative(dx: Float, dy: Float): PathBuilder
Start a new contour at the offset (dx
, dy
) relative to the last path position by adding a
PathNode.RelativeMoveTo
to nodes
.
Parameters
dx | The x offset of the start of the new contour, relative to the last path position |
dy | The y offset of the start of the new contour, relative to the last path position |
fun lineTo(x: Float, y: Float): PathBuilder
Add a line from the last point to the position (x
, y
) by adding a PathNode.LineTo
to
nodes
. If no contour has been created by calling moveTo
first, the origin of the line is
set to (0, 0).
Parameters
x | The x coordinate of the end of the line |
y | The y coordinate of the end of the line |
fun lineToRelative(dx: Float, dy: Float): PathBuilder
Add a line from the last point to the offset (dx
, dy
) relative to the last point by
adding a PathNode.RelativeLineTo
to nodes
. If no contour has been created by calling
moveTo
first, the origin of the line is set to (0, 0).
Parameters
dx | The x offset of the end of the line, relative to the last path position |
dy | The y offset of the end of the line, relative to the last path position |
fun horizontalLineTo(x: Float): PathBuilder
Add a line from the last point to the position (x
, oy
), where oy
is the y coordinate of
the last point, by adding a PathNode.HorizontalTo
to nodes
. If no contour has been
created by calling moveTo
first, the origin of the line is set to (0, 0).
Parameters
x | The x coordinate of the end of the line |
fun horizontalLineToRelative(dx: Float): PathBuilder
Add a line from the last point to the position (dx
+ ox
, oy
), where ox
and oy
are
the x and y coordinates of the last point, by adding a PathNode.RelativeHorizontalTo
to
nodes
. If no contour has been created by calling moveTo
first, the origin of the line is
set to (0, 0).
Parameters
dx | The x offset of the end of the line, relative to the last path position |
fun verticalLineTo(y: Float): PathBuilder
Add a line from the last point to the position (ox
, y
), where ox
is the x coordinate of
the last point, by adding a PathNode.VerticalTo
to nodes
. If no contour has been created
by calling moveTo
first, the origin of the line is set to (0, 0).
Parameters
y | The y coordinate of the end of the line |
fun verticalLineToRelative(dy: Float): PathBuilder
Add a line from the last point to the position (ox
, dy
+ oy
), where ox
and oy
are
the x and y coordinates of the last point, by adding a PathNode.RelativeVerticalTo
to
nodes
. If no contour has been created by calling moveTo
first, the origin of the line is
set to (0, 0).
Parameters
dy | The y offset of the end of the line, relative to the last path position |
fun curveTo(x1: Float, y1: Float, x2: Float, y2: Float, x3: Float, y3: Float): PathBuilder
Add a cubic Bézier from the last point to the position (x3
, y3
), approaching the control
points (x1
, y1
) and (x2
, y2
), by adding a PathNode.CurveTo
to nodes
. If no
contour has been created by calling moveTo
first, the origin of the curve is set to (0, 0).
Parameters
x1 | The x coordinate of the first control point of the cubic curve |
y1 | The y coordinate of the first control point of the cubic curve |
x2 | The x coordinate of the second control point of the cubic curve |
y2 | The y coordinate of the second control point of the cubic curve |
x3 | The x coordinate of the end point of the cubic curve |
y3 | The y coordinate of the end point of the cubic curve |
fun curveToRelative(
dx1: Float,
dy1: Float,
dx2: Float,
dy2: Float,
dx3: Float,
dy3: Float,
): PathBuilder
Add a cubic Bézier by adding a PathNode.CurveTo
to nodes
. If no contour has been created
by calling moveTo
first, the origin of the curve is set to (0, 0). The cubic Bézier control
and end points are defined by offsets relative to the last point.
Parameters
dx1 | The x offset of the first control point of the cubic curve, relative to the last path position |
dy1 | The y offset of the first control point of the cubic curve, relative to the last path position |
dx2 | The x offset of the second control point of the cubic curve, relative to the last path position |
dy2 | The y offset of the second control point of the cubic curve, relative to the last path position |
dx3 | The x offset of the end point of the cubic curve, relative to the last path position |
dy3 | The y offset of the end point of the cubic curve, relative to the last path position |
fun reflectiveCurveTo(x1: Float, y1: Float, x2: Float, y2: Float): PathBuilder
Add a cubic Bézier from the last point to the position (x2
, y2
). The first control point
is the reflection of the second control point of the previous command. If there is no
previous command or the previous command is not a cubic Bézier, the first control point is
set to the last path position. The second control point is defined by (x1
, y1
). Calling
this method adds a PathNode.ReflectiveCurveTo
to nodes
. If no contour has been created by
calling moveTo
first, the origin of the curve is set to (0, 0).
Parameters
x1 | The x coordinate of the second control point of the cubic curve |
y1 | The y coordinate of the second control point of the cubic curve |
x2 | The x coordinate of the end point of the cubic curve |
y2 | The y coordinate of the end point of the cubic curve |
fun reflectiveCurveToRelative(dx1: Float, dy1: Float, dx2: Float, dy2: Float): PathBuilder
Add a cubic Bézier by adding a PathNode.RelativeReflectiveCurveTo
to nodes
. If no contour
has been created by calling moveTo
first, the origin of the curve is set to (0, 0). The
cubic Bézier second control point and end points are defined by offsets relative to the last
point. The reflective nature of the curve is described in reflectiveCurveTo
.
Parameters
dx1 | The x offset of the second control point of the cubic curve, relative to the last path position |
dy1 | The y offset of the second control point of the cubic curve, relative to the last path position |
dx2 | The x offset of the end point of the cubic curve, relative to the last path position |
dy2 | The y offset of the end point of the cubic curve, relative to the last path position |
fun quadTo(x1: Float, y1: Float, x2: Float, y2: Float): PathBuilder
Add a quadratic Bézier from the last point to the position (x2
, y2
), approaching the
control point (x1
, y1
), by adding a PathNode.QuadTo
to nodes
. If no contour has been
created by calling moveTo
first, the origin of the curve is set to (0, 0).
Parameters
x1 | The x coordinate of the control point of the quadratic curve |
y1 | The y coordinate of the control point of the quadratic curve |
x2 | The x coordinate of the end point of the quadratic curve |
y2 | The y coordinate of the end point of the quadratic curve |
fun quadToRelative(dx1: Float, dy1: Float, dx2: Float, dy2: Float): PathBuilder
Add a quadratic Bézier by adding a PathNode.RelativeQuadTo
to nodes
. If no contour has
been created by calling moveTo
first, the origin of the curve is set to (0, 0). The control
point and end point of the curve are defined by offsets relative to the last point.
Parameters
dx1 | The x offset of the control point of the quadratic curve, relative to the last path position |
dy1 | The y offset of the control point of the quadratic curve, relative to the last path position |
dx2 | The x offset of the end point of the quadratic curve, relative to the last path position |
dy2 | The y offset of the end point of the quadratic curve, relative to the last path position |
fun reflectiveQuadTo(x1: Float, y1: Float): PathBuilder
Add a quadratic Bézier from the last point to the position (x1
, y1
). The control point is
the reflection of the control point of the previous command. If there is no previous command
or the previous command is not a quadratic Bézier, the control point is set to the last path
position. Calling this method adds a PathNode.ReflectiveQuadTo
to nodes
. If no contour
has been created by calling moveTo
first, the origin of the curve is set to (0, 0).
Parameters
x1 | The x coordinate of the end point of the quadratic curve |
y1 | The y coordinate of the end point of the quadratic curve |
fun reflectiveQuadToRelative(dx1: Float, dy1: Float): PathBuilder
Add a quadratic Bézier by adding a PathNode.RelativeReflectiveQuadTo
to nodes
. If no
contour has been created by calling moveTo
first, the origin of the curve is set to (0, 0).
The quadratic Bézier end point is defined by an offset relative to the last point. The
reflective nature of the curve is described in reflectiveQuadTo
.
Parameters
dx1 | The x offset of the end point of the quadratic curve, relative to the last path position |
dy1 | The y offset of the end point of the quadratic curve, relative to the last path position |
fun arcTo(
horizontalEllipseRadius: Float,
verticalEllipseRadius: Float,
theta: Float,
isMoreThanHalf: Boolean,
isPositiveArc: Boolean,
x1: Float,
y1: Float,
): PathBuilder
Add an elliptical arc from the last point to the position (x1
, y1
) by adding
PathNode.ArcTo
to nodes
. If no contour has been created by calling moveTo
first, the
origin of the arc is set to (0, 0).
The ellipse is defined by 3 parameters:
horizontalEllipseRadius
andverticalEllipseRadius
to define the size of the ellipsetheta
to define the orientation (as an X-axis rotation) of the ellipse
In most situations, there are four arc candidates that can be drawn from the origin to (x1
,
y1
). Which of the arcs is used is influenced by isMoreThanHalf
and isPositiveArc
.
When isMoreThanHalf
is set to true
, the added arc will be chosen amongst the two
candidates that represent an arc sweep greater than or equal to 180 degrees.
When isPositiveArc
is set to true
, the added arc will be chosen amongst the two
candidates with a positive-angle direction (counter-clockwise)
Parameters
horizontalEllipseRadius | The horizontal radius of the ellipse |
verticalEllipseRadius | The vertical radius of the ellipse |
theta | The rotation of the ellipse around the X-axis, in degrees |
isMoreThanHalf | Defines whether to use an arc candidate with a sweep greater than or equal to 180 degrees |
isPositiveArc | Defines whether to use an arc candidate that's counter-clockwise or not |
x1 | The x coordinate of the end point of the arc |
y1 | The y coordinate of the end point of the arc |
fun arcToRelative(
a: Float,
b: Float,
theta: Float,
isMoreThanHalf: Boolean,
isPositiveArc: Boolean,
dx1: Float,
dy1: Float,
): PathBuilder
Add an elliptical arc by adding PathNode.RelativeArcTo
to nodes
. If no contour has been
created by calling moveTo
first, the origin of the arc is set to (0, 0). The arc Bézier end
point is defined by an offset relative to the last point.
The ellipse is defined by 3 parameters:
a
andb
to define the size of the ellipsetheta
to define the orientation (as an X-axis rotation) of the ellipse
In most situations, there are four arc candidates that can be drawn from the origin to the
end point. Which of the arcs is used is influenced by isMoreThanHalf
and isPositiveArc
.
When isMoreThanHalf
is set to true
, the added arc will be chosen amongst the two
candidates that represent an arc sweep greater than or equal to 180 degrees.
When isPositiveArc
is set to true
, the added arc will be chosen amongst the two
candidates with a positive-angle direction (counter-clockwise)
Parameters
a | The horizontal radius of the ellipse |
b | The vertical radius of the ellipse |
theta | The rotation of the ellipse around the X-axis, in degrees |
isMoreThanHalf | Defines whether to use an arc candidate with a sweep greater than or equal to 180 degrees |
isPositiveArc | Defines whether to use an arc candidate that's counter-clockwise or not |
dx1 | The x offset of the end point of the arc, relative to the last path position |
dy1 | The y offset of the end point of the arc, relative to the last path position |