static void wrapup_movepoint(void) { reset_action_on(); move_point_selected(); draw_mousefun_canvas(); }
void circle_ellipse_bydiameter_drawing_selected(void) { set_mousefun("Circle diameter", "Ellipse corner", "", "", "", ""); canvas_kbd_proc = null_proc; canvas_locmove_proc = null_proc; canvas_leftbut_proc = init_circlebydiameter_drawing; canvas_middlebut_proc = init_ellipsebydiameter_drawing; canvas_rightbut_proc = null_proc; set_cursor(crosshair_cursor); reset_action_on(); }
void delete_point_selected(void) { set_mousefun("delete point", "", "", LOC_OBJ, LOC_OBJ, LOC_OBJ); canvas_kbd_proc = null_proc; canvas_locmove_proc = null_proc; canvas_ref_proc = null_proc; init_searchproc_left(init_delete_point); canvas_leftbut_proc = point_search_left; canvas_middlebut_proc = null_proc; canvas_rightbut_proc = null_proc; set_cursor(pick9_cursor); reset_action_on(); }
void align_selected(void) { set_mousefun("align compound", "align canvas", "", LOC_OBJ, "", LOC_OBJ); canvas_kbd_proc = null_proc; canvas_locmove_proc = null_proc; canvas_ref_proc = null_proc; init_searchproc_left(init_align); canvas_leftbut_proc = object_search_left; canvas_middlebut_proc = init_align_canvas; canvas_rightbut_proc = null_proc; set_cursor(pick15_cursor); reset_action_on(); }
void convert_selected(void) { set_mousefun("spline<->line", "", "open<->closed", LOC_OBJ, LOC_OBJ, LOC_OBJ); canvas_kbd_proc = null_proc; canvas_locmove_proc = null_proc; canvas_ref_proc = null_proc; init_searchproc_left(init_convert_line_spline); init_searchproc_right(init_convert_open_closed); canvas_leftbut_proc = object_search_left; canvas_middlebut_proc = null_proc; canvas_rightbut_proc = point_search_right; set_cursor(pick15_cursor); reset_action_on(); }
void tangent_selected(void) { set_mousefun("add tangent", "add normal", "", LOC_OBJ, LOC_OBJ, LOC_OBJ); canvas_kbd_proc = null_proc; canvas_locmove_proc = smart_null_proc; canvas_ref_proc = smart_null_proc; init_smart_searchproc_left(init_tangent_adding); init_smart_searchproc_middle(init_normal_adding); canvas_leftbut_proc = smart_object_search_left; canvas_middlebut_proc = smart_object_search_middle; canvas_rightbut_proc = smart_null_proc; set_cursor(pick9_cursor); /* force_nopositioning(); */ reset_action_on(); }
void arrow_head_selected(void) { set_mousefun("add arrow", "delete arrow", "", LOC_OBJ, LOC_OBJ, LOC_OBJ); canvas_kbd_proc = null_proc; canvas_locmove_proc = null_proc; canvas_ref_proc = null_proc; init_searchproc_left(add_arrow_head); init_searchproc_middle(delete_arrow_head); canvas_leftbut_proc = point_search_left; canvas_middlebut_proc = point_search_middle; canvas_rightbut_proc = null_proc; set_cursor(pick9_cursor); reset_action_on(); }
void compound_selected(void) { set_mousefun("tag object", "tag region", "compound tagged", LOC_OBJ, "", ""); canvas_kbd_proc = null_proc; canvas_locmove_proc = null_proc; canvas_ref_proc = null_proc; init_searchproc_left(tag_object); canvas_leftbut_proc = object_search_left; canvas_middlebut_proc = init_tag_region; canvas_rightbut_proc = create_compoundobject; set_cursor(pick9_cursor); reset_action_on(); }
void flip_lr_selected(void) { flip_axis = LR_FLIP; /* erase any existing anchor */ if (setanchor) center_marker(setanchor_x, setanchor_y); /* and any center */ if (setcenter) center_marker(setcenter_x, setcenter_y); setcenter = 0; setanchor = 0; flip_selected(); reset_action_on(); }
void move_point_selected(void) { set_mousefun("move point", "horiz/vert move", "", LOC_OBJ, LOC_OBJ, LOC_OBJ); canvas_kbd_proc = null_proc; canvas_locmove_proc = null_proc; canvas_ref_proc = null_proc; init_searchproc_left(init_arb_move_point); init_searchproc_middle(init_stretch_move_point); canvas_leftbut_proc = point_search_left; canvas_middlebut_proc = point_search_middle; canvas_rightbut_proc = null_proc; set_cursor(pick9_cursor); force_anglegeom(); reset_action_on(); }
void move_selected(void) { set_mousefun("move object", "horiz/vert move", "", LOC_OBJ, LOC_OBJ, LOC_OBJ); canvas_kbd_proc = null_proc; canvas_locmove_proc = null_proc; init_searchproc_left(init_arb_move); init_searchproc_middle(init_constrained_move); canvas_leftbut_proc = object_search_left; canvas_middlebut_proc = object_search_middle; canvas_rightbut_proc = null_proc; return_proc = move_selected; set_cursor(pick9_cursor); reset_action_on(); }
void line_drawing_selected(void) { canvas_kbd_proc = (FCallBack)null_proc; canvas_locmove_proc = null_proc; canvas_leftbut_proc = (FCallBack)init_line_drawing; canvas_middlebut_proc = (FCallBack)init_line_freehand_drawing; set_cursor(crosshair_cursor); reset_action_on(); if (cur_mode == F_POLYGON) { set_mousefun("first point", "freehand", "", "", "", ""); min_num_points = 3; canvas_rightbut_proc = (FCallBack)null_proc; } else { set_mousefun("first point", "freehand", "single point", "dimension line", "", ""); min_num_points = 1; num_point = 0; fix_x = fix_y = -1; canvas_rightbut_proc = (FCallBack)create_lineobject; } }
static void create_circlebydia(int x, int y) { F_ellipse *c; double rx, ry; elastic_cbd(); center_marker(fix_x, fix_y); if ((c = create_ellipse()) == NULL) return; c->type = T_CIRCLE_BY_DIA; c->style = cur_linestyle; c->thickness = cur_linewidth; c->style_val = cur_styleval * (cur_linewidth + 1) / 2; c->angle = 0.0; c->pen_color = cur_pencolor; c->fill_color = cur_fillcolor; c->depth = cur_depth; c->pen_style = -1; c->fill_style = cur_fillstyle; c->direction = 1; c->center.x = round((fix_x + x) / 2); c->center.y = round((fix_y + y) / 2); rx = x - c->center.x; ry = y - c->center.y; c->radiuses.x = c->radiuses.y = round(sqrt(rx * rx + ry * ry)); c->start.x = fix_x; c->start.y = fix_y; c->end.x = x; c->end.y = y; c->next = NULL; add_ellipse(c); reset_action_on(); /* this signals redisplay_curobj() not to refresh */ /* draw it and anything on top of it */ redisplay_ellipse(c); circle_ellipse_bydiameter_drawing_selected(); draw_mousefun_canvas(); }
void cancel_place_lib_obj(int x, int y, int shift) { /* if shift right-button, actually do a place in original position */ if (shift) { place_lib_object_orig(x, y, shift); return; } reset_action_on(); 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; canvas_kbd_proc = null_proc; clear_mousefun(); set_mousefun("","","", "", "", ""); turn_off_current(); set_cursor(arrow_cursor); put_draw(ERASE); /* remove it from the depths */ remove_compound_depth(new_c); }
static void create_ellipsebyrad(int x, int y) { F_ellipse *ellipse; elastic_ebr(); center_marker(fix_x, fix_y); if ((ellipse = create_ellipse()) == NULL) return; ellipse->type = T_ELLIPSE_BY_RAD; ellipse->style = cur_linestyle; ellipse->thickness = cur_linewidth; ellipse->style_val = cur_styleval * (cur_linewidth + 1) / 2; ellipse->angle = cur_elltextangle/180.0*M_PI; /* convert to radians */ ellipse->pen_color = cur_pencolor; ellipse->fill_color = cur_fillcolor; ellipse->depth = cur_depth; ellipse->pen_style = -1; ellipse->fill_style = cur_fillstyle; ellipse->direction = 1; ellipse->center.x = fix_x; ellipse->center.y = fix_y; ellipse->radiuses.x = abs(x - fix_x); ellipse->radiuses.y = abs(y - fix_y); ellipse->start.x = fix_x; ellipse->start.y = fix_y; ellipse->end.x = x; ellipse->end.y = y; ellipse->next = NULL; add_ellipse(ellipse); reset_action_on(); /* this signals redisplay_curobj() not to refresh */ /* draw it and anything on top of it */ redisplay_ellipse(ellipse); circle_ellipse_byradius_drawing_selected(); draw_mousefun_canvas(); }
void chop_selected(void) { set_mousefun("Select axe object", "Select log object", "Clear axe list", LOC_OBJ, LOC_OBJ, LOC_OBJ); draw_mousefun_canvas(); canvas_kbd_proc = null_proc; canvas_locmove_proc = null_proc; canvas_ref_proc = null_proc; init_searchproc_left(select_axe_object); init_searchproc_middle(select_log_object); /* init_searchproc_right(init_chop_right); */ /* fixme don't need this now */ canvas_leftbut_proc = object_search_left; /* point search for axe */ canvas_middlebut_proc = object_search_middle; /* object search for log */ canvas_rightbut_proc = clear_axe_objects; set_cursor(pick9_cursor); /* set the markers to show we only allow POLYLINES, ARCS and ELLIPSES */ /* (the markers are originally set this way from the mode panel, but we need to set them again after the previous chop */ /* fixme -- neede for chop ? */ update_markers(M_POLYLINE | M_ARC | M_ELLIPSE); reset_action_on(); axe_objects_next = 0; }
void create_lineobject(int x, int y) { F_line *line; F_compound *comp; int dot; if (num_point == 0) { if ((first_point = create_point()) == NULL) { line_drawing_selected(); draw_mousefun_canvas(); return; } cur_point = first_point; first_point->x = fix_x = cur_x = x; first_point->y = fix_y = cur_y = y; first_point->next = NULL; num_point++; } else if (x != fix_x || y != fix_y) { get_intermediatepoint(x, y, 0); } /* dimension line must have 2 different points */ if (dimension_line && first_point->x == x && first_point->y == y) return; dot = (num_point == 1); elastic_line(); /* erase any length info if appres.showlengths is true */ erase_lengths(); if ((line = create_line()) == NULL) { line_drawing_selected(); draw_mousefun_canvas(); return; } line->type = T_POLYLINE; line->style = cur_linestyle; line->thickness = cur_linewidth; line->pen_color = cur_pencolor; line->fill_color = cur_fillcolor; line->depth = cur_depth; line->pen_style = -1; line->join_style = cur_joinstyle; line->cap_style = cur_capstyle; line->fill_style = cur_fillstyle; line->style_val = cur_styleval * (cur_linewidth + 1) / 2; line->points = first_point; if (!dot) { if (cur_mode == F_POLYGON) { /* close off polygon */ line->type = T_POLYGON; num_point++; append_point(first_point->x, first_point->y, &cur_point); elastic_line(); fix_x = first_point->x; fix_y = first_point->y; elastic_line(); /* fix last elastic line */ } else { /* polyline; draw any arrows */ if (autoforwardarrow_mode && !dimension_line) line->for_arrow = forward_arrow(); /* arrow will be drawn in draw_line below */ if (autobackwardarrow_mode && !dimension_line) line->back_arrow = backward_arrow(); /* arrow will be drawn in draw_line below */ } cur_x = fix_x; cur_y = fix_y; elastic_moveline(first_point); /* erase temporary outline */ } if (dimension_line) { comp = create_dimension_line(line, True); reset_action_on(); /* this signals redisplay_curobj() not to refresh */ /* draw it and anything on top of it */ redisplay_compound(comp); } else { add_line(line); reset_action_on(); /* this signals redisplay_curobj() not to refresh */ /* draw it and anything on top of it */ redisplay_line(line); } line_drawing_selected(); if (!edit_remember_dimline_mode) draw_mousefun_canvas(); }