## GOPath

GOPath

## Functions

void | (*GOPathClosePathFunc) ()
void | (*GOPathCurveToFunc) ()
void | (*GOPathLineToFunc) ()
void | (*GOPathMoveToFunc) ()
GOPath * | go_path_append ()
void | go_path_arc ()
void | go_path_arc_to ()
void | go_path_clear ()
void | go_path_close ()
GOPath * | go_path_copy ()
GOPath * | go_path_copy_restricted ()
void | go_path_curve_to ()
void | go_path_free ()
GOPathOptions | go_path_get_options ()
void | go_path_interpret ()
void | go_path_interpret_full ()
void | go_path_line_to ()
void | go_path_move_to ()
GOPath * | go_path_new ()
GOPath * | go_path_new_from_odf_enhanced_path ()
GOPath * | go_path_new_from_svg ()
void | go_path_pie_wedge ()
void | go_path_rectangle ()
GOPath * | go_path_ref ()
void | go_path_ring_wedge ()
void | go_path_set_options ()
void | go_path_to_cairo ()
char * | go_path_to_svg ()
GOPath * | go_path_scale ()

## Types and Values

| GOPath
enum | GOPathDirection
enum | GOPathOptions
| GOPathPoint

## Object Hierarchy

        GBoxed
        ╰── GOPath

## Description

## Functions

### GOPathClosePathFunc ()

    void
    (*GOPathClosePathFunc) (void *closure);

### GOPathCurveToFunc ()

    void
    (*GOPathCurveToFunc) (void *closure,
                          GOPathPoint const *point0,
                          GOPathPoint const *point1,
                          GOPathPoint const *point2);

### GOPathLineToFunc ()

    void
    (*GOPathLineToFunc) (void *closure,
                         GOPathPoint const *point);

### GOPathMoveToFunc ()

    void
    (*GOPathMoveToFunc) (void *closure,
                         GOPathPoint const *point);

### go_path_append ()

    GOPath *
    go_path_append (GOPath *path1,
                    GOPath const *path2);

Appends `path2` at the end of `path1` .

#### Parameters

path1 | GOPath |
path2 | GOPath |

#### Returns

`path1`

### go_path_arc ()

    void
    go_path_arc (GOPath *path,
                 double cx,
                 double cy,
                 double rx,
                 double ry,
                 double th0,
                 double th1);

### go_path_arc_to ()

    void
    go_path_arc_to (GOPath *path,
                    double cx,
                    double cy,
                    double rx,
                    double ry,
                    double th0,
                    double th1);

### go_path_clear ()

    void
    go_path_clear (GOPath *path);

### go_path_close ()

    void
    go_path_close (GOPath *path);

### go_path_copy ()

    GOPath *
    go_path_copy (GOPath const *path);

#### Parameters

path | GOPath |

#### Returns

a new GOPath identical to `path` .

### go_path_copy_restricted ()

    GOPath *
    go_path_copy_restricted (GOPath const *path,
                             gssize start,
                             gssize end);

Copies actions between start and end will be copied inside a new GOPath.

#### Parameters

path | GOPath |
start | the first action to copy |
end | the second action to copy |

#### Returns

a new GOPath. If start or end is negative, it is not taken into account.

Since: 0.10.5

### go_path_curve_to ()

    void
    go_path_curve_to (GOPath *path,
                      double x0,
                      double y0,
                      double x1,
                      double y1,
                      double x2,
                      double y2);

### go_path_free ()

    void
    go_path_free (GOPath *path);

Decrements references count and frees all memory allocated for `path` if references count reaches 0.

#### Parameters

path | a GOPath |

### go_path_get_options ()

    GOPathOptions
    go_path_get_options (GOPath const *path);

### go_path_interpret ()

    void
    go_path_interpret (GOPath const *path,
                       GOPathDirection direction,
                       GOPathMoveToFunc move_to,
                       GOPathLineToFunc line_to,
                       GOPathCurveToFunc curve_to,
                       GOPathClosePathFunc close_path,
                       void *closure);

This function can be used to draw a path or for other purposes. To draw using cairo, the closure argument should be a valid cairo_t.

#### Parameters

path | GOPath |
direction | GOPathDirection |
move_to | the callback for move to. | [scope call]
line_to | the callback for drawing a line. | [scope call]
curve_to | the callback for drawing a bezier cubic spline. | [scope call]
close_path | the callback for closing the path. | [scope call]
closure | data to pass as first argument to the callbacks. |

### go_path_interpret_full ()

    void
    go_path_interpret_full (GOPath const *path,
                            gssize start,
                            gssize end,
                            GOPathDirection direction,
                            GOPathMoveToFunc move_to,
                            GOPathLineToFunc line_to,
                            GOPathCurveToFunc curve_to,
                            GOPathClosePathFunc close_path,
                            void *closure);

This function can be used to draw a portion path or for other purposes. Only actions between start and end will be executed. If start or end is negative, it is not taken into account.

#### Parameters

path | GOPath |
start | index of the first action to interpret |
end | index of the last action to interpret |
direction | GOPathDirection |
move_to | the callback for move to. | [scope call]
line_to | the callback for drawing a line. | [scope call]
curve_to | the callback for drawing a bezier cubic spline. | [scope call]
close_path | the callback for closing the path. | [scope call]
closure | data to pass as first argument to the callbacks. |

Since: 0.10.5

### go_path_line_to ()

    void
    go_path_line_to (GOPath *path,
                     double x,
                     double y);

### go_path_move_to ()

    void
    go_path_move_to (GOPath *path,
                     double x,
                     double y);

### go_path_new ()

    GOPath *
    go_path_new (void);

### go_path_new_from_odf_enhanced_path ()

    GOPath *
    go_path_new_from_odf_enhanced_path (char const *src,
                                        GHashTable const *variables);

#### Parameters

src | an ODF enhanced path. |
variables | environment |

#### Returns

the newly allocated GOPath or `NULL` on error.

[transfer full]

### go_path_new_from_svg ()

    GOPath *
    go_path_new_from_svg (char const *src);

#### Parameters

src | an SVG path. |

#### Returns

the newly allocated GOPath.

[transfer full]

### go_path_pie_wedge ()

    void
    go_path_pie_wedge (GOPath *path,
                       double cx,
                       double cy,
                       double rx,
                       double ry,
                       double th0,
                       double th1);

### go_path_rectangle ()

    void
    go_path_rectangle (GOPath *path,
                       double x,
                       double y,
                       double width,
                       double height);

### go_path_ref ()

    GOPath *
    go_path_ref (GOPath *path);

Increments references count to `path` .

#### Parameters

path | a GOPath |

#### Returns

the path with an incremented references count.

### go_path_ring_wedge ()

    void
    go_path_ring_wedge (GOPath *path,
                        double cx,
                        double cy,
                        double rx_out,
                        double ry_out,
                        double rx_in,
                        double ry_in,
                        double th0,
                        double th1);

### go_path_set_options ()

    void
    go_path_set_options (GOPath *path,
                         GOPathOptions options);

Change the rendering options for `path` using `GO_PATH_OPTIONS_SNAP_COORDINATES` `GO_PATH_OPTIONS_SNAP_WIDTH` `GO_PATH_OPTIONS_SHARP`

#### Parameters

path | a GOPath |
options | GOPathOptions |

### go_path_to_cairo ()

    void
    go_path_to_cairo (GOPath const *path,
                      GOPathDirection direction,
                      cairo_t *cr);

Renders the path to the cairo context using its current settings.

#### Parameters

path | GOPath |
direction | GOPathDirection |
cr | cairo_t |

### go_path_to_svg ()

    char *
    go_path_to_svg (GOPath *path);

Builds an svg path from `path` .

#### Parameters

path | a GOPath |

#### Returns

the svg:d string.

[transfer full]

### go_path_scale ()

    GOPath *
    go_path_scale (GOPath *path,
                   double scale_x,
                   double scale_y);

Builds a scaled.

#### Parameters

path | GOPath |
scale_x | horizontal scale. |
scale_y | vertical scale. |

#### Returns

the scaled path.

[transfer full]

## Types and Values

### GOPath

    typedef struct _GOPath GOPath;

### enum GOPathDirection

#### Members

GO_PATH_DIRECTION_FORWARD | go through the pass from start to end. |
GO_PATH_DIRECTION_BACKWARD | go through the pass from end to start. |

### enum GOPathOptions

#### Members

GO_PATH_OPTIONS_SNAP_COORDINATES | round coordinates to avoid aliasing in pixbufs. |
GO_PATH_OPTIONS_SNAP_WIDTH | round width so that it correpond to a round pixels number. |
GO_PATH_OPTIONS_SHARP | use raw coordinates. |

### GOPathPoint

    typedef struct {
    	double x;
    	double y;
    } GOPathPoint;

#### Members

double `x`; | horizontal position. |
double `y`; | vertical dimension. |