PathBuilder
Object Hierarchy:
Gsk.PathBuilder
Gsk.PathBuilder
Gsk.PathBuilder
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.