GoPath

GoPath — Path handling

Synopsis

enum                GOPathDirection;
enum                GOPathOptions;
                    GOPathPoint;
                    GOPath;
#define             IS_GO_PATH                          (x)
GOPath*             go_path_new                         (void);
void                go_path_clear                       (GOPath *path);
void                go_path_free                        (GOPath *path);
void                go_path_set_options                 (GOPath *path,
                                                         GOPathOptions options);
GOPathOptions       go_path_get_options                 (GOPath const *path);
void                go_path_move_to                     (GOPath *path,
                                                         double x,
                                                         double y);
void                go_path_line_to                     (GOPath *path,
                                                         double x,
                                                         double y);
void                go_path_curve_to                    (GOPath *path,
                                                         double x0,
                                                         double y0,
                                                         double x1,
                                                         double y1,
                                                         double x2,
                                                         double y2);
void                go_path_close                       (GOPath *path);
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_pie_wedge                   (GOPath *path,
                                                         double cx,
                                                         double cy,
                                                         double rx,
                                                         double ry,
                                                         double th0,
                                                         double th1);
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_rectangle                   (GOPath *path,
                                                         double x,
                                                         double y,
                                                         double width,
                                                         double height);
void                go_path_interpret                   (GOPath const *path,
                                                         GOPathDirection direction,
                                                         GOPathMoveToFunc *move_to,
                                                         GOPathLineToFunc *line_to,
                                                         GOPathCurveToFunc *curve_to,
                                                         GOPathClosePathFunc *close_path,
                                                         void *closure);

Description

Details

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;


GOPathPoint

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


GOPath

typedef struct _GOPath GOPath;


IS_GO_PATH()

#define IS_GO_PATH(x) ((x) != NULL)

x :

go_path_new ()

GOPath*             go_path_new                         (void);

Returns :

go_path_clear ()

void                go_path_clear                       (GOPath *path);

path :

go_path_free ()

void                go_path_free                        (GOPath *path);

Frees all memory allocated for path.

path : a GOPath

go_path_set_options ()

void                go_path_set_options                 (GOPath *path,
                                                         GOPathOptions options);

path :
options :

go_path_get_options ()

GOPathOptions       go_path_get_options                 (GOPath const *path);

path :
Returns :

go_path_move_to ()

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

path :
x :
y :

go_path_line_to ()

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

path :
x :
y :

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_close ()

void                go_path_close                       (GOPath *path);

path :

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_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_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_rectangle ()

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

path :
x :
y :
width :
height :

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 :