diff options
author | Roozbeh Pournader <roozbeh@google.com> | 2014-07-26 11:20:29 -0700 |
---|---|---|
committer | Roozbeh Pournader <roozbeh@google.com> | 2014-07-26 11:20:29 -0700 |
commit | 0f1bd27678fb542f8601bbaf493baa1c22732fe2 (patch) | |
tree | 78ecb8f8082fb1b3ae24720549578b9272f36f0c /third_party/spiro/ppedit/plate.h | |
parent | 5a480b939b43dec473550292501a88518fe1208c (diff) |
Add Spiro version 0.01.
Diffstat (limited to 'third_party/spiro/ppedit/plate.h')
-rw-r--r-- | third_party/spiro/ppedit/plate.h | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/third_party/spiro/ppedit/plate.h b/third_party/spiro/ppedit/plate.h new file mode 100644 index 0000000..a4a1d69 --- /dev/null +++ b/third_party/spiro/ppedit/plate.h @@ -0,0 +1,100 @@ +typedef enum { + KT_OPEN = 1, + KT_CORNER = 2, + KT_LEFT = 4, + KT_RIGHT = 8, + KT_CORNU = 16, + KT_SELECTED = 256 +} kt_flags; + +typedef struct { + double x; + double y; + kt_flags flags; +} knot; + +typedef struct { + int n_kt; + int n_kt_max; + knot *kt; + int closed; +} subpath; + +typedef enum { + MOUSE_MODE_SELECT, + MOUSE_MODE_ADD_CURVE, + MOUSE_MODE_ADD_CORNER, + MOUSE_MODE_ADD_CORNU, + MOUSE_MODE_ADD_LEFT, + MOUSE_MODE_ADD_RIGHT +} mouse_mode; + +typedef enum { + MOTION_MODE_IDLE, + MOTION_MODE_SELECT, + MOTION_MODE_MOVE +} motion_mode; + +typedef struct { + double x0, y0; + const char *description; + + int n_sp; + int n_sp_max; + subpath *sp; + mouse_mode mmode; + mouse_mode last_curve_mmode; + motion_mode motmode; + double sel_x0, sel_y0; +} plate; + +typedef enum { + PRESS_MOD_SHIFT = 1, + PRESS_MOD_CTRL = 2, + PRESS_MOD_DOUBLE = 4, + PRESS_MOD_TRIPLE = 8 +} press_mod; + +plate * +new_plate(void); + +void +free_plate(plate *p); + +plate * +copy_plate(const plate *p); + +void +plate_select_all(plate *p, int selected); + +subpath * +plate_find_selected_sp(plate *p); + +subpath * +plate_new_sp(plate *p); + +void +plate_press(plate *p, double x, double y, press_mod mods); + +void +plate_motion_move(plate *p, double x, double y); + +void +plate_motion_select(plate *p, double x, double y); + +void plate_unpress(plate *p); + +void +plate_toggle_corner(plate *p); + +void +plate_delete_pt(plate *p); + +spiro_seg * +draw_subpath(const subpath *sp, bezctx *bc); + +int +file_write_plate(const char *fn, const plate *p); + +plate * +file_read_plate(const char *fn); |