### Struct

# Gsk PathBuilder

since: 4.14

#### Description [src]

    struct GskPathBuilder {
      /* No available fields */
    }

Constructs `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 `gsk_path_builder_add_circle()` or by adding from other paths like `gsk_path_builder_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 `gsk_path_builder_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 `gsk_path_builder_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.

Available since: 4.14

#### Constructors

###### gsk_path_builder_new

Create a new `GskPathBuilder` object.

since: 4.14

#### Instance methods

###### gsk_path_builder_add_cairo_path

Adds a Cairo path to the builder.

since: 4.14

###### gsk_path_builder_add_circle

Adds a circle as a new contour.

since: 4.14

###### gsk_path_builder_add_layout

Adds the outlines for the glyphs in `layout` to the builder.

since: 4.14

###### gsk_path_builder_add_path

Appends all of `path` to the builder.

since: 4.14

###### gsk_path_builder_add_rect

Adds a rectangle as a new contour.

since: 4.14

###### gsk_path_builder_add_reverse_path

Appends all of `path` to the builder, in reverse order.

since: 4.14

###### gsk_path_builder_add_rounded_rect

Adds a rounded rectangle as a new contour.

since: 4.14

###### gsk_path_builder_add_segment

Adds a segment of a path to the builder.

since: 4.14

###### gsk_path_builder_arc_to

Adds an elliptical arc from the current point to `x2`, `y2` with `x1`, `y1` determining the tangent directions.

since: 4.14

###### gsk_path_builder_close

Ends the current contour with a line back to the start point.

since: 4.14

###### gsk_path_builder_conic_to

Adds a conic curve from the current point to `x2`, `y2` with the given `weight` and `x1`, `y1` as the control point.

since: 4.14

###### gsk_path_builder_cubic_to

Adds a cubic Bézier curve from the current point to `x3`, `y3` with `x1`, `y1` and `x2`, `y2` as the control points.

since: 4.14

###### gsk_path_builder_free_to_path

Creates a new path from the current state of the builder, and unrefs the builder.

since: 4.14

###### gsk_path_builder_get_current_point

Gets the current point.

since: 4.14

###### gsk_path_builder_html_arc_to

Implements arc-to according to the HTML Canvas spec.

since: 4.14

###### gsk_path_builder_line_to

Draws a line from the current point to `x`, `y` and makes it the new current point.

since: 4.14

###### gsk_path_builder_move_to

Starts a new contour by placing the pen at `x`, `y`.

since: 4.14

###### gsk_path_builder_quad_to

Adds a quadratic Bézier curve from the current point to `x2`, `y2` with `x1`, `y1` as the control point.

since: 4.14

###### gsk_path_builder_ref

Acquires a reference on the given builder.

since: 4.14

###### gsk_path_builder_rel_arc_to

Adds an elliptical arc from the current point to `x2`, `y2` with `x1`, `y1` determining the tangent directions.

since: 4.14

###### gsk_path_builder_rel_conic_to

Adds a conic curve from the current point to `x2`, `y2` with the given `weight` and `x1`, `y1` as the control point.

since: 4.14

###### gsk_path_builder_rel_cubic_to

Adds a cubic Bézier curve from the current point to `x3`, `y3` with `x1`, `y1` and `x2`, `y2` as the control points.

since: 4.14

###### gsk_path_builder_rel_html_arc_to

Implements arc-to according to the HTML Canvas spec.

since: 4.14

###### gsk_path_builder_rel_line_to

Draws a line from the current point to a point offset from it by `x`, `y` and makes it the new current point.

since: 4.14

###### gsk_path_builder_rel_move_to

Starts a new contour by placing the pen at `x`, `y` relative to the current point.

since: 4.14

###### gsk_path_builder_rel_quad_to

Adds a quadratic Bézier curve from the current point to `x2`, `y2` with `x1`, `y1` the control point.

since: 4.14

###### gsk_path_builder_rel_svg_arc_to

Implements arc-to according to the SVG spec.

since: 4.14

###### gsk_path_builder_svg_arc_to

Implements arc-to according to the SVG spec.

since: 4.14

###### gsk_path_builder_to_path

Creates a new path from the given builder.

since: 4.14

###### gsk_path_builder_unref

Releases a reference on the given builder.

since: 4.14