PathBuilder
Object Hierarchy:
Description:
[ CCode ( ref_function = "gsk_path_builder_ref" , type_id = "gsk_path_builder_get_type ()" , unref_function = "gsk_path_builder_unref" ) ]
[ Compact ]
[ Version ( since = "4.14" ) ]
public class PathBuilder
Constructs `GskPath` objects.
A path is constructed like this:
```c GskPath * construct_path (void) { GskPathBuilder *builder;
builder = gsk_path_builder_new ();
// add contours to the path here
return gsk_path_builder_free_to_path (builder); ```
Adding contours to the path can be done in two ways. The easiest option is to use the `gsk_path_builder_add_*` group of functions that
add predefined contours to the current path, either common shapes like [method@Gsk.PathBuilder.add_circle] or by adding from other paths
like [method@Gsk.PathBuilder.add_path].
The `gsk_path_builder_add_*` methods always add complete contours, and do not use or modify the current point.
The other option is to define each line and curve manually with the `gsk_path_builder_*_to` group of functions. You start with a call to
[method@Gsk.PathBuilder.move_to] to set the starting point and then use multiple calls to any of the drawing functions to move the pen
along the plane. Once you are done, you can call [method@Gsk.PathBuilder.close] to close the path by connecting it back with a line to the
starting point.
This is similar to how paths are drawn in Cairo.
Note that `GskPathBuilder` will reduce the degree of added Bézier curves as much as possible, to simplify rendering.
Content:
Creation methods:
Methods:
- public unowned PathBuilder @ref ()
Acquires a reference on the given builder.
- public void add_cairo_path (Path path)
Adds a Cairo path to the builder.
- public void add_circle (Point center, float radius)
Adds a circle as a new contour.
- public void add_layout (Layout layout)
Adds the outlines for the glyphs in layout to the
builder.
- public void add_path (Path path)
Appends all of path to the builder.
- public void add_rect (Rect rect)
Adds a rectangle as a new contour.
- public void add_reverse_path (Path path)
Appends all of path to the builder, in reverse order.
- public void add_rounded_rect (RoundedRect rect)
Adds a rounded rectangle as a new contour.
- public void add_segment (Path path, PathPoint start, PathPoint end)
Adds a segment of a path to the builder.
- public void arc_to (float x1, float y1, float x2, float y2)
Adds an elliptical arc from the current point to x2,
y2 with x1, y1 determining the tangent directions.
- public void close ()
Ends the current contour with a line back to the start point.
- public void conic_to (float x1, float y1, float x2, float y2, float weight)
Adds a
conic curve from the current point to
x2, y2 with the given weight and x1, y1 as the control point.
- public void cubic_to (float x1, float y1, float x2, float y2, float x3, float y3)
Adds a [cubic Bézier curve](https://en.
- public unowned Point? get_current_point ()
Gets the current point.
- public void html_arc_to (float x1, float y1, float x2, float y2, float radius)
Implements arc-to according to the HTML Canvas spec.
- public void line_to (float x, float y)
Draws a line from the current point to x, y
and makes it the new current point.
- public void move_to (float x, float y)
Starts a new contour by placing the pen at x, y
.
- public void quad_to (float x1, float y1, float x2, float y2)
Adds a [quadratic Bézier curve](https://en.
- public void rel_arc_to (float x1, float y1, float x2, float y2)
Adds an elliptical arc from the current point to x2,
y2 with x1, y1 determining the tangent directions.
- public void rel_conic_to (float x1, float y1, float x2, float y2, float weight)
Adds a
conic curve from the current point to
x2, y2 with the given weight and x1, y1 as the control point.
- public void rel_cubic_to (float x1, float y1, float x2, float y2, float x3, float y3)
Adds a [cubic Bézier curve](https://en.
- public void rel_html_arc_to (float x1, float y1, float x2, float y2, float radius)
Implements arc-to according to the HTML Canvas spec.
- public void rel_line_to (float x, float y)
Draws a line from the current point to a point offset from it by
x, y and makes it the new current point.
- public void rel_move_to (float x, float y)
Starts a new contour by placing the pen at x, y
relative to the current point.
- public void rel_quad_to (float x1, float y1, float x2, float y2)
Adds a [quadratic Bézier curve](https://en.
- public void rel_svg_arc_to (float rx, float ry, float x_axis_rotation, bool large_arc, bool positive_sweep, float x, float y)
Implements arc-to according to the SVG spec.
- public void svg_arc_to (float rx, float ry, float x_axis_rotation, bool large_arc, bool positive_sweep, float x, float y)
Implements arc-to according to the SVG spec.
- public Path to_path ()
Creates a new path from the given builder.
- public void unref ()
Releases a reference on the given builder.