## GOPath

GOPath

## Synopsis

                        GOPath;
    enum                GOPathDirection;
    enum                GOPathOptions;
                        GOPathPoint;
    GOPath *            go_path_new                         (void);
    void                go_path_set_options                 (GOPath *path,
                                                             GOPathOptions options);
    GOPathOptions       go_path_get_options                 (GOPath const *path);
    void                go_path_arc                         (GOPath *path,
                                                             double cx,
                                                             double cy,
                                                             double rx,
                                                             double ry,
                                                             double th0,
                                                             double th1);
    void                go_path_arc_to                      (GOPath *path,
                                                             double cx,
                                                             double cy,
                                                             double rx,
                                                             double ry,
                                                             double th0,
                                                             double th1);
    void                go_path_clear                       (GOPath *path);
    void                go_path_close                       (GOPath *path);
    void                go_path_curve_to                    (GOPath *path,
                                                             double x0,
                                                             double y0,
                                                             double x1,
                                                             double y1,
                                                             double x2,
                                                             double y2);
    void                go_path_free                        (GOPath *path);
    void                go_path_line_to                     (GOPath *path,
                                                             double x,
                                                             double y);
    void                go_path_move_to                     (GOPath *path,
                                                             double x,
                                                             double y);
    void                go_path_pie_wedge                   (GOPath *path,
                                                             double cx,
                                                             double cy,
                                                             double rx,
                                                             double ry,
                                                             double th0,
                                                             double th1);
    void                go_path_rectangle                   (GOPath *path,
                                                             double x,
                                                             double y,
                                                             double width,
                                                             double height);
    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);
    void                go_path_interpret                   (GOPath const *path,
                                                             GOPathDirection direction,
                                                             GOPathMoveToFunc *move_to,
                                                             GOPathLineToFunc *line_to,
                                                             GOPathCurveToFunc *curve_to,
                                                             GOPathClosePathFunc *close_path,
                                                             void *closure);
    void                go_path_to_cairo                    (GOPath const *path,
                                                             GOPathDirection direction,
                                                             cairo_t *cr);
    GOPath *            go_path_copy                        (GOPath const *path);
    GOPath *            go_path_append                      (GOPath *path1,
                                                             GOPath const *path2);

## Description

## Details

### GOPath

    typedef struct _GOPath GOPath;

### enum GOPathDirection

    typedef enum {
    	GO_PATH_DIRECTION_FORWARD,
    	GO_PATH_DIRECTION_BACKWARD
    } GOPathDirection;

### enum GOPathOptions

    typedef enum {
    	GO_PATH_OPTIONS_SNAP_COORDINATES 	= 1<<0,
    	GO_PATH_OPTIONS_SNAP_WIDTH		= 1<<1,
    	GO_PATH_OPTIONS_SHARP			= 3
    } GOPathOptions;

`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;

### go_path_new ()

    GOPath *            go_path_new                         (void);

Returns : |

### 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`

`path` : | a GOPath
`options` : | GOPathOptions

### go_path_get_options ()

    GOPathOptions       go_path_get_options                 (GOPath const *path);

`path` : |
Returns : |

### go_path_arc ()

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

`path` : |
`cx` : |
`cy` : |
`rx` : |
`ry` : |
`th0` : |
`th1` : |

### go_path_arc_to ()

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

`path` : |
`cx` : |
`cy` : |
`rx` : |
`ry` : |
`th0` : |
`th1` : |

### go_path_clear ()

    void                go_path_clear                       (GOPath *path);

`path` : |

### go_path_close ()

    void                go_path_close                       (GOPath *path);

`path` : |

### go_path_curve_to ()

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

`path` : |
`x0` : |
`y0` : |
`x1` : |
`y1` : |
`x2` : |
`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.

`path` : | a GOPath

### go_path_line_to ()

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

`path` : |
`x` : |
`y` : |

### go_path_move_to ()

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

`path` : |
`x` : |
`y` : |

### go_path_pie_wedge ()

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

`path` : |
`cx` : |
`cy` : |
`rx` : |
`ry` : |
`th0` : |
`th1` : |

### go_path_rectangle ()

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

`path` : |
`x` : |
`y` : |
`width` : |
`height` : |

### 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);

`path` : |
`cx` : |
`cy` : |
`rx_out` : |
`ry_out` : |
`rx_in` : |
`ry_in` : |
`th0` : |
`th1` : |

### 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);

`path` : |
`direction` : |
`move_to` : |
`line_to` : |
`curve_to` : |
`close_path` : |
`closure` : |

### go_path_to_cairo ()

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

`path` : |
`direction` : |
`cr` : |

### go_path_copy ()

    GOPath *            go_path_copy                        (GOPath const *path);

`path` : |
Returns : |

### go_path_append ()

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

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

`path1` : | GOPath
`path2` : | GOPath
Returns : | `path1`