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 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(); }
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(); }
void undo_delete_arrowhead(void) { switch (last_object) { case O_POLYLINE: if (saved_for_arrow) saved_objects.lines->for_arrow = saved_for_arrow; if (saved_back_arrow) saved_objects.lines->back_arrow = saved_back_arrow; redisplay_line(saved_objects.lines); break; case O_SPLINE: if (saved_for_arrow) saved_objects.splines->for_arrow = saved_for_arrow; if (saved_back_arrow) saved_objects.splines->back_arrow = saved_back_arrow; redisplay_spline(saved_objects.splines); break; case O_ARC: if (saved_for_arrow) saved_objects.arcs->for_arrow = saved_for_arrow; if (saved_back_arrow) saved_objects.arcs->back_arrow = saved_back_arrow; redisplay_arc(saved_objects.arcs); break; default: return; } last_action = F_ADD_ARROW_HEAD; }
static void init_move(F_line *p, int type, int x, int y, int px, int py) { /* turn off all markers */ update_markers(0); switch (type) { case O_COMPOUND: set_cursor(wait_cursor); cur_c = (F_compound *) p; list_delete_compound(&objects.compounds, cur_c); redisplay_compound(cur_c); set_cursor(null_cursor); init_compounddragging(cur_c, px, py); break; case O_POLYLINE: set_cursor(wait_cursor); cur_l = (F_line *) p; list_delete_line(&objects.lines, cur_l); redisplay_line(cur_l); set_cursor(null_cursor); init_linedragging(cur_l, px, py); break; case O_TXT: set_cursor(wait_cursor); cur_t = (F_text *) p; list_delete_text(&objects.texts, cur_t); redisplay_text(cur_t); set_cursor(null_cursor); init_textdragging(cur_t, x, y); break; case O_ELLIPSE: set_cursor(wait_cursor); cur_e = (F_ellipse *) p; list_delete_ellipse(&objects.ellipses, cur_e); redisplay_ellipse(cur_e); set_cursor(null_cursor); init_ellipsedragging(cur_e, px, py); break; case O_ARC: set_cursor(wait_cursor); cur_a = (F_arc *) p; list_delete_arc(&objects.arcs, cur_a); redisplay_arc(cur_a); set_cursor(null_cursor); init_arcdragging(cur_a, px, py); break; case O_SPLINE: set_cursor(wait_cursor); cur_s = (F_spline *) p; list_delete_spline(&objects.splines, cur_s); redisplay_spline(cur_s); set_cursor(null_cursor); init_splinedragging(cur_s, px, py); break; default: return; } }
static void fix_movedarcpoint(int x, int y) { canvas_ref_proc = canvas_locmove_proc = null_proc; elastic_arclink(); /* erase last lengths if appres.showlengths is true */ erase_lengths(); adjust_pos(x, y, cur_a->point[movedpoint_num].x, cur_a->point[movedpoint_num].y, &x, &y); new_a = copy_arc(cur_a); relocate_arcpoint(new_a, x, y, movedpoint_num); change_arc(cur_a, new_a); /* redraw anything under the old arc */ redisplay_arc(cur_a); /* and the new one */ redisplay_arc(new_a); /* turn back on all relevant markers */ update_markers(new_objmask); wrapup_movepoint(); }
static void init_fliparc(F_arc *old_a, int px, int py) { F_arc *new_a; set_temp_cursor(wait_cursor); new_a = copy_arc(old_a); flip_arc(new_a, px, py, flip_axis); if (copy) { add_arc(new_a); } else { toggle_arcmarker(old_a); draw_arc(old_a, ERASE); change_arc(old_a, new_a); } /* redisplay objects under this object before it was rotated */ redisplay_arc(old_a); /* and this arc and any other objects on top */ redisplay_arc(new_a); reset_cursor(); }
static void cancel_drag_arc(void) { canvas_ref_proc = canvas_locmove_proc = null_proc; elastic_movearc(new_a); /* erase last lengths if appres.showlengths is true */ erase_lengths(); if (return_proc == copy_selected) { free_arc(&new_a); } else { list_add_arc(&objects.arcs, new_a); redisplay_arc(new_a); } /* turn back on all relevant markers */ update_markers(new_objmask); (*return_proc) (); draw_mousefun_canvas(); }
void undo_delete(void) { int xmin, ymin, xmax, ymax; char ctemp[PATH_MAX]; switch (last_object) { case O_POLYLINE: list_add_line(&objects.lines, saved_objects.lines); redisplay_line(saved_objects.lines); break; case O_ELLIPSE: list_add_ellipse(&objects.ellipses, saved_objects.ellipses); redisplay_ellipse(saved_objects.ellipses); break; case O_TXT: list_add_text(&objects.texts, saved_objects.texts); redisplay_text(saved_objects.texts); break; case O_SPLINE: list_add_spline(&objects.splines, saved_objects.splines); redisplay_spline(saved_objects.splines); break; case O_ARC: list_add_arc(&objects.arcs, saved_objects.arcs); redisplay_arc(saved_objects.arcs); break; case O_COMPOUND: list_add_compound(&objects.compounds, saved_objects.compounds); redisplay_compound(saved_objects.compounds); break; case O_ALL_OBJECT: saved_objects.next = NULL; compound_bound(&saved_objects, &xmin, &ymin, &xmax, &ymax); tail(&objects, &object_tails); append_objects(&objects, &saved_objects, &object_tails); redisplay_zoomed_region(xmin, ymin, xmax, ymax); } last_action = F_ADD; }