void reshaping_arc(int x, int y) { elastic_arclink(); adjust_pos(x, y, cur_a->point[movedpoint_num].x, cur_a->point[movedpoint_num].y, &cur_x, &cur_y); if (movedpoint_num == 1) { /* middle point */ arc_msg(cur_a->point[0].x, cur_a->point[0].y, cur_a->point[2].x, cur_a->point[2].y, cur_x, cur_y); } else { /* end point */ altlength_msg(MSG_LENGTH,cur_a->point[1].x,cur_a->point[1].y); } elastic_arclink(); }
static void cancel_movedarcpoint(void) { canvas_ref_proc = canvas_locmove_proc = null_proc; elastic_arclink(); /* erase last lengths if appres.showlengths is true */ erase_lengths(); /* turn back on all relevant markers */ update_markers(new_objmask); wrapup_movepoint(); }
static void init_arcpointmoving(void) { set_action_on(); /* turn off all markers */ update_markers(0); cur_x = cur_a->point[movedpoint_num].x; cur_y = cur_a->point[movedpoint_num].y; set_cursor(crosshair_cursor); canvas_locmove_proc = reshaping_arc; canvas_ref_proc = elastic_arclink; canvas_leftbut_proc = fix_movedarcpoint; canvas_rightbut_proc = cancel_movedarcpoint; elastic_arclink(); /* show current length(s) */ (canvas_locmove_proc)(cur_x, cur_y); }
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(); }