void delete_arcarrow(F_arc *arc, int point_num) { if (arc->type == T_PIE_WEDGE_ARC) return;; if (point_num == 0) { /* backward arrow */ if (!arc->back_arrow) return; draw_arc(arc, ERASE); saved_back_arrow=arc->back_arrow; if (saved_for_arrow && saved_for_arrow != arc->for_arrow) free((char *) saved_for_arrow); saved_for_arrow = NULL; arc->back_arrow = NULL; redisplay_arc(arc); } else if (point_num == 2) {/* for_arrow */ if (!arc->for_arrow) return; draw_arc(arc, ERASE); saved_for_arrow=arc->for_arrow; if (saved_back_arrow && saved_back_arrow != arc->back_arrow) free((char *) saved_back_arrow); saved_back_arrow = NULL; arc->for_arrow = NULL; redisplay_arc(arc); } else return; clean_up(); set_last_arcpointnum(point_num); set_latestarc(arc); set_action_object(F_DELETE_ARROW_HEAD, O_ARC); set_modifiedflag(); }
static void place_arc_x(int x, int y) { canvas_leftbut_proc = null_proc; canvas_middlebut_proc = null_proc; canvas_rightbut_proc = null_proc; canvas_locmove_proc = null_proc; canvas_ref_proc = null_proc; adjust_pos(x, y, fix_x, fix_y, &x, &y); translate_arc(new_a, x - fix_x, y - fix_y); if (return_proc == copy_selected) { add_arc(new_a); } else { list_add_arc(&objects.arcs, new_a); clean_up(); set_lastposition(fix_x, fix_y); set_newposition(x, y); set_action_object(F_MOVE, O_ARC); set_latestarc(new_a); set_modifiedflag(); } redisplay_arc(new_a); /* turn back on all relevant markers */ update_markers(new_objmask); (*return_proc) (); draw_mousefun_canvas(); }
static void add_arcarrow(F_arc *arc, int point_num) { /* only allow arrowheads on open arc */ if (arc->type == T_PIE_WEDGE_ARC) return; if (point_num == 0) { /* backward arrow */ if (arc->back_arrow) return; arc->back_arrow = backward_arrow(); redisplay_arc(arc); } else if (point_num == 2) {/* for_arrow */ if (arc->for_arrow) return; arc->for_arrow = forward_arrow(); redisplay_arc(arc); } else return; clean_up(); set_last_arcpointnum(point_num); set_latestarc(arc); set_action_object(F_ADD_ARROW_HEAD, O_ARC); set_modifiedflag(); }