void undo_add_arrowhead(void) { switch (last_object) { case O_POLYLINE: delete_linearrow(saved_objects.lines, last_prev_point, last_selected_point); break; case O_SPLINE: delete_splinearrow(saved_objects.splines, last_prev_point, last_selected_point); break; case O_ARC: delete_arcarrow(saved_objects.arcs, last_arcpointnum); break; default: return; } last_action = F_DELETE_ARROW_HEAD; }
static void delete_arrow_head(F_line *obj, int type, int x, int y, F_point *p, F_point *q) { switch (type) { case O_POLYLINE: cur_l = (F_line *) obj; delete_linearrow(cur_l, p, q); break; case O_SPLINE: cur_s = (F_spline *) obj; delete_splinearrow(cur_s, p, q); break; case O_ARC: cur_a = (F_arc *) obj; /* dirty trick - arc point number is stored in p */ delete_arcarrow(cur_a, (int) p); break; } }