## GOBezierSpline

GOBezierSpline

## Synopsis

                        GOBezierSpline;
    GOBezierSpline *    go_bezier_spline_init               (double const *x,
                                                             double const *y,
                                                             int n,
                                                             gboolean closed);
    void                go_bezier_spline_destroy            (GOBezierSpline *sp);
    GOPath *            go_bezier_spline_to_path            (GOBezierSpline *sp);
    void                go_bezier_spline_to_cairo           (GOBezierSpline *sp,
                                                             cairo_t *cr,
                                                             gboolean horiz_flip);

## Description

## Details

### GOBezierSpline

    typedef struct {
    	double *x, *y;
    	int n;
    	gboolean closed;
    } GOBezierSpline;

### go_bezier_spline_init ()

    GOBezierSpline *    go_bezier_spline_init               (double const *x,
                                                             double const *y,
                                                             int n,
                                                             gboolean closed);

`x` and `y` values must be valid and finite. The returned structure contains the x and y coordinates of all control points, including the incoming data. the n and closed fields are just copies of the corresponding arguments.

`x` : | the x values
`y` : | the y values
`n` : | the number of x and y values
`closed` : | whether to return a closed curve or not
Returns : | a newly created struct GOBezierSpline instance which should be destroyed by a call to go_bezier_spline_destroy.

### go_bezier_spline_destroy ()

    void                go_bezier_spline_destroy            (GOBezierSpline *sp);

Destroys the given structures after cleaning all allocated fields.

`sp` : | a struct GOBezierSpline instance

### go_bezier_spline_to_path ()

    GOPath *            go_bezier_spline_to_path            (GOBezierSpline *sp);

Builds a GOPath using the control points evaluated in go_bezier_spline_init.

`sp` : | a struct GOBezierSpline instance returned by go_bezier_spline_init
Returns : | a newly created GOPath which should be destroyed by a call to go_path_free.

### go_bezier_spline_to_cairo ()

    void                go_bezier_spline_to_cairo           (GOBezierSpline *sp,
                                                             cairo_t *cr,
                                                             gboolean horiz_flip);

Renders the spline in \a cr

`sp` : | a struct GOBezierSpline instance returned by go_bezier_spline_init
`cr` : | a cairo context
`horiz_flip` : | whether to flip horizontally (for a RTL canvas).