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
`GskPathBuilder` is an auxiliary object for constructing `GskPath` objects.
A path is constructed like this:
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 with the center
and radius
.
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 rect
as a new contour to the path built by the builder.
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 rect
as a new contour to the path built in
this .
public void add_segment (Path path, PathPoint start, PathPoint end)
Adds to this the segment of path
from start
to end
.
public void arc_to (float x1, float y1, float x2, float y2)
Adds an elliptical arc from the current point to x3
, y3
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 x3
, y3
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 `GskPath` from the given builder.
public void unref ()
Releases a reference on the given builder.