### Function

# Gsk Pathparse

since: 4.14

#### Declaration [src]

    GskPath*
    gsk_path_parse (
      const char* string
    )

#### Description [src]

This is a convenience function that constructs a `GskPath` from a serialized form.

The string is expected to be in (a superset of) SVG path syntax, as e.g. produced by `gsk_path_to_string()`.

A high-level summary of the syntax:

- `M x y` Move to `(x, y)`
- `L x y` Add a line from the current point to `(x, y)`
- `Q x1 y1 x2 y2` Add a quadratic Bézier from the current point to `(x2, y2)`, with control point `(x1, y1)`
- `C x1 y1 x2 y2 x3 y3` Add a cubic Bézier from the current point to `(x3, y3)`, with control points `(x1, y1)` and `(x2, y2)`
- `Z` Close the contour by drawing a line back to the start point
- `H x` Add a horizontal line from the current point to the given x value
- `V y` Add a vertical line from the current point to the given y value
- `T x2 y2` Add a quadratic Bézier, using the reflection of the previous segments’ control point as control point
- `S x2 y2 x3 y3` Add a cubic Bézier, using the reflection of the previous segments’ second control point as first control point
- `A rx ry r l s x y` Add an elliptical arc from the current point to `(x, y)` with radii rx and ry. See the SVG documentation for how the other parameters influence the arc.
- `O x1 y1 x2 y2 w` Add a rational quadratic Bézier from the current point to `(x2, y2)` with control point `(x1, y1)` and weight `w`.

All the commands have lowercase variants that interpret coordinates relative to the current point.

The `O` command is an extension that is not supported in SVG.

Available since: 4.14

#### Parameters

`string`

  Type: `const char*`

  A string.

  The data is owned by the caller of the function.
  The value is a NUL terminated UTF-8 string.

#### Return value

Type: `GskPath`

A new `GskPath`, or `NULL` if `string` could not be parsed.

The caller of the function takes ownership of the data, and is responsible for freeing it.
The return value can be `NULL`.