37#define CURVE_POINT(c, n) ((c)->point_list[n].coord)
38#define LAST_CURVE_POINT(c) ((c)->point_list[(c)->length-1].coord)
39#define CURVE_T(c, n) ((c)->point_list[n].t)
40#define LAST_CURVE_T(c) ((c)->point_list[(c)->length-1].t)
43#define CURVE_LENGTH(c) ((c)->length)
47#define CURVE_CYCLIC(c) ((c)->cyclic)
52#define CURVE_NEXT(c, n) \
53 ((n) + 1 >= CURVE_LENGTH (c) \
54 ? CURVE_CYCLIC (c) ? ((n) + 1) % CURVE_LENGTH (c) : CURVE_LENGTH (c) \
56#define CURVE_PREV(c, n) \
57 ((signed int) (n) - 1 < 0 \
58 ? CURVE_CYCLIC (c) ? (signed int) CURVE_LENGTH (c) + (signed int) (n) - 1 : -1\
59 : (signed int) (n) - 1)
62#define CURVE_START_TANGENT(c) ((c)->start_tangent)
63#define CURVE_END_TANGENT(c) ((c)->end_tangent)
64#define PREVIOUS_CURVE(c) ((c)->previous)
65#define NEXT_CURVE(c) ((c)->next)
99#define CURVE_LIST_LENGTH(c_l) ((c_l).length)
102#define CURVE_LIST_ELT(c_l, n) ((c_l).data[n])
103#define LAST_CURVE_LIST_ELT(c_l) ((c_l).data[CURVE_LIST_LENGTH (c_l) - 1])
107#define CURVE_LIST_CLOCKWISE(c_l) ((c_l).clockwise)
123#define CURVE_LIST_ARRAY_LENGTH CURVE_LIST_LENGTH
124#define CURVE_LIST_ARRAY_ELT CURVE_LIST_ELT
125#define LAST_CURVE_LIST_ARRAY_ELT LAST_CURVE_LIST_ELT
curve_type new_curve(void)
void log_entire_curve(curve_type c)
curve_list_array_type new_curve_list_array(void)
void free_curve(curve_type c)
struct curve * curve_type
void log_curve(curve_type c, gboolean print_t)
void append_pixel(curve_type c, at_coord p)
void display_curve(curve_type)
void free_curve_list_array(curve_list_array_type *, at_progress_func, gpointer)
void append_curve(curve_list_type *, curve_type)
curve_list_type new_curve_list(void)
curve_type copy_most_of_curve(curve_type c)
void append_point(curve_type c, at_real_coord p)
void append_curve_list(curve_list_array_type *, curve_list_type)
void free_curve_list(curve_list_type *)
void(* at_progress_func)(gfloat percentage, gpointer client_data)
vector_type * end_tangent
vector_type * start_tangent