diff --git a/src/mged/axes.c b/src/mged/axes.c index e6e17ea855..be430de394 100644 --- a/src/mged/axes.c +++ b/src/mged/axes.c @@ -101,13 +101,13 @@ draw_e_axes(struct mged_state *s) struct bv_axes gas; if (s->edit_state.global_editing_state == ST_S_EDIT) { - MAT4X3PNT(v_ap1, view_state->vs_gvp->gv_model2view, s->s_edit.e_axes_pos); - MAT4X3PNT(v_ap2, view_state->vs_gvp->gv_model2view, s->s_edit.curr_e_axes_pos); + MAT4X3PNT(v_ap1, view_state->vs_gvp->gv_model2view, s->s_edit->e_axes_pos); + MAT4X3PNT(v_ap2, view_state->vs_gvp->gv_model2view, s->s_edit->curr_e_axes_pos); } else if (s->edit_state.global_editing_state == ST_O_EDIT) { point_t m_ap2; - MAT4X3PNT(v_ap1, view_state->vs_gvp->gv_model2view, s->s_edit.e_keypoint); - MAT4X3PNT(m_ap2, s->s_edit.model_changes, s->s_edit.e_keypoint); + MAT4X3PNT(v_ap1, view_state->vs_gvp->gv_model2view, s->s_edit->e_keypoint); + MAT4X3PNT(m_ap2, s->s_edit->model_changes, s->s_edit->e_keypoint); MAT4X3PNT(v_ap2, view_state->vs_gvp->gv_model2view, m_ap2); } else return; @@ -130,7 +130,7 @@ draw_e_axes(struct mged_state *s) VMOVE(gas.label_color, color_scheme->cs_edit_axes_label2); gas.line_width = axes_state->ax_edit_linewidth2; - bn_mat_mul(rot_mat, view_state->vs_gvp->gv_rotation, s->s_edit.acc_rot_sol); + bn_mat_mul(rot_mat, view_state->vs_gvp->gv_rotation, s->s_edit->acc_rot_sol); dm_draw_hud_axes(DMP, view_state->vs_gvp->gv_size, rot_mat, &gas); } diff --git a/src/mged/buttons.c b/src/mged/buttons.c index 23251fa364..024cc243d6 100644 --- a/src/mged/buttons.c +++ b/src/mged/buttons.c @@ -526,7 +526,7 @@ ill_common(struct mged_state *s) { edobj = 0; /* sanity */ edsol = 0; /* sanity */ movedir = 0; /* No edit modes set */ - MAT_IDN(s->s_edit.model_changes); /* No changes yet */ + MAT_IDN(s->s_edit->model_changes); /* No changes yet */ return 1; /* OK */ } @@ -587,9 +587,9 @@ be_o_scale(ClientData clientData, Tcl_Interp *UNUSED(interp), int UNUSED(argc), dm_set_dirty(DMP, 1); set_e_axes_pos(s, 1); - s->s_edit.edit_absolute_scale = s->edit_state.acc_sc_obj - 1.0; - if (s->s_edit.edit_absolute_scale > 0.0) - s->s_edit.edit_absolute_scale /= 3.0; + s->s_edit->edit_absolute_scale = s->edit_state.acc_sc_obj - 1.0; + if (s->s_edit->edit_absolute_scale > 0.0) + s->s_edit->edit_absolute_scale /= 3.0; return TCL_OK; } @@ -610,9 +610,9 @@ be_o_xscale(ClientData clientData, Tcl_Interp *UNUSED(interp), int UNUSED(argc), dm_set_dirty(DMP, 1); set_e_axes_pos(s, 1); - s->s_edit.edit_absolute_scale = s->edit_state.acc_sc[0] - 1.0; - if (s->s_edit.edit_absolute_scale > 0.0) - s->s_edit.edit_absolute_scale /= 3.0; + s->s_edit->edit_absolute_scale = s->edit_state.acc_sc[0] - 1.0; + if (s->s_edit->edit_absolute_scale > 0.0) + s->s_edit->edit_absolute_scale /= 3.0; return TCL_OK; } @@ -633,9 +633,9 @@ be_o_yscale(ClientData clientData, Tcl_Interp *UNUSED(interp), int UNUSED(argc), dm_set_dirty(DMP, 1); set_e_axes_pos(s, 1); - s->s_edit.edit_absolute_scale = s->edit_state.acc_sc[1] - 1.0; - if (s->s_edit.edit_absolute_scale > 0.0) - s->s_edit.edit_absolute_scale /= 3.0; + s->s_edit->edit_absolute_scale = s->edit_state.acc_sc[1] - 1.0; + if (s->s_edit->edit_absolute_scale > 0.0) + s->s_edit->edit_absolute_scale /= 3.0; return TCL_OK; } @@ -656,9 +656,9 @@ be_o_zscale(ClientData clientData, Tcl_Interp *UNUSED(interp), int UNUSED(argc), dm_set_dirty(DMP, 1); set_e_axes_pos(s, 1); - s->s_edit.edit_absolute_scale = s->edit_state.acc_sc[2] - 1.0; - if (s->s_edit.edit_absolute_scale > 0.0) - s->s_edit.edit_absolute_scale /= 3.0; + s->s_edit->edit_absolute_scale = s->edit_state.acc_sc[2] - 1.0; + if (s->s_edit->edit_absolute_scale > 0.0) + s->s_edit->edit_absolute_scale /= 3.0; return TCL_OK; } @@ -938,7 +938,7 @@ be_s_scale(ClientData clientData, Tcl_Interp *UNUSED(interp), int UNUSED(argc), edsol = BE_S_SCALE; mged_set_edflag(s, SSCALE); mmenu_set(s, MENU_L1, NULL); - s->s_edit.acc_sc_sol = 1.0; + s->s_edit->acc_sc_sol = 1.0; set_e_axes_pos(s, 1); return TCL_OK; diff --git a/src/mged/chgmodel.c b/src/mged/chgmodel.c index 70ff283b9c..0064c1da92 100644 --- a/src/mged/chgmodel.c +++ b/src/mged/chgmodel.c @@ -132,25 +132,25 @@ mged_rot_obj(struct mged_state *s, int iflag, fastf_t *argvect) } /* find point for rotation to take place wrt */ - VMOVE(model_pt, s->s_edit.e_keypoint); + VMOVE(model_pt, s->s_edit->e_keypoint); - MAT4X3PNT(point, s->s_edit.model_changes, model_pt); + MAT4X3PNT(point, s->s_edit->model_changes, model_pt); /* Find absolute translation vector to go from "model_pt" to - * "point" without any of the rotations in "s->s_edit.model_changes" + * "point" without any of the rotations in "s->s_edit->model_changes" */ - VSCALE(s_point, point, s->s_edit.model_changes[15]); + VSCALE(s_point, point, s->s_edit->model_changes[15]); VSUB2(v_work, s_point, model_pt); - /* REDO "s->s_edit.model_changes" such that: + /* REDO "s->s_edit->model_changes" such that: * 1. NO rotations (identity) * 2. trans == v_work * 3. same scale factor */ MAT_IDN(temp); MAT_DELTAS_VEC(temp, v_work); - temp[15] = s->s_edit.model_changes[15]; - MAT_COPY(s->s_edit.model_changes, temp); + temp[15] = s->s_edit->model_changes[15]; + MAT_COPY(s->s_edit->model_changes, temp); /* build new rotation matrix */ MAT_IDN(temp); @@ -158,15 +158,15 @@ mged_rot_obj(struct mged_state *s, int iflag, fastf_t *argvect) if (iflag) { /* apply accumulated rotations */ - bn_mat_mul2(s->s_edit.acc_rot_sol, temp); + bn_mat_mul2(s->s_edit->acc_rot_sol, temp); } - /*XXX*/ MAT_COPY(s->s_edit.acc_rot_sol, temp); /* used to rotate solid/object axis */ + /*XXX*/ MAT_COPY(s->s_edit->acc_rot_sol, temp); /* used to rotate solid/object axis */ /* Record the new rotation matrix into the revised - * s->s_edit.model_changes matrix wrt "point" + * s->s_edit->model_changes matrix wrt "point" */ - wrt_point(s->s_edit.model_changes, temp, s->s_edit.model_changes, point); + wrt_point(s->s_edit->model_changes, temp, s->s_edit->model_changes, point); new_edit_mats(s); @@ -259,7 +259,7 @@ f_sc_obj(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[] default: case BE_O_SCALE: /* global scaling */ - incr[15] = 1.0 / (atof(argv[1]) * s->s_edit.model_changes[15]); + incr[15] = 1.0 / (atof(argv[1]) * s->s_edit->model_changes[15]); break; case BE_O_XSCALE: /* local scaling ... X-axis */ @@ -279,11 +279,11 @@ f_sc_obj(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[] } /* find point the scaling is to take place wrt */ - VMOVE(temp, s->s_edit.e_keypoint); + VMOVE(temp, s->s_edit->e_keypoint); - MAT4X3PNT(point, s->s_edit.model_changes, temp); + MAT4X3PNT(point, s->s_edit->model_changes, temp); - wrt_point(s->s_edit.model_changes, incr, s->s_edit.model_changes, point); + wrt_point(s->s_edit->model_changes, incr, s->s_edit->model_changes, point); new_edit_mats(s); return TCL_OK; @@ -347,13 +347,13 @@ f_tr_obj(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[] new_vertex[i] = atof(argv[i+1]) * s->dbip->dbi_local2base; } - VMOVE(model_sol_pt, s->s_edit.e_keypoint); + VMOVE(model_sol_pt, s->s_edit->e_keypoint); - MAT4X3PNT(ed_sol_pt, s->s_edit.model_changes, model_sol_pt); + MAT4X3PNT(ed_sol_pt, s->s_edit->model_changes, model_sol_pt); VSUB2(model_incr, new_vertex, ed_sol_pt); MAT_DELTAS_VEC(incr, model_incr); - MAT_COPY(old, s->s_edit.model_changes); - bn_mat_mul(s->s_edit.model_changes, incr, old); + MAT_COPY(old, s->s_edit->model_changes); + bn_mat_mul(s->s_edit->model_changes, incr, old); new_edit_mats(s); return TCL_OK; @@ -411,10 +411,10 @@ f_qorot(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[]) ang = atof(argv[7]) * DEG2RAD; /* Get matrix for rotation about a point, direction vector and apply to - * s->s_edit.model_changes matrix + * s->s_edit->model_changes matrix */ bn_mat_arb_rot(temp, specified_pt, direc, ang); - bn_mat_mul2(temp, s->s_edit.model_changes); + bn_mat_mul2(temp, s->s_edit->model_changes); new_edit_mats(s); diff --git a/src/mged/chgtree.c b/src/mged/chgtree.c index 57d1a06572..e07f09f8dc 100644 --- a/src/mged/chgtree.c +++ b/src/mged/chgtree.c @@ -263,7 +263,7 @@ cmd_oed(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[]) illump = BU_LIST_NEXT(bv_scene_obj, &gdlp->dl_head_scene_obj);/* any valid solid would do */ edobj = 0; /* sanity */ movedir = 0; /* No edit modes set */ - MAT_IDN(s->s_edit.model_changes); /* No changes yet */ + MAT_IDN(s->s_edit->model_changes); /* No changes yet */ (void)chg_state(s, ST_VIEW, ST_O_PICK, "internal change of state"); /* reset accumulation local scale factors */ s->edit_state.acc_sc[0] = s->edit_state.acc_sc[1] = s->edit_state.acc_sc[2] = 1.0; diff --git a/src/mged/chgview.c b/src/mged/chgview.c index cd77845cdc..e759f6aeb6 100644 --- a/src/mged/chgview.c +++ b/src/mged/chgview.c @@ -1206,15 +1206,15 @@ mged_print_knobvals(struct mged_state *s, Tcl_Interp *interp) } if (s->edit_state.e_edclass == EDIT_CLASS_SCALE && mged_variables->mv_transform == 'e') { - bu_vls_printf(&vls, "aS = %f\n", s->s_edit.edit_absolute_scale); + bu_vls_printf(&vls, "aS = %f\n", s->s_edit->edit_absolute_scale); } else { bu_vls_printf(&vls, "aS = %f\n", view_state->vs_gvp->gv_a_scale); } if (s->edit_state.e_edclass == EDIT_CLASS_TRAN && mged_variables->mv_transform == 'e') { - bu_vls_printf(&vls, "aX = %f\n", s->s_edit.edit_absolute_model_tran[X]); - bu_vls_printf(&vls, "aY = %f\n", s->s_edit.edit_absolute_model_tran[Y]); - bu_vls_printf(&vls, "aZ = %f\n", s->s_edit.edit_absolute_model_tran[Z]); + bu_vls_printf(&vls, "aX = %f\n", s->s_edit->edit_absolute_model_tran[X]); + bu_vls_printf(&vls, "aY = %f\n", s->s_edit->edit_absolute_model_tran[Y]); + bu_vls_printf(&vls, "aZ = %f\n", s->s_edit->edit_absolute_model_tran[Z]); } else { bu_vls_printf(&vls, "aX = %f\n", view_state->vs_absolute_tran[X]); bu_vls_printf(&vls, "aY = %f\n", view_state->vs_absolute_tran[Y]); @@ -2069,12 +2069,12 @@ f_knob(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[]) switch (mged_variables->mv_coords) { case 'm': case 'o': - s->s_edit.edit_absolute_model_tran[X] += sf; - s->s_edit.last_edit_absolute_model_tran[X] = s->s_edit.edit_absolute_model_tran[X]; + s->s_edit->edit_absolute_model_tran[X] += sf; + s->s_edit->last_edit_absolute_model_tran[X] = s->s_edit->edit_absolute_model_tran[X]; break; case 'v': - s->s_edit.edit_absolute_view_tran[X] += sf; - s->s_edit.last_edit_absolute_view_tran[X] = s->s_edit.edit_absolute_view_tran[X]; + s->s_edit->edit_absolute_view_tran[X] += sf; + s->s_edit->last_edit_absolute_view_tran[X] = s->s_edit->edit_absolute_view_tran[X]; break; } } else if (model_flag || (mged_variables->mv_coords == 'm' && !view_flag)) { @@ -2092,14 +2092,14 @@ f_knob(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[]) switch (mged_variables->mv_coords) { case 'm': case 'o': - tvec[X] = f - s->s_edit.last_edit_absolute_model_tran[X] * view_state->vs_gvp->gv_scale * s->dbip->dbi_base2local; - s->s_edit.edit_absolute_model_tran[X] = sf; - s->s_edit.last_edit_absolute_model_tran[X] = s->s_edit.edit_absolute_model_tran[X]; + tvec[X] = f - s->s_edit->last_edit_absolute_model_tran[X] * view_state->vs_gvp->gv_scale * s->dbip->dbi_base2local; + s->s_edit->edit_absolute_model_tran[X] = sf; + s->s_edit->last_edit_absolute_model_tran[X] = s->s_edit->edit_absolute_model_tran[X]; break; case 'v': - tvec[X] = f - s->s_edit.last_edit_absolute_view_tran[X] * view_state->vs_gvp->gv_scale * s->dbip->dbi_base2local; - s->s_edit.edit_absolute_view_tran[X] = sf; - s->s_edit.last_edit_absolute_view_tran[X] = s->s_edit.edit_absolute_view_tran[X]; + tvec[X] = f - s->s_edit->last_edit_absolute_view_tran[X] * view_state->vs_gvp->gv_scale * s->dbip->dbi_base2local; + s->s_edit->edit_absolute_view_tran[X] = sf; + s->s_edit->last_edit_absolute_view_tran[X] = s->s_edit->edit_absolute_view_tran[X]; break; } } else if (model_flag || (mged_variables->mv_coords == 'm' && !view_flag)) { @@ -2125,12 +2125,12 @@ f_knob(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[]) switch (mged_variables->mv_coords) { case 'm': case 'o': - s->s_edit.edit_absolute_model_tran[Y] += sf; - s->s_edit.last_edit_absolute_model_tran[Y] = s->s_edit.edit_absolute_model_tran[Y]; + s->s_edit->edit_absolute_model_tran[Y] += sf; + s->s_edit->last_edit_absolute_model_tran[Y] = s->s_edit->edit_absolute_model_tran[Y]; break; case 'v': - s->s_edit.edit_absolute_view_tran[Y] += sf; - s->s_edit.last_edit_absolute_view_tran[Y] = s->s_edit.edit_absolute_view_tran[Y]; + s->s_edit->edit_absolute_view_tran[Y] += sf; + s->s_edit->last_edit_absolute_view_tran[Y] = s->s_edit->edit_absolute_view_tran[Y]; break; } } else if (model_flag || (mged_variables->mv_coords == 'm' && !view_flag)) { @@ -2148,14 +2148,14 @@ f_knob(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[]) switch (mged_variables->mv_coords) { case 'm': case 'o': - tvec[Y] = f - s->s_edit.last_edit_absolute_model_tran[Y] * view_state->vs_gvp->gv_scale * s->dbip->dbi_base2local; - s->s_edit.edit_absolute_model_tran[Y] = sf; - s->s_edit.last_edit_absolute_model_tran[Y] = s->s_edit.edit_absolute_model_tran[Y]; + tvec[Y] = f - s->s_edit->last_edit_absolute_model_tran[Y] * view_state->vs_gvp->gv_scale * s->dbip->dbi_base2local; + s->s_edit->edit_absolute_model_tran[Y] = sf; + s->s_edit->last_edit_absolute_model_tran[Y] = s->s_edit->edit_absolute_model_tran[Y]; break; case 'v': - tvec[Y] = f - s->s_edit.last_edit_absolute_view_tran[Y] * view_state->vs_gvp->gv_scale * s->dbip->dbi_base2local; - s->s_edit.edit_absolute_view_tran[Y] = sf; - s->s_edit.last_edit_absolute_view_tran[Y] = s->s_edit.edit_absolute_view_tran[Y]; + tvec[Y] = f - s->s_edit->last_edit_absolute_view_tran[Y] * view_state->vs_gvp->gv_scale * s->dbip->dbi_base2local; + s->s_edit->edit_absolute_view_tran[Y] = sf; + s->s_edit->last_edit_absolute_view_tran[Y] = s->s_edit->edit_absolute_view_tran[Y]; break; } } else if (model_flag || (mged_variables->mv_coords == 'm' && !view_flag)) { @@ -2180,12 +2180,12 @@ f_knob(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[]) switch (mged_variables->mv_coords) { case 'm': case 'o': - s->s_edit.edit_absolute_model_tran[Z] += sf; - s->s_edit.last_edit_absolute_model_tran[Z] = s->s_edit.edit_absolute_model_tran[Z]; + s->s_edit->edit_absolute_model_tran[Z] += sf; + s->s_edit->last_edit_absolute_model_tran[Z] = s->s_edit->edit_absolute_model_tran[Z]; break; case 'v': - s->s_edit.edit_absolute_view_tran[Z] += sf; - s->s_edit.last_edit_absolute_view_tran[Z] = s->s_edit.edit_absolute_view_tran[Z]; + s->s_edit->edit_absolute_view_tran[Z] += sf; + s->s_edit->last_edit_absolute_view_tran[Z] = s->s_edit->edit_absolute_view_tran[Z]; break; } } else if (model_flag || (mged_variables->mv_coords == 'm' && !view_flag)) { @@ -2203,14 +2203,14 @@ f_knob(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[]) switch (mged_variables->mv_coords) { case 'm': case 'o': - tvec[Z] = f - s->s_edit.last_edit_absolute_model_tran[Z] * view_state->vs_gvp->gv_scale * s->dbip->dbi_base2local; - s->s_edit.edit_absolute_model_tran[Z] = sf; - s->s_edit.last_edit_absolute_model_tran[Z] = s->s_edit.edit_absolute_model_tran[Z]; + tvec[Z] = f - s->s_edit->last_edit_absolute_model_tran[Z] * view_state->vs_gvp->gv_scale * s->dbip->dbi_base2local; + s->s_edit->edit_absolute_model_tran[Z] = sf; + s->s_edit->last_edit_absolute_model_tran[Z] = s->s_edit->edit_absolute_model_tran[Z]; break; case 'v': - tvec[Z] = f - s->s_edit.last_edit_absolute_view_tran[Z] * view_state->vs_gvp->gv_scale * s->dbip->dbi_base2local; - s->s_edit.edit_absolute_view_tran[Z] = sf; - s->s_edit.last_edit_absolute_view_tran[Z] = s->s_edit.edit_absolute_view_tran[Z]; + tvec[Z] = f - s->s_edit->last_edit_absolute_view_tran[Z] * view_state->vs_gvp->gv_scale * s->dbip->dbi_base2local; + s->s_edit->edit_absolute_view_tran[Z] = sf; + s->s_edit->last_edit_absolute_view_tran[Z] = s->s_edit->edit_absolute_view_tran[Z]; break; } } else if (model_flag || (mged_variables->mv_coords == 'm' && !view_flag)) { @@ -2229,7 +2229,7 @@ f_knob(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[]) case 'S': if (incr_flag) { if (EDIT_SCALE && ((mged_variables->mv_transform == 'e' && !view_flag) || edit_flag)) { - s->s_edit.edit_absolute_scale += f; + s->s_edit->edit_absolute_scale += f; if (s->edit_state.global_editing_state == ST_S_EDIT) { sedit_abs_scale(s); @@ -2242,7 +2242,7 @@ f_knob(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[]) } } else { if (EDIT_SCALE && ((mged_variables->mv_transform == 'e' && !view_flag) || edit_flag)) { - s->s_edit.edit_absolute_scale = f; + s->s_edit->edit_absolute_scale = f; if (s->edit_state.global_editing_state == ST_S_EDIT) { sedit_abs_scale(s); @@ -3213,10 +3213,10 @@ mged_erot(struct mged_state *s, case 'm': break; case 'o': - bn_mat_inv(temp1, s->s_edit.acc_rot_sol); + bn_mat_inv(temp1, s->s_edit->acc_rot_sol); /* transform into object rotations */ - bn_mat_mul(temp2, s->s_edit.acc_rot_sol, newrot); + bn_mat_mul(temp2, s->s_edit->acc_rot_sol, newrot); bn_mat_mul(newrot, temp2, temp1); break; case 'v': @@ -3235,33 +3235,33 @@ mged_erot(struct mged_state *s, save_rotate_about = mged_variables->mv_rotate_about; mged_variables->mv_rotate_about = rotate_about; - save_edflag = s->s_edit.edit_flag; - save_rot = s->s_edit.solid_edit_rotate; - save_tra = s->s_edit.solid_edit_translate; - save_sca = s->s_edit.solid_edit_scale; - save_pic = s->s_edit.solid_edit_pick; + save_edflag = s->s_edit->edit_flag; + save_rot = s->s_edit->solid_edit_rotate; + save_tra = s->s_edit->solid_edit_translate; + save_sca = s->s_edit->solid_edit_scale; + save_pic = s->s_edit->solid_edit_pick; if (!SEDIT_ROTATE) { mged_set_edflag(s, SROT); } - s->s_edit.e_inpara = 0; - MAT_COPY(s->s_edit.incr_change, newrot); - bn_mat_mul2(s->s_edit.incr_change, s->s_edit.acc_rot_sol); + s->s_edit->e_inpara = 0; + MAT_COPY(s->s_edit->incr_change, newrot); + bn_mat_mul2(s->s_edit->incr_change, s->s_edit->acc_rot_sol); sedit(s); mged_variables->mv_rotate_about = save_rotate_about; - s->s_edit.edit_flag = save_edflag; - s->s_edit.solid_edit_rotate = save_rot; - s->s_edit.solid_edit_translate = save_tra; - s->s_edit.solid_edit_scale = save_sca; - s->s_edit.solid_edit_pick = save_pic; + s->s_edit->edit_flag = save_edflag; + s->s_edit->solid_edit_rotate = save_rot; + s->s_edit->solid_edit_translate = save_tra; + s->s_edit->solid_edit_scale = save_sca; + s->s_edit->solid_edit_pick = save_pic; } else { point_t point; vect_t work; - bn_mat_mul2(newrot, s->s_edit.acc_rot_sol); + bn_mat_mul2(newrot, s->s_edit->acc_rot_sol); /* find point for rotation to take place wrt */ switch (rotate_about) { @@ -3278,13 +3278,13 @@ mged_erot(struct mged_state *s, break; case 'k': default: - MAT4X3PNT(point, s->s_edit.model_changes, s->s_edit.e_keypoint); + MAT4X3PNT(point, s->s_edit->model_changes, s->s_edit->e_keypoint); } /* - * Apply newrot to the s->s_edit.model_changes matrix wrt "point" + * Apply newrot to the s->s_edit->model_changes matrix wrt "point" */ - wrt_point(s->s_edit.model_changes, newrot, s->s_edit.model_changes, point); + wrt_point(s->s_edit->model_changes, newrot, s->s_edit->model_changes, point); new_edit_mats(s); } @@ -3383,11 +3383,11 @@ mged_vrot(struct mged_state *s, char origin, fastf_t *newrot) VSET(rot_pt, 0.0, 0.0, 1.0); /* point to rotate around */ } else if (origin == 'k' && s->edit_state.global_editing_state == ST_S_EDIT) { /* rotate around keypoint */ - MAT4X3PNT(rot_pt, view_state->vs_gvp->gv_model2view, s->s_edit.curr_e_axes_pos); + MAT4X3PNT(rot_pt, view_state->vs_gvp->gv_model2view, s->s_edit->curr_e_axes_pos); } else if (origin == 'k' && s->edit_state.global_editing_state == ST_O_EDIT) { point_t kpWmc; - MAT4X3PNT(kpWmc, s->s_edit.model_changes, s->s_edit.e_keypoint); + MAT4X3PNT(kpWmc, s->s_edit->model_changes, s->s_edit->e_keypoint); MAT4X3PNT(rot_pt, view_state->vs_gvp->gv_model2view, kpWmc); } else { /* rotate around model center (0, 0, 0) */ @@ -3442,8 +3442,8 @@ mged_vrot_xyz(struct mged_state *s, bn_mat_mul(newrot, temp2, temp1); } else if ((s->edit_state.global_editing_state == ST_S_EDIT || s->edit_state.global_editing_state == ST_O_EDIT) && coords == 'o') { /* first, transform object rotations into model rotations */ - bn_mat_inv(temp1, s->s_edit.acc_rot_sol); - bn_mat_mul(temp2, s->s_edit.acc_rot_sol, newrot); + bn_mat_inv(temp1, s->s_edit->acc_rot_sol); + bn_mat_mul(temp2, s->s_edit->acc_rot_sol, newrot); bn_mat_mul(newrot, temp2, temp1); /* now transform model rotations into view rotations */ @@ -3597,7 +3597,7 @@ mged_etran(struct mged_state *s, break; case 'o': VSCALE(p2, tvec, s->dbip->dbi_local2base); - MAT4X3PNT(delta, s->s_edit.acc_rot_sol, p2); + MAT4X3PNT(delta, s->s_edit->acc_rot_sol, p2); break; case 'v': default: @@ -3611,32 +3611,32 @@ mged_etran(struct mged_state *s, if (s->edit_state.global_editing_state == ST_S_EDIT) { int save_rot, save_tra, save_sca, save_pic; - s->s_edit.e_keyfixed = 0; - get_solid_keypoint(s, &s->s_edit.e_keypoint, &s->s_edit.e_keytag, - &s->s_edit.es_int, s->s_edit.e_mat); - save_edflag = s->s_edit.edit_flag; - save_rot = s->s_edit.solid_edit_rotate; - save_tra = s->s_edit.solid_edit_translate; - save_sca = s->s_edit.solid_edit_scale; - save_pic = s->s_edit.solid_edit_pick; + s->s_edit->e_keyfixed = 0; + get_solid_keypoint(s, &s->s_edit->e_keypoint, &s->s_edit->e_keytag, + &s->s_edit->es_int, s->s_edit->e_mat); + save_edflag = s->s_edit->edit_flag; + save_rot = s->s_edit->solid_edit_rotate; + save_tra = s->s_edit->solid_edit_translate; + save_sca = s->s_edit->solid_edit_scale; + save_pic = s->s_edit->solid_edit_pick; if (!SEDIT_TRAN) { mged_set_edflag(s, STRANS); } - VADD2(s->s_edit.e_para, delta, s->s_edit.curr_e_axes_pos); - s->s_edit.e_inpara = 3; + VADD2(s->s_edit->e_para, delta, s->s_edit->curr_e_axes_pos); + s->s_edit->e_inpara = 3; sedit(s); - s->s_edit.edit_flag = save_edflag; - s->s_edit.solid_edit_rotate = save_rot; - s->s_edit.solid_edit_translate = save_tra; - s->s_edit.solid_edit_scale = save_sca; - s->s_edit.solid_edit_pick = save_pic; + s->s_edit->edit_flag = save_edflag; + s->s_edit->solid_edit_rotate = save_rot; + s->s_edit->solid_edit_translate = save_tra; + s->s_edit->solid_edit_scale = save_sca; + s->s_edit->solid_edit_pick = save_pic; } else { MAT_IDN(xlatemat); MAT_DELTAS_VEC(xlatemat, delta); - bn_mat_mul2(xlatemat, s->s_edit.model_changes); + bn_mat_mul2(xlatemat, s->s_edit->model_changes); new_edit_mats(s); update_views = 1; @@ -3653,8 +3653,8 @@ mged_otran(struct mged_state *s, const vect_t tvec) vect_t work = VINIT_ZERO; if (s->edit_state.global_editing_state == ST_S_EDIT || s->edit_state.global_editing_state == ST_O_EDIT) { - /* apply s->s_edit.acc_rot_sol to tvec */ - MAT4X3PNT(work, s->s_edit.acc_rot_sol, tvec); + /* apply s->s_edit->acc_rot_sol to tvec */ + MAT4X3PNT(work, s->s_edit->acc_rot_sol, tvec); } return mged_mtran(s, work); @@ -3761,43 +3761,43 @@ mged_escale(struct mged_state *s, fastf_t sfactor) if (s->edit_state.global_editing_state == ST_S_EDIT) { int save_edflag, save_rot, save_tra, save_sca, save_pic; - save_edflag = s->s_edit.edit_flag; - save_rot = s->s_edit.solid_edit_rotate; - save_tra = s->s_edit.solid_edit_translate; - save_sca = s->s_edit.solid_edit_scale; - save_pic = s->s_edit.solid_edit_pick; + save_edflag = s->s_edit->edit_flag; + save_rot = s->s_edit->solid_edit_rotate; + save_tra = s->s_edit->solid_edit_translate; + save_sca = s->s_edit->solid_edit_scale; + save_pic = s->s_edit->solid_edit_pick; if (!SEDIT_SCALE) { mged_set_edflag(s, SSCALE); } - s->s_edit.es_scale = sfactor; - old_scale = s->s_edit.acc_sc_sol; - s->s_edit.acc_sc_sol *= sfactor; + s->s_edit->es_scale = sfactor; + old_scale = s->s_edit->acc_sc_sol; + s->s_edit->acc_sc_sol *= sfactor; - if (s->s_edit.acc_sc_sol < MGED_SMALL_SCALE) { - s->s_edit.acc_sc_sol = old_scale; - s->s_edit.edit_flag = save_edflag; - s->s_edit.solid_edit_rotate = save_rot; - s->s_edit.solid_edit_translate = save_tra; - s->s_edit.solid_edit_scale = save_sca; - s->s_edit.solid_edit_pick = save_pic; + if (s->s_edit->acc_sc_sol < MGED_SMALL_SCALE) { + s->s_edit->acc_sc_sol = old_scale; + s->s_edit->edit_flag = save_edflag; + s->s_edit->solid_edit_rotate = save_rot; + s->s_edit->solid_edit_translate = save_tra; + s->s_edit->solid_edit_scale = save_sca; + s->s_edit->solid_edit_pick = save_pic; return TCL_OK; } - if (s->s_edit.acc_sc_sol >= 1.0) { - s->s_edit.edit_absolute_scale = (s->s_edit.acc_sc_sol - 1.0) / 3.0; + if (s->s_edit->acc_sc_sol >= 1.0) { + s->s_edit->edit_absolute_scale = (s->s_edit->acc_sc_sol - 1.0) / 3.0; } else { - s->s_edit.edit_absolute_scale = s->s_edit.acc_sc_sol - 1.0; + s->s_edit->edit_absolute_scale = s->s_edit->acc_sc_sol - 1.0; } sedit(s); - s->s_edit.edit_flag = save_edflag; - s->s_edit.solid_edit_rotate = save_rot; - s->s_edit.solid_edit_translate = save_tra; - s->s_edit.solid_edit_scale = save_sca; - s->s_edit.solid_edit_pick = save_pic; + s->s_edit->edit_flag = save_edflag; + s->s_edit->solid_edit_rotate = save_rot; + s->s_edit->solid_edit_translate = save_tra; + s->s_edit->solid_edit_scale = save_sca; + s->s_edit->solid_edit_pick = save_pic; } else { point_t temp; @@ -3845,11 +3845,11 @@ mged_escale(struct mged_state *s, fastf_t sfactor) case BE_O_SCALE: /* global scaling */ default: smat[15] = inv_sfactor; - old_scale = s->s_edit.acc_sc_sol; - s->s_edit.acc_sc_sol *= inv_sfactor; + old_scale = s->s_edit->acc_sc_sol; + s->s_edit->acc_sc_sol *= inv_sfactor; - if (s->s_edit.acc_sc_sol < MGED_SMALL_SCALE) { - s->s_edit.acc_sc_sol = old_scale; + if (s->s_edit->acc_sc_sol < MGED_SMALL_SCALE) { + s->s_edit->acc_sc_sol = old_scale; return TCL_OK; } @@ -3859,9 +3859,9 @@ mged_escale(struct mged_state *s, fastf_t sfactor) /* Have scaling take place with respect to keypoint, * NOT the view center. */ - VMOVE(temp, s->s_edit.e_keypoint); - MAT4X3PNT(pos_model, s->s_edit.model_changes, temp); - wrt_point(s->s_edit.model_changes, smat, s->s_edit.model_changes, pos_model); + VMOVE(temp, s->s_edit->e_keypoint); + MAT4X3PNT(pos_model, s->s_edit->model_changes, temp); + wrt_point(s->s_edit->model_changes, smat, s->s_edit->model_changes, pos_model); new_edit_mats(s); } diff --git a/src/mged/cmd.c b/src/mged/cmd.c index b8f53fb264..cd9d9b78e1 100644 --- a/src/mged/cmd.c +++ b/src/mged/cmd.c @@ -560,9 +560,9 @@ cmd_ged_inside(ClientData clientData, Tcl_Interp *interpreter, int argc, const c if (s->edit_state.global_editing_state == ST_S_EDIT) { /* solid edit mode */ - /* apply s->s_edit.e_mat editing to parameters */ + /* apply s->s_edit->e_mat editing to parameters */ struct directory *outdp = RT_DIR_NULL; - transform_editing_solid(s, &intern, s->s_edit.e_mat, &s->s_edit.es_int, 0); + transform_editing_solid(s, &intern, s->s_edit->e_mat, &s->s_edit->es_int, 0); if (illump && illump->s_u_data) { bdata = (struct ged_bv_data *)illump->s_u_data; outdp = LAST_SOLID(bdata); @@ -592,9 +592,9 @@ cmd_ged_inside(ClientData clientData, Tcl_Interp *interpreter, int argc, const c return TCL_ERROR; } /* use the solid at bottom of path (key solid) */ - /* apply s->s_edit.e_mat and s->s_edit.model_changes editing to parameters */ - bn_mat_mul(newmat, s->s_edit.model_changes, s->s_edit.e_mat); - transform_editing_solid(s, &intern, newmat, &s->s_edit.es_int, 0); + /* apply s->s_edit->e_mat and s->s_edit->model_changes editing to parameters */ + bn_mat_mul(newmat, s->s_edit->model_changes, s->s_edit->e_mat); + transform_editing_solid(s, &intern, newmat, &s->s_edit->es_int, 0); if (illump && illump->s_u_data) { bdata = (struct ged_bv_data *)illump->s_u_data; outdp = LAST_SOLID(bdata); @@ -1633,7 +1633,7 @@ mged_global_variable_setup(struct mged_state *s) Tcl_LinkVar(s->interp, "mged_default(db_version)", (char *)&mged_global_db_ctx.db_version, TCL_LINK_INT); Tcl_LinkVar(s->interp, "edit_class", (char *)&s->edit_state.e_edclass, TCL_LINK_INT); - Tcl_LinkVar(s->interp, "edit_solid_flag", (char *)&s->s_edit.edit_flag, TCL_LINK_INT); + Tcl_LinkVar(s->interp, "edit_solid_flag", (char *)&s->s_edit->edit_flag, TCL_LINK_INT); Tcl_LinkVar(s->interp, "edit_object_flag", (char *)&edobj, TCL_LINK_INT); /* link some tcl variables to these corresponding globals */ diff --git a/src/mged/dm-generic.c b/src/mged/dm-generic.c index 15ee74b22a..f4d6078da4 100644 --- a/src/mged/dm-generic.c +++ b/src/mged/dm-generic.c @@ -202,7 +202,7 @@ common_dm(struct mged_state *s, int argc, const char *argv[]) point_t model_pt; snap_to_grid(s, &fx, &fy); - MAT4X3PNT(view_pt, view_state->vs_gvp->gv_model2view, s->s_edit.curr_e_axes_pos); + MAT4X3PNT(view_pt, view_state->vs_gvp->gv_model2view, s->s_edit->curr_e_axes_pos); view_pt[X] = fx; view_pt[Y] = fy; MAT4X3PNT(model_pt, view_state->vs_gvp->gv_view2model, view_pt); @@ -214,7 +214,7 @@ common_dm(struct mged_state *s, int argc, const char *argv[]) point_t model_pt; snap_to_grid(s, &fx, &fy); - MAT4X3PNT(view_pt, view_state->vs_gvp->gv_model2view, s->s_edit.curr_e_axes_pos); + MAT4X3PNT(view_pt, view_state->vs_gvp->gv_model2view, s->s_edit->curr_e_axes_pos); view_pt[X] = fx; view_pt[Y] = fy; MAT4X3PNT(model_pt, view_state->vs_gvp->gv_view2model, view_pt); @@ -272,11 +272,11 @@ common_dm(struct mged_state *s, int argc, const char *argv[]) int save_sca = 0; int save_pic = 0; if (s->edit_state.global_editing_state == ST_S_EDIT) { - save_edflag = s->s_edit.edit_flag; - save_rot = s->s_edit.solid_edit_rotate; - save_tra = s->s_edit.solid_edit_translate; - save_sca = s->s_edit.solid_edit_scale; - save_pic = s->s_edit.solid_edit_pick; + save_edflag = s->s_edit->edit_flag; + save_rot = s->s_edit->solid_edit_rotate; + save_tra = s->s_edit->solid_edit_translate; + save_sca = s->s_edit->solid_edit_scale; + save_pic = s->s_edit->solid_edit_pick; if (!SEDIT_TRAN) mged_set_edflag(s, STRANS); } else { @@ -287,11 +287,11 @@ common_dm(struct mged_state *s, int argc, const char *argv[]) snap_keypoint_to_grid(s); if (s->edit_state.global_editing_state == ST_S_EDIT) { - s->s_edit.edit_flag = save_edflag; - s->s_edit.solid_edit_rotate = save_rot; - s->s_edit.solid_edit_translate = save_tra; - s->s_edit.solid_edit_scale = save_sca; - s->s_edit.solid_edit_pick = save_pic; + s->s_edit->edit_flag = save_edflag; + s->s_edit->solid_edit_rotate = save_rot; + s->s_edit->solid_edit_translate = save_tra; + s->s_edit->solid_edit_scale = save_sca; + s->s_edit->solid_edit_pick = save_pic; } else { edobj = save_edflag; } @@ -302,12 +302,12 @@ common_dm(struct mged_state *s, int argc, const char *argv[]) break; case 's': if (s->edit_state.global_editing_state == ST_S_EDIT && mged_variables->mv_transform == 'e' && - ZERO(s->s_edit.acc_sc_sol)) - s->s_edit.acc_sc_sol = 1.0; + ZERO(s->s_edit->acc_sc_sol)) + s->s_edit->acc_sc_sol = 1.0; else if (s->edit_state.global_editing_state == ST_O_EDIT && mged_variables->mv_transform == 'e') { - s->s_edit.edit_absolute_scale = s->edit_state.acc_sc_obj - 1.0; - if (s->s_edit.edit_absolute_scale > 0.0) - s->s_edit.edit_absolute_scale /= 3.0; + s->s_edit->edit_absolute_scale = s->edit_state.acc_sc_obj - 1.0; + if (s->s_edit->edit_absolute_scale > 0.0) + s->s_edit->edit_absolute_scale /= 3.0; } am_mode = AMM_SCALE; @@ -471,36 +471,36 @@ common_dm(struct mged_state *s, int argc, const char *argv[]) switch (*argv[2]) { case 'x': if (s->edit_state.global_editing_state == ST_S_EDIT && mged_variables->mv_transform == 'e' && - ZERO(s->s_edit.acc_sc_sol)) - s->s_edit.acc_sc_sol = 1.0; + ZERO(s->s_edit->acc_sc_sol)) + s->s_edit->acc_sc_sol = 1.0; else if (s->edit_state.global_editing_state == ST_O_EDIT && mged_variables->mv_transform == 'e') { - s->s_edit.edit_absolute_scale = s->edit_state.acc_sc[0] - 1.0; - if (s->s_edit.edit_absolute_scale > 0.0) - s->s_edit.edit_absolute_scale /= 3.0; + s->s_edit->edit_absolute_scale = s->edit_state.acc_sc[0] - 1.0; + if (s->s_edit->edit_absolute_scale > 0.0) + s->s_edit->edit_absolute_scale /= 3.0; } am_mode = AMM_CON_SCALE_X; break; case 'y': if (s->edit_state.global_editing_state == ST_S_EDIT && mged_variables->mv_transform == 'e' && - ZERO(s->s_edit.acc_sc_sol)) - s->s_edit.acc_sc_sol = 1.0; + ZERO(s->s_edit->acc_sc_sol)) + s->s_edit->acc_sc_sol = 1.0; else if (s->edit_state.global_editing_state == ST_O_EDIT && mged_variables->mv_transform == 'e') { - s->s_edit.edit_absolute_scale = s->edit_state.acc_sc[1] - 1.0; - if (s->s_edit.edit_absolute_scale > 0.0) - s->s_edit.edit_absolute_scale /= 3.0; + s->s_edit->edit_absolute_scale = s->edit_state.acc_sc[1] - 1.0; + if (s->s_edit->edit_absolute_scale > 0.0) + s->s_edit->edit_absolute_scale /= 3.0; } am_mode = AMM_CON_SCALE_Y; break; case 'z': if (s->edit_state.global_editing_state == ST_S_EDIT && mged_variables->mv_transform == 'e' && - ZERO(s->s_edit.acc_sc_sol)) - s->s_edit.acc_sc_sol = 1.0; + ZERO(s->s_edit->acc_sc_sol)) + s->s_edit->acc_sc_sol = 1.0; else if (s->edit_state.global_editing_state == ST_O_EDIT && mged_variables->mv_transform == 'e') { - s->s_edit.edit_absolute_scale = s->edit_state.acc_sc[2] - 1.0; - if (s->s_edit.edit_absolute_scale > 0.0) - s->s_edit.edit_absolute_scale /= 3.0; + s->s_edit->edit_absolute_scale = s->edit_state.acc_sc[2] - 1.0; + if (s->s_edit->edit_absolute_scale > 0.0) + s->s_edit->edit_absolute_scale /= 3.0; } am_mode = AMM_CON_SCALE_Z; diff --git a/src/mged/doevent.c b/src/mged/doevent.c index 5e5a3750c9..ce4fc7612f 100644 --- a/src/mged/doevent.c +++ b/src/mged/doevent.c @@ -236,11 +236,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion) mged_variables->mv_transform == 'e') { if (s->edit_state.global_editing_state == ST_S_EDIT) { - save_edflag = s->s_edit.edit_flag; - save_rot = s->s_edit.solid_edit_rotate; - save_tra = s->s_edit.solid_edit_translate; - save_sca = s->s_edit.solid_edit_scale; - save_pic = s->s_edit.solid_edit_pick; + save_edflag = s->s_edit->edit_flag; + save_rot = s->s_edit->solid_edit_rotate; + save_tra = s->s_edit->solid_edit_translate; + save_sca = s->s_edit->solid_edit_scale; + save_pic = s->s_edit->solid_edit_pick; if (!SEDIT_ROTATE) mged_set_edflag(s, SROT); } else { @@ -284,11 +284,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion) mged_variables->mv_transform == 'e') { if (s->edit_state.global_editing_state == ST_S_EDIT) { - save_edflag = s->s_edit.edit_flag; - save_rot = s->s_edit.solid_edit_rotate; - save_tra = s->s_edit.solid_edit_translate; - save_sca = s->s_edit.solid_edit_scale; - save_pic = s->s_edit.solid_edit_pick; + save_edflag = s->s_edit->edit_flag; + save_rot = s->s_edit->solid_edit_rotate; + save_tra = s->s_edit->solid_edit_translate; + save_sca = s->s_edit->solid_edit_scale; + save_pic = s->s_edit->solid_edit_pick; if (!SEDIT_TRAN) mged_set_edflag(s, STRANS); } else { @@ -353,11 +353,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion) if ((s->edit_state.global_editing_state == ST_S_EDIT || s->edit_state.global_editing_state == ST_O_EDIT) && mged_variables->mv_transform == 'e') { if (s->edit_state.global_editing_state == ST_S_EDIT && !SEDIT_SCALE) { - save_edflag = s->s_edit.edit_flag; - save_rot = s->s_edit.solid_edit_rotate; - save_tra = s->s_edit.solid_edit_translate; - save_sca = s->s_edit.solid_edit_scale; - save_pic = s->s_edit.solid_edit_pick; + save_edflag = s->s_edit->edit_flag; + save_rot = s->s_edit->solid_edit_rotate; + save_tra = s->s_edit->solid_edit_translate; + save_sca = s->s_edit->solid_edit_scale; + save_pic = s->s_edit->solid_edit_pick; mged_set_edflag(s, SSCALE); } else if (s->edit_state.global_editing_state == ST_O_EDIT && !OEDIT_SCALE) { save_edflag = edobj; @@ -415,11 +415,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion) if ((s->edit_state.global_editing_state == ST_S_EDIT || s->edit_state.global_editing_state == ST_O_EDIT) && mged_variables->mv_transform == 'e') { if (s->edit_state.global_editing_state == ST_S_EDIT) { - save_edflag = s->s_edit.edit_flag; - save_rot = s->s_edit.solid_edit_rotate; - save_tra = s->s_edit.solid_edit_translate; - save_sca = s->s_edit.solid_edit_scale; - save_pic = s->s_edit.solid_edit_pick; + save_edflag = s->s_edit->edit_flag; + save_rot = s->s_edit->solid_edit_rotate; + save_tra = s->s_edit->solid_edit_translate; + save_sca = s->s_edit->solid_edit_scale; + save_pic = s->s_edit->solid_edit_pick; if (!SEDIT_ROTATE) mged_set_edflag(s, SROT); } else { @@ -444,11 +444,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion) if ((s->edit_state.global_editing_state == ST_S_EDIT || s->edit_state.global_editing_state == ST_O_EDIT) && mged_variables->mv_transform == 'e') { if (s->edit_state.global_editing_state == ST_S_EDIT) { - save_edflag = s->s_edit.edit_flag; - save_rot = s->s_edit.solid_edit_rotate; - save_tra = s->s_edit.solid_edit_translate; - save_sca = s->s_edit.solid_edit_scale; - save_pic = s->s_edit.solid_edit_pick; + save_edflag = s->s_edit->edit_flag; + save_rot = s->s_edit->solid_edit_rotate; + save_tra = s->s_edit->solid_edit_translate; + save_sca = s->s_edit->solid_edit_scale; + save_pic = s->s_edit->solid_edit_pick; if (!SEDIT_ROTATE) mged_set_edflag(s, SROT); } else { @@ -473,11 +473,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion) if ((s->edit_state.global_editing_state == ST_S_EDIT || s->edit_state.global_editing_state == ST_O_EDIT) && mged_variables->mv_transform == 'e') { if (s->edit_state.global_editing_state == ST_S_EDIT) { - save_edflag = s->s_edit.edit_flag; - save_rot = s->s_edit.solid_edit_rotate; - save_tra = s->s_edit.solid_edit_translate; - save_sca = s->s_edit.solid_edit_scale; - save_pic = s->s_edit.solid_edit_pick; + save_edflag = s->s_edit->edit_flag; + save_rot = s->s_edit->solid_edit_rotate; + save_tra = s->s_edit->solid_edit_translate; + save_sca = s->s_edit->solid_edit_scale; + save_pic = s->s_edit->solid_edit_pick; if (!SEDIT_ROTATE) mged_set_edflag(s, SROT); } else { @@ -502,11 +502,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion) if ((s->edit_state.global_editing_state == ST_S_EDIT || s->edit_state.global_editing_state == ST_O_EDIT) && mged_variables->mv_transform == 'e') { if (s->edit_state.global_editing_state == ST_S_EDIT) { - save_edflag = s->s_edit.edit_flag; - save_rot = s->s_edit.solid_edit_rotate; - save_tra = s->s_edit.solid_edit_translate; - save_sca = s->s_edit.solid_edit_scale; - save_pic = s->s_edit.solid_edit_pick; + save_edflag = s->s_edit->edit_flag; + save_rot = s->s_edit->solid_edit_rotate; + save_tra = s->s_edit->solid_edit_translate; + save_sca = s->s_edit->solid_edit_scale; + save_pic = s->s_edit->solid_edit_pick; if (!SEDIT_TRAN) mged_set_edflag(s, STRANS); } else if (s->edit_state.global_editing_state == ST_O_EDIT && !OEDIT_TRAN) { @@ -530,11 +530,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion) if ((s->edit_state.global_editing_state == ST_S_EDIT || s->edit_state.global_editing_state == ST_O_EDIT) && mged_variables->mv_transform == 'e') { if (s->edit_state.global_editing_state == ST_S_EDIT) { - save_edflag = s->s_edit.edit_flag; - save_rot = s->s_edit.solid_edit_rotate; - save_tra = s->s_edit.solid_edit_translate; - save_sca = s->s_edit.solid_edit_scale; - save_pic = s->s_edit.solid_edit_pick; + save_edflag = s->s_edit->edit_flag; + save_rot = s->s_edit->solid_edit_rotate; + save_tra = s->s_edit->solid_edit_translate; + save_sca = s->s_edit->solid_edit_scale; + save_pic = s->s_edit->solid_edit_pick; if (!SEDIT_TRAN) mged_set_edflag(s, STRANS); } else if (s->edit_state.global_editing_state == ST_O_EDIT && !OEDIT_TRAN) { @@ -558,11 +558,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion) if ((s->edit_state.global_editing_state == ST_S_EDIT || s->edit_state.global_editing_state == ST_O_EDIT) && mged_variables->mv_transform == 'e') { if (s->edit_state.global_editing_state == ST_S_EDIT) { - save_edflag = s->s_edit.edit_flag; - save_rot = s->s_edit.solid_edit_rotate; - save_tra = s->s_edit.solid_edit_translate; - save_sca = s->s_edit.solid_edit_scale; - save_pic = s->s_edit.solid_edit_pick; + save_edflag = s->s_edit->edit_flag; + save_rot = s->s_edit->solid_edit_rotate; + save_tra = s->s_edit->solid_edit_translate; + save_sca = s->s_edit->solid_edit_scale; + save_pic = s->s_edit->solid_edit_pick; if (!SEDIT_TRAN) mged_set_edflag(s, STRANS); } else if (s->edit_state.global_editing_state == ST_O_EDIT && !OEDIT_TRAN) { @@ -586,11 +586,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion) if ((s->edit_state.global_editing_state == ST_S_EDIT || s->edit_state.global_editing_state == ST_O_EDIT) && mged_variables->mv_transform == 'e') { if (s->edit_state.global_editing_state == ST_S_EDIT) { - save_edflag = s->s_edit.edit_flag; - save_rot = s->s_edit.solid_edit_rotate; - save_tra = s->s_edit.solid_edit_translate; - save_sca = s->s_edit.solid_edit_scale; - save_pic = s->s_edit.solid_edit_pick; + save_edflag = s->s_edit->edit_flag; + save_rot = s->s_edit->solid_edit_rotate; + save_tra = s->s_edit->solid_edit_translate; + save_sca = s->s_edit->solid_edit_scale; + save_pic = s->s_edit->solid_edit_pick; if (!SEDIT_SCALE) mged_set_edflag(s, SSCALE); } else if (s->edit_state.global_editing_state == ST_O_EDIT && !OEDIT_SCALE) { @@ -614,11 +614,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion) if ((s->edit_state.global_editing_state == ST_S_EDIT || s->edit_state.global_editing_state == ST_O_EDIT) && mged_variables->mv_transform == 'e') { if (s->edit_state.global_editing_state == ST_S_EDIT) { - save_edflag = s->s_edit.edit_flag; - save_rot = s->s_edit.solid_edit_rotate; - save_tra = s->s_edit.solid_edit_translate; - save_sca = s->s_edit.solid_edit_scale; - save_pic = s->s_edit.solid_edit_pick; + save_edflag = s->s_edit->edit_flag; + save_rot = s->s_edit->solid_edit_rotate; + save_tra = s->s_edit->solid_edit_translate; + save_sca = s->s_edit->solid_edit_scale; + save_pic = s->s_edit->solid_edit_pick; if (!SEDIT_SCALE) mged_set_edflag(s, SSCALE); } else if (s->edit_state.global_editing_state == ST_O_EDIT && !OEDIT_SCALE) { @@ -642,11 +642,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion) if ((s->edit_state.global_editing_state == ST_S_EDIT || s->edit_state.global_editing_state == ST_O_EDIT) && mged_variables->mv_transform == 'e') { if (s->edit_state.global_editing_state == ST_S_EDIT) { - save_edflag = s->s_edit.edit_flag; - save_rot = s->s_edit.solid_edit_rotate; - save_tra = s->s_edit.solid_edit_translate; - save_sca = s->s_edit.solid_edit_scale; - save_pic = s->s_edit.solid_edit_pick; + save_edflag = s->s_edit->edit_flag; + save_rot = s->s_edit->solid_edit_rotate; + save_tra = s->s_edit->solid_edit_translate; + save_sca = s->s_edit->solid_edit_scale; + save_pic = s->s_edit->solid_edit_pick; if (!SEDIT_SCALE) mged_set_edflag(s, SSCALE); } else if (s->edit_state.global_editing_state == ST_O_EDIT && !OEDIT_SCALE) { @@ -718,11 +718,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion) reset_edflag: if (save_edflag != -1) { if (s->edit_state.global_editing_state == ST_S_EDIT) { - s->s_edit.edit_flag = save_edflag ; - s->s_edit.solid_edit_rotate = save_rot; - s->s_edit.solid_edit_translate = save_tra; - s->s_edit.solid_edit_scale = save_sca; - s->s_edit.solid_edit_pick = save_pic; + s->s_edit->edit_flag = save_edflag ; + s->s_edit->solid_edit_rotate = save_rot; + s->s_edit->solid_edit_translate = save_tra; + s->s_edit->solid_edit_scale = save_sca; + s->s_edit->solid_edit_pick = save_pic; } else if (s->edit_state.global_editing_state == ST_O_EDIT) edobj = save_edflag; } diff --git a/src/mged/dozoom.c b/src/mged/dozoom.c index 837e328963..b5bed8de6c 100644 --- a/src/mged/dozoom.c +++ b/src/mged/dozoom.c @@ -193,7 +193,7 @@ dozoom(struct mged_state *s, int which_eye) mat = newmat; } dm_loadmatrix(DMP, mat, which_eye); - inv_viewsize /= s->s_edit.model_changes[15]; + inv_viewsize /= s->s_edit->model_changes[15]; dm_set_fg(DMP, color_scheme->cs_geo_hl[0], color_scheme->cs_geo_hl[1], diff --git a/src/mged/edsol.c b/src/mged/edsol.c index bc26d6b712..744d03f7aa 100644 --- a/src/mged/edsol.c +++ b/src/mged/edsol.c @@ -82,28 +82,28 @@ fastf_t es_m[3]; /* edge(line) slope */ void set_e_axes_pos(struct mged_state *s, int both) - /* if (!both) then set only s->s_edit.curr_e_axes_pos, otherwise - set s->s_edit.e_axes_pos and s->s_edit.curr_e_axes_pos */ + /* if (!both) then set only s->s_edit->curr_e_axes_pos, otherwise + set s->s_edit->e_axes_pos and s->s_edit->curr_e_axes_pos */ { update_views = 1; dm_set_dirty(DMP, 1); - struct rt_db_internal *ip = &s->s_edit.es_int; + struct rt_db_internal *ip = &s->s_edit->es_int; if (MGED_OBJ[ip->idb_type].ft_e_axes_pos) { - bu_vls_trunc(s->s_edit.log_str, 0); + bu_vls_trunc(s->s_edit->log_str, 0); (*MGED_OBJ[ip->idb_type].ft_e_axes_pos)(s, ip, &s->tol.tol); - if (bu_vls_strlen(s->s_edit.log_str)) { - Tcl_AppendResult(s->interp, bu_vls_cstr(s->s_edit.log_str), (char *)NULL); - bu_vls_trunc(s->s_edit.log_str, 0); + if (bu_vls_strlen(s->s_edit->log_str)) { + Tcl_AppendResult(s->interp, bu_vls_cstr(s->s_edit->log_str), (char *)NULL); + bu_vls_trunc(s->s_edit->log_str, 0); } return; } else { - VMOVE(s->s_edit.curr_e_axes_pos, s->s_edit.e_keypoint); + VMOVE(s->s_edit->curr_e_axes_pos, s->s_edit->e_keypoint); } if (both) { - VMOVE(s->s_edit.e_axes_pos, s->s_edit.curr_e_axes_pos); + VMOVE(s->s_edit->e_axes_pos, s->s_edit->curr_e_axes_pos); if (EDIT_ROTATE) { s->edit_state.e_edclass = EDIT_CLASS_ROTATE; @@ -115,22 +115,22 @@ set_e_axes_pos(struct mged_state *s, int both) VSETALL(s->edit_state.last_edit_absolute_view_rotate, 0.0); } else if (EDIT_TRAN) { s->edit_state.e_edclass = EDIT_CLASS_TRAN; - VSETALL(s->s_edit.edit_absolute_model_tran, 0.0); - VSETALL(s->s_edit.edit_absolute_view_tran, 0.0); - VSETALL(s->s_edit.last_edit_absolute_model_tran, 0.0); - VSETALL(s->s_edit.last_edit_absolute_view_tran, 0.0); + VSETALL(s->s_edit->edit_absolute_model_tran, 0.0); + VSETALL(s->s_edit->edit_absolute_view_tran, 0.0); + VSETALL(s->s_edit->last_edit_absolute_model_tran, 0.0); + VSETALL(s->s_edit->last_edit_absolute_view_tran, 0.0); } else if (EDIT_SCALE) { s->edit_state.e_edclass = EDIT_CLASS_SCALE; if (SEDIT_SCALE) { - s->s_edit.edit_absolute_scale = 0.0; - s->s_edit.acc_sc_sol = 1.0; + s->s_edit->edit_absolute_scale = 0.0; + s->s_edit->acc_sc_sol = 1.0; } } else { s->edit_state.e_edclass = EDIT_CLASS_NULL; } - MAT_IDN(s->s_edit.acc_rot_sol); + MAT_IDN(s->s_edit->acc_rot_sol); for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) { struct mged_dm *m_dmp = (struct mged_dm *)BU_PTBL_GET(&active_dm_set, di); @@ -160,11 +160,11 @@ get_solid_keypoint(struct mged_state *s, point_t *pt, const char **strp, struct RT_CK_DB_INTERNAL(ip); if (MGED_OBJ[ip->idb_type].ft_keypoint) { - bu_vls_trunc(s->s_edit.log_str, 0); + bu_vls_trunc(s->s_edit->log_str, 0); *strp = (*MGED_OBJ[ip->idb_type].ft_keypoint)(pt, *strp, mat, ip, &s->tol.tol); - if (bu_vls_strlen(s->s_edit.log_str)) { - Tcl_AppendResult(s->interp, bu_vls_cstr(s->s_edit.log_str), (char *)NULL); - bu_vls_trunc(s->s_edit.log_str, 0); + if (bu_vls_strlen(s->s_edit->log_str)) { + Tcl_AppendResult(s->interp, bu_vls_cstr(s->s_edit->log_str), (char *)NULL); + bu_vls_trunc(s->s_edit->log_str, 0); } return; } @@ -184,7 +184,7 @@ f_get_solid_keypoint(ClientData clientData, Tcl_Interp *UNUSED(interp), int UNUS if (s->edit_state.global_editing_state == ST_VIEW || s->edit_state.global_editing_state == ST_S_PICK || s->edit_state.global_editing_state == ST_O_PICK) return TCL_OK; - get_solid_keypoint(s, &s->s_edit.e_keypoint, &s->s_edit.e_keytag, &s->s_edit.es_int, s->s_edit.e_mat); + get_solid_keypoint(s, &s->s_edit->e_keypoint, &s->s_edit->e_keytag, &s->s_edit->es_int, s->s_edit->e_mat); return TCL_OK; } @@ -211,11 +211,11 @@ init_sedit(struct mged_state *s) return; } - /* Read solid description into s->s_edit.es_int */ + /* Read solid description into s->s_edit->es_int */ if (!illump->s_u_data) return; struct ged_bv_data *bdata = (struct ged_bv_data *)illump->s_u_data; - if (rt_db_get_internal(&s->s_edit.es_int, LAST_SOLID(bdata), + if (rt_db_get_internal(&s->s_edit->es_int, LAST_SOLID(bdata), s->dbip, NULL, &rt_uniresource) < 0) { if (bdata->s_fullpath.fp_len > 0) { Tcl_AppendResult(s->interp, "init_sedit(", @@ -224,13 +224,13 @@ init_sedit(struct mged_state *s) } else { Tcl_AppendResult(s->interp, "sedit_reset(NULL): solid import failure\n", (char *)NULL); } - rt_db_free_internal(&s->s_edit.es_int); + rt_db_free_internal(&s->s_edit->es_int); return; /* FAIL */ } - RT_CK_DB_INTERNAL(&s->s_edit.es_int); - id = s->s_edit.es_int.idb_type; + RT_CK_DB_INTERNAL(&s->s_edit->es_int); + id = s->s_edit->es_int.idb_type; - s->s_edit.edit_menu = 0; + s->s_edit->edit_menu = 0; // TODO - indicates we need per-primitive init of sedit state if (id == ID_BSPLINE) { @@ -238,14 +238,14 @@ init_sedit(struct mged_state *s) } /* Save aggregate path matrix */ - (void)db_path_to_mat(s->dbip, &bdata->s_fullpath, s->s_edit.e_mat, bdata->s_fullpath.fp_len-1, &rt_uniresource); + (void)db_path_to_mat(s->dbip, &bdata->s_fullpath, s->s_edit->e_mat, bdata->s_fullpath.fp_len-1, &rt_uniresource); /* get the inverse matrix */ - bn_mat_inv(s->s_edit.e_invmat, s->s_edit.e_mat); + bn_mat_inv(s->s_edit->e_invmat, s->s_edit->e_mat); /* Establish initial keypoint */ - s->s_edit.e_keytag = ""; - get_solid_keypoint(s, &s->s_edit.e_keypoint, &s->s_edit.e_keytag, &s->s_edit.es_int, s->s_edit.e_mat); + s->s_edit->e_keytag = ""; + get_solid_keypoint(s, &s->s_edit->e_keypoint, &s->s_edit->e_keytag, &s->s_edit->es_int, s->s_edit->e_mat); es_eu = (struct edgeuse *)NULL; /* Reset es_eu */ es_pipe_pnt = (struct wdb_pipe_pnt *)NULL; /* Reset es_pipe_pnt */ @@ -280,8 +280,8 @@ init_sedit(struct mged_state *s) static void init_sedit_vars(struct mged_state *s) { - MAT_IDN(s->s_edit.acc_rot_sol); - MAT_IDN(s->s_edit.incr_change); + MAT_IDN(s->s_edit->acc_rot_sol); + MAT_IDN(s->s_edit->incr_change); VSETALL(s->edit_state.edit_absolute_model_rotate, 0.0); VSETALL(s->edit_state.edit_absolute_object_rotate, 0.0); @@ -289,12 +289,12 @@ init_sedit_vars(struct mged_state *s) VSETALL(s->edit_state.last_edit_absolute_model_rotate, 0.0); VSETALL(s->edit_state.last_edit_absolute_object_rotate, 0.0); VSETALL(s->edit_state.last_edit_absolute_view_rotate, 0.0); - VSETALL(s->s_edit.edit_absolute_model_tran, 0.0); - VSETALL(s->s_edit.edit_absolute_view_tran, 0.0); - VSETALL(s->s_edit.last_edit_absolute_model_tran, 0.0); - VSETALL(s->s_edit.last_edit_absolute_view_tran, 0.0); - s->s_edit.edit_absolute_scale = 0.0; - s->s_edit.acc_sc_sol = 1.0; + VSETALL(s->s_edit->edit_absolute_model_tran, 0.0); + VSETALL(s->s_edit->edit_absolute_view_tran, 0.0); + VSETALL(s->s_edit->last_edit_absolute_model_tran, 0.0); + VSETALL(s->s_edit->last_edit_absolute_view_tran, 0.0); + s->s_edit->edit_absolute_scale = 0.0; + s->s_edit->acc_sc_sol = 1.0; VSETALL(s->edit_state.edit_rate_model_rotate, 0.0); VSETALL(s->edit_state.edit_rate_object_rotate, 0.0); @@ -308,7 +308,7 @@ init_sedit_vars(struct mged_state *s) /* * All solid edit routines call this subroutine after - * making a change to es_int or s->s_edit.e_mat. + * making a change to es_int or s->s_edit->e_mat. */ void replot_editing_solid(struct mged_state *s) @@ -336,7 +336,7 @@ replot_editing_solid(struct mged_state *s) bdata = (struct ged_bv_data *)sp->s_u_data; if (LAST_SOLID(bdata) == illdp) { (void)db_path_to_mat(s->dbip, &bdata->s_fullpath, mat, bdata->s_fullpath.fp_len-1, &rt_uniresource); - (void)replot_modified_solid(s, sp, &s->s_edit.es_int, mat); + (void)replot_modified_solid(s, sp, &s->s_edit->es_int, mat); } } } @@ -370,19 +370,19 @@ sedit_menu(struct mged_state *s) { mmenu_set_all(s, MENU_L1, NULL); chg_l2menu(s, ST_S_EDIT); - const struct rt_db_internal *ip = &s->s_edit.es_int; + const struct rt_db_internal *ip = &s->s_edit->es_int; if (MGED_OBJ[ip->idb_type].ft_menu_item) { - bu_vls_trunc(s->s_edit.log_str, 0); + bu_vls_trunc(s->s_edit->log_str, 0); struct menu_item *mi = (*MGED_OBJ[ip->idb_type].ft_menu_item)(&s->tol.tol); - if (bu_vls_strlen(s->s_edit.log_str)) { - Tcl_AppendResult(s->interp, bu_vls_cstr(s->s_edit.log_str), (char *)NULL); - bu_vls_trunc(s->s_edit.log_str, 0); + if (bu_vls_strlen(s->s_edit->log_str)) { + Tcl_AppendResult(s->interp, bu_vls_cstr(s->s_edit->log_str), (char *)NULL); + bu_vls_trunc(s->s_edit->log_str, 0); } mmenu_set_all(s, MENU_L1, mi); } mged_set_edflag(s, IDLE); /* Drop out of previous edit mode */ - s->s_edit.edit_menu = 0; + s->s_edit->edit_menu = 0; } const char * @@ -478,24 +478,24 @@ sedit(struct mged_state *s) // #define PRIM_OP_2 PRIM_OP_1+1 // ... int had_method = 0; - const struct rt_db_internal *ip = &s->s_edit.es_int; + const struct rt_db_internal *ip = &s->s_edit->es_int; if (MGED_OBJ[ip->idb_type].ft_edit) { - bu_vls_trunc(s->s_edit.log_str, 0); - if ((*MGED_OBJ[ip->idb_type].ft_edit)(s, s->s_edit.edit_flag)) { - if (bu_vls_strlen(s->s_edit.log_str)) { - Tcl_AppendResult(s->interp, bu_vls_cstr(s->s_edit.log_str), (char *)NULL); - bu_vls_trunc(s->s_edit.log_str, 0); + bu_vls_trunc(s->s_edit->log_str, 0); + if ((*MGED_OBJ[ip->idb_type].ft_edit)(s, s->s_edit->edit_flag)) { + if (bu_vls_strlen(s->s_edit->log_str)) { + Tcl_AppendResult(s->interp, bu_vls_cstr(s->s_edit->log_str), (char *)NULL); + bu_vls_trunc(s->s_edit->log_str, 0); } return; } - if (bu_vls_strlen(s->s_edit.log_str)) { - Tcl_AppendResult(s->interp, bu_vls_cstr(s->s_edit.log_str), (char *)NULL); - bu_vls_trunc(s->s_edit.log_str, 0); + if (bu_vls_strlen(s->s_edit->log_str)) { + Tcl_AppendResult(s->interp, bu_vls_cstr(s->s_edit->log_str), (char *)NULL); + bu_vls_trunc(s->s_edit->log_str, 0); } had_method = 1; } - switch (s->s_edit.edit_flag) { + switch (s->s_edit->edit_flag) { case IDLE: /* do nothing more */ @@ -507,7 +507,7 @@ sedit(struct mged_state *s) break; struct bu_vls tmp_vls = BU_VLS_INIT_ZERO; - bu_vls_printf(&tmp_vls, "sedit(s): unknown edflag = %d.\n", s->s_edit.edit_flag); + bu_vls_printf(&tmp_vls, "sedit(s): unknown edflag = %d.\n", s->s_edit->edit_flag); Tcl_AppendResult(s->interp, bu_vls_addr(&tmp_vls), (char *)NULL); mged_print_result(s, TCL_ERROR); bu_vls_free(&tmp_vls); @@ -515,8 +515,8 @@ sedit(struct mged_state *s) } /* If the keypoint changed location, find about it here */ - if (!s->s_edit.e_keyfixed) - get_solid_keypoint(s, &s->s_edit.e_keypoint, &s->s_edit.e_keytag, &s->s_edit.es_int, s->s_edit.e_mat); + if (!s->s_edit->e_keyfixed) + get_solid_keypoint(s, &s->s_edit->e_keypoint, &s->s_edit->e_keytag, &s->s_edit->es_int, s->s_edit->e_mat); set_e_axes_pos(s, 0); replot_editing_solid(s); @@ -530,8 +530,8 @@ sedit(struct mged_state *s) bu_vls_free(&vls); } - s->s_edit.e_inpara = 0; - s->s_edit.e_mvalid = 0; + s->s_edit->e_inpara = 0; + s->s_edit->e_mvalid = 0; } @@ -549,16 +549,16 @@ sedit(struct mged_state *s) void sedit_mouse(struct mged_state *s, const vect_t mousevec) { - if (s->s_edit.edit_flag <= 0) + if (s->s_edit->edit_flag <= 0) return; - const struct rt_db_internal *ip = &s->s_edit.es_int; + const struct rt_db_internal *ip = &s->s_edit->es_int; if (MGED_OBJ[ip->idb_type].ft_edit_xy) { - bu_vls_trunc(s->s_edit.log_str, 0); - (*MGED_OBJ[ip->idb_type].ft_edit_xy)(s, s->s_edit.edit_flag, mousevec); - if (bu_vls_strlen(s->s_edit.log_str)) { - Tcl_AppendResult(s->interp, bu_vls_cstr(s->s_edit.log_str), (char *)NULL); - bu_vls_trunc(s->s_edit.log_str, 0); + bu_vls_trunc(s->s_edit->log_str, 0); + (*MGED_OBJ[ip->idb_type].ft_edit_xy)(s, s->s_edit->edit_flag, mousevec); + if (bu_vls_strlen(s->s_edit->log_str)) { + Tcl_AppendResult(s->interp, bu_vls_cstr(s->s_edit->log_str), (char *)NULL); + bu_vls_trunc(s->s_edit->log_str, 0); } } } @@ -569,23 +569,23 @@ sedit_abs_scale(struct mged_state *s) { fastf_t old_acc_sc_sol; - if (s->s_edit.edit_flag != SSCALE && s->s_edit.edit_flag != PSCALE) + if (s->s_edit->edit_flag != SSCALE && s->s_edit->edit_flag != PSCALE) return; - old_acc_sc_sol = s->s_edit.acc_sc_sol; + old_acc_sc_sol = s->s_edit->acc_sc_sol; - if (-SMALL_FASTF < s->s_edit.edit_absolute_scale && s->s_edit.edit_absolute_scale < SMALL_FASTF) - s->s_edit.acc_sc_sol = 1.0; - else if (s->s_edit.edit_absolute_scale > 0.0) - s->s_edit.acc_sc_sol = 1.0 + s->s_edit.edit_absolute_scale * 3.0; + if (-SMALL_FASTF < s->s_edit->edit_absolute_scale && s->s_edit->edit_absolute_scale < SMALL_FASTF) + s->s_edit->acc_sc_sol = 1.0; + else if (s->s_edit->edit_absolute_scale > 0.0) + s->s_edit->acc_sc_sol = 1.0 + s->s_edit->edit_absolute_scale * 3.0; else { - if ((s->s_edit.edit_absolute_scale - MGED_SMALL_SCALE) < -1.0) - s->s_edit.edit_absolute_scale = -1.0 + MGED_SMALL_SCALE; + if ((s->s_edit->edit_absolute_scale - MGED_SMALL_SCALE) < -1.0) + s->s_edit->edit_absolute_scale = -1.0 + MGED_SMALL_SCALE; - s->s_edit.acc_sc_sol = 1.0 + s->s_edit.edit_absolute_scale; + s->s_edit->acc_sc_sol = 1.0 + s->s_edit->edit_absolute_scale; } - s->s_edit.es_scale = s->s_edit.acc_sc_sol / old_acc_sc_sol; + s->s_edit->es_scale = s->s_edit->acc_sc_sol / old_acc_sc_sol; sedit(s); } @@ -602,7 +602,7 @@ objedit_mouse(struct mged_state *s, const vect_t mousevec) vect_t tr_temp; /* temp translation vector */ vect_t temp; - MAT_IDN(s->s_edit.incr_change); + MAT_IDN(s->s_edit->incr_change); if (movedir & SARROW) { /* scaling option is in effect */ scale = 1.0 + (fastf_t)(mousevec[Y]>0 ? @@ -615,59 +615,59 @@ objedit_mouse(struct mged_state *s, const vect_t mousevec) case BE_O_SCALE: /* global scaling */ - s->s_edit.incr_change[15] = 1.0 / scale; + s->s_edit->incr_change[15] = 1.0 / scale; - s->edit_state.acc_sc_obj /= s->s_edit.incr_change[15]; - s->s_edit.edit_absolute_scale = s->edit_state.acc_sc_obj - 1.0; - if (s->s_edit.edit_absolute_scale > 0.0) - s->s_edit.edit_absolute_scale /= 3.0; + s->edit_state.acc_sc_obj /= s->s_edit->incr_change[15]; + s->s_edit->edit_absolute_scale = s->edit_state.acc_sc_obj - 1.0; + if (s->s_edit->edit_absolute_scale > 0.0) + s->s_edit->edit_absolute_scale /= 3.0; break; case BE_O_XSCALE: /* local scaling ... X-axis */ - s->s_edit.incr_change[0] = scale; + s->s_edit->incr_change[0] = scale; /* accumulate the scale factor */ s->edit_state.acc_sc[0] *= scale; - s->s_edit.edit_absolute_scale = s->edit_state.acc_sc[0] - 1.0; - if (s->s_edit.edit_absolute_scale > 0.0) - s->s_edit.edit_absolute_scale /= 3.0; + s->s_edit->edit_absolute_scale = s->edit_state.acc_sc[0] - 1.0; + if (s->s_edit->edit_absolute_scale > 0.0) + s->s_edit->edit_absolute_scale /= 3.0; break; case BE_O_YSCALE: /* local scaling ... Y-axis */ - s->s_edit.incr_change[5] = scale; + s->s_edit->incr_change[5] = scale; /* accumulate the scale factor */ s->edit_state.acc_sc[1] *= scale; - s->s_edit.edit_absolute_scale = s->edit_state.acc_sc[1] - 1.0; - if (s->s_edit.edit_absolute_scale > 0.0) - s->s_edit.edit_absolute_scale /= 3.0; + s->s_edit->edit_absolute_scale = s->edit_state.acc_sc[1] - 1.0; + if (s->s_edit->edit_absolute_scale > 0.0) + s->s_edit->edit_absolute_scale /= 3.0; break; case BE_O_ZSCALE: /* local scaling ... Z-axis */ - s->s_edit.incr_change[10] = scale; + s->s_edit->incr_change[10] = scale; /* accumulate the scale factor */ s->edit_state.acc_sc[2] *= scale; - s->s_edit.edit_absolute_scale = s->edit_state.acc_sc[2] - 1.0; - if (s->s_edit.edit_absolute_scale > 0.0) - s->s_edit.edit_absolute_scale /= 3.0; + s->s_edit->edit_absolute_scale = s->edit_state.acc_sc[2] - 1.0; + if (s->s_edit->edit_absolute_scale > 0.0) + s->s_edit->edit_absolute_scale /= 3.0; break; } /* Have scaling take place with respect to keypoint, * NOT the view center. */ - VMOVE(temp, s->s_edit.e_keypoint); - MAT4X3PNT(pos_model, s->s_edit.model_changes, temp); - wrt_point(s->s_edit.model_changes, s->s_edit.incr_change, s->s_edit.model_changes, pos_model); + VMOVE(temp, s->s_edit->e_keypoint); + MAT4X3PNT(pos_model, s->s_edit->model_changes, temp); + wrt_point(s->s_edit->model_changes, s->s_edit->incr_change, s->s_edit->model_changes, pos_model); - MAT_IDN(s->s_edit.incr_change); + MAT_IDN(s->s_edit->incr_change); new_edit_mats(s); } else if (movedir & (RARROW|UARROW)) { mat_t oldchanges; /* temporary matrix */ /* Vector from object keypoint to cursor */ - VMOVE(temp, s->s_edit.e_keypoint); + VMOVE(temp, s->s_edit->e_keypoint); MAT4X3PNT(pos_view, view_state->vs_model2objview, temp); if (movedir & RARROW) @@ -676,13 +676,13 @@ objedit_mouse(struct mged_state *s, const vect_t mousevec) pos_view[Y] = mousevec[Y]; MAT4X3PNT(pos_model, view_state->vs_gvp->gv_view2model, pos_view);/* NOT objview */ - MAT4X3PNT(tr_temp, s->s_edit.model_changes, temp); + MAT4X3PNT(tr_temp, s->s_edit->model_changes, temp); VSUB2(tr_temp, pos_model, tr_temp); - MAT_DELTAS_VEC(s->s_edit.incr_change, tr_temp); - MAT_COPY(oldchanges, s->s_edit.model_changes); - bn_mat_mul(s->s_edit.model_changes, s->s_edit.incr_change, oldchanges); + MAT_DELTAS_VEC(s->s_edit->incr_change, tr_temp); + MAT_COPY(oldchanges, s->s_edit->model_changes); + bn_mat_mul(s->s_edit->model_changes, s->s_edit->incr_change, oldchanges); - MAT_IDN(s->s_edit.incr_change); + MAT_IDN(s->s_edit->incr_change); new_edit_mats(s); update_edit_absolute_tran(s, pos_view); @@ -703,15 +703,15 @@ oedit_abs_scale(struct mged_state *s) MAT_IDN(incr_mat); - if (-SMALL_FASTF < s->s_edit.edit_absolute_scale && s->s_edit.edit_absolute_scale < SMALL_FASTF) + if (-SMALL_FASTF < s->s_edit->edit_absolute_scale && s->s_edit->edit_absolute_scale < SMALL_FASTF) scale = 1; - else if (s->s_edit.edit_absolute_scale > 0.0) - scale = 1.0 + s->s_edit.edit_absolute_scale * 3.0; + else if (s->s_edit->edit_absolute_scale > 0.0) + scale = 1.0 + s->s_edit->edit_absolute_scale * 3.0; else { - if ((s->s_edit.edit_absolute_scale - MGED_SMALL_SCALE) < -1.0) - s->s_edit.edit_absolute_scale = -1.0 + MGED_SMALL_SCALE; + if ((s->s_edit->edit_absolute_scale - MGED_SMALL_SCALE) < -1.0) + s->s_edit->edit_absolute_scale = -1.0 + MGED_SMALL_SCALE; - scale = 1.0 + s->s_edit.edit_absolute_scale; + scale = 1.0 + s->s_edit->edit_absolute_scale; } /* switch depending on scaling option selected */ @@ -748,9 +748,9 @@ oedit_abs_scale(struct mged_state *s) /* Have scaling take place with respect to keypoint, * NOT the view center. */ - VMOVE(temp, s->s_edit.e_keypoint); - MAT4X3PNT(pos_model, s->s_edit.model_changes, temp); - wrt_point(s->s_edit.model_changes, incr_mat, s->s_edit.model_changes, pos_model); + VMOVE(temp, s->s_edit->e_keypoint); + MAT4X3PNT(pos_model, s->s_edit->model_changes, temp); + wrt_point(s->s_edit->model_changes, incr_mat, s->s_edit->model_changes, pos_model); new_edit_mats(s); } @@ -809,9 +809,9 @@ init_oedit_guts(struct mged_state *s) const char *strp=""; /* for safety sake */ - s->s_edit.edit_menu = 0; + s->s_edit->edit_menu = 0; mged_set_edflag(s, -1); - MAT_IDN(s->s_edit.e_mat); + MAT_IDN(s->s_edit->e_mat); if (s->dbip == DBI_NULL || !illump) { return; @@ -824,16 +824,16 @@ init_oedit_guts(struct mged_state *s) /* Have a processed (E'd) region - NO key solid. * Use the 'center' as the key */ - VMOVE(s->s_edit.e_keypoint, illump->s_center); + VMOVE(s->s_edit->e_keypoint, illump->s_center); - /* The s_center takes the s->s_edit.e_mat into account already */ + /* The s_center takes the s->s_edit->e_mat into account already */ } /* Not an evaluated region - just a regular path ending in a solid */ if (!illump->s_u_data) return; struct ged_bv_data *bdata = (struct ged_bv_data *)illump->s_u_data; - if (rt_db_get_internal(&s->s_edit.es_int, LAST_SOLID(bdata), + if (rt_db_get_internal(&s->s_edit->es_int, LAST_SOLID(bdata), s->dbip, NULL, &rt_uniresource) < 0) { if (bdata->s_fullpath.fp_len > 0) { Tcl_AppendResult(s->interp, "init_oedit(", @@ -842,19 +842,19 @@ init_oedit_guts(struct mged_state *s) } else { Tcl_AppendResult(s->interp, "sedit_reset(NULL): solid import failure\n", (char *)NULL); } - rt_db_free_internal(&s->s_edit.es_int); + rt_db_free_internal(&s->s_edit->es_int); button(s, BE_REJECT); return; /* FAIL */ } - RT_CK_DB_INTERNAL(&s->s_edit.es_int); + RT_CK_DB_INTERNAL(&s->s_edit->es_int); /* Save aggregate path matrix */ - (void)db_path_to_mat(s->dbip, &bdata->s_fullpath, s->s_edit.e_mat, bdata->s_fullpath.fp_len-1, &rt_uniresource); + (void)db_path_to_mat(s->dbip, &bdata->s_fullpath, s->s_edit->e_mat, bdata->s_fullpath.fp_len-1, &rt_uniresource); /* get the inverse matrix */ - bn_mat_inv(s->s_edit.e_invmat, s->s_edit.e_mat); + bn_mat_inv(s->s_edit->e_invmat, s->s_edit->e_mat); - get_solid_keypoint(s, &s->s_edit.e_keypoint, &strp, &s->s_edit.es_int, s->s_edit.e_mat); + get_solid_keypoint(s, &s->s_edit->e_keypoint, &strp, &s->s_edit->es_int, s->s_edit->e_mat); init_oedit_vars(s); } @@ -870,12 +870,12 @@ init_oedit_vars(struct mged_state *s) VSETALL(s->edit_state.last_edit_absolute_model_rotate, 0.0); VSETALL(s->edit_state.last_edit_absolute_object_rotate, 0.0); VSETALL(s->edit_state.last_edit_absolute_view_rotate, 0.0); - VSETALL(s->s_edit.edit_absolute_model_tran, 0.0); - VSETALL(s->s_edit.edit_absolute_view_tran, 0.0); - VSETALL(s->s_edit.last_edit_absolute_model_tran, 0.0); - VSETALL(s->s_edit.last_edit_absolute_view_tran, 0.0); - s->s_edit.edit_absolute_scale = 0.0; - s->s_edit.acc_sc_sol = 1.0; + VSETALL(s->s_edit->edit_absolute_model_tran, 0.0); + VSETALL(s->s_edit->edit_absolute_view_tran, 0.0); + VSETALL(s->s_edit->last_edit_absolute_model_tran, 0.0); + VSETALL(s->s_edit->last_edit_absolute_view_tran, 0.0); + s->s_edit->edit_absolute_scale = 0.0; + s->s_edit->acc_sc_sol = 1.0; s->edit_state.acc_sc_obj = 1.0; VSETALL(s->edit_state.acc_sc, 1.0); @@ -885,8 +885,8 @@ init_oedit_vars(struct mged_state *s) VSETALL(s->edit_state.edit_rate_model_tran, 0.0); VSETALL(s->edit_state.edit_rate_view_tran, 0.0); - MAT_IDN(s->s_edit.model_changes); - MAT_IDN(s->s_edit.acc_rot_sol); + MAT_IDN(s->s_edit->model_changes); + MAT_IDN(s->s_edit->acc_rot_sol); } @@ -920,7 +920,7 @@ oedit_apply(struct mged_state *s, int continue_editing) */ mat_t topm; /* accum matrix from pathpos 0 to i-2 */ mat_t inv_topm; /* inverse */ - mat_t deltam; /* final "changes": deltam = (inv_topm)(s->s_edit.model_changes)(topm) */ + mat_t deltam; /* final "changes": deltam = (inv_topm)(s->s_edit->model_changes)(topm) */ mat_t tempm; if (!illump || !illump->s_u_data) @@ -930,12 +930,12 @@ oedit_apply(struct mged_state *s, int continue_editing) switch (ipathpos) { case 0: moveHobj(s, DB_FULL_PATH_GET(&bdata->s_fullpath, ipathpos), - s->s_edit.model_changes); + s->s_edit->model_changes); break; case 1: moveHinstance(s, DB_FULL_PATH_GET(&bdata->s_fullpath, ipathpos-1), DB_FULL_PATH_GET(&bdata->s_fullpath, ipathpos), - s->s_edit.model_changes); + s->s_edit->model_changes); break; default: MAT_IDN(topm); @@ -947,7 +947,7 @@ oedit_apply(struct mged_state *s, int continue_editing) bn_mat_inv(inv_topm, topm); - bn_mat_mul(tempm, s->s_edit.model_changes, topm); + bn_mat_mul(tempm, s->s_edit->model_changes, topm); bn_mat_mul(deltam, inv_topm, tempm); moveHinstance(s, DB_FULL_PATH_GET(&bdata->s_fullpath, ipathpos-1), @@ -962,7 +962,7 @@ oedit_apply(struct mged_state *s, int continue_editing) * include the solids about to be replaced, * so we can safely fiddle the displaylist. */ - s->s_edit.model_changes[15] = 1000000000; /* => small ratio */ + s->s_edit->model_changes[15] = 1000000000; /* => small ratio */ /* Now, recompute new chunks of displaylist */ gdlp = BU_LIST_NEXT(display_list, s->gedp->ged_gdp->gd_headDisplay); @@ -1025,7 +1025,7 @@ oedit_accept(struct mged_state *s) void oedit_reject(struct mged_state *s) { - rt_db_free_internal(&s->s_edit.es_int); + rt_db_free_internal(&s->s_edit->es_int); } @@ -1112,8 +1112,8 @@ sedit_apply(struct mged_state *s, int accept_flag) } /* make sure that any BOT solid is minimally legal */ - if (s->s_edit.es_int.idb_type == ID_BOT) { - struct rt_bot_internal *bot = (struct rt_bot_internal *)s->s_edit.es_int.idb_ptr; + if (s->s_edit->es_int.idb_type == ID_BOT) { + struct rt_bot_internal *bot = (struct rt_bot_internal *)s->s_edit->es_int.idb_ptr; RT_BOT_CK_MAGIC(bot); if (bot->mode == RT_BOT_SURFACE || bot->mode == RT_BOT_SOLID) { @@ -1137,11 +1137,11 @@ sedit_apply(struct mged_state *s, int accept_flag) } /* Scale change on export is 1.0 -- no change */ - if (rt_db_put_internal(dp, s->dbip, &s->s_edit.es_int, &rt_uniresource) < 0) { + if (rt_db_put_internal(dp, s->dbip, &s->s_edit->es_int, &rt_uniresource) < 0) { Tcl_AppendResult(s->interp, "sedit_apply(", dp->d_namep, "): solid export failure\n", (char *)NULL); if (accept_flag) { - rt_db_free_internal(&s->s_edit.es_int); + rt_db_free_internal(&s->s_edit->es_int); } return TCL_ERROR; /* FAIL */ } @@ -1152,16 +1152,16 @@ sedit_apply(struct mged_state *s, int accept_flag) mged_set_edflag(s, -1); s->edit_state.e_edclass = EDIT_CLASS_NULL; - rt_db_free_internal(&s->s_edit.es_int); + rt_db_free_internal(&s->s_edit->es_int); } else { - /* XXX hack to restore s->s_edit.es_int after rt_db_put_internal blows it away */ - /* Read solid description into s->s_edit.es_int again! Gaak! */ - if (rt_db_get_internal(&s->s_edit.es_int, LAST_SOLID(bdata), + /* XXX hack to restore s->s_edit->es_int after rt_db_put_internal blows it away */ + /* Read solid description into s->s_edit->es_int again! Gaak! */ + if (rt_db_get_internal(&s->s_edit->es_int, LAST_SOLID(bdata), s->dbip, NULL, &rt_uniresource) < 0) { Tcl_AppendResult(s->interp, "sedit_apply(", LAST_SOLID(bdata)->d_namep, "): solid reimport failure\n", (char *)NULL); - rt_db_free_internal(&s->s_edit.es_int); + rt_db_free_internal(&s->s_edit->es_int); return TCL_ERROR; } } @@ -1250,7 +1250,7 @@ sedit_reject(struct mged_state *s) mged_set_edflag(s, -1); s->edit_state.e_edclass = EDIT_CLASS_NULL; - rt_db_free_internal(&s->s_edit.es_int); + rt_db_free_internal(&s->s_edit->es_int); } int @@ -1260,16 +1260,16 @@ mged_param(struct mged_state *s, Tcl_Interp *interp, int argc, fastf_t *argvect) CHECK_DBI_NULL; - if (s->s_edit.edit_flag <= 0) { + if (s->s_edit->edit_flag <= 0) { Tcl_AppendResult(interp, "A solid editor option not selected\n", (char *)NULL); return TCL_ERROR; } - s->s_edit.e_inpara = 0; + s->s_edit->e_inpara = 0; for (i = 0; i < argc; i++) { - s->s_edit.e_para[ s->s_edit.e_inpara++ ] = argvect[i]; + s->s_edit->e_para[ s->s_edit->e_inpara++ ] = argvect[i]; } sedit(s); @@ -1278,15 +1278,15 @@ mged_param(struct mged_state *s, Tcl_Interp *interp, int argc, fastf_t *argvect) vect_t diff; fastf_t inv_Viewscale = 1/view_state->vs_gvp->gv_scale; - VSUB2(diff, s->s_edit.e_para, s->s_edit.e_axes_pos); - VSCALE(s->s_edit.edit_absolute_model_tran, diff, inv_Viewscale); - VMOVE(s->s_edit.last_edit_absolute_model_tran, s->s_edit.edit_absolute_model_tran); + VSUB2(diff, s->s_edit->e_para, s->s_edit->e_axes_pos); + VSCALE(s->s_edit->edit_absolute_model_tran, diff, inv_Viewscale); + VMOVE(s->s_edit->last_edit_absolute_model_tran, s->s_edit->edit_absolute_model_tran); } else if (SEDIT_ROTATE) { - VMOVE(s->edit_state.edit_absolute_model_rotate, s->s_edit.e_para); + VMOVE(s->edit_state.edit_absolute_model_rotate, s->s_edit->e_para); } else if (SEDIT_SCALE) { - s->s_edit.edit_absolute_scale = s->s_edit.acc_sc_sol - 1.0; - if (s->s_edit.edit_absolute_scale > 0) - s->s_edit.edit_absolute_scale /= 3.0; + s->s_edit->edit_absolute_scale = s->s_edit->acc_sc_sol - 1.0; + if (s->s_edit->edit_absolute_scale > 0) + s->s_edit->edit_absolute_scale /= 3.0; } return TCL_OK; } @@ -1343,17 +1343,17 @@ label_edited_solid( // First, see if we have an edit-aware labeling method. If we do, use it. if (MGED_OBJ[ip->idb_type].ft_labels) { - bu_vls_trunc(s->s_edit.log_str, 0); - (*MGED_OBJ[ip->idb_type].ft_labels)(num_lines, lines, pl, max_pl, xform, &s->s_edit.es_int, &s->tol.tol); - if (bu_vls_strlen(s->s_edit.log_str)) { - Tcl_AppendResult(s->interp, bu_vls_cstr(s->s_edit.log_str), (char *)NULL); - bu_vls_trunc(s->s_edit.log_str, 0); + bu_vls_trunc(s->s_edit->log_str, 0); + (*MGED_OBJ[ip->idb_type].ft_labels)(num_lines, lines, pl, max_pl, xform, &s->s_edit->es_int, &s->tol.tol); + if (bu_vls_strlen(s->s_edit->log_str)) { + Tcl_AppendResult(s->interp, bu_vls_cstr(s->s_edit->log_str), (char *)NULL); + bu_vls_trunc(s->s_edit->log_str, 0); } return; } // If there is no editing-aware labeling, use standard librt labels if (OBJ[ip->idb_type].ft_labels) { - OBJ[ip->idb_type].ft_labels(pl, max_pl, xform, &s->s_edit.es_int, &s->tol.tol); + OBJ[ip->idb_type].ft_labels(pl, max_pl, xform, &s->s_edit->es_int, &s->tol.tol); return; } @@ -1393,27 +1393,27 @@ f_keypoint(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv struct bu_vls tmp_vls = BU_VLS_INIT_ZERO; point_t key; - VSCALE(key, s->s_edit.e_keypoint, s->dbip->dbi_base2local); - bu_vls_printf(&tmp_vls, "%s (%g, %g, %g)\n", s->s_edit.e_keytag, V3ARGS(key)); + VSCALE(key, s->s_edit->e_keypoint, s->dbip->dbi_base2local); + bu_vls_printf(&tmp_vls, "%s (%g, %g, %g)\n", s->s_edit->e_keytag, V3ARGS(key)); Tcl_AppendResult(interp, bu_vls_addr(&tmp_vls), (char *)NULL); bu_vls_free(&tmp_vls); } break; case 3: - VSET(s->s_edit.e_keypoint, + VSET(s->s_edit->e_keypoint, atof(argv[1]) * s->dbip->dbi_local2base, atof(argv[2]) * s->dbip->dbi_local2base, atof(argv[3]) * s->dbip->dbi_local2base); - s->s_edit.e_keytag = "user-specified"; - s->s_edit.e_keyfixed = 1; + s->s_edit->e_keytag = "user-specified"; + s->s_edit->e_keyfixed = 1; break; case 1: if (BU_STR_EQUAL(argv[1], "reset")) { - s->s_edit.e_keytag = ""; - s->s_edit.e_keyfixed = 0; - get_solid_keypoint(s, &s->s_edit.e_keypoint, &s->s_edit.e_keytag, - &s->s_edit.es_int, s->s_edit.e_mat); + s->s_edit->e_keytag = ""; + s->s_edit->e_keyfixed = 0; + get_solid_keypoint(s, &s->s_edit->e_keypoint, &s->s_edit->e_keytag, + &s->s_edit->es_int, s->s_edit->e_mat); break; } /* fall through */ @@ -1433,7 +1433,7 @@ f_get_sedit_menus(ClientData clientData, Tcl_Interp *interp, int UNUSED(argc), c struct cmdtab *ctp = (struct cmdtab *)clientData; MGED_CK_CMD(ctp); struct mged_state *s = ctp->s; - struct rt_db_internal *ip = &s->s_edit.es_int; + struct rt_db_internal *ip = &s->s_edit->es_int; struct bu_vls vls = BU_VLS_INIT_ZERO; @@ -1441,11 +1441,11 @@ f_get_sedit_menus(ClientData clientData, Tcl_Interp *interp, int UNUSED(argc), c return TCL_ERROR; if (MGED_OBJ[ip->idb_type].ft_menu_str) { - bu_vls_trunc(s->s_edit.log_str, 0); + bu_vls_trunc(s->s_edit->log_str, 0); int ret = (*MGED_OBJ[ip->idb_type].ft_menu_str)(&vls, ip, &s->tol.tol); - if (bu_vls_strlen(s->s_edit.log_str)) { - Tcl_AppendResult(s->interp, bu_vls_cstr(s->s_edit.log_str), (char *)NULL); - bu_vls_trunc(s->s_edit.log_str, 0); + if (bu_vls_strlen(s->s_edit->log_str)) { + Tcl_AppendResult(s->interp, bu_vls_cstr(s->s_edit->log_str), (char *)NULL); + bu_vls_trunc(s->s_edit->log_str, 0); } if (ret != BRLCAD_OK) return TCL_ERROR; @@ -1492,9 +1492,9 @@ f_get_sedit(ClientData clientData, Tcl_Interp *interp, int argc, const char *arg struct bu_vls logstr = BU_VLS_INIT_ZERO; /* get solid type and parameters */ - RT_CK_DB_INTERNAL(&s->s_edit.es_int); - RT_CK_FUNCTAB(s->s_edit.es_int.idb_meth); - status = s->s_edit.es_int.idb_meth->ft_get(&logstr, &s->s_edit.es_int, (char *)0); + RT_CK_DB_INTERNAL(&s->s_edit->es_int); + RT_CK_FUNCTAB(s->s_edit->es_int.idb_meth); + status = s->s_edit->es_int.idb_meth->ft_get(&logstr, &s->s_edit->es_int, (char *)0); Tcl_AppendResult(interp, bu_vls_addr(&logstr), (char *)0); pto = Tcl_GetObjResult(interp); @@ -1516,7 +1516,7 @@ f_get_sedit(ClientData clientData, Tcl_Interp *interp, int argc, const char *arg /* apply matrices along the path */ RT_DB_INTERNAL_INIT(&ces_int); - transform_editing_solid(s, &ces_int, s->s_edit.e_mat, &s->s_edit.es_int, 0); + transform_editing_solid(s, &ces_int, s->s_edit->e_mat, &s->s_edit->es_int, 0); /* get solid type and parameters */ RT_CK_DB_INTERNAL(&ces_int); @@ -1594,32 +1594,32 @@ f_put_sedit(ClientData clientData, Tcl_Interp *interp, int argc, const char *arg return TCL_ERROR; } - RT_CK_FUNCTAB(s->s_edit.es_int.idb_meth); - if (s->s_edit.es_int.idb_meth != ftp) { + RT_CK_FUNCTAB(s->s_edit->es_int.idb_meth); + if (s->s_edit->es_int.idb_meth != ftp) { Tcl_AppendResult(interp, "put_sed: idb_meth type mismatch", (char *)0); } - save_magic = *((uint32_t *)s->s_edit.es_int.idb_ptr); - *((uint32_t *)s->s_edit.es_int.idb_ptr) = ftp->ft_internal_magic; + save_magic = *((uint32_t *)s->s_edit->es_int.idb_ptr); + *((uint32_t *)s->s_edit->es_int.idb_ptr) = ftp->ft_internal_magic; { int ret; struct bu_vls vlog = BU_VLS_INIT_ZERO; - ret = bu_structparse_argv(&vlog, argc-2, argv+2, ftp->ft_parsetab, (char *)s->s_edit.es_int.idb_ptr, NULL); + ret = bu_structparse_argv(&vlog, argc-2, argv+2, ftp->ft_parsetab, (char *)s->s_edit->es_int.idb_ptr, NULL); Tcl_AppendResult(interp, bu_vls_addr(&vlog), (char *)NULL); bu_vls_free(&vlog); if (ret != BRLCAD_OK) return TCL_ERROR; } - *((uint32_t *)s->s_edit.es_int.idb_ptr) = save_magic; + *((uint32_t *)s->s_edit->es_int.idb_ptr) = save_magic; if (context) - transform_editing_solid(s, &s->s_edit.es_int, s->s_edit.e_invmat, &s->s_edit.es_int, 1); + transform_editing_solid(s, &s->s_edit->es_int, s->s_edit->e_invmat, &s->s_edit->es_int, 1); - if (!s->s_edit.e_keyfixed) - get_solid_keypoint(s, &s->s_edit.e_keypoint, &s->s_edit.e_keytag, &s->s_edit.es_int, s->s_edit.e_mat); + if (!s->s_edit->e_keyfixed) + get_solid_keypoint(s, &s->s_edit->e_keypoint, &s->s_edit->e_keytag, &s->s_edit->es_int, s->s_edit->e_mat); set_e_axes_pos(s, 0); replot_editing_solid(s); @@ -1647,7 +1647,7 @@ f_sedit_reset(ClientData clientData, Tcl_Interp *interp, int argc, const char *U } /* free old copy */ - rt_db_free_internal(&s->s_edit.es_int); + rt_db_free_internal(&s->s_edit->es_int); /* reset */ es_pipe_pnt = (struct wdb_pipe_pnt *)NULL; @@ -1659,7 +1659,7 @@ f_sedit_reset(ClientData clientData, Tcl_Interp *interp, int argc, const char *U if (!illump || !illump->s_u_data) return TCL_ERROR; struct ged_bv_data *bdata = (struct ged_bv_data *)illump->s_u_data; - if (rt_db_get_internal(&s->s_edit.es_int, LAST_SOLID(bdata), + if (rt_db_get_internal(&s->s_edit->es_int, LAST_SOLID(bdata), s->dbip, NULL, &rt_uniresource) < 0) { if (bdata->s_fullpath.fp_len > 0) { Tcl_AppendResult(interp, "sedit_reset(", @@ -1671,27 +1671,27 @@ f_sedit_reset(ClientData clientData, Tcl_Interp *interp, int argc, const char *U } return TCL_ERROR; /* FAIL */ } - RT_CK_DB_INTERNAL(&s->s_edit.es_int); + RT_CK_DB_INTERNAL(&s->s_edit->es_int); replot_editing_solid(s); /* Establish initial keypoint */ - s->s_edit.e_keytag = ""; - get_solid_keypoint(s, &s->s_edit.e_keypoint, &s->s_edit.e_keytag, &s->s_edit.es_int, s->s_edit.e_mat); + s->s_edit->e_keytag = ""; + get_solid_keypoint(s, &s->s_edit->e_keypoint, &s->s_edit->e_keytag, &s->s_edit->es_int, s->s_edit->e_mat); /* Reset relevant variables */ - MAT_IDN(s->s_edit.acc_rot_sol); + MAT_IDN(s->s_edit->acc_rot_sol); VSETALL(s->edit_state.edit_absolute_model_rotate, 0.0); VSETALL(s->edit_state.edit_absolute_object_rotate, 0.0); VSETALL(s->edit_state.edit_absolute_view_rotate, 0.0); VSETALL(s->edit_state.last_edit_absolute_model_rotate, 0.0); VSETALL(s->edit_state.last_edit_absolute_object_rotate, 0.0); VSETALL(s->edit_state.last_edit_absolute_view_rotate, 0.0); - VSETALL(s->s_edit.edit_absolute_model_tran, 0.0); - VSETALL(s->s_edit.edit_absolute_view_tran, 0.0); - VSETALL(s->s_edit.last_edit_absolute_model_tran, 0.0); - VSETALL(s->s_edit.last_edit_absolute_view_tran, 0.0); - s->s_edit.edit_absolute_scale = 0.0; - s->s_edit.acc_sc_sol = 1.0; + VSETALL(s->s_edit->edit_absolute_model_tran, 0.0); + VSETALL(s->s_edit->edit_absolute_view_tran, 0.0); + VSETALL(s->s_edit->last_edit_absolute_model_tran, 0.0); + VSETALL(s->s_edit->last_edit_absolute_view_tran, 0.0); + s->s_edit->edit_absolute_scale = 0.0; + s->s_edit->acc_sc_sol = 1.0; VSETALL(s->edit_state.edit_rate_model_rotate, 0.0); VSETALL(s->edit_state.edit_rate_object_rotate, 0.0); VSETALL(s->edit_state.edit_rate_view_rotate, 0.0); @@ -1794,13 +1794,13 @@ f_oedit_apply(ClientData clientData, Tcl_Interp *interp, int UNUSED(argc), const struct ged_bv_data *bdata = (struct ged_bv_data *)illump->s_u_data; /* Save aggregate path matrix */ - MAT_IDN(s->s_edit.e_mat); - (void)db_path_to_mat(s->dbip, &bdata->s_fullpath, s->s_edit.e_mat, bdata->s_fullpath.fp_len-1, &rt_uniresource); + MAT_IDN(s->s_edit->e_mat); + (void)db_path_to_mat(s->dbip, &bdata->s_fullpath, s->s_edit->e_mat, bdata->s_fullpath.fp_len-1, &rt_uniresource); /* get the inverse matrix */ - bn_mat_inv(s->s_edit.e_invmat, s->s_edit.e_mat); + bn_mat_inv(s->s_edit->e_invmat, s->s_edit->e_mat); - get_solid_keypoint(s, &s->s_edit.e_keypoint, &strp, &s->s_edit.es_int, s->s_edit.e_mat); + get_solid_keypoint(s, &s->s_edit->e_keypoint, &strp, &s->s_edit->es_int, s->s_edit->e_mat); init_oedit_vars(s); new_edit_mats(s); update_views = 1; @@ -1841,12 +1841,12 @@ f_extrude(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[ if (not_state(s, ST_S_EDIT, "Extrude")) return TCL_ERROR; - if (s->s_edit.es_int.idb_type != ID_ARB8) { + if (s->s_edit->es_int.idb_type != ID_ARB8) { Tcl_AppendResult(interp, "Extrude: solid type must be ARB\n", (char *)NULL); return TCL_ERROR; } - int arb_type = rt_arb_std_type(&s->s_edit.es_int, s->s_edit.tol); + int arb_type = rt_arb_std_type(&s->s_edit->es_int, s->s_edit->tol); if (arb_type != ARB8 && arb_type != ARB6 && arb_type != ARB4) { struct bu_vls tmp_vls = BU_VLS_INIT_ZERO; @@ -1862,11 +1862,11 @@ f_extrude(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[ /* get distance to project face */ dist = atof(argv[2]); - /* apply s->s_edit.e_mat[15] to get to real model space */ + /* apply s->s_edit->e_mat[15] to get to real model space */ /* convert from the local unit (as input) to the base unit */ - dist = dist * s->s_edit.e_mat[15] * s->dbip->dbi_local2base; + dist = dist * s->s_edit->e_mat[15] * s->dbip->dbi_local2base; - struct rt_arb_internal *arb = (struct rt_arb_internal *)s->s_edit.es_int.idb_ptr; + struct rt_arb_internal *arb = (struct rt_arb_internal *)s->s_edit->es_int.idb_ptr; RT_ARB_CK_MAGIC(arb); fastf_t es_peqn[7][4]; @@ -1879,7 +1879,7 @@ f_extrude(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[ } bu_vls_free(&error_msg); - if (arb_extrude(arb, face, dist, s->s_edit.tol, es_peqn)) { + if (arb_extrude(arb, face, dist, s->s_edit->tol, es_peqn)) { Tcl_AppendResult(interp, "Error extruding ARB\n", (char *)NULL); return TCL_ERROR; } @@ -1917,19 +1917,19 @@ f_mirface(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[ if (not_state(s, ST_S_EDIT, "Mirface")) return TCL_ERROR; - if (s->s_edit.es_int.idb_type != ID_ARB8) { + if (s->s_edit->es_int.idb_type != ID_ARB8) { Tcl_AppendResult(interp, "Mirface: solid type must be ARB\n", (char *)NULL); return TCL_ERROR; } - struct rt_arb_internal *arb = (struct rt_arb_internal *)s->s_edit.es_int.idb_ptr; + struct rt_arb_internal *arb = (struct rt_arb_internal *)s->s_edit->es_int.idb_ptr; RT_ARB_CK_MAGIC(arb); face = atoi(argv[1]); fastf_t es_peqn[7][4]; struct bu_vls error_msg = BU_VLS_INIT_ZERO; - int arb_type = rt_arb_std_type(&s->s_edit.es_int, s->s_edit.tol); + int arb_type = rt_arb_std_type(&s->s_edit->es_int, s->s_edit->tol); if (rt_arb_calc_planes(&error_msg, arb, arb_type, es_peqn, &s->tol.tol)) { // TODO - write to a vls so parent code can do Tcl_AppendResult bu_log("\nCannot calculate plane equations for ARB8\n"); @@ -1938,7 +1938,7 @@ f_mirface(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[ } bu_vls_free(&error_msg); - if (arb_mirror_face_axis(arb, es_peqn, face, argv[2], s->s_edit.tol)) { + if (arb_mirror_face_axis(arb, es_peqn, face, argv[2], s->s_edit->tol)) { Tcl_AppendResult(interp, "Mirface: mirror operation failed\n", (char *)NULL); return TCL_ERROR; } @@ -2019,15 +2019,15 @@ f_permute(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[ if (not_state(s, ST_S_EDIT, "Permute")) return TCL_ERROR; - if (s->s_edit.es_int.idb_type != ID_ARB8) { + if (s->s_edit->es_int.idb_type != ID_ARB8) { Tcl_AppendResult(interp, "Permute: solid type must be an ARB\n", (char *)NULL); return TCL_ERROR; } - struct rt_arb_internal *arb = (struct rt_arb_internal *)s->s_edit.es_int.idb_ptr; + struct rt_arb_internal *arb = (struct rt_arb_internal *)s->s_edit->es_int.idb_ptr; RT_ARB_CK_MAGIC(arb); - if (arb_permute(arb, argv[1], s->s_edit.tol)) { + if (arb_permute(arb, argv[1], s->s_edit->tol)) { Tcl_AppendResult(interp, "Permute failed.\n", (char *)NULL); return TCL_ERROR; } diff --git a/src/mged/facedef.c b/src/mged/facedef.c index e8aa15f7aa..4440bf100e 100644 --- a/src/mged/facedef.c +++ b/src/mged/facedef.c @@ -113,20 +113,20 @@ f_facedef(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[ status = TCL_ERROR; goto end; } - if (s->s_edit.es_int.idb_type != ID_ARB8) { + if (s->s_edit->es_int.idb_type != ID_ARB8) { Tcl_AppendResult(interp, "Facedef: solid type must be ARB\n"); status = TCL_ERROR; goto end; } /* apply s->edit_state.e_mat editing to parameters. "new way" */ - transform_editing_solid(s, &intern, s->s_edit.e_mat, &s->s_edit.es_int, 0); + transform_editing_solid(s, &intern, s->s_edit->e_mat, &s->s_edit->es_int, 0); arb = (struct rt_arb_internal *)intern.idb_ptr; RT_ARB_CK_MAGIC(arb); /* find new planes to account for any editing */ - int arb_type = rt_arb_std_type(&s->s_edit.es_int, s->s_edit.tol); + int arb_type = rt_arb_std_type(&s->s_edit->es_int, s->s_edit->tol); if (rt_arb_calc_planes(&error_msg, arb, arb_type, planes, &s->tol.tol)) { Tcl_AppendResult(interp, bu_vls_addr(&error_msg), "Unable to determine plane equations\n", (char *)NULL); @@ -304,11 +304,11 @@ f_facedef(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[ /* Transform points back before s->edit_state.e_mat changes */ /* This is the "new way" */ - arbo = (struct rt_arb_internal *)s->s_edit.es_int.idb_ptr; + arbo = (struct rt_arb_internal *)s->s_edit->es_int.idb_ptr; RT_ARB_CK_MAGIC(arbo); for (i=0; i<8; i++) { - MAT4X3PNT(arbo->pt[i], s->s_edit.e_invmat, arb->pt[i]); + MAT4X3PNT(arbo->pt[i], s->s_edit->e_invmat, arb->pt[i]); } rt_db_free_internal(&intern); diff --git a/src/mged/grid.c b/src/mged/grid.c index 5012fe18b1..b0f1770f33 100644 --- a/src/mged/grid.c +++ b/src/mged/grid.c @@ -305,9 +305,9 @@ snap_keypoint_to_grid(struct mged_state *s) } if (s->edit_state.global_editing_state == ST_S_EDIT) { - MAT4X3PNT(view_pt, view_state->vs_gvp->gv_model2view, s->s_edit.curr_e_axes_pos); + MAT4X3PNT(view_pt, view_state->vs_gvp->gv_model2view, s->s_edit->curr_e_axes_pos); } else { - MAT4X3PNT(model_pt, s->s_edit.model_changes, s->s_edit.e_axes_pos); + MAT4X3PNT(model_pt, s->s_edit->model_changes, s->s_edit->e_axes_pos); MAT4X3PNT(view_pt, view_state->vs_gvp->gv_model2view, model_pt); } snap_to_grid(s, &view_pt[X], &view_pt[Y]); diff --git a/src/mged/mged.c b/src/mged/mged.c index 8075a8aee9..bfeae1f91e 100644 --- a/src/mged/mged.c +++ b/src/mged/mged.c @@ -320,7 +320,7 @@ new_edit_mats(struct mged_state *s) continue; set_curr_dm(s, p); - bn_mat_mul(view_state->vs_model2objview, view_state->vs_gvp->gv_model2view, s->s_edit.model_changes); + bn_mat_mul(view_state->vs_model2objview, view_state->vs_gvp->gv_model2view, s->s_edit->model_changes); bn_mat_inv(view_state->vs_objview2model, view_state->vs_model2objview); view_state->vs_flag = 1; } @@ -340,7 +340,7 @@ mged_view_callback(struct bview *gvp, return; if (s->edit_state.global_editing_state != ST_VIEW) { - bn_mat_mul(vsp->vs_model2objview, gvp->gv_model2view, s->s_edit.model_changes); + bn_mat_mul(vsp->vs_model2objview, gvp->gv_model2view, s->s_edit->model_changes); bn_mat_inv(vsp->vs_objview2model, vsp->vs_model2objview); } vsp->vs_flag = 1; @@ -1034,11 +1034,11 @@ event_check(struct mged_state *s, int non_blocking) mged_variables->mv_coords = 'm'; if (s->edit_state.global_editing_state == ST_S_EDIT) { - save_edflag = s->s_edit.edit_flag; - save_rot = s->s_edit.solid_edit_rotate; - save_tra = s->s_edit.solid_edit_translate; - save_sca = s->s_edit.solid_edit_scale; - save_pic = s->s_edit.solid_edit_pick; + save_edflag = s->s_edit->edit_flag; + save_rot = s->s_edit->solid_edit_rotate; + save_tra = s->s_edit->solid_edit_translate; + save_sca = s->s_edit->solid_edit_scale; + save_pic = s->s_edit->solid_edit_pick; if (!SEDIT_ROTATE) mged_set_edflag(s, SROT); } else { @@ -1059,11 +1059,11 @@ event_check(struct mged_state *s, int non_blocking) mged_variables->mv_coords = save_coords; if (s->edit_state.global_editing_state == ST_S_EDIT) { - s->s_edit.edit_flag = save_edflag; - s->s_edit.solid_edit_rotate = save_rot; - s->s_edit.solid_edit_translate = save_tra; - s->s_edit.solid_edit_scale = save_sca; - s->s_edit.solid_edit_pick = save_pic; + s->s_edit->edit_flag = save_edflag; + s->s_edit->solid_edit_rotate = save_rot; + s->s_edit->solid_edit_translate = save_tra; + s->s_edit->solid_edit_scale = save_sca; + s->s_edit->solid_edit_pick = save_pic; } else { edobj = save_edflag; } @@ -1077,11 +1077,11 @@ event_check(struct mged_state *s, int non_blocking) mged_variables->mv_coords = 'o'; if (s->edit_state.global_editing_state == ST_S_EDIT) { - save_edflag = s->s_edit.edit_flag; - save_rot = s->s_edit.solid_edit_rotate; - save_tra = s->s_edit.solid_edit_translate; - save_sca = s->s_edit.solid_edit_scale; - save_pic = s->s_edit.solid_edit_pick; + save_edflag = s->s_edit->edit_flag; + save_rot = s->s_edit->solid_edit_rotate; + save_tra = s->s_edit->solid_edit_translate; + save_sca = s->s_edit->solid_edit_scale; + save_pic = s->s_edit->solid_edit_pick; if (!SEDIT_ROTATE) mged_set_edflag(s, SROT); } else { @@ -1102,11 +1102,11 @@ event_check(struct mged_state *s, int non_blocking) mged_variables->mv_coords = save_coords; if (s->edit_state.global_editing_state == ST_S_EDIT) { - s->s_edit.edit_flag = save_edflag; - s->s_edit.solid_edit_rotate = save_rot; - s->s_edit.solid_edit_translate = save_tra; - s->s_edit.solid_edit_scale = save_sca; - s->s_edit.solid_edit_pick = save_pic; + s->s_edit->edit_flag = save_edflag; + s->s_edit->solid_edit_rotate = save_rot; + s->s_edit->solid_edit_translate = save_tra; + s->s_edit->solid_edit_scale = save_sca; + s->s_edit->solid_edit_pick = save_pic; } else { edobj = save_edflag; } @@ -1120,11 +1120,11 @@ event_check(struct mged_state *s, int non_blocking) mged_variables->mv_coords = 'v'; if (s->edit_state.global_editing_state == ST_S_EDIT) { - save_edflag = s->s_edit.edit_flag; - save_rot = s->s_edit.solid_edit_rotate; - save_tra = s->s_edit.solid_edit_translate; - save_sca = s->s_edit.solid_edit_scale; - save_pic = s->s_edit.solid_edit_pick; + save_edflag = s->s_edit->edit_flag; + save_rot = s->s_edit->solid_edit_rotate; + save_tra = s->s_edit->solid_edit_translate; + save_sca = s->s_edit->solid_edit_scale; + save_pic = s->s_edit->solid_edit_pick; if (!SEDIT_ROTATE) mged_set_edflag(s, SROT); } else { @@ -1145,11 +1145,11 @@ event_check(struct mged_state *s, int non_blocking) mged_variables->mv_coords = save_coords; if (s->edit_state.global_editing_state == ST_S_EDIT) { - s->s_edit.edit_flag = save_edflag; - s->s_edit.solid_edit_rotate = save_rot; - s->s_edit.solid_edit_translate = save_tra; - s->s_edit.solid_edit_scale = save_sca; - s->s_edit.solid_edit_pick = save_pic; + s->s_edit->edit_flag = save_edflag; + s->s_edit->solid_edit_rotate = save_rot; + s->s_edit->solid_edit_translate = save_tra; + s->s_edit->solid_edit_scale = save_sca; + s->s_edit->solid_edit_pick = save_pic; } else { edobj = save_edflag; } @@ -1163,11 +1163,11 @@ event_check(struct mged_state *s, int non_blocking) mged_variables->mv_coords = 'm'; if (s->edit_state.global_editing_state == ST_S_EDIT) { - save_edflag = s->s_edit.edit_flag; - save_rot = s->s_edit.solid_edit_rotate; - save_tra = s->s_edit.solid_edit_translate; - save_sca = s->s_edit.solid_edit_scale; - save_pic = s->s_edit.solid_edit_pick; + save_edflag = s->s_edit->edit_flag; + save_rot = s->s_edit->solid_edit_rotate; + save_tra = s->s_edit->solid_edit_translate; + save_sca = s->s_edit->solid_edit_scale; + save_pic = s->s_edit->solid_edit_pick; if (!SEDIT_TRAN) mged_set_edflag(s, STRANS); } else { @@ -1187,11 +1187,11 @@ event_check(struct mged_state *s, int non_blocking) mged_variables->mv_coords = save_coords; if (s->edit_state.global_editing_state == ST_S_EDIT) { - s->s_edit.edit_flag = save_edflag; - s->s_edit.solid_edit_rotate = save_rot; - s->s_edit.solid_edit_translate = save_tra; - s->s_edit.solid_edit_scale = save_sca; - s->s_edit.solid_edit_pick = save_pic; + s->s_edit->edit_flag = save_edflag; + s->s_edit->solid_edit_rotate = save_rot; + s->s_edit->solid_edit_translate = save_tra; + s->s_edit->solid_edit_scale = save_sca; + s->s_edit->solid_edit_pick = save_pic; } else { edobj = save_edflag; } @@ -1205,11 +1205,11 @@ event_check(struct mged_state *s, int non_blocking) mged_variables->mv_coords = 'v'; if (s->edit_state.global_editing_state == ST_S_EDIT) { - save_edflag = s->s_edit.edit_flag; - save_rot = s->s_edit.solid_edit_rotate; - save_tra = s->s_edit.solid_edit_translate; - save_sca = s->s_edit.solid_edit_scale; - save_pic = s->s_edit.solid_edit_pick; + save_edflag = s->s_edit->edit_flag; + save_rot = s->s_edit->solid_edit_rotate; + save_tra = s->s_edit->solid_edit_translate; + save_sca = s->s_edit->solid_edit_scale; + save_pic = s->s_edit->solid_edit_pick; if (!SEDIT_TRAN) mged_set_edflag(s, STRANS); } else { @@ -1229,11 +1229,11 @@ event_check(struct mged_state *s, int non_blocking) mged_variables->mv_coords = save_coords; if (s->edit_state.global_editing_state == ST_S_EDIT) { - s->s_edit.edit_flag = save_edflag; - s->s_edit.solid_edit_rotate = save_rot; - s->s_edit.solid_edit_translate = save_tra; - s->s_edit.solid_edit_scale = save_sca; - s->s_edit.solid_edit_pick = save_pic; + s->s_edit->edit_flag = save_edflag; + s->s_edit->solid_edit_rotate = save_rot; + s->s_edit->solid_edit_translate = save_tra; + s->s_edit->solid_edit_scale = save_sca; + s->s_edit->solid_edit_pick = save_pic; } else { edobj = save_edflag; } @@ -1242,11 +1242,11 @@ event_check(struct mged_state *s, int non_blocking) struct bu_vls vls = BU_VLS_INIT_ZERO; if (s->edit_state.global_editing_state == ST_S_EDIT) { - save_edflag = s->s_edit.edit_flag; - save_rot = s->s_edit.solid_edit_rotate; - save_tra = s->s_edit.solid_edit_translate; - save_sca = s->s_edit.solid_edit_scale; - save_pic = s->s_edit.solid_edit_pick; + save_edflag = s->s_edit->edit_flag; + save_rot = s->s_edit->solid_edit_rotate; + save_tra = s->s_edit->solid_edit_translate; + save_sca = s->s_edit->solid_edit_scale; + save_pic = s->s_edit->solid_edit_pick; if (!SEDIT_SCALE) mged_set_edflag(s, SSCALE); } else { @@ -1262,11 +1262,11 @@ event_check(struct mged_state *s, int non_blocking) bu_vls_free(&vls); if (s->edit_state.global_editing_state == ST_S_EDIT) { - s->s_edit.edit_flag = save_edflag; - s->s_edit.solid_edit_rotate = save_rot; - s->s_edit.solid_edit_translate = save_tra; - s->s_edit.solid_edit_scale = save_sca; - s->s_edit.solid_edit_pick = save_pic; + s->s_edit->edit_flag = save_edflag; + s->s_edit->solid_edit_rotate = save_rot; + s->s_edit->solid_edit_translate = save_tra; + s->s_edit->solid_edit_scale = save_sca; + s->s_edit->solid_edit_pick = save_pic; } else { edobj = save_edflag; } @@ -2127,13 +2127,13 @@ main(int argc, char *argv[]) owner = 1; frametime = 1; - MAT_IDN(s->s_edit.model_changes); - MAT_IDN(s->s_edit.acc_rot_sol); + MAT_IDN(s->s_edit->model_changes); + MAT_IDN(s->s_edit->acc_rot_sol); s->edit_state.global_editing_state = ST_VIEW; mged_set_edflag(s, -1); /* no solid editing just now */ s->edit_state.e_edclass = EDIT_CLASS_NULL; - s->s_edit.e_inpara = newedge = 0; + s->s_edit->e_inpara = newedge = 0; /* These values match old GED. Use 'tol' command to change them. */ s->tol.tol.magic = BN_TOL_MAGIC; diff --git a/src/mged/mged.h b/src/mged/mged.h index 2b7c294724..fda2f393ed 100644 --- a/src/mged/mged.h +++ b/src/mged/mged.h @@ -278,7 +278,7 @@ struct mged_state { /* Editing related */ struct mged_edit_state edit_state; - struct mged_solid_edit s_edit; + struct mged_solid_edit *s_edit; }; extern struct mged_state *MGED_STATE; diff --git a/src/mged/mged_impl.cpp b/src/mged/mged_impl.cpp index 4e6d32ca6e..b60bda6225 100644 --- a/src/mged/mged_impl.cpp +++ b/src/mged/mged_impl.cpp @@ -47,9 +47,7 @@ mged_state_create(void) bu_vls_init(&s->mged_prompt); s->dpy_string = NULL; - s->s_edit.tol = &s->tol.tol; - BU_GET(s->s_edit.log_str, struct bu_vls); - bu_vls_init(s->s_edit.log_str); + s->s_edit = mged_solid_edit_create(NULL, &s->tol.tol, NULL); return s; } @@ -64,9 +62,8 @@ mged_state_destroy(struct mged_state *s) bu_vls_free(&s->input_str); bu_vls_free(&s->input_str_prefix); bu_vls_free(&s->scratchline); - bu_vls_free(&s-> mged_prompt); - bu_vls_free(s->s_edit.log_str); - BU_PUT(s->s_edit.log_str, struct mged_state); + bu_vls_free(&s->mged_prompt); + mged_solid_edit_destroy(s->s_edit); delete s->i->i; BU_PUT(s->i, struct mged_state_impl); diff --git a/src/mged/primitives/edarb.c b/src/mged/primitives/edarb.c index 6de578ba63..28b4b7a718 100644 --- a/src/mged/primitives/edarb.c +++ b/src/mged/primitives/edarb.c @@ -63,12 +63,12 @@ short int fixv; /* used in ECMD_ARB_ROTATE_FACE, f_eqn(): fixed vertex */ static void arb8_edge(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg; - s->s_edit.edit_flag = EARB; - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 1; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 0; + s->s_edit->edit_menu = arg; + s->s_edit->edit_flag = EARB; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 1; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 0; if (arg == 12) { mged_set_edflag(s, ECMD_ARB_MAIN_MENU); sedit(s); @@ -98,16 +98,16 @@ struct menu_item edge8_menu[] = { static void arb7_edge(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg; - s->s_edit.edit_flag = EARB; - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 1; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 0; + s->s_edit->edit_menu = arg; + s->s_edit->edit_flag = EARB; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 1; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 0; if (arg == 11) { /* move point 5 */ - s->s_edit.edit_flag = PTARB; - s->s_edit.edit_menu = 4; /* location of point */ + s->s_edit->edit_flag = PTARB; + s->s_edit->edit_menu = 4; /* location of point */ } if (arg == 12) { mged_set_edflag(s, ECMD_ARB_MAIN_MENU); @@ -137,21 +137,21 @@ struct menu_item edge7_menu[] = { static void arb6_edge(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg; - s->s_edit.edit_flag = EARB; - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 1; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 0; + s->s_edit->edit_menu = arg; + s->s_edit->edit_flag = EARB; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 1; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 0; if (arg == 8) { /* move point 5, location = 4 */ - s->s_edit.edit_flag = PTARB; - s->s_edit.edit_menu = 4; + s->s_edit->edit_flag = PTARB; + s->s_edit->edit_menu = 4; } if (arg == 9) { /* move point 6, location = 6 */ - s->s_edit.edit_flag = PTARB; - s->s_edit.edit_menu = 6; + s->s_edit->edit_flag = PTARB; + s->s_edit->edit_menu = 6; } if (arg == 10) { mged_set_edflag(s, ECMD_ARB_MAIN_MENU); @@ -179,16 +179,16 @@ struct menu_item edge6_menu[] = { static void arb5_edge(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg; - s->s_edit.edit_flag = EARB; - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 1; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 0; + s->s_edit->edit_menu = arg; + s->s_edit->edit_flag = EARB; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 1; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 0; if (arg == 8) { /* move point 5 at location 4 */ - s->s_edit.edit_flag = PTARB; - s->s_edit.edit_menu = 4; + s->s_edit->edit_flag = PTARB; + s->s_edit->edit_menu = 4; } if (arg == 9) { mged_set_edflag(s, ECMD_ARB_MAIN_MENU); @@ -215,12 +215,12 @@ struct menu_item edge5_menu[] = { static void arb4_point(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg; - s->s_edit.edit_flag = PTARB; - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 1; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 0; + s->s_edit->edit_menu = arg; + s->s_edit->edit_flag = PTARB; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 1; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 0; if (arg == 5) { mged_set_edflag(s, ECMD_ARB_MAIN_MENU); sedit(s); @@ -241,12 +241,12 @@ struct menu_item point4_menu[] = { static void arb8_mv_face(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg - 1; - s->s_edit.edit_flag = ECMD_ARB_MOVE_FACE; - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 1; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 0; + s->s_edit->edit_menu = arg - 1; + s->s_edit->edit_flag = ECMD_ARB_MOVE_FACE; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 1; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 0; if (arg == 7) { mged_set_edflag(s, ECMD_ARB_MAIN_MENU); sedit(s); @@ -269,12 +269,12 @@ struct menu_item mv8_menu[] = { static void arb7_mv_face(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg - 1; - s->s_edit.edit_flag = ECMD_ARB_MOVE_FACE; - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 1; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 0; + s->s_edit->edit_menu = arg - 1; + s->s_edit->edit_flag = ECMD_ARB_MOVE_FACE; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 1; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 0; if (arg == 7) { mged_set_edflag(s, ECMD_ARB_MAIN_MENU); sedit(s); @@ -293,12 +293,12 @@ struct menu_item mv7_menu[] = { static void arb6_mv_face(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg - 1; - s->s_edit.edit_flag = ECMD_ARB_MOVE_FACE; - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 1; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 0; + s->s_edit->edit_menu = arg - 1; + s->s_edit->edit_flag = ECMD_ARB_MOVE_FACE; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 1; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 0; if (arg == 6) { mged_set_edflag(s, ECMD_ARB_MAIN_MENU); sedit(s); @@ -320,12 +320,12 @@ struct menu_item mv6_menu[] = { static void arb5_mv_face(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg - 1; - s->s_edit.edit_flag = ECMD_ARB_MOVE_FACE; - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 1; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 0; + s->s_edit->edit_menu = arg - 1; + s->s_edit->edit_flag = ECMD_ARB_MOVE_FACE; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 1; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 0; if (arg == 6) { mged_set_edflag(s, ECMD_ARB_MAIN_MENU); sedit(s); @@ -347,12 +347,12 @@ struct menu_item mv5_menu[] = { static void arb4_mv_face(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg - 1; - s->s_edit.edit_flag = ECMD_ARB_MOVE_FACE; - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 1; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 0; + s->s_edit->edit_menu = arg - 1; + s->s_edit->edit_flag = ECMD_ARB_MOVE_FACE; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 1; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 0; if (arg == 5) { mged_set_edflag(s, ECMD_ARB_MAIN_MENU); sedit(s); @@ -373,7 +373,7 @@ struct menu_item mv4_menu[] = { static void arb8_rot_face(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg - 1; + s->s_edit->edit_menu = arg - 1; mged_set_edflag(s, ECMD_ARB_SETUP_ROTFACE); if (arg == 7) mged_set_edflag(s, ECMD_ARB_MAIN_MENU); @@ -395,7 +395,7 @@ struct menu_item rot8_menu[] = { static void arb7_rot_face(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg - 1; + s->s_edit->edit_menu = arg - 1; mged_set_edflag(s, ECMD_ARB_SETUP_ROTFACE); if (arg == 7) mged_set_edflag(s, ECMD_ARB_MAIN_MENU); @@ -417,7 +417,7 @@ struct menu_item rot7_menu[] = { static void arb6_rot_face(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg - 1; + s->s_edit->edit_menu = arg - 1; mged_set_edflag(s, ECMD_ARB_SETUP_ROTFACE); if (arg == 6) mged_set_edflag(s, ECMD_ARB_MAIN_MENU); @@ -438,7 +438,7 @@ struct menu_item rot6_menu[] = { static void arb5_rot_face(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg - 1; + s->s_edit->edit_menu = arg - 1; mged_set_edflag(s, ECMD_ARB_SETUP_ROTFACE); if (arg == 6) mged_set_edflag(s, ECMD_ARB_MAIN_MENU); @@ -460,7 +460,7 @@ struct menu_item rot5_menu[] = { static void arb4_rot_face(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg - 1; + s->s_edit->edit_menu = arg - 1; mged_set_edflag(s, ECMD_ARB_SETUP_ROTFACE); if (arg == 5) mged_set_edflag(s, ECMD_ARB_MAIN_MENU); @@ -480,7 +480,7 @@ struct menu_item rot4_menu[] = { static void arb_control(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg; + s->s_edit->edit_menu = arg; mged_set_edflag(s, ECMD_ARB_SPECIFIC_MENU); sedit(s); } @@ -598,20 +598,20 @@ mged_arb_e_axes_pos( int arb_type = rt_arb_std_type(ip, tol); - switch (s->s_edit.edit_flag) { + switch (s->s_edit->edit_flag) { case EARB: switch (arb_type) { case ARB5: - i = earb5[s->s_edit.edit_menu][0]; + i = earb5[s->s_edit->edit_menu][0]; break; case ARB6: - i = earb6[s->s_edit.edit_menu][0]; + i = earb6[s->s_edit->edit_menu][0]; break; case ARB7: - i = earb7[s->s_edit.edit_menu][0]; + i = earb7[s->s_edit->edit_menu][0]; break; case ARB8: - i = earb8[s->s_edit.edit_menu][0]; + i = earb8[s->s_edit->edit_menu][0]; break; default: i = 0; @@ -621,14 +621,14 @@ mged_arb_e_axes_pos( case PTARB: switch (arb_type) { case ARB4: - i = s->s_edit.edit_menu; /* index for point 1, 2, 3 or 4 */ + i = s->s_edit->edit_menu; /* index for point 1, 2, 3 or 4 */ break; case ARB5: case ARB7: i = 4; /* index for point 5 */ break; case ARB6: - i = s->s_edit.edit_menu; /* index for point 5 or 6 */ + i = s->s_edit->edit_menu; /* index for point 5 or 6 */ break; default: i = 0; @@ -638,19 +638,19 @@ mged_arb_e_axes_pos( case ECMD_ARB_MOVE_FACE: switch (arb_type) { case ARB4: - i = local_arb_faces[0][s->s_edit.edit_menu * 4]; + i = local_arb_faces[0][s->s_edit->edit_menu * 4]; break; case ARB5: - i = local_arb_faces[1][s->s_edit.edit_menu * 4]; + i = local_arb_faces[1][s->s_edit->edit_menu * 4]; break; case ARB6: - i = local_arb_faces[2][s->s_edit.edit_menu * 4]; + i = local_arb_faces[2][s->s_edit->edit_menu * 4]; break; case ARB7: - i = local_arb_faces[3][s->s_edit.edit_menu * 4]; + i = local_arb_faces[3][s->s_edit->edit_menu * 4]; break; case ARB8: - i = local_arb_faces[4][s->s_edit.edit_menu * 4]; + i = local_arb_faces[4][s->s_edit->edit_menu * 4]; break; default: i = 0; @@ -664,7 +664,7 @@ mged_arb_e_axes_pos( i = 0; break; } - MAT4X3PNT(s->s_edit.curr_e_axes_pos, s->s_edit.e_mat, arb->pt[i]); + MAT4X3PNT(s->s_edit->curr_e_axes_pos, s->s_edit->e_mat, arb->pt[i]); } /* @@ -817,18 +817,18 @@ int editarb(struct mged_state *s, vect_t pos_model) { int ret = 0; - struct rt_arb_internal *arb = (struct rt_arb_internal *)s->s_edit.es_int.idb_ptr; - int arb_type = rt_arb_std_type(&s->s_edit.es_int, s->s_edit.tol); + struct rt_arb_internal *arb = (struct rt_arb_internal *)s->s_edit->es_int.idb_ptr; + int arb_type = rt_arb_std_type(&s->s_edit->es_int, s->s_edit->tol); struct bu_vls error_msg = BU_VLS_INIT_ZERO; if (rt_arb_calc_planes(&error_msg, arb, arb_type, es_peqn, &s->tol.tol)) { - bu_vls_printf(s->s_edit.log_str, "\nCannot calculate plane equations for ARB8\n"); + bu_vls_printf(s->s_edit->log_str, "\nCannot calculate plane equations for ARB8\n"); bu_vls_free(&error_msg); return TCL_ERROR; } bu_vls_free(&error_msg); - ret = arb_edit(arb, es_peqn, s->s_edit.edit_menu, newedge, pos_model, s->s_edit.tol); + ret = arb_edit(arb, es_peqn, s->s_edit->edit_menu, newedge, pos_model, s->s_edit->tol); // arb_edit doesn't zero out our global any more as a library call, so // reset once operation is complete. @@ -855,11 +855,11 @@ ecmd_arb_specific_menu(struct mged_state *s) { /* put up specific arb edit menus */ - int arb_type = rt_arb_std_type(&s->s_edit.es_int, s->s_edit.tol); + int arb_type = rt_arb_std_type(&s->s_edit->es_int, s->s_edit->tol); menu_state->ms_flag = 0; mged_set_edflag(s, IDLE); - switch (s->s_edit.edit_menu) { + switch (s->s_edit->edit_menu) { case MENU_ARB_MV_EDGE: mmenu_set(s, MENU_L1, which_menu[arb_type-4]); return BRLCAD_OK; @@ -870,7 +870,7 @@ ecmd_arb_specific_menu(struct mged_state *s) mmenu_set(s, MENU_L1, which_menu[arb_type+6]); return BRLCAD_OK; default: - bu_vls_printf(s->s_edit.log_str, "Bad menu item.\n"); + bu_vls_printf(s->s_edit->log_str, "Bad menu item.\n"); mged_print_result(s, TCL_ERROR); return BRLCAD_ERROR; } @@ -880,36 +880,36 @@ int ecmd_arb_move_face(struct mged_state *s) { /* move face through definite point */ - if (s->s_edit.e_inpara) { + if (s->s_edit->e_inpara) { - if (s->s_edit.e_inpara != 3) { - bu_vls_printf(s->s_edit.log_str, "ERROR: three arguments needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara != 3) { + bu_vls_printf(s->s_edit->log_str, "ERROR: three arguments needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; vect_t work; - struct rt_arb_internal *arb = (struct rt_arb_internal *)s->s_edit.es_int.idb_ptr; + struct rt_arb_internal *arb = (struct rt_arb_internal *)s->s_edit->es_int.idb_ptr; RT_ARB_CK_MAGIC(arb); - if (s->s_edit.mv_context) { - /* apply s->s_edit.e_invmat to convert to real model space */ - MAT4X3PNT(work, s->s_edit.e_invmat, s->s_edit.e_para); + if (s->s_edit->mv_context) { + /* apply s->s_edit->e_invmat to convert to real model space */ + MAT4X3PNT(work, s->s_edit->e_invmat, s->s_edit->e_para); } else { - VMOVE(work, s->s_edit.e_para); + VMOVE(work, s->s_edit->e_para); } /* change D of planar equation */ - es_peqn[s->s_edit.edit_menu][W]=VDOT(&es_peqn[s->s_edit.edit_menu][0], work); + es_peqn[s->s_edit->edit_menu][W]=VDOT(&es_peqn[s->s_edit->edit_menu][0], work); /* find new vertices, put in record in vector notation */ - int arb_type = rt_arb_std_type(&s->s_edit.es_int, s->s_edit.tol); + int arb_type = rt_arb_std_type(&s->s_edit->es_int, s->s_edit->tol); - (void)rt_arb_calc_points(arb, arb_type, (const plane_t *)es_peqn, s->s_edit.tol); + (void)rt_arb_calc_points(arb, arb_type, (const plane_t *)es_peqn, s->s_edit->tol); } return 0; @@ -924,11 +924,11 @@ get_rotation_vertex(struct mged_state *s) struct bu_vls str = BU_VLS_INIT_ZERO; struct bu_vls cmd = BU_VLS_INIT_ZERO; - int arb_type = rt_arb_std_type(&s->s_edit.es_int, s->s_edit.tol); + int arb_type = rt_arb_std_type(&s->s_edit->es_int, s->s_edit->tol); type = arb_type - 4; - loc = s->s_edit.edit_menu*4; + loc = s->s_edit->edit_menu*4; valid = 0; bu_vls_printf(&str, "Enter fixed vertex number("); @@ -946,7 +946,7 @@ get_rotation_vertex(struct mged_state *s) while (!valid) { if (Tcl_Eval(s->interp, bu_vls_addr(&cmd)) != TCL_OK) { - bu_vls_printf(s->s_edit.log_str, "get_rotation_vertex: Error reading vertex\n"); + bu_vls_printf(s->s_edit->log_str, "get_rotation_vertex: Error reading vertex\n"); /* Using default */ return rt_arb_vertices[type][loc]; } @@ -965,21 +965,21 @@ get_rotation_vertex(struct mged_state *s) void ecmd_arb_setup_rotface(struct mged_state *s) { - struct rt_arb_internal *arb = (struct rt_arb_internal *)s->s_edit.es_int.idb_ptr; + struct rt_arb_internal *arb = (struct rt_arb_internal *)s->s_edit->es_int.idb_ptr; RT_ARB_CK_MAGIC(arb); - int arb_type = rt_arb_std_type(&s->s_edit.es_int, s->s_edit.tol); + int arb_type = rt_arb_std_type(&s->s_edit->es_int, s->s_edit->tol); /* check if point 5 is in the face */ static int pnt5 = 0; for (int i=0; i<4; i++) { - if (rt_arb_vertices[arb_type-4][s->s_edit.edit_menu*4+i]==5) + if (rt_arb_vertices[arb_type-4][s->s_edit->edit_menu*4+i]==5) pnt5=1; } /* special case for arb7 */ if (arb_type == ARB7 && pnt5) { - bu_vls_printf(s->s_edit.log_str, "\nFixed vertex is point 5.\n"); + bu_vls_printf(s->s_edit->log_str, "\nFixed vertex is point 5.\n"); fixv = 5; } else { fixv = get_rotation_vertex(s); @@ -987,11 +987,11 @@ ecmd_arb_setup_rotface(struct mged_state *s) pr_prompt(s); fixv--; - s->s_edit.edit_flag = ECMD_ARB_ROTATE_FACE; - s->s_edit.solid_edit_rotate = 1; - s->s_edit.solid_edit_translate = 0; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 0; + s->s_edit->edit_flag = ECMD_ARB_ROTATE_FACE; + s->s_edit->solid_edit_rotate = 1; + s->s_edit->solid_edit_translate = 0; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 0; view_state->vs_flag = 1; /* draw arrow, etc. */ set_e_axes_pos(s, 1); } @@ -1002,10 +1002,10 @@ ecmd_arb_rotate_face(struct mged_state *s) /* rotate a GENARB8 defining plane through a fixed vertex */ fastf_t *eqp; - struct rt_arb_internal *arb = (struct rt_arb_internal *)s->s_edit.es_int.idb_ptr; + struct rt_arb_internal *arb = (struct rt_arb_internal *)s->s_edit->es_int.idb_ptr; RT_ARB_CK_MAGIC(arb); - if (s->s_edit.e_inpara) { + if (s->s_edit->e_inpara) { vect_t work; static mat_t invsolr; @@ -1017,54 +1017,54 @@ ecmd_arb_rotate_face(struct mged_state *s) * First, cancel any existing rotations, * then perform new rotation */ - bn_mat_inv(invsolr, s->s_edit.acc_rot_sol); - eqp = &es_peqn[s->s_edit.edit_menu][0]; /* s->s_edit.edit_menu==plane of interest */ + bn_mat_inv(invsolr, s->s_edit->acc_rot_sol); + eqp = &es_peqn[s->s_edit->edit_menu][0]; /* s->s_edit->edit_menu==plane of interest */ VMOVE(work, eqp); MAT4X3VEC(eqp, invsolr, work); - if (s->s_edit.e_inpara == 3) { + if (s->s_edit->e_inpara == 3) { /* 3 params: absolute X, Y, Z rotations */ /* Build completely new rotation change */ - MAT_IDN(s->s_edit.model_changes); - bn_mat_angles(s->s_edit.model_changes, - s->s_edit.e_para[0], - s->s_edit.e_para[1], - s->s_edit.e_para[2]); - MAT_COPY(s->s_edit.acc_rot_sol, s->s_edit.model_changes); - - /* Borrow s->s_edit.incr_change matrix here */ - bn_mat_mul(s->s_edit.incr_change, s->s_edit.model_changes, invsolr); - if (s->s_edit.mv_context) { + MAT_IDN(s->s_edit->model_changes); + bn_mat_angles(s->s_edit->model_changes, + s->s_edit->e_para[0], + s->s_edit->e_para[1], + s->s_edit->e_para[2]); + MAT_COPY(s->s_edit->acc_rot_sol, s->s_edit->model_changes); + + /* Borrow s->s_edit->incr_change matrix here */ + bn_mat_mul(s->s_edit->incr_change, s->s_edit->model_changes, invsolr); + if (s->s_edit->mv_context) { /* calculate rotations about keypoint */ mat_t edit; - bn_mat_xform_about_pnt(edit, s->s_edit.incr_change, s->s_edit.e_keypoint); + bn_mat_xform_about_pnt(edit, s->s_edit->incr_change, s->s_edit->e_keypoint); /* We want our final matrix (mat) to xform the original solid * to the position of this instance of the solid, perform the * current edit operations, then xform back. - * mat = s->s_edit.e_invmat * edit * s->s_edit.e_mat + * mat = s->s_edit->e_invmat * edit * s->s_edit->e_mat */ mat_t mat, mat1; - bn_mat_mul(mat1, edit, s->s_edit.e_mat); - bn_mat_mul(mat, s->s_edit.e_invmat, mat1); - MAT_IDN(s->s_edit.incr_change); - /* work contains original es_peqn[s->s_edit.edit_menu][0] */ + bn_mat_mul(mat1, edit, s->s_edit->e_mat); + bn_mat_mul(mat, s->s_edit->e_invmat, mat1); + MAT_IDN(s->s_edit->incr_change); + /* work contains original es_peqn[s->s_edit->edit_menu][0] */ MAT4X3VEC(eqp, mat, work); } else { VMOVE(work, eqp); - MAT4X3VEC(eqp, s->s_edit.model_changes, work); + MAT4X3VEC(eqp, s->s_edit->model_changes, work); } - } else if (s->s_edit.e_inpara == 2) { + } else if (s->s_edit->e_inpara == 2) { /* 2 parameters: rot, fb were given */ - rota= s->s_edit.e_para[0] * DEG2RAD; - fb_a = s->s_edit.e_para[1] * DEG2RAD; + rota= s->s_edit->e_para[0] * DEG2RAD; + fb_a = s->s_edit->e_para[1] * DEG2RAD; /* calculate normal vector (length = 1) from rot, struct fb */ - es_peqn[s->s_edit.edit_menu][0] = cos(fb_a) * cos(rota); - es_peqn[s->s_edit.edit_menu][1] = cos(fb_a) * sin(rota); - es_peqn[s->s_edit.edit_menu][2] = sin(fb_a); + es_peqn[s->s_edit->edit_menu][0] = cos(fb_a) * cos(rota); + es_peqn[s->s_edit->edit_menu][1] = cos(fb_a) * sin(rota); + es_peqn[s->s_edit->edit_menu][2] = sin(fb_a); } else { - bu_vls_printf(s->s_edit.log_str, "Must be < rot fb | xdeg ydeg zdeg >\n"); + bu_vls_printf(s->s_edit->log_str, "Must be < rot fb | xdeg ydeg zdeg >\n"); mged_print_result(s, TCL_ERROR); return TCL_ERROR; } @@ -1073,38 +1073,38 @@ ecmd_arb_rotate_face(struct mged_state *s) VMOVE(tempvec, arb->pt[fixv]); /* set D of planar equation to anchor at fixed vertex */ - /* s->s_edit.edit_menu == plane of interest */ - es_peqn[s->s_edit.edit_menu][W]=VDOT(eqp, tempvec); + /* s->s_edit->edit_menu == plane of interest */ + es_peqn[s->s_edit->edit_menu][W]=VDOT(eqp, tempvec); /* Clear out solid rotation */ - MAT_IDN(s->s_edit.model_changes); + MAT_IDN(s->s_edit->model_changes); } else { /* Apply incremental changes */ static vect_t tempvec; vect_t work; - eqp = &es_peqn[s->s_edit.edit_menu][0]; + eqp = &es_peqn[s->s_edit->edit_menu][0]; VMOVE(work, eqp); - MAT4X3VEC(eqp, s->s_edit.incr_change, work); + MAT4X3VEC(eqp, s->s_edit->incr_change, work); /* point notation of fixed vertex */ VMOVE(tempvec, arb->pt[fixv]); /* set D of planar equation to anchor at fixed vertex */ - /* s->s_edit.edit_menu == plane of interest */ - es_peqn[s->s_edit.edit_menu][W]=VDOT(eqp, tempvec); + /* s->s_edit->edit_menu == plane of interest */ + es_peqn[s->s_edit->edit_menu][W]=VDOT(eqp, tempvec); } - int arb_type = rt_arb_std_type(&s->s_edit.es_int, s->s_edit.tol); + int arb_type = rt_arb_std_type(&s->s_edit->es_int, s->s_edit->tol); - (void)rt_arb_calc_points(arb, arb_type, (const plane_t *)es_peqn, s->s_edit.tol); - MAT_IDN(s->s_edit.incr_change); + (void)rt_arb_calc_points(arb, arb_type, (const plane_t *)es_peqn, s->s_edit->tol); + MAT_IDN(s->s_edit->incr_change); /* no need to calc_planes again */ replot_editing_solid(s); - s->s_edit.e_inpara = 0; + s->s_edit->e_inpara = 0; return 0; } @@ -1113,25 +1113,25 @@ int edit_arb_element(struct mged_state *s) { - if (s->s_edit.e_inpara) { + if (s->s_edit->e_inpara) { - if (s->s_edit.e_inpara != 3) { - bu_vls_printf(s->s_edit.log_str, "ERROR: three arguments needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara != 3) { + bu_vls_printf(s->s_edit->log_str, "ERROR: three arguments needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; vect_t work; - if (s->s_edit.mv_context) { - /* apply s->s_edit.e_invmat to convert to real model space */ - MAT4X3PNT(work, s->s_edit.e_invmat, s->s_edit.e_para); + if (s->s_edit->mv_context) { + /* apply s->s_edit->e_invmat to convert to real model space */ + MAT4X3PNT(work, s->s_edit->e_invmat, s->s_edit->e_para); } else { - VMOVE(work, s->s_edit.e_para); + VMOVE(work, s->s_edit->e_para); } editarb(s, work); } @@ -1146,12 +1146,12 @@ arb_mv_pnt_to(struct mged_state *s, const vect_t mousevec) vect_t temp = VINIT_ZERO; vect_t pos_model = VINIT_ZERO; /* Rotated screen space pos */ /* move an arb point to indicated point */ - /* point is located at es_values[s->s_edit.edit_menu*3] */ - MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit.curr_e_axes_pos); + /* point is located at es_values[s->s_edit->edit_menu*3] */ + MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit->curr_e_axes_pos); pos_view[X] = mousevec[X]; pos_view[Y] = mousevec[Y]; MAT4X3PNT(temp, view_state->vs_gvp->gv_view2model, pos_view); - MAT4X3PNT(pos_model, s->s_edit.e_invmat, temp); + MAT4X3PNT(pos_model, s->s_edit->e_invmat, temp); editarb(s, pos_model); } @@ -1161,11 +1161,11 @@ edarb_mousevec(struct mged_state *s, const vect_t mousevec) vect_t pos_view = VINIT_ZERO; /* Unrotated view space pos */ vect_t temp = VINIT_ZERO; vect_t pos_model = VINIT_ZERO; /* Rotated screen space pos */ - MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit.curr_e_axes_pos); + MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit->curr_e_axes_pos); pos_view[X] = mousevec[X]; pos_view[Y] = mousevec[Y]; MAT4X3PNT(temp, view_state->vs_gvp->gv_view2model, pos_view); - MAT4X3PNT(pos_model, s->s_edit.e_invmat, temp); + MAT4X3PNT(pos_model, s->s_edit->e_invmat, temp); editarb(s, pos_model); } @@ -1175,23 +1175,23 @@ edarb_move_face_mousevec(struct mged_state *s, const vect_t mousevec) vect_t pos_view = VINIT_ZERO; /* Unrotated view space pos */ vect_t temp = VINIT_ZERO; vect_t pos_model = VINIT_ZERO; /* Rotated screen space pos */ - MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit.curr_e_axes_pos); + MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit->curr_e_axes_pos); pos_view[X] = mousevec[X]; pos_view[Y] = mousevec[Y]; MAT4X3PNT(temp, view_state->vs_gvp->gv_view2model, pos_view); - MAT4X3PNT(pos_model, s->s_edit.e_invmat, temp); + MAT4X3PNT(pos_model, s->s_edit->e_invmat, temp); /* change D of planar equation */ - es_peqn[s->s_edit.edit_menu][W]=VDOT(&es_peqn[s->s_edit.edit_menu][0], pos_model); + es_peqn[s->s_edit->edit_menu][W]=VDOT(&es_peqn[s->s_edit->edit_menu][0], pos_model); /* calculate new vertices, put in record as vectors */ { struct rt_arb_internal *arb= - (struct rt_arb_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_arb_internal *)s->s_edit->es_int.idb_ptr; RT_ARB_CK_MAGIC(arb); - int arb_type = rt_arb_std_type(&s->s_edit.es_int, s->s_edit.tol); + int arb_type = rt_arb_std_type(&s->s_edit->es_int, s->s_edit->tol); - (void)rt_arb_calc_points(arb, arb_type, (const plane_t *)es_peqn, s->s_edit.tol); + (void)rt_arb_calc_points(arb, arb_type, (const plane_t *)es_peqn, s->s_edit->tol); } } @@ -1199,13 +1199,13 @@ int mged_arb_edit(struct mged_state *s, int edflag) { struct bu_vls error_msg = BU_VLS_INIT_ZERO; - struct rt_arb_internal *arb = (struct rt_arb_internal *)s->s_edit.es_int.idb_ptr; + struct rt_arb_internal *arb = (struct rt_arb_internal *)s->s_edit->es_int.idb_ptr; RT_ARB_CK_MAGIC(arb); int ret = 0; - int arb_type = rt_arb_std_type(&s->s_edit.es_int, s->s_edit.tol); + int arb_type = rt_arb_std_type(&s->s_edit->es_int, s->s_edit->tol); if (rt_arb_calc_planes(&error_msg, arb, arb_type, es_peqn, &s->tol.tol)) { - bu_vls_printf(s->s_edit.log_str, "\nCannot calculate plane equations for ARB8\n"); + bu_vls_printf(s->s_edit->log_str, "\nCannot calculate plane equations for ARB8\n"); bu_vls_free(&error_msg); return TCL_ERROR; } @@ -1215,15 +1215,15 @@ mged_arb_edit(struct mged_state *s, int edflag) switch (edflag) { case SSCALE: /* scale the solid uniformly about its vertex point */ - ret = mged_generic_sscale(s, &s->s_edit.es_int); + ret = mged_generic_sscale(s, &s->s_edit->es_int); goto arb_planecalc; case STRANS: /* translate solid */ - mged_generic_strans(s, &s->s_edit.es_int); + mged_generic_strans(s, &s->s_edit->es_int); break; case SROT: /* rot solid about vertex */ - mged_generic_srot(s, &s->s_edit.es_int); + mged_generic_srot(s, &s->s_edit->es_int); break; case ECMD_ARB_MAIN_MENU: ecmd_arb_main_menu(s); @@ -1250,9 +1250,9 @@ mged_arb_edit(struct mged_state *s, int edflag) arb_planecalc: /* must re-calculate the face plane equations for arbs */ - arb_type = rt_arb_std_type(&s->s_edit.es_int, s->s_edit.tol); - if (rt_arb_calc_planes(&error_msg, arb, arb_type, es_peqn, s->s_edit.tol) < 0) - bu_vls_printf(s->s_edit.log_str, "%s", bu_vls_cstr(&error_msg)); + arb_type = rt_arb_std_type(&s->s_edit->es_int, s->s_edit->tol); + if (rt_arb_calc_planes(&error_msg, arb, arb_type, es_peqn, s->s_edit->tol) < 0) + bu_vls_printf(s->s_edit->log_str, "%s", bu_vls_cstr(&error_msg)); bu_vls_free(&error_msg); return ret; @@ -1266,7 +1266,7 @@ mged_arb_edit_xy( ) { vect_t pos_view = VINIT_ZERO; /* Unrotated view space pos */ - struct rt_db_internal *ip = &s->s_edit.es_int; + struct rt_db_internal *ip = &s->s_edit->es_int; switch (edflag) { case SSCALE: @@ -1287,7 +1287,7 @@ mged_arb_edit_xy( edarb_move_face_mousevec(s, mousevec); break; default: - bu_vls_printf(s->s_edit.log_str, "%s: XY edit undefined in solid edit mode %d\n", MGED_OBJ[ip->idb_type].ft_label, edflag); + bu_vls_printf(s->s_edit->log_str, "%s: XY edit undefined in solid edit mode %d\n", MGED_OBJ[ip->idb_type].ft_label, edflag); mged_print_result(s, TCL_ERROR); return TCL_ERROR; } @@ -1311,29 +1311,29 @@ arb_f_eqn(struct mged_state *s, int argc, const char **argv) if (argc < 4 || 4 < argc) return TCL_ERROR; - if (s->s_edit.es_int.idb_type != ID_ARB8) { - bu_vls_printf(s->s_edit.log_str, "Eqn: type must be GENARB8\n"); + if (s->s_edit->es_int.idb_type != ID_ARB8) { + bu_vls_printf(s->s_edit->log_str, "Eqn: type must be GENARB8\n"); return TCL_ERROR; } - if (s->s_edit.edit_flag != ECMD_ARB_ROTATE_FACE) { - bu_vls_printf(s->s_edit.log_str, "Eqn: must be rotating a face\n"); + if (s->s_edit->edit_flag != ECMD_ARB_ROTATE_FACE) { + bu_vls_printf(s->s_edit->log_str, "Eqn: must be rotating a face\n"); return TCL_ERROR; } - arb = (struct rt_arb_internal *)s->s_edit.es_int.idb_ptr; + arb = (struct rt_arb_internal *)s->s_edit->es_int.idb_ptr; RT_ARB_CK_MAGIC(arb); /* get the A, B, C from the command line */ for (i=0; i<3; i++) - es_peqn[s->s_edit.edit_menu][i]= atof(argv[i+1]); - VUNITIZE(&es_peqn[s->s_edit.edit_menu][0]); + es_peqn[s->s_edit->edit_menu][i]= atof(argv[i+1]); + VUNITIZE(&es_peqn[s->s_edit->edit_menu][0]); VMOVE(tempvec, arb->pt[fixv]); - es_peqn[s->s_edit.edit_menu][W]=VDOT(es_peqn[s->s_edit.edit_menu], tempvec); + es_peqn[s->s_edit->edit_menu][W]=VDOT(es_peqn[s->s_edit->edit_menu], tempvec); - int arb_type = rt_arb_std_type(&s->s_edit.es_int, s->s_edit.tol); - if (rt_arb_calc_points(arb, arb_type, (const plane_t *)es_peqn, s->s_edit.tol)) + int arb_type = rt_arb_std_type(&s->s_edit->es_int, s->s_edit->tol); + if (rt_arb_calc_points(arb, arb_type, (const plane_t *)es_peqn, s->s_edit->tol)) return CMD_BAD; return TCL_OK; @@ -1348,13 +1348,13 @@ arb_edgedir(struct mged_state *s, int argc, const char **argv) if (!s || !argc || !argv) return TCL_ERROR; - if (s->s_edit.edit_flag != EARB) { - bu_vls_printf(s->s_edit.log_str, "Not moving an ARB edge\n"); + if (s->s_edit->edit_flag != EARB) { + bu_vls_printf(s->s_edit->log_str, "Not moving an ARB edge\n"); return TCL_ERROR; } - if (s->s_edit.es_int.idb_type != ID_ARB8) { - bu_vls_printf(s->s_edit.log_str, "Edgedir: solid type must be an ARB\n"); + if (s->s_edit->es_int.idb_type != ID_ARB8) { + bu_vls_printf(s->s_edit->log_str, "Edgedir: solid type must be an ARB\n"); return TCL_ERROR; } @@ -1376,7 +1376,7 @@ arb_edgedir(struct mged_state *s, int argc, const char **argv) } if (ZERO(MAGNITUDE(slope))) { - bu_vls_printf(s->s_edit.log_str, "BAD slope\n"); + bu_vls_printf(s->s_edit->log_str, "BAD slope\n"); return TCL_ERROR; } diff --git a/src/mged/primitives/edars.c b/src/mged/primitives/edars.c index 69f4c761df..d37668349c 100644 --- a/src/mged/primitives/edars.c +++ b/src/mged/primitives/edars.c @@ -94,22 +94,22 @@ find_ars_nearest_pnt( static void ars_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_flag = arg; + s->s_edit->edit_flag = arg; switch (arg) { case ECMD_ARS_MOVE_PT: case ECMD_ARS_MOVE_CRV: case ECMD_ARS_MOVE_COL: - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 1; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 0; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 1; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 0; break; case ECMD_ARS_PICK: - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 0; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 1; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 0; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 1; break; default: mged_set_edflag(s, arg); @@ -242,7 +242,7 @@ void ecmd_ars_pick(struct mged_state *s) { struct rt_ars_internal *ars= - (struct rt_ars_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_ars_internal *)s->s_edit->es_int.idb_ptr; point_t pick_pt; vect_t view_dir; vect_t z_dir; @@ -252,24 +252,24 @@ ecmd_ars_pick(struct mged_state *s) RT_ARS_CK_MAGIC(ars); /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; - - if (s->s_edit.e_mvalid) { - VMOVE(pick_pt, s->s_edit.e_mparam); - } else if (s->s_edit.e_inpara == 3) { - if (s->s_edit.mv_context) { - /* apply s->s_edit.e_invmat to convert to real model space */ - MAT4X3PNT(pick_pt, s->s_edit.e_invmat, s->s_edit.e_para); + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; + + if (s->s_edit->e_mvalid) { + VMOVE(pick_pt, s->s_edit->e_mparam); + } else if (s->s_edit->e_inpara == 3) { + if (s->s_edit->mv_context) { + /* apply s->s_edit->e_invmat to convert to real model space */ + MAT4X3PNT(pick_pt, s->s_edit->e_invmat, s->s_edit->e_para); } else { - VMOVE(pick_pt, s->s_edit.e_para); + VMOVE(pick_pt, s->s_edit->e_para); } - } else if (s->s_edit.e_inpara && s->s_edit.e_inpara != 3) { - bu_vls_printf(s->s_edit.log_str, "x y z coordinates required for 'pick point'\n"); + } else if (s->s_edit->e_inpara && s->s_edit->e_inpara != 3) { + bu_vls_printf(s->s_edit->log_str, "x y z coordinates required for 'pick point'\n"); mged_print_result(s, TCL_ERROR); return; - } else if (!s->s_edit.e_mvalid && !s->s_edit.e_inpara) + } else if (!s->s_edit->e_mvalid && !s->s_edit->e_inpara) return; /* Get view direction vector */ @@ -282,7 +282,7 @@ ecmd_ars_pick(struct mged_state *s) es_ars_col, es_ars_crv, V3ARGS(selected_pt)); bu_vls_printf(&tmp_vls, "Selected point #%d from curve #%d (%f %f %f)\n", es_ars_col, es_ars_crv, V3ARGS(selected_pt)); - bu_vls_printf(s->s_edit.log_str, "%s", bu_vls_cstr(&tmp_vls)); + bu_vls_printf(s->s_edit->log_str, "%s", bu_vls_cstr(&tmp_vls)); mged_print_result(s, TCL_ERROR); bu_vls_free(&tmp_vls); } @@ -291,7 +291,7 @@ void ecmd_ars_next_pt(struct mged_state *s) { struct rt_ars_internal *ars= - (struct rt_ars_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_ars_internal *)s->s_edit->es_int.idb_ptr; struct bu_vls tmp_vls = BU_VLS_INIT_ZERO; point_t selected_pt; @@ -307,7 +307,7 @@ ecmd_ars_next_pt(struct mged_state *s) es_ars_col, es_ars_crv, V3ARGS(selected_pt)); bu_vls_printf(&tmp_vls, "Selected point #%d from curve #%d (%f %f %f)\n", es_ars_col, es_ars_crv, V3ARGS(selected_pt)); - bu_vls_printf(s->s_edit.log_str, "%s", bu_vls_cstr(&tmp_vls)); + bu_vls_printf(s->s_edit->log_str, "%s", bu_vls_cstr(&tmp_vls)); mged_print_result(s, TCL_ERROR); bu_vls_free(&tmp_vls); } @@ -317,7 +317,7 @@ void ecmd_ars_prev_pt(struct mged_state *s) { struct rt_ars_internal *ars= - (struct rt_ars_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_ars_internal *)s->s_edit->es_int.idb_ptr; struct bu_vls tmp_vls = BU_VLS_INIT_ZERO; point_t selected_pt; @@ -333,7 +333,7 @@ ecmd_ars_prev_pt(struct mged_state *s) es_ars_col, es_ars_crv, V3ARGS(selected_pt)); bu_vls_printf(&tmp_vls, "Selected point #%d from curve #%d (%f %f %f)\n", es_ars_col, es_ars_crv, V3ARGS(selected_pt)); - bu_vls_printf(s->s_edit.log_str, "%s", bu_vls_cstr(&tmp_vls)); + bu_vls_printf(s->s_edit->log_str, "%s", bu_vls_cstr(&tmp_vls)); mged_print_result(s, TCL_ERROR); bu_vls_free(&tmp_vls); } @@ -343,7 +343,7 @@ void ecmd_ars_next_crv(struct mged_state *s) { struct rt_ars_internal *ars= - (struct rt_ars_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_ars_internal *)s->s_edit->es_int.idb_ptr; struct bu_vls tmp_vls = BU_VLS_INIT_ZERO; point_t selected_pt; @@ -359,7 +359,7 @@ ecmd_ars_next_crv(struct mged_state *s) es_ars_col, es_ars_crv, V3ARGS(selected_pt)); bu_vls_printf(&tmp_vls, "Selected point #%d from curve #%d (%f %f %f)\n", es_ars_col, es_ars_crv, V3ARGS(selected_pt)); - bu_vls_printf(s->s_edit.log_str, "%s", bu_vls_cstr(&tmp_vls)); + bu_vls_printf(s->s_edit->log_str, "%s", bu_vls_cstr(&tmp_vls)); mged_print_result(s, TCL_ERROR); bu_vls_free(&tmp_vls); } @@ -369,7 +369,7 @@ void ecmd_ars_prev_crv(struct mged_state *s) { struct rt_ars_internal *ars= - (struct rt_ars_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_ars_internal *)s->s_edit->es_int.idb_ptr; struct bu_vls tmp_vls = BU_VLS_INIT_ZERO; point_t selected_pt; @@ -385,7 +385,7 @@ ecmd_ars_prev_crv(struct mged_state *s) es_ars_col, es_ars_crv, V3ARGS(selected_pt)); bu_vls_printf(&tmp_vls, "Selected point #%d from curve #%d (%f %f %f)\n", es_ars_col, es_ars_crv, V3ARGS(selected_pt)); - bu_vls_printf(s->s_edit.log_str, "%s", bu_vls_cstr(&tmp_vls)); + bu_vls_printf(s->s_edit->log_str, "%s", bu_vls_cstr(&tmp_vls)); mged_print_result(s, TCL_ERROR); bu_vls_free(&tmp_vls); } @@ -395,7 +395,7 @@ void ecmd_ars_dup_crv(struct mged_state *s) { struct rt_ars_internal *ars= - (struct rt_ars_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_ars_internal *)s->s_edit->es_int.idb_ptr; fastf_t **curves; RT_ARS_CK_MAGIC(ars); @@ -435,7 +435,7 @@ void ecmd_ars_dup_col(struct mged_state *s) { struct rt_ars_internal *ars= - (struct rt_ars_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_ars_internal *)s->s_edit->es_int.idb_ptr; fastf_t **curves; RT_ARS_CK_MAGIC(ars); @@ -478,7 +478,7 @@ void ecmd_ars_del_crv(struct mged_state *s) { struct rt_ars_internal *ars= - (struct rt_ars_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_ars_internal *)s->s_edit->es_int.idb_ptr; fastf_t **curves; int k; @@ -528,7 +528,7 @@ void ecmd_ars_del_col(struct mged_state *s) { struct rt_ars_internal *ars= - (struct rt_ars_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_ars_internal *)s->s_edit->es_int.idb_ptr; fastf_t **curves; RT_ARS_CK_MAGIC(ars); @@ -585,23 +585,23 @@ void ecmd_ars_move_col(struct mged_state *s) { struct rt_ars_internal *ars= - (struct rt_ars_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_ars_internal *)s->s_edit->es_int.idb_ptr; point_t new_pt = VINIT_ZERO; vect_t diff; RT_ARS_CK_MAGIC(ars); /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; if (es_ars_crv < 0 || es_ars_col < 0) { bu_log("No ARS point selected\n"); return; } - if (s->s_edit.e_mvalid) { + if (s->s_edit->e_mvalid) { vect_t view_dir; plane_t view_pl; fastf_t dist; @@ -614,21 +614,21 @@ ecmd_ars_move_col(struct mged_state *s) VUNITIZE(view_pl); view_pl[W] = VDOT(view_pl, &ars->curves[es_ars_crv][es_ars_col*3]); - /* project s->s_edit.e_mparam onto the plane */ - dist = DIST_PNT_PLANE(s->s_edit.e_mparam, view_pl); - VJOIN1(new_pt, s->s_edit.e_mparam, -dist, view_pl); - } else if (s->s_edit.e_inpara == 3) { - if (s->s_edit.mv_context) { - /* apply s->s_edit.e_invmat to convert to real model space */ - MAT4X3PNT(new_pt, s->s_edit.e_invmat, s->s_edit.e_para); + /* project s->s_edit->e_mparam onto the plane */ + dist = DIST_PNT_PLANE(s->s_edit->e_mparam, view_pl); + VJOIN1(new_pt, s->s_edit->e_mparam, -dist, view_pl); + } else if (s->s_edit->e_inpara == 3) { + if (s->s_edit->mv_context) { + /* apply s->s_edit->e_invmat to convert to real model space */ + MAT4X3PNT(new_pt, s->s_edit->e_invmat, s->s_edit->e_para); } else { - VMOVE(new_pt, s->s_edit.e_para); + VMOVE(new_pt, s->s_edit->e_para); } - } else if (s->s_edit.e_inpara && s->s_edit.e_inpara != 3) { - bu_vls_printf(s->s_edit.log_str, "x y z coordinates required for point movement\n"); + } else if (s->s_edit->e_inpara && s->s_edit->e_inpara != 3) { + bu_vls_printf(s->s_edit->log_str, "x y z coordinates required for point movement\n"); mged_print_result(s, TCL_ERROR); return; - } else if (!s->s_edit.e_mvalid && !s->s_edit.e_inpara) { + } else if (!s->s_edit->e_mvalid && !s->s_edit->e_inpara) { return; } @@ -644,23 +644,23 @@ void ecmd_ars_move_crv(struct mged_state *s) { struct rt_ars_internal *ars= - (struct rt_ars_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_ars_internal *)s->s_edit->es_int.idb_ptr; point_t new_pt = VINIT_ZERO; vect_t diff; RT_ARS_CK_MAGIC(ars); /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; if (es_ars_crv < 0 || es_ars_col < 0) { bu_log("No ARS point selected\n"); return; } - if (s->s_edit.e_mvalid) { + if (s->s_edit->e_mvalid) { vect_t view_dir; plane_t view_pl; fastf_t dist; @@ -673,21 +673,21 @@ ecmd_ars_move_crv(struct mged_state *s) VUNITIZE(view_pl); view_pl[W] = VDOT(view_pl, &ars->curves[es_ars_crv][es_ars_col*3]); - /* project s->s_edit.e_mparam onto the plane */ - dist = DIST_PNT_PLANE(s->s_edit.e_mparam, view_pl); - VJOIN1(new_pt, s->s_edit.e_mparam, -dist, view_pl); - } else if (s->s_edit.e_inpara == 3) { - if (s->s_edit.mv_context) { - /* apply s->s_edit.e_invmat to convert to real model space */ - MAT4X3PNT(new_pt, s->s_edit.e_invmat, s->s_edit.e_para); + /* project s->s_edit->e_mparam onto the plane */ + dist = DIST_PNT_PLANE(s->s_edit->e_mparam, view_pl); + VJOIN1(new_pt, s->s_edit->e_mparam, -dist, view_pl); + } else if (s->s_edit->e_inpara == 3) { + if (s->s_edit->mv_context) { + /* apply s->s_edit->e_invmat to convert to real model space */ + MAT4X3PNT(new_pt, s->s_edit->e_invmat, s->s_edit->e_para); } else { - VMOVE(new_pt, s->s_edit.e_para); + VMOVE(new_pt, s->s_edit->e_para); } - } else if (s->s_edit.e_inpara && s->s_edit.e_inpara != 3) { - bu_vls_printf(s->s_edit.log_str, "x y z coordinates required for point movement\n"); + } else if (s->s_edit->e_inpara && s->s_edit->e_inpara != 3) { + bu_vls_printf(s->s_edit->log_str, "x y z coordinates required for point movement\n"); mged_print_result(s, TCL_ERROR); return; - } else if (!s->s_edit.e_mvalid && !s->s_edit.e_inpara) { + } else if (!s->s_edit->e_mvalid && !s->s_edit->e_inpara) { return; } @@ -703,22 +703,22 @@ void ecmd_ars_move_pt(struct mged_state *s) { struct rt_ars_internal *ars= - (struct rt_ars_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_ars_internal *)s->s_edit->es_int.idb_ptr; point_t new_pt = VINIT_ZERO; RT_ARS_CK_MAGIC(ars); /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; if (es_ars_crv < 0 || es_ars_col < 0) { bu_log("No ARS point selected\n"); return; } - if (s->s_edit.e_mvalid) { + if (s->s_edit->e_mvalid) { vect_t view_dir; plane_t view_pl; fastf_t dist; @@ -731,21 +731,21 @@ ecmd_ars_move_pt(struct mged_state *s) VUNITIZE(view_pl); view_pl[W] = VDOT(view_pl, &ars->curves[es_ars_crv][es_ars_col*3]); - /* project s->s_edit.e_mparam onto the plane */ - dist = DIST_PNT_PLANE(s->s_edit.e_mparam, view_pl); - VJOIN1(new_pt, s->s_edit.e_mparam, -dist, view_pl); - } else if (s->s_edit.e_inpara == 3) { - if (s->s_edit.mv_context) { - /* apply s->s_edit.e_invmat to convert to real model space */ - MAT4X3PNT(new_pt, s->s_edit.e_invmat, s->s_edit.e_para); + /* project s->s_edit->e_mparam onto the plane */ + dist = DIST_PNT_PLANE(s->s_edit->e_mparam, view_pl); + VJOIN1(new_pt, s->s_edit->e_mparam, -dist, view_pl); + } else if (s->s_edit->e_inpara == 3) { + if (s->s_edit->mv_context) { + /* apply s->s_edit->e_invmat to convert to real model space */ + MAT4X3PNT(new_pt, s->s_edit->e_invmat, s->s_edit->e_para); } else { - VMOVE(new_pt, s->s_edit.e_para); + VMOVE(new_pt, s->s_edit->e_para); } - } else if (s->s_edit.e_inpara && s->s_edit.e_inpara != 3) { - bu_vls_printf(s->s_edit.log_str, "x y z coordinates required for point movement\n"); + } else if (s->s_edit->e_inpara && s->s_edit->e_inpara != 3) { + bu_vls_printf(s->s_edit->log_str, "x y z coordinates required for point movement\n"); mged_print_result(s, TCL_ERROR); return; - } else if (!s->s_edit.e_mvalid && !s->s_edit.e_inpara) { + } else if (!s->s_edit->e_mvalid && !s->s_edit->e_inpara) { return; } @@ -758,23 +758,23 @@ mged_ars_edit(struct mged_state *s, int edflag) switch (edflag) { case SSCALE: /* scale the solid uniformly about its vertex point */ - return mged_generic_sscale(s, &s->s_edit.es_int); + return mged_generic_sscale(s, &s->s_edit->es_int); case STRANS: /* translate solid */ - mged_generic_strans(s, &s->s_edit.es_int); + mged_generic_strans(s, &s->s_edit->es_int); break; case SROT: /* rot solid about vertex */ - mged_generic_srot(s, &s->s_edit.es_int); + mged_generic_srot(s, &s->s_edit->es_int); break; case ECMD_ARS_PICK_MENU: /* put up point pick menu for ARS solid */ menu_state->ms_flag = 0; - s->s_edit.edit_flag = ECMD_ARS_PICK; - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 0; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 1; + s->s_edit->edit_flag = ECMD_ARS_PICK; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 0; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 1; mmenu_set(s, MENU_L1, ars_pick_menu); break; case ECMD_ARS_EDIT_MENU: @@ -833,7 +833,7 @@ mged_ars_edit_xy( { vect_t pos_view = VINIT_ZERO; /* Unrotated view space pos */ vect_t temp = VINIT_ZERO; - struct rt_db_internal *ip = &s->s_edit.es_int; + struct rt_db_internal *ip = &s->s_edit->es_int; switch (edflag) { case SSCALE: @@ -848,15 +848,15 @@ mged_ars_edit_xy( case ECMD_ARS_MOVE_PT: case ECMD_ARS_MOVE_CRV: case ECMD_ARS_MOVE_COL: - MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit.curr_e_axes_pos); + MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit->curr_e_axes_pos); pos_view[X] = mousevec[X]; pos_view[Y] = mousevec[Y]; MAT4X3PNT(temp, view_state->vs_gvp->gv_view2model, pos_view); - MAT4X3PNT(s->s_edit.e_mparam, s->s_edit.e_invmat, temp); - s->s_edit.e_mvalid = 1; + MAT4X3PNT(s->s_edit->e_mparam, s->s_edit->e_invmat, temp); + s->s_edit->e_mvalid = 1; break; default: - bu_vls_printf(s->s_edit.log_str, "%s: XY edit undefined in solid edit mode %d\n", MGED_OBJ[ip->idb_type].ft_label, edflag); + bu_vls_printf(s->s_edit->log_str, "%s: XY edit undefined in solid edit mode %d\n", MGED_OBJ[ip->idb_type].ft_label, edflag); mged_print_result(s, TCL_ERROR); return TCL_ERROR; } diff --git a/src/mged/primitives/edbot.c b/src/mged/primitives/edbot.c index 3ffcadf1b1..a55bb38f01 100644 --- a/src/mged/primitives/edbot.c +++ b/src/mged/primitives/edbot.c @@ -68,25 +68,25 @@ int bot_verts[3]; /* vertices for the BOT solid */ static void bot_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg; - s->s_edit.edit_flag = arg; + s->s_edit->edit_menu = arg; + s->s_edit->edit_flag = arg; switch (arg) { case ECMD_BOT_MOVEV: case ECMD_BOT_MOVEE: case ECMD_BOT_MOVET: - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 1; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 0; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 1; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 0; break; case ECMD_BOT_PICKV: case ECMD_BOT_PICKE: case ECMD_BOT_PICKT: - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 0; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 1; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 0; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 1; break; default: mged_set_edflag(s, arg); @@ -217,7 +217,7 @@ void ecmd_bot_mode(struct mged_state *s) { struct rt_bot_internal *bot = - (struct rt_bot_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_bot_internal *)s->s_edit->es_int.idb_ptr; const char *radio_result; char mode[10]; int ret_tcl = TCL_ERROR; @@ -236,7 +236,7 @@ ecmd_bot_mode(struct mged_state *s) " { \"In surface mode, each triangle represents part of a zero thickness surface and no volume is enclosed\" \"In volume mode, the triangles are expected to enclose a volume and that volume becomes the solid\" \"In plate mode, each triangle represents a plate with a specified thickness\" \"In plate/nocosine mode, each triangle represents a plate with a specified thickness, but the LOS thickness reported by the raytracer is independent of obliquity angle\" } ", (char *)NULL); } if (ret_tcl != TCL_OK) { - bu_vls_printf(s->s_edit.log_str, "Mode selection failed!\n"); + bu_vls_printf(s->s_edit->log_str, "Mode selection failed!\n"); return; } radio_result = Tcl_GetVar(s->interp, "_bot_mode_result", TCL_GLOBAL_ONLY); @@ -262,7 +262,7 @@ void ecmd_bot_orient(struct mged_state *s) { struct rt_bot_internal *bot = - (struct rt_bot_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_bot_internal *)s->s_edit->es_int.idb_ptr; const char *radio_result; char orient[10]; int ret_tcl = TCL_ERROR; @@ -279,7 +279,7 @@ ecmd_bot_orient(struct mged_state *s) " { \"No orientation means that there is no particular order for the vertices of the triangles\" \"right-hand-rule means that the vertices of each triangle are ordered such that the right-hand-rule produces an outward pointing normal\" \"left-hand-rule means that the vertices of each triangle are ordered such that the left-hand-rule produces an outward pointing normal\" } ", (char *)NULL); } if (ret_tcl != TCL_OK) { - bu_vls_printf(s->s_edit.log_str, "Face orientation selection failed!\n"); + bu_vls_printf(s->s_edit->log_str, "Face orientation selection failed!\n"); return; } radio_result = Tcl_GetVar(s->interp, "_bot_orient_result", TCL_GLOBAL_ONLY); @@ -290,23 +290,23 @@ int ecmd_bot_thick(struct mged_state *s) { - if (s->s_edit.e_inpara != 1) { - bu_vls_printf(s->s_edit.log_str, "ERROR: only one argument needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara != 1) { + bu_vls_printf(s->s_edit->log_str, "ERROR: only one argument needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; struct rt_bot_internal *bot = - (struct rt_bot_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_bot_internal *)s->s_edit->es_int.idb_ptr; size_t face_no = 0; int face_state = 0; @@ -334,7 +334,7 @@ ecmd_bot_thick(struct mged_state *s) return TCL_ERROR; for (size_t i=0; inum_faces; i++) - bot->thickness[i] = s->s_edit.e_para[0]; + bot->thickness[i] = s->s_edit->e_para[0]; } else { /* setting thickness for just one face */ @@ -355,7 +355,7 @@ ecmd_bot_thick(struct mged_state *s) return TCL_ERROR; } - bot->thickness[face_no] = s->s_edit.e_para[0]; + bot->thickness[face_no] = s->s_edit->e_para[0]; } return 0; @@ -368,7 +368,7 @@ ecmd_bot_flags(struct mged_state *s) const char *dialog_result; char cur_settings[11]; struct rt_bot_internal *bot = - (struct rt_bot_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_bot_internal *)s->s_edit->es_int.idb_ptr; RT_BOT_CK_MAGIC(bot); @@ -417,7 +417,7 @@ void ecmd_bot_fmode(struct mged_state *s) { struct rt_bot_internal *bot = - (struct rt_bot_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_bot_internal *)s->s_edit->es_int.idb_ptr; char fmode[10]; const char *radio_result; size_t face_no = 0; @@ -503,7 +503,7 @@ int ecmd_bot_fdel(struct mged_state *s) { struct rt_bot_internal *bot = - (struct rt_bot_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_bot_internal *)s->s_edit->es_int.idb_ptr; int j, face_no; @@ -564,7 +564,7 @@ ecmd_bot_fdel(struct mged_state *s) void ecmd_bot_movev(struct mged_state *s) { - struct rt_bot_internal *bot = (struct rt_bot_internal *)s->s_edit.es_int.idb_ptr; + struct rt_bot_internal *bot = (struct rt_bot_internal *)s->s_edit->es_int.idb_ptr; int vert; point_t new_pt = VINIT_ZERO; @@ -586,25 +586,25 @@ ecmd_bot_movev(struct mged_state *s) } vert = bot_verts[0]; - if (s->s_edit.e_mvalid) { - VMOVE(new_pt, s->s_edit.e_mparam); - } else if (s->s_edit.e_inpara == 3) { + if (s->s_edit->e_mvalid) { + VMOVE(new_pt, s->s_edit->e_mparam); + } else if (s->s_edit->e_inpara == 3) { /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; - if (s->s_edit.mv_context) { - /* apply s->s_edit.e_invmat to convert to real model space */ - MAT4X3PNT(new_pt, s->s_edit.e_invmat, s->s_edit.e_para); + if (s->s_edit->mv_context) { + /* apply s->s_edit->e_invmat to convert to real model space */ + MAT4X3PNT(new_pt, s->s_edit->e_invmat, s->s_edit->e_para); } else { - VMOVE(new_pt, s->s_edit.e_para); + VMOVE(new_pt, s->s_edit->e_para); } - } else if (s->s_edit.e_inpara && s->s_edit.e_inpara != 3) { - bu_vls_printf(s->s_edit.log_str, "x y z coordinates required for point movement\n"); + } else if (s->s_edit->e_inpara && s->s_edit->e_inpara != 3) { + bu_vls_printf(s->s_edit->log_str, "x y z coordinates required for point movement\n"); mged_print_result(s, TCL_ERROR); return; - } else if (!s->s_edit.e_mvalid && !s->s_edit.e_inpara) { + } else if (!s->s_edit->e_mvalid && !s->s_edit->e_inpara) { return; } @@ -614,7 +614,7 @@ ecmd_bot_movev(struct mged_state *s) void ecmd_bot_movee(struct mged_state *s) { - struct rt_bot_internal *bot = (struct rt_bot_internal *)s->s_edit.es_int.idb_ptr; + struct rt_bot_internal *bot = (struct rt_bot_internal *)s->s_edit->es_int.idb_ptr; int v1, v2; vect_t diff; point_t new_pt = VINIT_ZERO; @@ -622,7 +622,7 @@ ecmd_bot_movee(struct mged_state *s) RT_BOT_CK_MAGIC(bot); if (bot_verts[0] < 0 || bot_verts[1] < 0) { - bu_vls_printf(s->s_edit.log_str, "No BOT edge selected\n"); + bu_vls_printf(s->s_edit->log_str, "No BOT edge selected\n"); mged_print_result(s, TCL_ERROR); return; } @@ -633,25 +633,25 @@ ecmd_bot_movee(struct mged_state *s) } v1 = bot_verts[0]; v2 = bot_verts[1]; - if (s->s_edit.e_mvalid) { - VMOVE(new_pt, s->s_edit.e_mparam); - } else if (s->s_edit.e_inpara == 3) { + if (s->s_edit->e_mvalid) { + VMOVE(new_pt, s->s_edit->e_mparam); + } else if (s->s_edit->e_inpara == 3) { /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; - if (s->s_edit.mv_context) { - /* apply s->s_edit.e_invmat to convert to real model space */ - MAT4X3PNT(new_pt, s->s_edit.e_invmat, s->s_edit.e_para); + if (s->s_edit->mv_context) { + /* apply s->s_edit->e_invmat to convert to real model space */ + MAT4X3PNT(new_pt, s->s_edit->e_invmat, s->s_edit->e_para); } else { - VMOVE(new_pt, s->s_edit.e_para); + VMOVE(new_pt, s->s_edit->e_para); } - } else if (s->s_edit.e_inpara && s->s_edit.e_inpara != 3) { - bu_vls_printf(s->s_edit.log_str, "x y z coordinates required for point movement\n"); + } else if (s->s_edit->e_inpara && s->s_edit->e_inpara != 3) { + bu_vls_printf(s->s_edit->log_str, "x y z coordinates required for point movement\n"); mged_print_result(s, TCL_ERROR); return; - } else if (!s->s_edit.e_mvalid && !s->s_edit.e_inpara) { + } else if (!s->s_edit->e_mvalid && !s->s_edit->e_inpara) { return; } @@ -664,7 +664,7 @@ ecmd_bot_movee(struct mged_state *s) void ecmd_bot_movet(struct mged_state *s) { - struct rt_bot_internal *bot = (struct rt_bot_internal *)s->s_edit.es_int.idb_ptr; + struct rt_bot_internal *bot = (struct rt_bot_internal *)s->s_edit->es_int.idb_ptr; int v1, v2, v3; point_t new_pt = VINIT_ZERO; vect_t diff; @@ -672,7 +672,7 @@ ecmd_bot_movet(struct mged_state *s) RT_BOT_CK_MAGIC(bot); if (bot_verts[0] < 0 || bot_verts[1] < 0 || bot_verts[2] < 0) { - bu_vls_printf(s->s_edit.log_str, "No BOT triangle selected\n"); + bu_vls_printf(s->s_edit->log_str, "No BOT triangle selected\n"); mged_print_result(s, TCL_ERROR); return; } @@ -680,25 +680,25 @@ ecmd_bot_movet(struct mged_state *s) v2 = bot_verts[1]; v3 = bot_verts[2]; - if (s->s_edit.e_mvalid) { - VMOVE(new_pt, s->s_edit.e_mparam); - } else if (s->s_edit.e_inpara == 3) { + if (s->s_edit->e_mvalid) { + VMOVE(new_pt, s->s_edit->e_mparam); + } else if (s->s_edit->e_inpara == 3) { /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; - if (s->s_edit.mv_context) { - /* apply s->s_edit.e_invmat to convert to real model space */ - MAT4X3PNT(new_pt, s->s_edit.e_invmat, s->s_edit.e_para); + if (s->s_edit->mv_context) { + /* apply s->s_edit->e_invmat to convert to real model space */ + MAT4X3PNT(new_pt, s->s_edit->e_invmat, s->s_edit->e_para); } else { - VMOVE(new_pt, s->s_edit.e_para); + VMOVE(new_pt, s->s_edit->e_para); } - } else if (s->s_edit.e_inpara && s->s_edit.e_inpara != 3) { - bu_vls_printf(s->s_edit.log_str, "x y z coordinates required for point movement\n"); + } else if (s->s_edit->e_inpara && s->s_edit->e_inpara != 3) { + bu_vls_printf(s->s_edit->log_str, "x y z coordinates required for point movement\n"); mged_print_result(s, TCL_ERROR); return; - } else if (!s->s_edit.e_mvalid && !s->s_edit.e_inpara) { + } else if (!s->s_edit->e_mvalid && !s->s_edit->e_inpara) { return; } @@ -712,20 +712,20 @@ int ecmd_bot_pickv(struct mged_state *s, const vect_t mousevec) { vect_t pos_view = VINIT_ZERO; /* Unrotated view space pos */ - struct rt_bot_internal *bot = (struct rt_bot_internal *)s->s_edit.es_int.idb_ptr; + struct rt_bot_internal *bot = (struct rt_bot_internal *)s->s_edit->es_int.idb_ptr; int tmp_vert; char tmp_msg[256]; point_t selected_pt; RT_BOT_CK_MAGIC(bot); - MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit.curr_e_axes_pos); + MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit->curr_e_axes_pos); pos_view[X] = mousevec[X]; pos_view[Y] = mousevec[Y]; tmp_vert = rt_bot_find_v_nearest_pt2(bot, pos_view, view_state->vs_gvp->gv_model2view); if (tmp_vert < 0) { - bu_vls_printf(s->s_edit.log_str, "ECMD_BOT_PICKV: unable to find a vertex!\n"); + bu_vls_printf(s->s_edit->log_str, "ECMD_BOT_PICKV: unable to find a vertex!\n"); mged_print_result(s, TCL_ERROR); return BRLCAD_ERROR; } @@ -735,7 +735,7 @@ ecmd_bot_pickv(struct mged_state *s, const vect_t mousevec) bot_verts[2] = -1; VSCALE(selected_pt, &bot->vertices[tmp_vert*3], s->dbip->dbi_base2local); sprintf(tmp_msg, "picked point at (%g %g %g), vertex #%d\n", V3ARGS(selected_pt), tmp_vert); - bu_vls_printf(s->s_edit.log_str, "%s", tmp_msg); + bu_vls_printf(s->s_edit->log_str, "%s", tmp_msg); mged_print_result(s, TCL_OK); return BRLCAD_OK; @@ -745,19 +745,19 @@ int ecmd_bot_picke(struct mged_state *s, const vect_t mousevec) { vect_t pos_view = VINIT_ZERO; /* Unrotated view space pos */ - struct rt_bot_internal *bot = (struct rt_bot_internal *)s->s_edit.es_int.idb_ptr; + struct rt_bot_internal *bot = (struct rt_bot_internal *)s->s_edit->es_int.idb_ptr; int vert1, vert2; char tmp_msg[256]; point_t from_pt, to_pt; RT_BOT_CK_MAGIC(bot); - MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit.curr_e_axes_pos); + MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit->curr_e_axes_pos); pos_view[X] = mousevec[X]; pos_view[Y] = mousevec[Y]; if (rt_bot_find_e_nearest_pt2(&vert1, &vert2, bot, pos_view, view_state->vs_gvp->gv_model2view)) { - bu_vls_printf(s->s_edit.log_str, "ECMD_BOT_PICKE: unable to find an edge!\n"); + bu_vls_printf(s->s_edit->log_str, "ECMD_BOT_PICKE: unable to find an edge!\n"); mged_print_result(s, TCL_ERROR); return BRLCAD_ERROR; } @@ -768,7 +768,7 @@ ecmd_bot_picke(struct mged_state *s, const vect_t mousevec) VSCALE(from_pt, &bot->vertices[vert1*3], s->dbip->dbi_base2local); VSCALE(to_pt, &bot->vertices[vert2*3], s->dbip->dbi_base2local); sprintf(tmp_msg, "picked edge from (%g %g %g) to (%g %g %g)\n", V3ARGS(from_pt), V3ARGS(to_pt)); - bu_vls_printf(s->s_edit.log_str, "%s", tmp_msg); + bu_vls_printf(s->s_edit->log_str, "%s", tmp_msg); mged_print_result(s, TCL_OK); return BRLCAD_OK; @@ -777,7 +777,7 @@ ecmd_bot_picke(struct mged_state *s, const vect_t mousevec) void ecmd_bot_pickt(struct mged_state *s, const vect_t mousevec) { - struct rt_bot_internal *bot = (struct rt_bot_internal *)s->s_edit.es_int.idb_ptr; + struct rt_bot_internal *bot = (struct rt_bot_internal *)s->s_edit->es_int.idb_ptr; point_t start_pt, tmp; vect_t dir; size_t i; @@ -848,20 +848,20 @@ mged_bot_edit(struct mged_state *s, int edflag) bot_verts[0] = -1; bot_verts[1] = -1; bot_verts[2] = -1; - return mged_generic_sscale(s, &s->s_edit.es_int); + return mged_generic_sscale(s, &s->s_edit->es_int); case STRANS: /* translate solid */ bot_verts[0] = -1; bot_verts[1] = -1; bot_verts[2] = -1; - mged_generic_strans(s, &s->s_edit.es_int); + mged_generic_strans(s, &s->s_edit->es_int); break; case SROT: /* rot solid about vertex */ bot_verts[0] = -1; bot_verts[1] = -1; bot_verts[2] = -1; - mged_generic_srot(s, &s->s_edit.es_int); + mged_generic_srot(s, &s->s_edit->es_int); break; case ECMD_BOT_MODE: ecmd_bot_mode(s); @@ -908,7 +908,7 @@ mged_bot_edit_xy( { vect_t pos_view = VINIT_ZERO; /* Unrotated view space pos */ vect_t temp = VINIT_ZERO; - struct rt_db_internal *ip = &s->s_edit.es_int; + struct rt_db_internal *ip = &s->s_edit->es_int; switch (edflag) { case SSCALE: @@ -933,15 +933,15 @@ mged_bot_edit_xy( case ECMD_BOT_MOVEV: case ECMD_BOT_MOVEE: case ECMD_BOT_MOVET: - MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit.curr_e_axes_pos); + MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit->curr_e_axes_pos); pos_view[X] = mousevec[X]; pos_view[Y] = mousevec[Y]; MAT4X3PNT(temp, view_state->vs_gvp->gv_view2model, pos_view); - MAT4X3PNT(s->s_edit.e_mparam, s->s_edit.e_invmat, temp); - s->s_edit.e_mvalid = 1; + MAT4X3PNT(s->s_edit->e_mparam, s->s_edit->e_invmat, temp); + s->s_edit->e_mvalid = 1; break; default: - bu_vls_printf(s->s_edit.log_str, "%s: XY edit undefined in solid edit mode %d\n", MGED_OBJ[ip->idb_type].ft_label, edflag); + bu_vls_printf(s->s_edit->log_str, "%s: XY edit undefined in solid edit mode %d\n", MGED_OBJ[ip->idb_type].ft_label, edflag); mged_print_result(s, TCL_ERROR); return TCL_ERROR; } diff --git a/src/mged/primitives/edbspline.c b/src/mged/primitives/edbspline.c index 08e8e64306..6c48d69290 100644 --- a/src/mged/primitives/edbspline.c +++ b/src/mged/primitives/edbspline.c @@ -56,11 +56,11 @@ spline_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNU } /* For example, this will set edit_flag = ECMD_VTRANS */ if (arg == ECMD_VTRANS) { - s->s_edit.edit_flag = ECMD_VTRANS; - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 1; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 0; + s->s_edit->edit_flag = ECMD_VTRANS; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 1; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 0; } else { mged_set_edflag(s, arg); } @@ -163,7 +163,7 @@ void bspline_init_sedit(struct mged_state *s) { struct rt_nurb_internal *sip = - (struct rt_nurb_internal *) s->s_edit.es_int.idb_ptr; + (struct rt_nurb_internal *) s->s_edit->es_int.idb_ptr; struct face_g_snurb *surf; RT_NURB_CK_MAGIC(sip); spl_surfno = sip->nsrf/2; @@ -182,12 +182,12 @@ sedit_vpick(struct mged_state *s, point_t v_pos) MAT4X3PNT(m_pos, view_state->vs_objview2model, v_pos); if (nurb_closest2d(&surfno, &u, &v, - (struct rt_nurb_internal *)s->s_edit.es_int.idb_ptr, + (struct rt_nurb_internal *)s->s_edit->es_int.idb_ptr, m_pos, view_state->vs_model2objview) >= 0) { spl_surfno = surfno; spl_ui = u; spl_vi = v; - get_solid_keypoint(s, &s->s_edit.e_keypoint, &s->s_edit.e_keytag, &s->s_edit.es_int, s->s_edit.e_mat); + get_solid_keypoint(s, &s->s_edit->e_keypoint, &s->s_edit->e_keytag, &s->s_edit->es_int, s->s_edit->e_mat); } chg_state(s, ST_S_VPICK, ST_S_EDIT, "Vertex Pick Complete"); view_state->vs_flag = 1; @@ -278,23 +278,23 @@ void ecmd_vtrans(struct mged_state *s) { /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; /* translate a vertex */ - if (s->s_edit.e_mvalid) { + if (s->s_edit->e_mvalid) { /* Mouse parameter: new position in model space */ - VMOVE(s->s_edit.e_para, s->s_edit.e_mparam); - s->s_edit.e_inpara = 1; + VMOVE(s->s_edit->e_para, s->s_edit->e_mparam); + s->s_edit->e_inpara = 1; } - if (s->s_edit.e_inpara) { + if (s->s_edit->e_inpara) { /* Keyboard parameter: new position in model space. * XXX for now, splines only here */ struct rt_nurb_internal *sip = - (struct rt_nurb_internal *) s->s_edit.es_int.idb_ptr; + (struct rt_nurb_internal *) s->s_edit->es_int.idb_ptr; struct face_g_snurb *surf; fastf_t *fp; @@ -302,11 +302,11 @@ ecmd_vtrans(struct mged_state *s) surf = sip->srfs[spl_surfno]; NMG_CK_SNURB(surf); fp = &RT_NURB_GET_CONTROL_POINT(surf, spl_ui, spl_vi); - if (s->s_edit.mv_context) { - /* apply s->s_edit.e_invmat to convert to real model space */ - MAT4X3PNT(fp, s->s_edit.e_invmat, s->s_edit.e_para); + if (s->s_edit->mv_context) { + /* apply s->s_edit->e_invmat to convert to real model space */ + MAT4X3PNT(fp, s->s_edit->e_invmat, s->s_edit->e_para); } else { - VMOVE(fp, s->s_edit.e_para); + VMOVE(fp, s->s_edit->e_para); } } } @@ -318,14 +318,14 @@ mged_bspline_edit(struct mged_state *s, int edflag) switch (edflag) { case SSCALE: /* scale the solid uniformly about its vertex point */ - return mged_generic_sscale(s, &s->s_edit.es_int); + return mged_generic_sscale(s, &s->s_edit->es_int); case STRANS: /* translate solid */ - mged_generic_strans(s, &s->s_edit.es_int); + mged_generic_strans(s, &s->s_edit->es_int); break; case SROT: /* rot solid about vertex */ - mged_generic_srot(s, &s->s_edit.es_int); + mged_generic_srot(s, &s->s_edit->es_int); break; case ECMD_VTRANS: // I think this is bspline only?? @@ -345,7 +345,7 @@ mged_bspline_edit_xy( { vect_t pos_view = VINIT_ZERO; /* Unrotated view space pos */ vect_t temp = VINIT_ZERO; - struct rt_db_internal *ip = &s->s_edit.es_int; + struct rt_db_internal *ip = &s->s_edit->es_int; switch (edflag) { case SSCALE: @@ -362,18 +362,18 @@ mged_bspline_edit_xy( * Project vertex (in solid keypoint) into view space, * replace X, Y (but NOT Z) components, and * project result back to model space. - * Leave desired location in s->s_edit.e_mparam. + * Leave desired location in s->s_edit->e_mparam. */ - MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit.curr_e_axes_pos); + MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit->curr_e_axes_pos); pos_view[X] = mousevec[X]; pos_view[Y] = mousevec[Y]; MAT4X3PNT(temp, view_state->vs_gvp->gv_view2model, pos_view); - MAT4X3PNT(s->s_edit.e_mparam, s->s_edit.e_invmat, temp); - s->s_edit.e_mvalid = 1; /* s->s_edit.e_mparam is valid */ + MAT4X3PNT(s->s_edit->e_mparam, s->s_edit->e_invmat, temp); + s->s_edit->e_mvalid = 1; /* s->s_edit->e_mparam is valid */ /* Leave the rest to code in ft_edit */ break; default: - bu_vls_printf(s->s_edit.log_str, "%s: XY edit undefined in solid edit mode %d\n", MGED_OBJ[ip->idb_type].ft_label, edflag); + bu_vls_printf(s->s_edit->log_str, "%s: XY edit undefined in solid edit mode %d\n", MGED_OBJ[ip->idb_type].ft_label, edflag); mged_print_result(s, TCL_ERROR); return TCL_ERROR; } diff --git a/src/mged/primitives/edcline.c b/src/mged/primitives/edcline.c index 0a363f19ff..e5ffc93d29 100644 --- a/src/mged/primitives/edcline.c +++ b/src/mged/primitives/edcline.c @@ -50,22 +50,22 @@ static void cline_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_flag = arg; + s->s_edit->edit_flag = arg; switch (arg) { case ECMD_CLINE_MOVE_H: - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 1; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 0; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 1; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 0; break; case ECMD_CLINE_SCALE_H: case ECMD_CLINE_SCALE_R: case ECMD_CLINE_SCALE_T: - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 0; - s->s_edit.solid_edit_scale = 1; - s->s_edit.solid_edit_pick = 0; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 0; + s->s_edit->solid_edit_scale = 1; + s->s_edit->solid_edit_pick = 0; break; default: mged_set_edflag(s, arg); @@ -96,18 +96,18 @@ mged_cline_e_axes_pos( const struct rt_db_internal *ip, const struct bn_tol *UNUSED(tol)) { - if (s->s_edit.edit_flag == ECMD_CLINE_MOVE_H) { + if (s->s_edit->edit_flag == ECMD_CLINE_MOVE_H) { struct rt_cline_internal *cli =(struct rt_cline_internal *)ip->idb_ptr; point_t cli_v; vect_t cli_h; RT_CLINE_CK_MAGIC(cli); - MAT4X3PNT(cli_v, s->s_edit.e_mat, cli->v); - MAT4X3VEC(cli_h, s->s_edit.e_mat, cli->h); - VADD2(s->s_edit.curr_e_axes_pos, cli_h, cli_v); + MAT4X3PNT(cli_v, s->s_edit->e_mat, cli->v); + MAT4X3VEC(cli_h, s->s_edit->e_mat, cli->h); + VADD2(s->s_edit->curr_e_axes_pos, cli_h, cli_v); } else { - VMOVE(s->s_edit.curr_e_axes_pos, s->s_edit.e_keypoint); + VMOVE(s->s_edit->curr_e_axes_pos, s->s_edit->e_keypoint); } } @@ -117,35 +117,35 @@ mged_cline_e_axes_pos( int ecmd_cline_scale_h(struct mged_state *s) { - if (s->s_edit.e_inpara != 1) { - bu_vls_printf(s->s_edit.log_str, "ERROR: only one argument needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara != 1) { + bu_vls_printf(s->s_edit->log_str, "ERROR: only one argument needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; struct rt_cline_internal *cli = - (struct rt_cline_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_cline_internal *)s->s_edit->es_int.idb_ptr; RT_CLINE_CK_MAGIC(cli); - if (s->s_edit.e_inpara) { - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / MAGNITUDE(cli->h); - VSCALE(cli->h, cli->h, s->s_edit.es_scale); - } else if (s->s_edit.es_scale > 0.0) { - VSCALE(cli->h, cli->h, s->s_edit.es_scale); - s->s_edit.es_scale = 0.0; + if (s->s_edit->e_inpara) { + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / MAGNITUDE(cli->h); + VSCALE(cli->h, cli->h, s->s_edit->es_scale); + } else if (s->s_edit->es_scale > 0.0) { + VSCALE(cli->h, cli->h, s->s_edit->es_scale); + s->s_edit->es_scale = 0.0; } return 0; @@ -157,33 +157,33 @@ ecmd_cline_scale_h(struct mged_state *s) int ecmd_cline_scale_r(struct mged_state *s) { - if (s->s_edit.e_inpara != 1) { - bu_vls_printf(s->s_edit.log_str, "ERROR: only one argument needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara != 1) { + bu_vls_printf(s->s_edit->log_str, "ERROR: only one argument needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } struct rt_cline_internal *cli = - (struct rt_cline_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_cline_internal *)s->s_edit->es_int.idb_ptr; RT_CLINE_CK_MAGIC(cli); - if (s->s_edit.e_inpara) - cli->radius = s->s_edit.e_para[0]; - else if (s->s_edit.es_scale > 0.0) { - cli->radius *= s->s_edit.es_scale; - s->s_edit.es_scale = 0.0; + if (s->s_edit->e_inpara) + cli->radius = s->s_edit->e_para[0]; + else if (s->s_edit->es_scale > 0.0) { + cli->radius *= s->s_edit->es_scale; + s->s_edit->es_scale = 0.0; } return 0; @@ -195,33 +195,33 @@ ecmd_cline_scale_r(struct mged_state *s) int ecmd_cline_scale_t(struct mged_state *s) { - if (s->s_edit.e_inpara != 1) { - bu_vls_printf(s->s_edit.log_str, "ERROR: only one argument needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara != 1) { + bu_vls_printf(s->s_edit->log_str, "ERROR: only one argument needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; struct rt_cline_internal *cli = - (struct rt_cline_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_cline_internal *)s->s_edit->es_int.idb_ptr; RT_CLINE_CK_MAGIC(cli); - if (s->s_edit.e_inpara) - cli->thickness = s->s_edit.e_para[0]; - else if (s->s_edit.es_scale > 0.0) { - cli->thickness *= s->s_edit.es_scale; - s->s_edit.es_scale = 0.0; + if (s->s_edit->e_inpara) + cli->thickness = s->s_edit->e_para[0]; + else if (s->s_edit->es_scale > 0.0) { + cli->thickness *= s->s_edit->es_scale; + s->s_edit->es_scale = 0.0; } return 0; @@ -235,31 +235,31 @@ ecmd_cline_move_h(struct mged_state *s) { vect_t work; struct rt_cline_internal *cli = - (struct rt_cline_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_cline_internal *)s->s_edit->es_int.idb_ptr; RT_CLINE_CK_MAGIC(cli); - if (s->s_edit.e_inpara) { - if (s->s_edit.e_inpara != 3) { - bu_vls_printf(s->s_edit.log_str, "ERROR: three arguments needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara) { + if (s->s_edit->e_inpara != 3) { + bu_vls_printf(s->s_edit->log_str, "ERROR: three arguments needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; - if (s->s_edit.mv_context) { - MAT4X3PNT(work, s->s_edit.e_invmat, s->s_edit.e_para); + if (s->s_edit->mv_context) { + MAT4X3PNT(work, s->s_edit->e_invmat, s->s_edit->e_para); VSUB2(cli->h, work, cli->v); } else - VSUB2(cli->h, s->s_edit.e_para, cli->v); + VSUB2(cli->h, s->s_edit->e_para, cli->v); } /* check for zero H vector */ if (MAGNITUDE(cli->h) <= SQRT_SMALL_FASTF) { - bu_vls_printf(s->s_edit.log_str, "Zero H vector not allowed, resetting to +Z\n"); + bu_vls_printf(s->s_edit->log_str, "Zero H vector not allowed, resetting to +Z\n"); mged_print_result(s, TCL_ERROR); VSET(cli->h, 0.0, 0.0, 1.0); return TCL_ERROR; @@ -275,16 +275,16 @@ ecmd_cline_move_h_mousevec(struct mged_state *s, const vect_t mousevec) vect_t tr_temp = VINIT_ZERO; /* temp translation vector */ vect_t temp = VINIT_ZERO; struct rt_cline_internal *cli = - (struct rt_cline_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_cline_internal *)s->s_edit->es_int.idb_ptr; RT_CLINE_CK_MAGIC(cli); - MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit.curr_e_axes_pos); + MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit->curr_e_axes_pos); pos_view[X] = mousevec[X]; pos_view[Y] = mousevec[Y]; /* Do NOT change pos_view[Z] ! */ MAT4X3PNT(temp, view_state->vs_gvp->gv_view2model, pos_view); - MAT4X3PNT(tr_temp, s->s_edit.e_invmat, temp); + MAT4X3PNT(tr_temp, s->s_edit->e_invmat, temp); VSUB2(cli->h, tr_temp, cli->v); } @@ -294,14 +294,14 @@ mged_cline_edit(struct mged_state *s, int edflag) switch (edflag) { case SSCALE: /* scale the solid uniformly about its vertex point */ - return mged_generic_sscale(s, &s->s_edit.es_int); + return mged_generic_sscale(s, &s->s_edit->es_int); case STRANS: /* translate solid */ - mged_generic_strans(s, &s->s_edit.es_int); + mged_generic_strans(s, &s->s_edit->es_int); break; case SROT: /* rot solid about vertex */ - mged_generic_srot(s, &s->s_edit.es_int); + mged_generic_srot(s, &s->s_edit->es_int); break; case ECMD_CLINE_SCALE_H: return ecmd_cline_scale_h(s); @@ -324,7 +324,7 @@ mged_cline_edit_xy( ) { vect_t pos_view = VINIT_ZERO; /* Unrotated view space pos */ - struct rt_db_internal *ip = &s->s_edit.es_int; + struct rt_db_internal *ip = &s->s_edit->es_int; switch (edflag) { case SSCALE: @@ -342,7 +342,7 @@ mged_cline_edit_xy( ecmd_cline_move_h_mousevec(s, mousevec); break; default: - bu_vls_printf(s->s_edit.log_str, "%s: XY edit undefined in solid edit mode %d\n", MGED_OBJ[ip->idb_type].ft_label, edflag); + bu_vls_printf(s->s_edit->log_str, "%s: XY edit undefined in solid edit mode %d\n", MGED_OBJ[ip->idb_type].ft_label, edflag); mged_print_result(s, TCL_ERROR); return TCL_ERROR; } diff --git a/src/mged/primitives/eddsp.c b/src/mged/primitives/eddsp.c index f1d421b378..3942e85af6 100644 --- a/src/mged/primitives/eddsp.c +++ b/src/mged/primitives/eddsp.c @@ -55,27 +55,27 @@ extern const char * get_file_name(struct mged_state *s, char *str); static void dsp_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg; + s->s_edit->edit_menu = arg; mged_set_edflag(s, -1); switch (arg) { case MENU_DSP_FNAME: - s->s_edit.edit_flag = ECMD_DSP_FNAME; + s->s_edit->edit_flag = ECMD_DSP_FNAME; break; case MENU_DSP_FSIZE: - s->s_edit.edit_flag = ECMD_DSP_FSIZE; // Unimplemented. Expects 2 parameters + s->s_edit->edit_flag = ECMD_DSP_FSIZE; // Unimplemented. Expects 2 parameters break; case MENU_DSP_SCALE_X: - s->s_edit.edit_flag = ECMD_DSP_SCALE_X; - s->s_edit.solid_edit_scale = 1; + s->s_edit->edit_flag = ECMD_DSP_SCALE_X; + s->s_edit->solid_edit_scale = 1; break; case MENU_DSP_SCALE_Y: - s->s_edit.edit_flag = ECMD_DSP_SCALE_Y; - s->s_edit.solid_edit_scale = 1; + s->s_edit->edit_flag = ECMD_DSP_SCALE_Y; + s->s_edit->solid_edit_scale = 1; break; case MENU_DSP_SCALE_ALT: - s->s_edit.edit_flag = ECMD_DSP_SCALE_ALT; - s->s_edit.solid_edit_scale = 1; + s->s_edit->edit_flag = ECMD_DSP_SCALE_ALT; + s->s_edit->solid_edit_scale = 1; break; } @@ -106,25 +106,25 @@ dsp_scale(struct mged_state *s, struct rt_dsp_internal *dsp, int idx) MAT_IDN(m); - if (s->s_edit.e_mvalid) { - bu_log("s->s_edit.e_mvalid %g %g %g\n", V3ARGS(s->s_edit.e_mparam)); + if (s->s_edit->e_mvalid) { + bu_log("s->s_edit->e_mvalid %g %g %g\n", V3ARGS(s->s_edit->e_mparam)); } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; - - if (s->s_edit.e_inpara > 0) { - m[idx] = s->s_edit.e_para[0]; - bu_log("Keyboard %g\n", s->s_edit.e_para[0]); - } else if (!ZERO(s->s_edit.es_scale)) { - m[idx] *= s->s_edit.es_scale; - bu_log("s->s_edit.es_scale %g\n", s->s_edit.es_scale); - s->s_edit.es_scale = 0.0; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; + + if (s->s_edit->e_inpara > 0) { + m[idx] = s->s_edit->e_para[0]; + bu_log("Keyboard %g\n", s->s_edit->e_para[0]); + } else if (!ZERO(s->s_edit->es_scale)) { + m[idx] *= s->s_edit->es_scale; + bu_log("s->s_edit->es_scale %g\n", s->s_edit->es_scale); + s->s_edit->es_scale = 0.0; } - bn_mat_xform_about_pnt(scalemat, m, s->s_edit.e_keypoint); + bn_mat_xform_about_pnt(scalemat, m, s->s_edit->e_keypoint); bn_mat_mul(m, dsp->dsp_stom, scalemat); MAT_COPY(dsp->dsp_stom, m); @@ -137,18 +137,18 @@ dsp_scale(struct mged_state *s, struct rt_dsp_internal *dsp, int idx) int ecmd_dsp_scale_x(struct mged_state *s) { - if (s->s_edit.e_inpara != 1) { - bu_vls_printf(s->s_edit.log_str, "ERROR: only one argument needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara != 1) { + bu_vls_printf(s->s_edit->log_str, "ERROR: only one argument needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - dsp_scale(s, (struct rt_dsp_internal *)s->s_edit.es_int.idb_ptr, MSX); + dsp_scale(s, (struct rt_dsp_internal *)s->s_edit->es_int.idb_ptr, MSX); return 0; } @@ -156,18 +156,18 @@ ecmd_dsp_scale_x(struct mged_state *s) int ecmd_dsp_scale_y(struct mged_state *s) { - if (s->s_edit.e_inpara != 1) { - bu_vls_printf(s->s_edit.log_str, "ERROR: only one argument needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara != 1) { + bu_vls_printf(s->s_edit->log_str, "ERROR: only one argument needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - dsp_scale(s, (struct rt_dsp_internal *)s->s_edit.es_int.idb_ptr, MSY); + dsp_scale(s, (struct rt_dsp_internal *)s->s_edit->es_int.idb_ptr, MSY); return 0; } @@ -175,18 +175,18 @@ ecmd_dsp_scale_y(struct mged_state *s) int ecmd_dsp_scale_alt(struct mged_state *s) { - if (s->s_edit.e_inpara != 1) { - bu_vls_printf(s->s_edit.log_str, "ERROR: only one argument needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara != 1) { + bu_vls_printf(s->s_edit->log_str, "ERROR: only one argument needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - dsp_scale(s, (struct rt_dsp_internal *)s->s_edit.es_int.idb_ptr, MSZ); + dsp_scale(s, (struct rt_dsp_internal *)s->s_edit->es_int.idb_ptr, MSZ); return 0; } @@ -195,7 +195,7 @@ int ecmd_dsp_fname(struct mged_state *s) { struct rt_dsp_internal *dsp = - (struct rt_dsp_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_dsp_internal *)s->s_edit->es_int.idb_ptr; const char *fname; struct stat stat_buf; b_off_t need_size; @@ -234,14 +234,14 @@ mged_dsp_edit(struct mged_state *s, int edflag) switch (edflag) { case SSCALE: /* scale the solid uniformly about its vertex point */ - return mged_generic_sscale(s, &s->s_edit.es_int); + return mged_generic_sscale(s, &s->s_edit->es_int); case STRANS: /* translate solid */ - mged_generic_strans(s, &s->s_edit.es_int); + mged_generic_strans(s, &s->s_edit->es_int); break; case SROT: /* rot solid about vertex */ - mged_generic_srot(s, &s->s_edit.es_int); + mged_generic_srot(s, &s->s_edit->es_int); break; case ECMD_DSP_SCALE_X: return ecmd_dsp_scale_x(s); @@ -266,7 +266,7 @@ mged_dsp_edit_xy( ) { vect_t pos_view = VINIT_ZERO; /* Unrotated view space pos */ - struct rt_db_internal *ip = &s->s_edit.es_int; + struct rt_db_internal *ip = &s->s_edit->es_int; switch (edflag) { case SSCALE: @@ -281,7 +281,7 @@ mged_dsp_edit_xy( mged_generic_strans_xy(&pos_view, s, mousevec); break; default: - bu_vls_printf(s->s_edit.log_str, "%s: XY edit undefined in solid edit mode %d\n", MGED_OBJ[ip->idb_type].ft_label, edflag); + bu_vls_printf(s->s_edit->log_str, "%s: XY edit undefined in solid edit mode %d\n", MGED_OBJ[ip->idb_type].ft_label, edflag); mged_print_result(s, TCL_ERROR); return TCL_ERROR; } diff --git a/src/mged/primitives/edebm.c b/src/mged/primitives/edebm.c index b668cd09e1..f47d629335 100644 --- a/src/mged/primitives/edebm.c +++ b/src/mged/primitives/edebm.c @@ -51,19 +51,19 @@ extern const char * get_file_name(struct mged_state *s, char *str); static void ebm_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg; + s->s_edit->edit_menu = arg; mged_set_edflag(s, -1); switch (arg) { case MENU_EBM_FNAME: - s->s_edit.edit_flag = ECMD_EBM_FNAME; + s->s_edit->edit_flag = ECMD_EBM_FNAME; break; case MENU_EBM_FSIZE: - s->s_edit.edit_flag = ECMD_EBM_FSIZE; + s->s_edit->edit_flag = ECMD_EBM_FSIZE; break; case MENU_EBM_HEIGHT: - s->s_edit.edit_flag = ECMD_EBM_HEIGHT; - s->s_edit.solid_edit_scale = 1; + s->s_edit->edit_flag = ECMD_EBM_HEIGHT; + s->s_edit->solid_edit_scale = 1; break; } @@ -87,45 +87,45 @@ mged_ebm_menu_item(const struct bn_tol *UNUSED(tol)) int ecmd_ebm_fsize(struct mged_state *s) { - if (s->s_edit.e_inpara != 2) { - bu_vls_printf(s->s_edit.log_str, "ERROR: two arguments needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara != 2) { + bu_vls_printf(s->s_edit->log_str, "ERROR: two arguments needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: X SIZE <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: X SIZE <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; - } else if (s->s_edit.e_para[1] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: Y SIZE <= 0\n"); - s->s_edit.e_inpara = 0; + } else if (s->s_edit->e_para[1] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: Y SIZE <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } struct rt_ebm_internal *ebm = - (struct rt_ebm_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_ebm_internal *)s->s_edit->es_int.idb_ptr; struct stat stat_buf; b_off_t need_size; RT_EBM_CK_MAGIC(ebm); - if (s->s_edit.e_inpara == 2) { + if (s->s_edit->e_inpara == 2) { if (stat(ebm->name, &stat_buf)) { - bu_vls_printf(s->s_edit.log_str, "Cannot get status of ebm data source %s", ebm->name); + bu_vls_printf(s->s_edit->log_str, "Cannot get status of ebm data source %s", ebm->name); mged_print_result(s, TCL_ERROR); return BRLCAD_ERROR; } - need_size = s->s_edit.e_para[0] * s->s_edit.e_para[1] * sizeof(unsigned char); + need_size = s->s_edit->e_para[0] * s->s_edit->e_para[1] * sizeof(unsigned char); if (stat_buf.st_size < need_size) { - bu_vls_printf(s->s_edit.log_str, "File (%s) is too small, set data source name first", ebm->name); + bu_vls_printf(s->s_edit->log_str, "File (%s) is too small, set data source name first", ebm->name); mged_print_result(s, TCL_ERROR); return BRLCAD_ERROR; } - ebm->xdim = s->s_edit.e_para[0]; - ebm->ydim = s->s_edit.e_para[1]; - } else if (s->s_edit.e_inpara > 0) { - bu_vls_printf(s->s_edit.log_str, "width and length of data source are required\n"); + ebm->xdim = s->s_edit->e_para[0]; + ebm->ydim = s->s_edit->e_para[1]; + } else if (s->s_edit->e_inpara > 0) { + bu_vls_printf(s->s_edit->log_str, "width and length of data source are required\n"); mged_print_result(s, TCL_ERROR); return BRLCAD_ERROR; } @@ -137,7 +137,7 @@ int ecmd_ebm_fname(struct mged_state *s) { struct rt_ebm_internal *ebm = - (struct rt_ebm_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_ebm_internal *)s->s_edit->es_int.idb_ptr; const char *fname; struct stat stat_buf; b_off_t need_size; @@ -148,16 +148,16 @@ ecmd_ebm_fname(struct mged_state *s) if (fname) { if (stat(fname, &stat_buf)) { // We were calling Tcl_SetResult here, which reset the result str, so zero out log_str - bu_vls_trunc(s->s_edit.log_str, 0); - bu_vls_printf(s->s_edit.log_str, "Cannot get status of file %s\n", fname); + bu_vls_trunc(s->s_edit->log_str, 0); + bu_vls_printf(s->s_edit->log_str, "Cannot get status of file %s\n", fname); mged_print_result(s, TCL_ERROR); return BRLCAD_ERROR; } need_size = ebm->xdim * ebm->ydim * sizeof(unsigned char); if (stat_buf.st_size < need_size) { // We were calling Tcl_SetResult here, which reset the result str, so zero out log_str - bu_vls_trunc(s->s_edit.log_str, 0); - bu_vls_printf(s->s_edit.log_str, "File (%s) is too small, adjust the file size parameters first", fname); + bu_vls_trunc(s->s_edit->log_str, 0); + bu_vls_printf(s->s_edit->log_str, "File (%s) is too small, adjust the file size parameters first", fname); mged_print_result(s, TCL_ERROR); return BRLCAD_ERROR; } @@ -170,36 +170,36 @@ ecmd_ebm_fname(struct mged_state *s) int ecmd_ebm_height(struct mged_state *s) { - if (s->s_edit.e_inpara != 1) { - bu_vls_printf(s->s_edit.log_str, "ERROR: only one argument needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara != 1) { + bu_vls_printf(s->s_edit->log_str, "ERROR: only one argument needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; struct rt_ebm_internal *ebm = - (struct rt_ebm_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_ebm_internal *)s->s_edit->es_int.idb_ptr; RT_EBM_CK_MAGIC(ebm); - if (s->s_edit.e_inpara == 1) - ebm->tallness = s->s_edit.e_para[0]; - else if (s->s_edit.e_inpara > 0) { - bu_vls_printf(s->s_edit.log_str, "extrusion depth required\n"); + if (s->s_edit->e_inpara == 1) + ebm->tallness = s->s_edit->e_para[0]; + else if (s->s_edit->e_inpara > 0) { + bu_vls_printf(s->s_edit->log_str, "extrusion depth required\n"); mged_print_result(s, TCL_ERROR); return BRLCAD_ERROR; - } else if (s->s_edit.es_scale > 0.0) { - ebm->tallness *= s->s_edit.es_scale; - s->s_edit.es_scale = 0.0; + } else if (s->s_edit->es_scale > 0.0) { + ebm->tallness *= s->s_edit->es_scale; + s->s_edit->es_scale = 0.0; } return BRLCAD_OK; @@ -211,14 +211,14 @@ mged_ebm_edit(struct mged_state *s, int edflag) switch (edflag) { case SSCALE: /* scale the solid uniformly about its vertex point */ - return mged_generic_sscale(s, &s->s_edit.es_int); + return mged_generic_sscale(s, &s->s_edit->es_int); case STRANS: /* translate solid */ - mged_generic_strans(s, &s->s_edit.es_int); + mged_generic_strans(s, &s->s_edit->es_int); break; case SROT: /* rot solid about vertex */ - mged_generic_srot(s, &s->s_edit.es_int); + mged_generic_srot(s, &s->s_edit->es_int); break; case ECMD_EBM_FSIZE: /* set file size */ if (ecmd_ebm_fsize(s) != BRLCAD_OK) @@ -246,7 +246,7 @@ mged_ebm_edit_xy( ) { vect_t pos_view = VINIT_ZERO; /* Unrotated view space pos */ - struct rt_db_internal *ip = &s->s_edit.es_int; + struct rt_db_internal *ip = &s->s_edit->es_int; switch (edflag) { case SSCALE: @@ -259,7 +259,7 @@ mged_ebm_edit_xy( mged_generic_strans_xy(&pos_view, s, mousevec); break; default: - bu_vls_printf(s->s_edit.log_str, "%s: XY edit undefined in solid edit mode %d\n", MGED_OBJ[ip->idb_type].ft_label, edflag); + bu_vls_printf(s->s_edit->log_str, "%s: XY edit undefined in solid edit mode %d\n", MGED_OBJ[ip->idb_type].ft_label, edflag); mged_print_result(s, TCL_ERROR); return TCL_ERROR; } diff --git a/src/mged/primitives/edehy.c b/src/mged/primitives/edehy.c index 78b2dcb896..633f26c628 100644 --- a/src/mged/primitives/edehy.c +++ b/src/mged/primitives/edehy.c @@ -45,7 +45,7 @@ static void ehy_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg; + s->s_edit->edit_menu = arg; mged_set_edflag(s, PSCALE); set_e_axes_pos(s, 1); @@ -179,15 +179,15 @@ void menu_ehy_h(struct mged_state *s) { struct rt_ehy_internal *ehy = - (struct rt_ehy_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_ehy_internal *)s->s_edit->es_int.idb_ptr; RT_EHY_CK_MAGIC(ehy); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / MAGNITUDE(ehy->ehy_H); + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / MAGNITUDE(ehy->ehy_H); } - VSCALE(ehy->ehy_H, ehy->ehy_H, s->s_edit.es_scale); + VSCALE(ehy->ehy_H, ehy->ehy_H, s->s_edit->es_scale); } /* scale semimajor axis of EHY */ @@ -195,16 +195,16 @@ void menu_ehy_r1(struct mged_state *s) { struct rt_ehy_internal *ehy = - (struct rt_ehy_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_ehy_internal *)s->s_edit->es_int.idb_ptr; RT_EHY_CK_MAGIC(ehy); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / ehy->ehy_r1; + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / ehy->ehy_r1; } - if (ehy->ehy_r1 * s->s_edit.es_scale >= ehy->ehy_r2) - ehy->ehy_r1 *= s->s_edit.es_scale; + if (ehy->ehy_r1 * s->s_edit->es_scale >= ehy->ehy_r2) + ehy->ehy_r1 *= s->s_edit->es_scale; else bu_log("pscale: semi-minor axis cannot be longer than semi-major axis!"); } @@ -214,16 +214,16 @@ void menu_ehy_r2(struct mged_state *s) { struct rt_ehy_internal *ehy = - (struct rt_ehy_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_ehy_internal *)s->s_edit->es_int.idb_ptr; RT_EHY_CK_MAGIC(ehy); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / ehy->ehy_r2; + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / ehy->ehy_r2; } - if (ehy->ehy_r2 * s->s_edit.es_scale <= ehy->ehy_r1) - ehy->ehy_r2 *= s->s_edit.es_scale; + if (ehy->ehy_r2 * s->s_edit->es_scale <= ehy->ehy_r1) + ehy->ehy_r2 *= s->s_edit->es_scale; else bu_log("pscale: semi-minor axis cannot be longer than semi-major axis!"); } @@ -233,36 +233,36 @@ void menu_ehy_c(struct mged_state *s) { struct rt_ehy_internal *ehy = - (struct rt_ehy_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_ehy_internal *)s->s_edit->es_int.idb_ptr; RT_EHY_CK_MAGIC(ehy); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / ehy->ehy_c; + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / ehy->ehy_c; } - ehy->ehy_c *= s->s_edit.es_scale; + ehy->ehy_c *= s->s_edit->es_scale; } static int mged_ehy_pscale(struct mged_state *s, int mode) { - if (s->s_edit.e_inpara > 1) { - bu_vls_printf(s->s_edit.log_str, "ERROR: only one argument needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara > 1) { + bu_vls_printf(s->s_edit->log_str, "ERROR: only one argument needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; switch (mode) { case MENU_EHY_H: @@ -288,17 +288,17 @@ mged_ehy_edit(struct mged_state *s, int edflag) switch (edflag) { case SSCALE: /* scale the solid uniformly about its vertex point */ - return mged_generic_sscale(s, &s->s_edit.es_int); + return mged_generic_sscale(s, &s->s_edit->es_int); case STRANS: /* translate solid */ - mged_generic_strans(s, &s->s_edit.es_int); + mged_generic_strans(s, &s->s_edit->es_int); break; case SROT: /* rot solid about vertex */ - mged_generic_srot(s, &s->s_edit.es_int); + mged_generic_srot(s, &s->s_edit->es_int); break; case PSCALE: - return mged_ehy_pscale(s, s->s_edit.edit_menu); + return mged_ehy_pscale(s, s->s_edit->edit_menu); } return 0; } diff --git a/src/mged/primitives/edell.c b/src/mged/primitives/edell.c index 1793555242..c28f52a372 100644 --- a/src/mged/primitives/edell.c +++ b/src/mged/primitives/edell.c @@ -45,7 +45,7 @@ static void ell_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg; + s->s_edit->edit_menu = arg; mged_set_edflag(s, PSCALE); set_e_axes_pos(s, 1); @@ -166,14 +166,14 @@ void menu_ell_scale_a(struct mged_state *s) { struct rt_ell_internal *ell = - (struct rt_ell_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_ell_internal *)s->s_edit->es_int.idb_ptr; RT_ELL_CK_MAGIC(ell); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.es_scale = s->s_edit.e_para[0] * s->s_edit.e_mat[15] / + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->es_scale = s->s_edit->e_para[0] * s->s_edit->e_mat[15] / MAGNITUDE(ell->a); } - VSCALE(ell->a, ell->a, s->s_edit.es_scale); + VSCALE(ell->a, ell->a, s->s_edit->es_scale); } /* scale vector B */ @@ -181,14 +181,14 @@ void menu_ell_scale_b(struct mged_state *s) { struct rt_ell_internal *ell = - (struct rt_ell_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_ell_internal *)s->s_edit->es_int.idb_ptr; RT_ELL_CK_MAGIC(ell); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.es_scale = s->s_edit.e_para[0] * s->s_edit.e_mat[15] / + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->es_scale = s->s_edit->e_para[0] * s->s_edit->e_mat[15] / MAGNITUDE(ell->b); } - VSCALE(ell->b, ell->b, s->s_edit.es_scale); + VSCALE(ell->b, ell->b, s->s_edit->es_scale); } /* scale vector C */ @@ -196,14 +196,14 @@ void menu_ell_scale_c(struct mged_state *s) { struct rt_ell_internal *ell = - (struct rt_ell_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_ell_internal *)s->s_edit->es_int.idb_ptr; RT_ELL_CK_MAGIC(ell); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.es_scale = s->s_edit.e_para[0] * s->s_edit.e_mat[15] / + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->es_scale = s->s_edit->e_para[0] * s->s_edit->e_mat[15] / MAGNITUDE(ell->c); } - VSCALE(ell->c, ell->c, s->s_edit.es_scale); + VSCALE(ell->c, ell->c, s->s_edit->es_scale); } /* set A, B, and C length the same */ @@ -212,14 +212,14 @@ menu_ell_scale_abc(struct mged_state *s) { fastf_t ma, mb; struct rt_ell_internal *ell = - (struct rt_ell_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_ell_internal *)s->s_edit->es_int.idb_ptr; RT_ELL_CK_MAGIC(ell); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.es_scale = s->s_edit.e_para[0] * s->s_edit.e_mat[15] / + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->es_scale = s->s_edit->e_para[0] * s->s_edit->e_mat[15] / MAGNITUDE(ell->a); } - VSCALE(ell->a, ell->a, s->s_edit.es_scale); + VSCALE(ell->a, ell->a, s->s_edit->es_scale); ma = MAGNITUDE(ell->a); mb = MAGNITUDE(ell->b); VSCALE(ell->b, ell->b, ma/mb); @@ -230,22 +230,22 @@ menu_ell_scale_abc(struct mged_state *s) static int mged_ell_pscale(struct mged_state *s, int mode) { - if (s->s_edit.e_inpara > 1) { - bu_vls_printf(s->s_edit.log_str, "ERROR: only one argument needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara > 1) { + bu_vls_printf(s->s_edit->log_str, "ERROR: only one argument needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; switch (mode) { case MENU_ELL_SCALE_A: @@ -271,17 +271,17 @@ mged_ell_edit(struct mged_state *s, int edflag) switch (edflag) { case SSCALE: /* scale the solid uniformly about its vertex point */ - return mged_generic_sscale(s, &s->s_edit.es_int); + return mged_generic_sscale(s, &s->s_edit->es_int); case STRANS: /* translate solid */ - mged_generic_strans(s, &s->s_edit.es_int); + mged_generic_strans(s, &s->s_edit->es_int); break; case SROT: /* rot solid about vertex */ - mged_generic_srot(s, &s->s_edit.es_int); + mged_generic_srot(s, &s->s_edit->es_int); break; case PSCALE: - return mged_ell_pscale(s, s->s_edit.edit_menu); + return mged_ell_pscale(s, s->s_edit->edit_menu); } return 0; } diff --git a/src/mged/primitives/edepa.c b/src/mged/primitives/edepa.c index b69a7d799e..e2c7586995 100644 --- a/src/mged/primitives/edepa.c +++ b/src/mged/primitives/edepa.c @@ -44,7 +44,7 @@ static void epa_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg; + s->s_edit->edit_menu = arg; mged_set_edflag(s, PSCALE); set_e_axes_pos(s, 1); @@ -170,15 +170,15 @@ void menu_epa_h(struct mged_state *s) { struct rt_epa_internal *epa = - (struct rt_epa_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_epa_internal *)s->s_edit->es_int.idb_ptr; RT_EPA_CK_MAGIC(epa); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / MAGNITUDE(epa->epa_H); + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / MAGNITUDE(epa->epa_H); } - VSCALE(epa->epa_H, epa->epa_H, s->s_edit.es_scale); + VSCALE(epa->epa_H, epa->epa_H, s->s_edit->es_scale); } /* scale semimajor axis of EPA */ @@ -186,16 +186,16 @@ void menu_epa_r1(struct mged_state *s) { struct rt_epa_internal *epa = - (struct rt_epa_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_epa_internal *)s->s_edit->es_int.idb_ptr; RT_EPA_CK_MAGIC(epa); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / epa->epa_r1; + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / epa->epa_r1; } - if (epa->epa_r1 * s->s_edit.es_scale >= epa->epa_r2) - epa->epa_r1 *= s->s_edit.es_scale; + if (epa->epa_r1 * s->s_edit->es_scale >= epa->epa_r2) + epa->epa_r1 *= s->s_edit->es_scale; else bu_log("pscale: semi-minor axis cannot be longer than semi-major axis!"); } @@ -205,16 +205,16 @@ void menu_epa_r2(struct mged_state *s) { struct rt_epa_internal *epa = - (struct rt_epa_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_epa_internal *)s->s_edit->es_int.idb_ptr; RT_EPA_CK_MAGIC(epa); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / epa->epa_r2; + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / epa->epa_r2; } - if (epa->epa_r2 * s->s_edit.es_scale <= epa->epa_r1) - epa->epa_r2 *= s->s_edit.es_scale; + if (epa->epa_r2 * s->s_edit->es_scale <= epa->epa_r1) + epa->epa_r2 *= s->s_edit->es_scale; else bu_log("pscale: semi-minor axis cannot be longer than semi-major axis!"); } @@ -222,22 +222,22 @@ menu_epa_r2(struct mged_state *s) static int mged_epa_pscale(struct mged_state *s, int mode) { - if (s->s_edit.e_inpara > 1) { - bu_vls_printf(s->s_edit.log_str, "ERROR: only one argument needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara > 1) { + bu_vls_printf(s->s_edit->log_str, "ERROR: only one argument needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; switch (mode) { case MENU_EPA_H: @@ -260,17 +260,17 @@ mged_epa_edit(struct mged_state *s, int edflag) switch (edflag) { case SSCALE: /* scale the solid uniformly about its vertex point */ - return mged_generic_sscale(s, &s->s_edit.es_int); + return mged_generic_sscale(s, &s->s_edit->es_int); case STRANS: /* translate solid */ - mged_generic_strans(s, &s->s_edit.es_int); + mged_generic_strans(s, &s->s_edit->es_int); break; case SROT: /* rot solid about vertex */ - mged_generic_srot(s, &s->s_edit.es_int); + mged_generic_srot(s, &s->s_edit->es_int); break; case PSCALE: - return mged_epa_pscale(s, s->s_edit.edit_menu); + return mged_epa_pscale(s, s->s_edit->edit_menu); } return 0; } diff --git a/src/mged/primitives/edeto.c b/src/mged/primitives/edeto.c index ac8edc872f..54488fcffb 100644 --- a/src/mged/primitives/edeto.c +++ b/src/mged/primitives/edeto.c @@ -47,14 +47,14 @@ static void eto_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg; + s->s_edit->edit_menu = arg; mged_set_edflag(s, PSCALE); if (arg == MENU_ETO_ROT_C) { - s->s_edit.edit_flag = ECMD_ETO_ROT_C; - s->s_edit.solid_edit_rotate = 1; - s->s_edit.solid_edit_translate = 0; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 0; + s->s_edit->edit_flag = ECMD_ETO_ROT_C; + s->s_edit->solid_edit_rotate = 1; + s->s_edit->solid_edit_translate = 0; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 0; } set_e_axes_pos(s, 1); @@ -181,17 +181,17 @@ void menu_eto_r(struct mged_state *s) { struct rt_eto_internal *eto = - (struct rt_eto_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_eto_internal *)s->s_edit->es_int.idb_ptr; fastf_t ch, cv, dh, newrad; vect_t Nu; RT_ETO_CK_MAGIC(eto); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - newrad = s->s_edit.e_para[0]; + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + newrad = s->s_edit->e_para[0]; } else { - newrad = eto->eto_r * s->s_edit.es_scale; + newrad = eto->eto_r * s->s_edit->es_scale; } if (newrad < SMALL) newrad = 4*SMALL; VMOVE(Nu, eto->eto_N); @@ -211,17 +211,17 @@ void menu_eto_rd(struct mged_state *s) { struct rt_eto_internal *eto = - (struct rt_eto_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_eto_internal *)s->s_edit->es_int.idb_ptr; fastf_t dh, newrad, work; vect_t Nu; RT_ETO_CK_MAGIC(eto); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - newrad = s->s_edit.e_para[0]; + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + newrad = s->s_edit->e_para[0]; } else { - newrad = eto->eto_rd * s->s_edit.es_scale; + newrad = eto->eto_rd * s->s_edit->es_scale; } if (newrad < SMALL) newrad = 4*SMALL; work = MAGNITUDE(eto->eto_C); @@ -240,20 +240,20 @@ void menu_eto_scale_c(struct mged_state *s) { struct rt_eto_internal *eto = - (struct rt_eto_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_eto_internal *)s->s_edit->es_int.idb_ptr; fastf_t ch, cv; vect_t Nu, Work; RT_ETO_CK_MAGIC(eto); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / MAGNITUDE(eto->eto_C); + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / MAGNITUDE(eto->eto_C); } - if (s->s_edit.es_scale * MAGNITUDE(eto->eto_C) >= eto->eto_rd) { + if (s->s_edit->es_scale * MAGNITUDE(eto->eto_C) >= eto->eto_rd) { VMOVE(Nu, eto->eto_N); VUNITIZE(Nu); - VSCALE(Work, eto->eto_C, s->s_edit.es_scale); + VSCALE(Work, eto->eto_C, s->s_edit->es_scale); /* get horiz and vert comps of C and Rd */ cv = VDOT(Work, Nu); ch = sqrt(VDOT(Work, Work) - cv * cv); @@ -267,16 +267,16 @@ int ecmd_eto_rot_c(struct mged_state *s) { struct rt_eto_internal *eto = - (struct rt_eto_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_eto_internal *)s->s_edit->es_int.idb_ptr; mat_t mat; mat_t mat1; mat_t edit; RT_ETO_CK_MAGIC(eto); - if (s->s_edit.e_inpara) { - if (s->s_edit.e_inpara != 3) { - bu_vls_printf(s->s_edit.log_str, "ERROR: three arguments needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara) { + if (s->s_edit->e_inpara != 3) { + bu_vls_printf(s->s_edit->log_str, "ERROR: three arguments needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } @@ -286,43 +286,43 @@ ecmd_eto_rot_c(struct mged_state *s) * in degrees. First, cancel any existing rotations, * then perform new rotation */ - bn_mat_inv(invsolr, s->s_edit.acc_rot_sol); + bn_mat_inv(invsolr, s->s_edit->acc_rot_sol); /* Build completely new rotation change */ - MAT_IDN(s->s_edit.model_changes); - bn_mat_angles(s->s_edit.model_changes, - s->s_edit.e_para[0], - s->s_edit.e_para[1], - s->s_edit.e_para[2]); - /* Borrow s->s_edit.incr_change matrix here */ - bn_mat_mul(s->s_edit.incr_change, s->s_edit.model_changes, invsolr); - MAT_COPY(s->s_edit.acc_rot_sol, s->s_edit.model_changes); + MAT_IDN(s->s_edit->model_changes); + bn_mat_angles(s->s_edit->model_changes, + s->s_edit->e_para[0], + s->s_edit->e_para[1], + s->s_edit->e_para[2]); + /* Borrow s->s_edit->incr_change matrix here */ + bn_mat_mul(s->s_edit->incr_change, s->s_edit->model_changes, invsolr); + MAT_COPY(s->s_edit->acc_rot_sol, s->s_edit->model_changes); /* Apply new rotation to solid */ /* Clear out solid rotation */ - MAT_IDN(s->s_edit.model_changes); + MAT_IDN(s->s_edit->model_changes); } else { - /* Apply incremental changes already in s->s_edit.incr_change */ + /* Apply incremental changes already in s->s_edit->incr_change */ } - if (s->s_edit.mv_context) { + if (s->s_edit->mv_context) { /* calculate rotations about keypoint */ - bn_mat_xform_about_pnt(edit, s->s_edit.incr_change, s->s_edit.e_keypoint); + bn_mat_xform_about_pnt(edit, s->s_edit->incr_change, s->s_edit->e_keypoint); /* We want our final matrix (mat) to xform the original solid * to the position of this instance of the solid, perform the * current edit operations, then xform back. - * mat = s->s_edit.e_invmat * edit * s->s_edit.e_mat + * mat = s->s_edit->e_invmat * edit * s->s_edit->e_mat */ - bn_mat_mul(mat1, edit, s->s_edit.e_mat); - bn_mat_mul(mat, s->s_edit.e_invmat, mat1); + bn_mat_mul(mat1, edit, s->s_edit->e_mat); + bn_mat_mul(mat, s->s_edit->e_invmat, mat1); MAT4X3VEC(eto->eto_C, mat, eto->eto_C); } else { - MAT4X3VEC(eto->eto_C, s->s_edit.incr_change, eto->eto_C); + MAT4X3VEC(eto->eto_C, s->s_edit->incr_change, eto->eto_C); } - MAT_IDN(s->s_edit.incr_change); + MAT_IDN(s->s_edit->incr_change); return 0; } @@ -330,22 +330,22 @@ ecmd_eto_rot_c(struct mged_state *s) static int mged_eto_pscale(struct mged_state *s, int mode) { - if (s->s_edit.e_inpara > 1) { - bu_vls_printf(s->s_edit.log_str, "ERROR: only one argument needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara > 1) { + bu_vls_printf(s->s_edit->log_str, "ERROR: only one argument needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; switch (mode) { case MENU_ETO_R: @@ -368,17 +368,17 @@ mged_eto_edit(struct mged_state *s, int edflag) switch (edflag) { case SSCALE: /* scale the solid uniformly about its vertex point */ - return mged_generic_sscale(s, &s->s_edit.es_int); + return mged_generic_sscale(s, &s->s_edit->es_int); case STRANS: /* translate solid */ - mged_generic_strans(s, &s->s_edit.es_int); + mged_generic_strans(s, &s->s_edit->es_int); break; case SROT: /* rot solid about vertex */ - mged_generic_srot(s, &s->s_edit.es_int); + mged_generic_srot(s, &s->s_edit->es_int); break; case PSCALE: - return mged_eto_pscale(s, s->s_edit.edit_menu); + return mged_eto_pscale(s, s->s_edit->edit_menu); case ECMD_ETO_ROT_C: return ecmd_eto_rot_c(s); } diff --git a/src/mged/primitives/edextrude.c b/src/mged/primitives/edextrude.c index 9d5c5afd57..89995b7d30 100644 --- a/src/mged/primitives/edextrude.c +++ b/src/mged/primitives/edextrude.c @@ -53,26 +53,26 @@ extern char * get_sketch_name(struct mged_state *s, const char *sk_n); static void extr_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_flag = arg; + s->s_edit->edit_flag = arg; switch (arg) { case ECMD_EXTR_ROT_H: - s->s_edit.solid_edit_rotate = 1; - s->s_edit.solid_edit_translate = 0; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 0; + s->s_edit->solid_edit_rotate = 1; + s->s_edit->solid_edit_translate = 0; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 0; break; case ECMD_EXTR_SCALE_H: - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 0; - s->s_edit.solid_edit_scale = 1; - s->s_edit.solid_edit_pick = 0; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 0; + s->s_edit->solid_edit_scale = 1; + s->s_edit->solid_edit_pick = 0; break; case ECMD_EXTR_MOV_H: - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 1; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 0; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 1; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 0; break; default: mged_set_edflag(s, arg); @@ -122,18 +122,18 @@ mged_extrude_e_axes_pos( const struct rt_db_internal *ip, const struct bn_tol *UNUSED(tol)) { - if (s->s_edit.edit_flag == ECMD_EXTR_MOV_H) { + if (s->s_edit->edit_flag == ECMD_EXTR_MOV_H) { struct rt_extrude_internal *extr = (struct rt_extrude_internal *)ip->idb_ptr; point_t extr_v; vect_t extr_h; RT_EXTRUDE_CK_MAGIC(extr); - MAT4X3PNT(extr_v, s->s_edit.e_mat, extr->V); - MAT4X3VEC(extr_h, s->s_edit.e_mat, extr->h); - VADD2(s->s_edit.curr_e_axes_pos, extr_h, extr_v); + MAT4X3PNT(extr_v, s->s_edit->e_mat, extr->V); + MAT4X3VEC(extr_h, s->s_edit->e_mat, extr->h); + VADD2(s->s_edit->curr_e_axes_pos, extr_h, extr_v); } else { - VMOVE(s->s_edit.curr_e_axes_pos, s->s_edit.e_keypoint); + VMOVE(s->s_edit->curr_e_axes_pos, s->s_edit->e_keypoint); } } @@ -141,7 +141,7 @@ void ecmd_extr_skt_name(struct mged_state *s) { struct rt_extrude_internal *extr = - (struct rt_extrude_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_extrude_internal *)s->s_edit->es_int.idb_ptr; struct directory *dp; struct rt_db_internal tmp_ip; @@ -187,33 +187,33 @@ ecmd_extr_mov_h(struct mged_state *s) { vect_t work; struct rt_extrude_internal *extr = - (struct rt_extrude_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_extrude_internal *)s->s_edit->es_int.idb_ptr; RT_EXTRUDE_CK_MAGIC(extr); - if (s->s_edit.e_inpara) { - if (s->s_edit.e_inpara != 3) { - bu_vls_printf(s->s_edit.log_str, "ERROR: three arguments needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara) { + if (s->s_edit->e_inpara != 3) { + bu_vls_printf(s->s_edit->log_str, "ERROR: three arguments needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; - if (s->s_edit.mv_context) { - /* apply s->s_edit.e_invmat to convert to real model coordinates */ - MAT4X3PNT(work, s->s_edit.e_invmat, s->s_edit.e_para); + if (s->s_edit->mv_context) { + /* apply s->s_edit->e_invmat to convert to real model coordinates */ + MAT4X3PNT(work, s->s_edit->e_invmat, s->s_edit->e_para); VSUB2(extr->h, work, extr->V); } else { - VSUB2(extr->h, s->s_edit.e_para, extr->V); + VSUB2(extr->h, s->s_edit->e_para, extr->V); } } /* check for zero H vector */ if (MAGNITUDE(extr->h) <= SQRT_SMALL_FASTF) { - bu_vls_printf(s->s_edit.log_str, "Zero H vector not allowed, resetting to +Z\n"); + bu_vls_printf(s->s_edit->log_str, "Zero H vector not allowed, resetting to +Z\n"); mged_print_result(s, TCL_ERROR); VSET(extr->h, 0.0, 0.0, 1.0); return TCL_ERROR; @@ -225,36 +225,36 @@ ecmd_extr_mov_h(struct mged_state *s) int ecmd_extr_scale_h(struct mged_state *s) { - if (s->s_edit.e_inpara != 1) { - bu_vls_printf(s->s_edit.log_str, "ERROR: only one argument needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara != 1) { + bu_vls_printf(s->s_edit->log_str, "ERROR: only one argument needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; struct rt_extrude_internal *extr = - (struct rt_extrude_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_extrude_internal *)s->s_edit->es_int.idb_ptr; RT_EXTRUDE_CK_MAGIC(extr); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / MAGNITUDE(extr->h); - VSCALE(extr->h, extr->h, s->s_edit.es_scale); - } else if (s->s_edit.es_scale > 0.0) { - VSCALE(extr->h, extr->h, s->s_edit.es_scale); - s->s_edit.es_scale = 0.0; + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / MAGNITUDE(extr->h); + VSCALE(extr->h, extr->h, s->s_edit->es_scale); + } else if (s->s_edit->es_scale > 0.0) { + VSCALE(extr->h, extr->h, s->s_edit->es_scale); + s->s_edit->es_scale = 0.0; } return 0; @@ -265,16 +265,16 @@ int ecmd_extr_rot_h(struct mged_state *s) { struct rt_extrude_internal *extr = - (struct rt_extrude_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_extrude_internal *)s->s_edit->es_int.idb_ptr; mat_t mat; mat_t mat1; mat_t edit; RT_EXTRUDE_CK_MAGIC(extr); - if (s->s_edit.e_inpara) { - if (s->s_edit.e_inpara != 3) { - bu_vls_printf(s->s_edit.log_str, "ERROR: three arguments needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara) { + if (s->s_edit->e_inpara != 3) { + bu_vls_printf(s->s_edit->log_str, "ERROR: three arguments needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } @@ -284,42 +284,42 @@ ecmd_extr_rot_h(struct mged_state *s) * in degrees. First, cancel any existing rotations, * then perform new rotation */ - bn_mat_inv(invsolr, s->s_edit.acc_rot_sol); + bn_mat_inv(invsolr, s->s_edit->acc_rot_sol); /* Build completely new rotation change */ - MAT_IDN(s->s_edit.model_changes); - bn_mat_angles(s->s_edit.model_changes, - s->s_edit.e_para[0], - s->s_edit.e_para[1], - s->s_edit.e_para[2]); - /* Borrow s->s_edit.incr_change matrix here */ - bn_mat_mul(s->s_edit.incr_change, s->s_edit.model_changes, invsolr); - MAT_COPY(s->s_edit.acc_rot_sol, s->s_edit.model_changes); + MAT_IDN(s->s_edit->model_changes); + bn_mat_angles(s->s_edit->model_changes, + s->s_edit->e_para[0], + s->s_edit->e_para[1], + s->s_edit->e_para[2]); + /* Borrow s->s_edit->incr_change matrix here */ + bn_mat_mul(s->s_edit->incr_change, s->s_edit->model_changes, invsolr); + MAT_COPY(s->s_edit->acc_rot_sol, s->s_edit->model_changes); /* Apply new rotation to solid */ /* Clear out solid rotation */ - MAT_IDN(s->s_edit.model_changes); + MAT_IDN(s->s_edit->model_changes); } else { - /* Apply incremental changes already in s->s_edit.incr_change */ + /* Apply incremental changes already in s->s_edit->incr_change */ } - if (s->s_edit.mv_context) { + if (s->s_edit->mv_context) { /* calculate rotations about keypoint */ - bn_mat_xform_about_pnt(edit, s->s_edit.incr_change, s->s_edit.e_keypoint); + bn_mat_xform_about_pnt(edit, s->s_edit->incr_change, s->s_edit->e_keypoint); /* We want our final matrix (mat) to xform the original solid * to the position of this instance of the solid, perform the * current edit operations, then xform back. - * mat = s->s_edit.e_invmat * edit * s->s_edit.e_mat + * mat = s->s_edit->e_invmat * edit * s->s_edit->e_mat */ - bn_mat_mul(mat1, edit, s->s_edit.e_mat); - bn_mat_mul(mat, s->s_edit.e_invmat, mat1); + bn_mat_mul(mat1, edit, s->s_edit->e_mat); + bn_mat_mul(mat, s->s_edit->e_invmat, mat1); MAT4X3VEC(extr->h, mat, extr->h); } else { - MAT4X3VEC(extr->h, s->s_edit.incr_change, extr->h); + MAT4X3VEC(extr->h, s->s_edit->incr_change, extr->h); } - MAT_IDN(s->s_edit.incr_change); + MAT_IDN(s->s_edit->incr_change); return 0; } @@ -332,15 +332,15 @@ ecmd_extr_mov_h_mousevec(struct mged_state *s, const vect_t mousevec) vect_t tr_temp = VINIT_ZERO; /* temp translation vector */ vect_t temp = VINIT_ZERO; struct rt_extrude_internal *extr = - (struct rt_extrude_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_extrude_internal *)s->s_edit->es_int.idb_ptr; RT_EXTRUDE_CK_MAGIC(extr); - MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit.curr_e_axes_pos); + MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit->curr_e_axes_pos); pos_view[X] = mousevec[X]; pos_view[Y] = mousevec[Y]; /* Do NOT change pos_view[Z] ! */ MAT4X3PNT(temp, view_state->vs_gvp->gv_view2model, pos_view); - MAT4X3PNT(tr_temp, s->s_edit.e_invmat, temp); + MAT4X3PNT(tr_temp, s->s_edit->e_invmat, temp); VSUB2(extr->h, tr_temp, extr->V); } @@ -350,14 +350,14 @@ mged_extrude_edit(struct mged_state *s, int edflag) switch (edflag) { case SSCALE: /* scale the solid uniformly about its vertex point */ - return mged_generic_sscale(s, &s->s_edit.es_int); + return mged_generic_sscale(s, &s->s_edit->es_int); case STRANS: /* translate solid */ - mged_generic_strans(s, &s->s_edit.es_int); + mged_generic_strans(s, &s->s_edit->es_int); break; case SROT: /* rot solid about vertex */ - mged_generic_srot(s, &s->s_edit.es_int); + mged_generic_srot(s, &s->s_edit->es_int); break; case ECMD_EXTR_SKT_NAME: ecmd_extr_skt_name(s); @@ -381,7 +381,7 @@ mged_extrude_edit_xy( ) { vect_t pos_view = VINIT_ZERO; /* Unrotated view space pos */ - struct rt_db_internal *ip = &s->s_edit.es_int; + struct rt_db_internal *ip = &s->s_edit->es_int; switch (edflag) { case SSCALE: @@ -397,7 +397,7 @@ mged_extrude_edit_xy( ecmd_extr_mov_h_mousevec(s, mousevec); break; default: - bu_vls_printf(s->s_edit.log_str, "%s: XY edit undefined in solid edit mode %d\n", MGED_OBJ[ip->idb_type].ft_label, edflag); + bu_vls_printf(s->s_edit->log_str, "%s: XY edit undefined in solid edit mode %d\n", MGED_OBJ[ip->idb_type].ft_label, edflag); mged_print_result(s, TCL_ERROR); return TCL_ERROR; } diff --git a/src/mged/primitives/edhyp.c b/src/mged/primitives/edhyp.c index df3101b8a2..2348d926c1 100644 --- a/src/mged/primitives/edhyp.c +++ b/src/mged/primitives/edhyp.c @@ -49,14 +49,14 @@ static void hyp_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg; + s->s_edit->edit_menu = arg; switch (arg) { case MENU_HYP_ROT_H: - s->s_edit.edit_flag = ECMD_HYP_ROT_H; - s->s_edit.solid_edit_rotate = 1; - s->s_edit.solid_edit_translate = 0; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 0; + s->s_edit->edit_flag = ECMD_HYP_ROT_H; + s->s_edit->solid_edit_rotate = 1; + s->s_edit->solid_edit_translate = 0; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 0; break; default: mged_set_edflag(s, PSCALE); @@ -188,15 +188,15 @@ void menu_hyp_h(struct mged_state *s) { struct rt_hyp_internal *hyp = - (struct rt_hyp_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_hyp_internal *)s->s_edit->es_int.idb_ptr; RT_HYP_CK_MAGIC(hyp); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0]; + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0]; } - VSCALE(hyp->hyp_Hi, hyp->hyp_Hi, s->s_edit.es_scale); + VSCALE(hyp->hyp_Hi, hyp->hyp_Hi, s->s_edit->es_scale); } /* scale A vector of HYP */ @@ -204,15 +204,15 @@ void menu_hyp_scale_a(struct mged_state *s) { struct rt_hyp_internal *hyp = - (struct rt_hyp_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_hyp_internal *)s->s_edit->es_int.idb_ptr; RT_HYP_CK_MAGIC(hyp); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0]; + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0]; } - VSCALE(hyp->hyp_A, hyp->hyp_A, s->s_edit.es_scale); + VSCALE(hyp->hyp_A, hyp->hyp_A, s->s_edit->es_scale); } /* scale B vector of HYP */ @@ -220,15 +220,15 @@ void menu_hyp_scale_b(struct mged_state *s) { struct rt_hyp_internal *hyp = - (struct rt_hyp_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_hyp_internal *)s->s_edit->es_int.idb_ptr; RT_HYP_CK_MAGIC(hyp); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0]; + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0]; } - hyp->hyp_b = hyp->hyp_b * s->s_edit.es_scale; + hyp->hyp_b = hyp->hyp_b * s->s_edit->es_scale; } /* scale Neck to Base ratio of HYP */ @@ -236,16 +236,16 @@ void menu_hyp_c(struct mged_state *s) { struct rt_hyp_internal *hyp = - (struct rt_hyp_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_hyp_internal *)s->s_edit->es_int.idb_ptr; RT_HYP_CK_MAGIC(hyp); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0]; + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0]; } - if (hyp->hyp_bnr * s->s_edit.es_scale <= 1.0) { - hyp->hyp_bnr = hyp->hyp_bnr * s->s_edit.es_scale; + if (hyp->hyp_bnr * s->s_edit->es_scale <= 1.0) { + hyp->hyp_bnr = hyp->hyp_bnr * s->s_edit->es_scale; } } @@ -254,17 +254,17 @@ int ecmd_hyp_rot_h(struct mged_state *s) { struct rt_hyp_internal *hyp = - (struct rt_hyp_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_hyp_internal *)s->s_edit->es_int.idb_ptr; mat_t mat; mat_t mat1; mat_t edit; RT_HYP_CK_MAGIC(hyp); - if (s->s_edit.e_inpara) { - if (s->s_edit.e_inpara != 3) { - bu_vls_printf(s->s_edit.log_str, "ERROR: three arguments needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara) { + if (s->s_edit->e_inpara != 3) { + bu_vls_printf(s->s_edit->log_str, "ERROR: three arguments needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } @@ -274,43 +274,43 @@ ecmd_hyp_rot_h(struct mged_state *s) * in degrees. First, cancel any existing rotations, * then perform new rotation */ - bn_mat_inv(invsolr, s->s_edit.acc_rot_sol); + bn_mat_inv(invsolr, s->s_edit->acc_rot_sol); /* Build completely new rotation change */ - MAT_IDN(s->s_edit.model_changes); - bn_mat_angles(s->s_edit.model_changes, - s->s_edit.e_para[0], - s->s_edit.e_para[1], - s->s_edit.e_para[2]); - /* Borrow s->s_edit.incr_change matrix here */ - bn_mat_mul(s->s_edit.incr_change, s->s_edit.model_changes, invsolr); - MAT_COPY(s->s_edit.acc_rot_sol, s->s_edit.model_changes); + MAT_IDN(s->s_edit->model_changes); + bn_mat_angles(s->s_edit->model_changes, + s->s_edit->e_para[0], + s->s_edit->e_para[1], + s->s_edit->e_para[2]); + /* Borrow s->s_edit->incr_change matrix here */ + bn_mat_mul(s->s_edit->incr_change, s->s_edit->model_changes, invsolr); + MAT_COPY(s->s_edit->acc_rot_sol, s->s_edit->model_changes); /* Apply new rotation to solid */ /* Clear out solid rotation */ - MAT_IDN(s->s_edit.model_changes); + MAT_IDN(s->s_edit->model_changes); } else { - /* Apply incremental changes already in s->s_edit.incr_change */ + /* Apply incremental changes already in s->s_edit->incr_change */ } - if (s->s_edit.mv_context) { + if (s->s_edit->mv_context) { /* calculate rotations about keypoint */ - bn_mat_xform_about_pnt(edit, s->s_edit.incr_change, s->s_edit.e_keypoint); + bn_mat_xform_about_pnt(edit, s->s_edit->incr_change, s->s_edit->e_keypoint); /* We want our final matrix (mat) to xform the original solid * to the position of this instance of the solid, perform the * current edit operations, then xform back. - * mat = s->s_edit.e_invmat * edit * s->s_edit.e_mat + * mat = s->s_edit->e_invmat * edit * s->s_edit->e_mat */ - bn_mat_mul(mat1, edit, s->s_edit.e_mat); - bn_mat_mul(mat, s->s_edit.e_invmat, mat1); + bn_mat_mul(mat1, edit, s->s_edit->e_mat); + bn_mat_mul(mat, s->s_edit->e_invmat, mat1); MAT4X3VEC(hyp->hyp_Hi, mat, hyp->hyp_Hi); } else { - MAT4X3VEC(hyp->hyp_Hi, s->s_edit.incr_change, hyp->hyp_Hi); + MAT4X3VEC(hyp->hyp_Hi, s->s_edit->incr_change, hyp->hyp_Hi); } - MAT_IDN(s->s_edit.incr_change); + MAT_IDN(s->s_edit->incr_change); return 0; } @@ -318,22 +318,22 @@ ecmd_hyp_rot_h(struct mged_state *s) static int mged_hyp_pscale(struct mged_state *s, int mode) { - if (s->s_edit.e_inpara > 1) { - bu_vls_printf(s->s_edit.log_str, "ERROR: only one argument needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara > 1) { + bu_vls_printf(s->s_edit->log_str, "ERROR: only one argument needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; switch (mode) { case MENU_HYP_H: @@ -359,17 +359,17 @@ mged_hyp_edit(struct mged_state *s, int edflag) switch (edflag) { case SSCALE: /* scale the solid uniformly about its vertex point */ - return mged_generic_sscale(s, &s->s_edit.es_int); + return mged_generic_sscale(s, &s->s_edit->es_int); case STRANS: /* translate solid */ - mged_generic_strans(s, &s->s_edit.es_int); + mged_generic_strans(s, &s->s_edit->es_int); break; case SROT: /* rot solid about vertex */ - mged_generic_srot(s, &s->s_edit.es_int); + mged_generic_srot(s, &s->s_edit->es_int); break; case PSCALE: - return mged_hyp_pscale(s, s->s_edit.edit_menu); + return mged_hyp_pscale(s, s->s_edit->edit_menu); case ECMD_HYP_ROT_H: return ecmd_hyp_rot_h(s); } diff --git a/src/mged/primitives/edmetaball.c b/src/mged/primitives/edmetaball.c index 27f2c80a88..90426d4fad 100644 --- a/src/mged/primitives/edmetaball.c +++ b/src/mged/primitives/edmetaball.c @@ -73,73 +73,73 @@ metaball_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *U case MENU_METABALL_SET_THRESHOLD: case MENU_METABALL_SET_METHOD: case MENU_METABALL_PT_SET_GOO: - s->s_edit.edit_menu = arg; + s->s_edit->edit_menu = arg; mged_set_edflag(s, PSCALE); break; case MENU_METABALL_SELECT: - s->s_edit.edit_menu = arg; - s->s_edit.edit_flag = ECMD_METABALL_PT_PICK; - s->s_edit.solid_edit_pick = 1; + s->s_edit->edit_menu = arg; + s->s_edit->edit_flag = ECMD_METABALL_PT_PICK; + s->s_edit->solid_edit_pick = 1; break; case MENU_METABALL_NEXT_PT: if (!es_metaball_pnt) { - bu_vls_printf(s->s_edit.log_str, "No Metaball Point selected\n"); + bu_vls_printf(s->s_edit->log_str, "No Metaball Point selected\n"); return; } next = BU_LIST_NEXT(wdb_metaball_pnt, &es_metaball_pnt->l); if (next->l.magic == BU_LIST_HEAD_MAGIC) { - bu_vls_printf(s->s_edit.log_str, "Current point is the last\n"); + bu_vls_printf(s->s_edit->log_str, "Current point is the last\n"); return; } es_metaball_pnt = next; rt_metaball_pnt_print(es_metaball_pnt, s->dbip->dbi_base2local); - s->s_edit.edit_menu = arg; + s->s_edit->edit_menu = arg; mged_set_edflag(s, IDLE); sedit(s); break; case MENU_METABALL_PREV_PT: if (!es_metaball_pnt) { - bu_vls_printf(s->s_edit.log_str, "No Metaball Point selected\n"); + bu_vls_printf(s->s_edit->log_str, "No Metaball Point selected\n"); return; } prev = BU_LIST_PREV(wdb_metaball_pnt, &es_metaball_pnt->l); if (prev->l.magic == BU_LIST_HEAD_MAGIC) { - bu_vls_printf(s->s_edit.log_str, "Current point is the first\n"); + bu_vls_printf(s->s_edit->log_str, "Current point is the first\n"); return; } es_metaball_pnt = prev; rt_metaball_pnt_print(es_metaball_pnt, s->dbip->dbi_base2local); - s->s_edit.edit_menu = arg; + s->s_edit->edit_menu = arg; mged_set_edflag(s, IDLE); sedit(s); break; case MENU_METABALL_MOV_PT: if (!es_metaball_pnt) { - bu_vls_printf(s->s_edit.log_str, "No Metaball Point selected\n"); + bu_vls_printf(s->s_edit->log_str, "No Metaball Point selected\n"); mged_set_edflag(s, IDLE); return; } - s->s_edit.edit_menu = arg; - s->s_edit.edit_flag = ECMD_METABALL_PT_MOV; + s->s_edit->edit_menu = arg; + s->s_edit->edit_flag = ECMD_METABALL_PT_MOV; sedit(s); break; case MENU_METABALL_PT_FLDSTR: if (!es_metaball_pnt) { - bu_vls_printf(s->s_edit.log_str, "No Metaball Point selected\n"); + bu_vls_printf(s->s_edit->log_str, "No Metaball Point selected\n"); mged_set_edflag(s, IDLE); return; } - s->s_edit.edit_menu = arg; + s->s_edit->edit_menu = arg; mged_set_edflag(s, PSCALE); break; case MENU_METABALL_DEL_PT: - s->s_edit.edit_menu = arg; - s->s_edit.edit_flag = ECMD_METABALL_PT_DEL; + s->s_edit->edit_menu = arg; + s->s_edit->edit_flag = ECMD_METABALL_PT_DEL; sedit(s); break; case MENU_METABALL_ADD_PT: - s->s_edit.edit_menu = arg; - s->s_edit.edit_flag = ECMD_METABALL_PT_ADD; + s->s_edit->edit_menu = arg; + s->s_edit->edit_flag = ECMD_METABALL_PT_ADD; break; } set_e_axes_pos(s, 1); @@ -233,16 +233,16 @@ mged_metaball_keypoint( int menu_metaball_set_threshold(struct mged_state *s) { - if (s->s_edit.e_para[0] < 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR < 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] < 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR < 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } struct rt_metaball_internal *ball = - (struct rt_metaball_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_metaball_internal *)s->s_edit->es_int.idb_ptr; RT_METABALL_CK_MAGIC(ball); - ball->threshold = s->s_edit.e_para[0]; + ball->threshold = s->s_edit->e_para[0]; return 0; } @@ -250,16 +250,16 @@ menu_metaball_set_threshold(struct mged_state *s) int menu_metaball_set_method(struct mged_state *s) { - if (s->s_edit.e_para[0] < 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR < 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] < 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR < 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } struct rt_metaball_internal *ball = - (struct rt_metaball_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_metaball_internal *)s->s_edit->es_int.idb_ptr; RT_METABALL_CK_MAGIC(ball); - ball->method = s->s_edit.e_para[0]; + ball->method = s->s_edit->e_para[0]; return 0; } @@ -267,17 +267,17 @@ menu_metaball_set_method(struct mged_state *s) int menu_metaball_pt_set_goo(struct mged_state *s) { - if (s->s_edit.e_para[0] < 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR < 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] < 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR < 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (!es_metaball_pnt || !s->s_edit.e_inpara) { - bu_vls_printf(s->s_edit.log_str, "pscale: no metaball point selected for scaling goo\n"); + if (!es_metaball_pnt || !s->s_edit->e_inpara) { + bu_vls_printf(s->s_edit->log_str, "pscale: no metaball point selected for scaling goo\n"); return TCL_ERROR; } - es_metaball_pnt->sweat *= *s->s_edit.e_para * ((s->s_edit.es_scale > -SMALL_FASTF) ? s->s_edit.es_scale : 1.0); + es_metaball_pnt->sweat *= *s->s_edit->e_para * ((s->s_edit->es_scale > -SMALL_FASTF) ? s->s_edit->es_scale : 1.0); return 0; } @@ -285,18 +285,18 @@ menu_metaball_pt_set_goo(struct mged_state *s) int menu_metaball_pt_fldstr(struct mged_state *s) { - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (!es_metaball_pnt || !s->s_edit.e_inpara) { - bu_vls_printf(s->s_edit.log_str, "pscale: no metaball point selected for scaling strength\n"); + if (!es_metaball_pnt || !s->s_edit->e_inpara) { + bu_vls_printf(s->s_edit->log_str, "pscale: no metaball point selected for scaling strength\n"); return TCL_ERROR; } - es_metaball_pnt->fldstr *= *s->s_edit.e_para * ((s->s_edit.es_scale > -SMALL_FASTF) ? s->s_edit.es_scale : 1.0); + es_metaball_pnt->fldstr *= *s->s_edit->e_para * ((s->s_edit->es_scale > -SMALL_FASTF) ? s->s_edit->es_scale : 1.0); return 0; } @@ -305,7 +305,7 @@ void ecmd_metaball_pt_pick(struct mged_state *s) { struct rt_metaball_internal *metaball= - (struct rt_metaball_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_metaball_internal *)s->s_edit->es_int.idb_ptr; point_t new_pt; struct wdb_metaball_pnt *ps; struct wdb_metaball_pnt *nearest=(struct wdb_metaball_pnt *)NULL; @@ -314,16 +314,16 @@ ecmd_metaball_pt_pick(struct mged_state *s) RT_METABALL_CK_MAGIC(metaball); - if (s->s_edit.e_mvalid) { - VMOVE(new_pt, s->s_edit.e_mparam); - } else if (s->s_edit.e_inpara == 3) { + if (s->s_edit->e_mvalid) { + VMOVE(new_pt, s->s_edit->e_mparam); + } else if (s->s_edit->e_inpara == 3) { /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; - VMOVE(new_pt, s->s_edit.e_para); - } else if (s->s_edit.e_inpara) { - bu_vls_printf(s->s_edit.log_str, "x y z coordinates required for control point selection\n"); + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; + VMOVE(new_pt, s->s_edit->e_para); + } else if (s->s_edit->e_inpara) { + bu_vls_printf(s->s_edit->log_str, "x y z coordinates required for control point selection\n"); mged_print_result(s, TCL_ERROR); return; } else { @@ -347,7 +347,7 @@ ecmd_metaball_pt_pick(struct mged_state *s) es_metaball_pnt = nearest; if (!es_metaball_pnt) { - bu_vls_printf(s->s_edit.log_str, "No METABALL control point selected\n"); + bu_vls_printf(s->s_edit->log_str, "No METABALL control point selected\n"); mged_print_result(s, TCL_ERROR); } else { rt_metaball_pnt_print(es_metaball_pnt, s->dbip->dbi_base2local); @@ -359,13 +359,13 @@ ecmd_metaball_pt_mov(struct mged_state *s) { if (!es_metaball_pnt) { bu_log("Must select a point to move"); return; } - if (s->s_edit.e_inpara != 3) { + if (s->s_edit->e_inpara != 3) { bu_log("Must provide dx dy dz"); return; } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; - VADD2(es_metaball_pnt->coord, es_metaball_pnt->coord, s->s_edit.e_para); + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; + VADD2(es_metaball_pnt->coord, es_metaball_pnt->coord, s->s_edit->e_para); } void @@ -394,22 +394,22 @@ ecmd_metaball_pt_del(struct mged_state *UNUSED(s)) void ecmd_metaball_pt_add(struct mged_state *s) { - struct rt_metaball_internal *metaball= (struct rt_metaball_internal *)s->s_edit.es_int.idb_ptr; + struct rt_metaball_internal *metaball= (struct rt_metaball_internal *)s->s_edit->es_int.idb_ptr; struct wdb_metaball_pnt *n = (struct wdb_metaball_pnt *)malloc(sizeof(struct wdb_metaball_pnt)); - if (s->s_edit.e_inpara != 3) { + if (s->s_edit->e_inpara != 3) { bu_log("Must provide x y z"); bu_free(n, "wdb_metaball_pnt n"); return; } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; es_metaball_pnt = BU_LIST_FIRST(wdb_metaball_pnt, &metaball->metaball_ctrl_head); - VMOVE(n->coord, s->s_edit.e_para); + VMOVE(n->coord, s->s_edit->e_para); n->l.magic = WDB_METABALLPT_MAGIC; n->fldstr = 1.0; BU_LIST_APPEND(&es_metaball_pnt->l, &n->l); @@ -419,22 +419,22 @@ ecmd_metaball_pt_add(struct mged_state *s) static int mged_metaball_pscale(struct mged_state *s, int mode) { - if (s->s_edit.e_inpara > 1) { - bu_vls_printf(s->s_edit.log_str, "ERROR: only one argument needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara > 1) { + bu_vls_printf(s->s_edit->log_str, "ERROR: only one argument needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; switch (mode) { case MENU_METABALL_SET_THRESHOLD: @@ -457,19 +457,19 @@ mged_metaball_edit(struct mged_state *s, int edflag) case SSCALE: /* scale the solid uniformly about its vertex point */ es_metaball_pnt = (struct wdb_metaball_pnt *)NULL; /* Reset es_metaball_pnt */ - return mged_generic_sscale(s, &s->s_edit.es_int); + return mged_generic_sscale(s, &s->s_edit->es_int); case STRANS: /* translate solid */ es_metaball_pnt = (struct wdb_metaball_pnt *)NULL; /* Reset es_metaball_pnt */ - mged_generic_strans(s, &s->s_edit.es_int); + mged_generic_strans(s, &s->s_edit->es_int); break; case SROT: /* rot solid about vertex */ es_metaball_pnt = (struct wdb_metaball_pnt *)NULL; /* Reset es_metaball_pnt */ - mged_generic_srot(s, &s->s_edit.es_int); + mged_generic_srot(s, &s->s_edit->es_int); break; case PSCALE: - return mged_metaball_pscale(s, s->s_edit.edit_menu); + return mged_metaball_pscale(s, s->s_edit->edit_menu); case ECMD_METABALL_PT_PICK: ecmd_metaball_pt_pick(s); break; @@ -496,7 +496,7 @@ mged_metaball_edit_xy( { vect_t pos_view = VINIT_ZERO; /* Unrotated view space pos */ vect_t temp = VINIT_ZERO; - struct rt_db_internal *ip = &s->s_edit.es_int; + struct rt_db_internal *ip = &s->s_edit->es_int; switch (edflag) { case SSCALE: @@ -510,15 +510,15 @@ mged_metaball_edit_xy( case ECMD_METABALL_PT_PICK: case ECMD_METABALL_PT_MOV: case ECMD_METABALL_PT_ADD: - MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit.curr_e_axes_pos); + MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit->curr_e_axes_pos); pos_view[X] = mousevec[X]; pos_view[Y] = mousevec[Y]; MAT4X3PNT(temp, view_state->vs_gvp->gv_view2model, pos_view); - MAT4X3PNT(s->s_edit.e_mparam, s->s_edit.e_invmat, temp); - s->s_edit.e_mvalid = 1; + MAT4X3PNT(s->s_edit->e_mparam, s->s_edit->e_invmat, temp); + s->s_edit->e_mvalid = 1; break; default: - bu_vls_printf(s->s_edit.log_str, "%s: XY edit undefined in solid edit mode %d\n", MGED_OBJ[ip->idb_type].ft_label, edflag); + bu_vls_printf(s->s_edit->log_str, "%s: XY edit undefined in solid edit mode %d\n", MGED_OBJ[ip->idb_type].ft_label, edflag); mged_print_result(s, TCL_ERROR); return TCL_ERROR; } diff --git a/src/mged/primitives/ednmg.c b/src/mged/primitives/ednmg.c index ce0d440086..f651dfe006 100644 --- a/src/mged/primitives/ednmg.c +++ b/src/mged/primitives/ednmg.c @@ -69,7 +69,7 @@ nmg_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED { switch (arg) { default: - bu_vls_printf(s->s_edit.log_str, "nmg_ed: undefined menu event?\n"); + bu_vls_printf(s->s_edit->log_str, "nmg_ed: undefined menu event?\n"); return; case ECMD_NMG_EPICK: case ECMD_NMG_EMOVE: @@ -78,7 +78,7 @@ nmg_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED break; case ECMD_NMG_EDEBUG: if (!es_eu) { - bu_vls_printf(s->s_edit.log_str, "nmg_ed: no edge selected yet\n"); + bu_vls_printf(s->s_edit->log_str, "nmg_ed: no edge selected yet\n"); return; } @@ -93,7 +93,7 @@ nmg_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED return; case ECMD_NMG_FORW: if (!es_eu) { - bu_vls_printf(s->s_edit.log_str, "nmg_ed: no edge selected yet\n"); + bu_vls_printf(s->s_edit->log_str, "nmg_ed: no edge selected yet\n"); return; } NMG_CK_EDGEUSE(es_eu); @@ -105,7 +105,7 @@ nmg_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED bu_vls_printf(&tmp_vls, "edgeuse selected = %p (%g %g %g) <-> (%g %g %g)\n", (void *)es_eu, V3ARGS(es_eu->vu_p->v_p->vg_p->coord), V3ARGS(es_eu->eumate_p->vu_p->v_p->vg_p->coord)); - bu_vls_printf(s->s_edit.log_str, "%s", bu_vls_cstr(&tmp_vls)); + bu_vls_printf(s->s_edit->log_str, "%s", bu_vls_cstr(&tmp_vls)); bu_vls_free(&tmp_vls); } @@ -125,7 +125,7 @@ nmg_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED bu_vls_printf(&tmp_vls, "edgeuse selected = %p (%g %g %g) <-> (%g %g %g)\n", (void *)es_eu, V3ARGS(es_eu->vu_p->v_p->vg_p->coord), V3ARGS(es_eu->eumate_p->vu_p->v_p->vg_p->coord)); - bu_vls_printf(s->s_edit.log_str, "%s", bu_vls_cstr(&tmp_vls)); + bu_vls_printf(s->s_edit->log_str, "%s", bu_vls_cstr(&tmp_vls)); bu_vls_free(&tmp_vls); } @@ -145,7 +145,7 @@ nmg_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED bu_vls_printf(&tmp_vls, "edgeuse selected = %p (%g %g %g) <-> (%g %g %g)\n", (void *)es_eu, V3ARGS(es_eu->vu_p->v_p->vg_p->coord), V3ARGS(es_eu->eumate_p->vu_p->v_p->vg_p->coord)); - bu_vls_printf(s->s_edit.log_str, "%s", bu_vls_cstr(&tmp_vls)); + bu_vls_printf(s->s_edit->log_str, "%s", bu_vls_cstr(&tmp_vls)); bu_vls_free(&tmp_vls); } @@ -162,7 +162,7 @@ nmg_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED fastf_t area; int wire_loop_count = 0; - m = (struct model *)s->s_edit.es_int.idb_ptr; + m = (struct model *)s->s_edit->es_int.idb_ptr; NMG_CK_MODEL(m); /* look for wire loops */ @@ -184,12 +184,12 @@ nmg_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED } if (!wire_loop_count) { - bu_vls_printf(s->s_edit.log_str, "No sketch (wire loop) to extrude\n"); + bu_vls_printf(s->s_edit->log_str, "No sketch (wire loop) to extrude\n"); return; } if (wire_loop_count > 1) { - bu_vls_printf(s->s_edit.log_str, "Too many wire loops! Don't know which to extrude!\n"); + bu_vls_printf(s->s_edit->log_str, "Too many wire loops! Don't know which to extrude!\n"); return; } @@ -202,7 +202,7 @@ nmg_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED area = nmg_loop_plane_area(lu, lu_pl); if (area < 0.0) { - bu_vls_printf(s->s_edit.log_str, "Cannot extrude loop with no area\n"); + bu_vls_printf(s->s_edit->log_str, "Cannot extrude loop with no area\n"); return; } @@ -262,7 +262,7 @@ nmg_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED V3ARGS(isect_pt)); } - bu_vls_printf(s->s_edit.log_str, "%s", bu_vls_cstr(&tmp_vls)); + bu_vls_printf(s->s_edit->log_str, "%s", bu_vls_cstr(&tmp_vls)); bu_vls_free(&tmp_vls); return; } @@ -275,7 +275,7 @@ nmg_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED s_tmp = BU_LIST_FIRST(shell, &r_tmp->s_hd); lu_copy = nmg_dup_loop(lu, &s_tmp->l.magic, (long **)0); if (!lu_copy) { - bu_vls_printf(s->s_edit.log_str, "Failed to make copy of loop\n"); + bu_vls_printf(s->s_edit->log_str, "Failed to make copy of loop\n"); nmg_km(m_tmp); return; } @@ -300,22 +300,22 @@ nmg_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED break; } /* For example, this will set edit_flagflag = ECMD_NMG_EPICK */ - s->s_edit.edit_flag = arg; + s->s_edit->edit_flag = arg; switch (arg) { case ECMD_NMG_EMOVE: case ECMD_NMG_ESPLIT: case ECMD_NMG_LEXTRU: - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 1; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 0; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 1; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 0; break; case ECMD_NMG_EPICK: - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 0; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 1; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 0; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 1; break; default: mged_set_edflag(s, arg); @@ -517,31 +517,31 @@ void ecmd_nmg_emove(struct mged_state *s) point_t new_pt; /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; if (!es_eu) { - bu_vls_printf(s->s_edit.log_str, "No edge selected!\n"); + bu_vls_printf(s->s_edit->log_str, "No edge selected!\n"); mged_print_result(s, TCL_ERROR); return; } NMG_CK_EDGEUSE(es_eu); - if (s->s_edit.e_mvalid) { - VMOVE(new_pt, s->s_edit.e_mparam); - } else if (s->s_edit.e_inpara == 3) { - if (s->s_edit.mv_context) { - /* apply s->s_edit.e_invmat to convert to real model space */ - MAT4X3PNT(new_pt, s->s_edit.e_invmat, s->s_edit.e_para); + if (s->s_edit->e_mvalid) { + VMOVE(new_pt, s->s_edit->e_mparam); + } else if (s->s_edit->e_inpara == 3) { + if (s->s_edit->mv_context) { + /* apply s->s_edit->e_invmat to convert to real model space */ + MAT4X3PNT(new_pt, s->s_edit->e_invmat, s->s_edit->e_para); } else { - VMOVE(new_pt, s->s_edit.e_para); + VMOVE(new_pt, s->s_edit->e_para); } - } else if (s->s_edit.e_inpara && s->s_edit.e_inpara != 3) { - bu_vls_printf(s->s_edit.log_str, "x y z coordinates required for edge move\n"); + } else if (s->s_edit->e_inpara && s->s_edit->e_inpara != 3) { + bu_vls_printf(s->s_edit->log_str, "x y z coordinates required for edge move\n"); mged_print_result(s, TCL_ERROR); return; - } else if (!s->s_edit.e_mvalid && !s->s_edit.e_inpara) + } else if (!s->s_edit->e_mvalid && !s->s_edit->e_inpara) return; if (!nmg_find_fu_of_eu(es_eu) && *es_eu->up.magic_p == NMG_LOOPUSE_MAGIC) { @@ -569,7 +569,7 @@ void ecmd_nmg_emove(struct mged_state *s) /* intersect line through new_pt with plane of loop */ if (bg_isect_line3_plane(&dist, new_pt, view_dir, pl, &s->tol.tol) < 1) { /* line does not intersect plane, don't do an esplit */ - bu_vls_printf(s->s_edit.log_str, "Edge Move: Cannot place new point in plane of loop\n"); + bu_vls_printf(s->s_edit->log_str, "Edge Move: Cannot place new point in plane of loop\n"); mged_print_result(s, TCL_ERROR); return; } @@ -588,7 +588,7 @@ void ecmd_nmg_ekill(struct mged_state *s) struct edge_g_lseg *eg; if (!es_eu) { - bu_vls_printf(s->s_edit.log_str, "No edge selected!\n"); + bu_vls_printf(s->s_edit->log_str, "No edge selected!\n"); mged_print_result(s, TCL_ERROR); return; } @@ -605,7 +605,7 @@ void ecmd_nmg_ekill(struct mged_state *s) if (*lu->up.magic_p != NMG_SHELL_MAGIC) { /* Currently can only kill wire edges or edges in wire loops */ - bu_vls_printf(s->s_edit.log_str, "Currently, we can only kill wire edges or edges in wire loops\n"); + bu_vls_printf(s->s_edit->log_str, "Currently, we can only kill wire edges or edges in wire loops\n"); mged_print_result(s, TCL_ERROR); mged_set_edflag(s, IDLE); return; @@ -622,7 +622,7 @@ void ecmd_nmg_ekill(struct mged_state *s) /* refuse to delete last edge that runs * to/from same vertex */ - bu_vls_printf(s->s_edit.log_str, "Cannot delete last edge running to/from same vertex\n"); + bu_vls_printf(s->s_edit->log_str, "Cannot delete last edge running to/from same vertex\n"); mged_print_result(s, TCL_ERROR); return; } @@ -667,32 +667,32 @@ void ecmd_nmg_esplit(struct mged_state *s) plane_t pl; /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; if (!es_eu) { - bu_vls_printf(s->s_edit.log_str, "No edge selected!\n"); + bu_vls_printf(s->s_edit->log_str, "No edge selected!\n"); mged_print_result(s, TCL_ERROR); return; } NMG_CK_EDGEUSE(es_eu); m = nmg_find_model(&es_eu->l.magic); NMG_CK_MODEL(m); - if (s->s_edit.e_mvalid) { - VMOVE(new_pt, s->s_edit.e_mparam); - } else if (s->s_edit.e_inpara == 3) { - if (s->s_edit.mv_context) { - /* apply s->s_edit.e_invmat to convert to real model space */ - MAT4X3PNT(new_pt, s->s_edit.e_invmat, s->s_edit.e_para); + if (s->s_edit->e_mvalid) { + VMOVE(new_pt, s->s_edit->e_mparam); + } else if (s->s_edit->e_inpara == 3) { + if (s->s_edit->mv_context) { + /* apply s->s_edit->e_invmat to convert to real model space */ + MAT4X3PNT(new_pt, s->s_edit->e_invmat, s->s_edit->e_para); } else { - VMOVE(new_pt, s->s_edit.e_para); + VMOVE(new_pt, s->s_edit->e_para); } - } else if (s->s_edit.e_inpara && s->s_edit.e_inpara != 3) { - bu_vls_printf(s->s_edit.log_str, "x y z coordinates required for edge split\n"); + } else if (s->s_edit->e_inpara && s->s_edit->e_inpara != 3) { + bu_vls_printf(s->s_edit->log_str, "x y z coordinates required for edge split\n"); mged_print_result(s, TCL_ERROR); return; - } else if (!s->s_edit.e_mvalid && !s->s_edit.e_inpara) + } else if (!s->s_edit->e_mvalid && !s->s_edit->e_inpara) return; if (*es_eu->up.magic_p == NMG_LOOPUSE_MAGIC) { @@ -703,7 +703,7 @@ void ecmd_nmg_esplit(struct mged_state *s) /* Currently, can only split wire edges or edges in wire loops */ if (*lu->up.magic_p != NMG_SHELL_MAGIC) { - bu_vls_printf(s->s_edit.log_str, "Currently, we can only split wire edges or edges in wire loops\n"); + bu_vls_printf(s->s_edit->log_str, "Currently, we can only split wire edges or edges in wire loops\n"); mged_set_edflag(s, IDLE); mged_print_result(s, TCL_ERROR); return; @@ -723,7 +723,7 @@ void ecmd_nmg_esplit(struct mged_state *s) /* intersect line through new_pt with plane of loop */ if (bg_isect_line3_plane(&dist, new_pt, view_dir, pl, &s->tol.tol) < 1) { /* line does not intersect plane, don't do an esplit */ - bu_vls_printf(s->s_edit.log_str, "Edge Split: Cannot place new point in plane of loop\n"); + bu_vls_printf(s->s_edit->log_str, "Edge Split: Cannot place new point in plane of loop\n"); mged_print_result(s, TCL_ERROR); return; } @@ -751,33 +751,33 @@ void ecmd_nmg_lextru(struct mged_state *s) fastf_t area; /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; - - if (s->s_edit.e_mvalid) { - VMOVE(to_pt, s->s_edit.e_mparam); - } else if (s->s_edit.e_inpara == 3) { - if (s->s_edit.mv_context) { - /* apply s->s_edit.e_invmat to convert to real model space */ - MAT4X3PNT(to_pt, s->s_edit.e_invmat, s->s_edit.e_para); + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; + + if (s->s_edit->e_mvalid) { + VMOVE(to_pt, s->s_edit->e_mparam); + } else if (s->s_edit->e_inpara == 3) { + if (s->s_edit->mv_context) { + /* apply s->s_edit->e_invmat to convert to real model space */ + MAT4X3PNT(to_pt, s->s_edit->e_invmat, s->s_edit->e_para); } else { - VMOVE(to_pt, s->s_edit.e_para); + VMOVE(to_pt, s->s_edit->e_para); } - } else if (s->s_edit.e_inpara == 1) { - VJOIN1(to_pt, lu_keypoint, s->s_edit.e_para[0], lu_pl); - } else if (s->s_edit.e_inpara && s->s_edit.e_inpara != 3) { - bu_vls_printf(s->s_edit.log_str, "x y z coordinates required for loop extrusion\n"); + } else if (s->s_edit->e_inpara == 1) { + VJOIN1(to_pt, lu_keypoint, s->s_edit->e_para[0], lu_pl); + } else if (s->s_edit->e_inpara && s->s_edit->e_inpara != 3) { + bu_vls_printf(s->s_edit->log_str, "x y z coordinates required for loop extrusion\n"); mged_print_result(s, TCL_ERROR); return; - } else if (!s->s_edit.e_mvalid && !s->s_edit.e_inpara) { + } else if (!s->s_edit->e_mvalid && !s->s_edit->e_inpara) { return; } VSUB2(extrude_vec, to_pt, lu_keypoint); if (bg_isect_line3_plane(&dist, to_pt, extrude_vec, lu_pl, &s->tol.tol) < 1) { - bu_vls_printf(s->s_edit.log_str, "Cannot extrude parallel to plane of loop\n"); + bu_vls_printf(s->s_edit->log_str, "Cannot extrude parallel to plane of loop\n"); mged_print_result(s, TCL_ERROR); return; } @@ -793,7 +793,7 @@ void ecmd_nmg_lextru(struct mged_state *s) new_lu = nmg_dup_loop(lu_copy, &es_s->l.magic, (long **)0); area = nmg_loop_plane_area(new_lu, new_lu_pl); if (area < 0.0) { - bu_vls_printf(s->s_edit.log_str, "loop to be extruded as no area!\n"); + bu_vls_printf(s->s_edit->log_str, "loop to be extruded as no area!\n"); mged_print_result(s, TCL_ERROR); return; } @@ -826,13 +826,13 @@ void ecmd_nmg_lextru(struct mged_state *s) } -/* XXX Should just leave desired location in s->s_edit.e_mparam for sedit(s) */ +/* XXX Should just leave desired location in s->s_edit->e_mparam for sedit(s) */ void ecmd_nmg_epick(struct mged_state *s, const vect_t mousevec) { vect_t pos_view = VINIT_ZERO; /* Unrotated view space pos */ struct model *m = - (struct model *)s->s_edit.es_int.idb_ptr; + (struct model *)s->s_edit->es_int.idb_ptr; struct edge *e; struct bn_tol tmp_tol; NMG_CK_MODEL(m); @@ -844,12 +844,12 @@ void ecmd_nmg_epick(struct mged_state *s, const vect_t mousevec) tmp_tol.perp = 0.0; tmp_tol.para = 1 - tmp_tol.perp; - MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit.curr_e_axes_pos); + MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit->curr_e_axes_pos); pos_view[X] = mousevec[X]; pos_view[Y] = mousevec[Y]; if ((e = nmg_find_e_nearest_pt2(&m->magic, pos_view, view_state->vs_gvp->gv_model2view, s->vlfree, &tmp_tol)) == (struct edge *)NULL) { - bu_vls_printf(s->s_edit.log_str, "ECMD_NMG_EPICK: unable to find an edge\n"); + bu_vls_printf(s->s_edit->log_str, "ECMD_NMG_EPICK: unable to find an edge\n"); mged_print_result(s, TCL_ERROR); return; } @@ -863,7 +863,7 @@ void ecmd_nmg_epick(struct mged_state *s, const vect_t mousevec) "edgeuse selected = %p (%g %g %g) <-> (%g %g %g)\n", (void *)es_eu, V3ARGS(es_eu->vu_p->v_p->vg_p->coord), V3ARGS(es_eu->eumate_p->vu_p->v_p->vg_p->coord)); - bu_vls_printf(s->s_edit.log_str, "%s", bu_vls_cstr(&tmp_vls)); + bu_vls_printf(s->s_edit->log_str, "%s", bu_vls_cstr(&tmp_vls)); mged_print_result(s, TCL_ERROR); bu_vls_free(&tmp_vls); } @@ -876,16 +876,16 @@ mged_nmg_edit(struct mged_state *s, int edflag) case SSCALE: /* scale the solid uniformly about its vertex point */ es_eu = (struct edgeuse *)NULL; /* Reset es_eu */ - return mged_generic_sscale(s, &s->s_edit.es_int); + return mged_generic_sscale(s, &s->s_edit->es_int); case STRANS: /* translate solid */ es_eu = (struct edgeuse *)NULL; /* Reset es_eu */ - mged_generic_strans(s, &s->s_edit.es_int); + mged_generic_strans(s, &s->s_edit->es_int); break; case SROT: /* rot solid about vertex */ es_eu = (struct edgeuse *)NULL; /* Reset es_eu */ - mged_generic_srot(s, &s->s_edit.es_int); + mged_generic_srot(s, &s->s_edit->es_int); break; case ECMD_NMG_EPICK: /* XXX Nothing to do here (yet), all done in mouse routine. */ @@ -916,7 +916,7 @@ mged_nmg_edit_xy( { vect_t pos_view = VINIT_ZERO; /* Unrotated view space pos */ vect_t temp = VINIT_ZERO; - struct rt_db_internal *ip = &s->s_edit.es_int; + struct rt_db_internal *ip = &s->s_edit->es_int; switch (edflag) { case SSCALE: @@ -928,21 +928,21 @@ mged_nmg_edit_xy( mged_generic_strans_xy(&pos_view, s, mousevec); break; case ECMD_NMG_EPICK: - /* XXX Should just leave desired location in s->s_edit.e_mparam for mged_nmg_edit */ + /* XXX Should just leave desired location in s->s_edit->e_mparam for mged_nmg_edit */ ecmd_nmg_epick(s, mousevec); break; case ECMD_NMG_LEXTRU: case ECMD_NMG_EMOVE: case ECMD_NMG_ESPLIT: - MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit.curr_e_axes_pos); + MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit->curr_e_axes_pos); pos_view[X] = mousevec[X]; pos_view[Y] = mousevec[Y]; MAT4X3PNT(temp, view_state->vs_gvp->gv_view2model, pos_view); - MAT4X3PNT(s->s_edit.e_mparam, s->s_edit.e_invmat, temp); - s->s_edit.e_mvalid = 1; + MAT4X3PNT(s->s_edit->e_mparam, s->s_edit->e_invmat, temp); + s->s_edit->e_mvalid = 1; break; default: - bu_vls_printf(s->s_edit.log_str, "%s: XY edit undefined in solid edit mode %d\n", MGED_OBJ[ip->idb_type].ft_label, edflag); + bu_vls_printf(s->s_edit->log_str, "%s: XY edit undefined in solid edit mode %d\n", MGED_OBJ[ip->idb_type].ft_label, edflag); mged_print_result(s, TCL_ERROR); return TCL_ERROR; } diff --git a/src/mged/primitives/edpart.c b/src/mged/primitives/edpart.c index 8bbc4fddb3..26b079855d 100644 --- a/src/mged/primitives/edpart.c +++ b/src/mged/primitives/edpart.c @@ -44,7 +44,7 @@ static void part_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg; + s->s_edit->edit_menu = arg; mged_set_edflag(s, PSCALE); set_e_axes_pos(s, 1); @@ -166,15 +166,15 @@ void menu_part_h(struct mged_state *s) { struct rt_part_internal *part = - (struct rt_part_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_part_internal *)s->s_edit->es_int.idb_ptr; RT_PART_CK_MAGIC(part); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / MAGNITUDE(part->part_H); + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / MAGNITUDE(part->part_H); } - VSCALE(part->part_H, part->part_H, s->s_edit.es_scale); + VSCALE(part->part_H, part->part_H, s->s_edit->es_scale); } /* scale v end radius */ @@ -182,15 +182,15 @@ void menu_part_v(struct mged_state *s) { struct rt_part_internal *part = - (struct rt_part_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_part_internal *)s->s_edit->es_int.idb_ptr; RT_PART_CK_MAGIC(part); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / part->part_vrad; + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / part->part_vrad; } - part->part_vrad *= s->s_edit.es_scale; + part->part_vrad *= s->s_edit->es_scale; } /* scale h end radius */ @@ -198,36 +198,36 @@ void menu_part_h_end_r(struct mged_state *s) { struct rt_part_internal *part = - (struct rt_part_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_part_internal *)s->s_edit->es_int.idb_ptr; RT_PART_CK_MAGIC(part); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / part->part_hrad; + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / part->part_hrad; } - part->part_hrad *= s->s_edit.es_scale; + part->part_hrad *= s->s_edit->es_scale; } static int mged_part_pscale(struct mged_state *s, int mode) { - if (s->s_edit.e_inpara > 1) { - bu_vls_printf(s->s_edit.log_str, "ERROR: only one argument needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara > 1) { + bu_vls_printf(s->s_edit->log_str, "ERROR: only one argument needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; switch (mode) { case MENU_PART_H: @@ -250,17 +250,17 @@ mged_part_edit(struct mged_state *s, int edflag) switch (edflag) { case SSCALE: /* scale the solid uniformly about its vertex point */ - return mged_generic_sscale(s, &s->s_edit.es_int); + return mged_generic_sscale(s, &s->s_edit->es_int); case STRANS: /* translate solid */ - mged_generic_strans(s, &s->s_edit.es_int); + mged_generic_strans(s, &s->s_edit->es_int); break; case SROT: /* rot solid about vertex */ - mged_generic_srot(s, &s->s_edit.es_int); + mged_generic_srot(s, &s->s_edit->es_int); break; case PSCALE: - return mged_part_pscale(s, s->s_edit.edit_menu); + return mged_part_pscale(s, s->s_edit->edit_menu); } return 0; } diff --git a/src/mged/primitives/edpipe.c b/src/mged/primitives/edpipe.c index 75f626f9f8..4ad3f80ad0 100644 --- a/src/mged/primitives/edpipe.c +++ b/src/mged/primitives/edpipe.c @@ -79,103 +79,103 @@ pipe_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSE switch (arg) { case MENU_PIPE_SELECT: - s->s_edit.edit_menu = arg; - s->s_edit.edit_flag = ECMD_PIPE_PICK; - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 0; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 1; + s->s_edit->edit_menu = arg; + s->s_edit->edit_flag = ECMD_PIPE_PICK; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 0; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 1; break; case MENU_PIPE_NEXT_PT: if (!es_pipe_pnt) { - bu_vls_printf(s->s_edit.log_str, "No Pipe Segment selected\n"); + bu_vls_printf(s->s_edit->log_str, "No Pipe Segment selected\n"); return; } next = BU_LIST_NEXT(wdb_pipe_pnt, &es_pipe_pnt->l); if (next->l.magic == BU_LIST_HEAD_MAGIC) { - bu_vls_printf(s->s_edit.log_str, "Current segment is the last\n"); + bu_vls_printf(s->s_edit->log_str, "Current segment is the last\n"); return; } es_pipe_pnt = next; rt_pipe_pnt_print(es_pipe_pnt, s->dbip->dbi_base2local); - s->s_edit.edit_menu = arg; + s->s_edit->edit_menu = arg; mged_set_edflag(s, IDLE); sedit(s); break; case MENU_PIPE_PREV_PT: if (!es_pipe_pnt) { - bu_vls_printf(s->s_edit.log_str, "No Pipe Segment selected\n"); + bu_vls_printf(s->s_edit->log_str, "No Pipe Segment selected\n"); return; } prev = BU_LIST_PREV(wdb_pipe_pnt, &es_pipe_pnt->l); if (prev->l.magic == BU_LIST_HEAD_MAGIC) { - bu_vls_printf(s->s_edit.log_str, "Current segment is the first\n"); + bu_vls_printf(s->s_edit->log_str, "Current segment is the first\n"); return; } es_pipe_pnt = prev; rt_pipe_pnt_print(es_pipe_pnt, s->dbip->dbi_base2local); - s->s_edit.edit_menu = arg; + s->s_edit->edit_menu = arg; mged_set_edflag(s, IDLE); sedit(s); break; case MENU_PIPE_SPLIT: /* not used */ #if 0 - s->s_edit.edit_flag = ECMD_PIPE_SPLIT; - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 1; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 0; + s->s_edit->edit_flag = ECMD_PIPE_SPLIT; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 1; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 0; #endif break; case MENU_PIPE_MOV_PT: if (!es_pipe_pnt) { - bu_vls_printf(s->s_edit.log_str, "No Pipe Segment selected\n"); + bu_vls_printf(s->s_edit->log_str, "No Pipe Segment selected\n"); mged_set_edflag(s, IDLE); return; } - s->s_edit.edit_menu = arg; - s->s_edit.edit_flag = ECMD_PIPE_PT_MOVE; - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 1; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 0; + s->s_edit->edit_menu = arg; + s->s_edit->edit_flag = ECMD_PIPE_PT_MOVE; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 1; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 0; break; case MENU_PIPE_PT_OD: case MENU_PIPE_PT_ID: case MENU_PIPE_PT_RADIUS: if (!es_pipe_pnt) { - bu_vls_printf(s->s_edit.log_str, "No Pipe Segment selected\n"); + bu_vls_printf(s->s_edit->log_str, "No Pipe Segment selected\n"); mged_set_edflag(s, IDLE); return; } - s->s_edit.edit_menu = arg; + s->s_edit->edit_menu = arg; mged_set_edflag(s, PSCALE); break; case MENU_PIPE_SCALE_OD: case MENU_PIPE_SCALE_ID: case MENU_PIPE_SCALE_RADIUS: - s->s_edit.edit_menu = arg; + s->s_edit->edit_menu = arg; mged_set_edflag(s, PSCALE); break; case MENU_PIPE_ADD_PT: - s->s_edit.edit_menu = arg; - s->s_edit.edit_flag = ECMD_PIPE_PT_ADD; - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 1; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 0; + s->s_edit->edit_menu = arg; + s->s_edit->edit_flag = ECMD_PIPE_PT_ADD; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 1; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 0; break; case MENU_PIPE_INS_PT: - s->s_edit.edit_menu = arg; - s->s_edit.edit_flag = ECMD_PIPE_PT_INS; - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 1; - s->s_edit.solid_edit_scale = 0; - s->s_edit.solid_edit_pick = 0; + s->s_edit->edit_menu = arg; + s->s_edit->edit_flag = ECMD_PIPE_PT_INS; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 1; + s->s_edit->solid_edit_scale = 0; + s->s_edit->solid_edit_pick = 0; break; case MENU_PIPE_DEL_PT: - s->s_edit.edit_menu = arg; + s->s_edit->edit_menu = arg; mged_set_edflag(s, ECMD_PIPE_PT_DEL); sedit(s); break; @@ -233,11 +233,11 @@ pipe_scale_od(struct mged_state *s, struct rt_db_internal *db_int, fastf_t scale else tmp_od = ps->pp_od*scale; if (ps->pp_id > tmp_od) { - bu_vls_printf(s->s_edit.log_str, "Cannot make OD less than ID\n"); + bu_vls_printf(s->s_edit->log_str, "Cannot make OD less than ID\n"); return; } if (tmp_od > 2.0*ps->pp_bendradius) { - bu_vls_printf(s->s_edit.log_str, "Cannot make outer radius greater than bend radius\n"); + bu_vls_printf(s->s_edit->log_str, "Cannot make outer radius greater than bend radius\n"); return; } } @@ -263,11 +263,11 @@ pipe_scale_id(struct mged_state *s, struct rt_db_internal *db_int, fastf_t scale else tmp_id = (-scale); if (ps->pp_od < tmp_id) { - bu_vls_printf(s->s_edit.log_str, "Cannot make ID greater than OD\n"); + bu_vls_printf(s->s_edit->log_str, "Cannot make ID greater than OD\n"); return; } if (tmp_id > 2.0*ps->pp_bendradius) { - bu_vls_printf(s->s_edit.log_str, "Cannot make inner radius greater than bend radius\n"); + bu_vls_printf(s->s_edit->log_str, "Cannot make inner radius greater than bend radius\n"); return; } } @@ -296,11 +296,11 @@ pipe_seg_scale_od(struct mged_state *s, struct wdb_pipe_pnt *ps, fastf_t scale) else tmp_od = scale*ps->pp_od; if (ps->pp_id > tmp_od) { - bu_vls_printf(s->s_edit.log_str, "Cannot make OD smaller than ID\n"); + bu_vls_printf(s->s_edit->log_str, "Cannot make OD smaller than ID\n"); return; } if (tmp_od > 2.0*ps->pp_bendradius) { - bu_vls_printf(s->s_edit.log_str, "Cannot make outer radius greater than bend radius\n"); + bu_vls_printf(s->s_edit->log_str, "Cannot make outer radius greater than bend radius\n"); return; } @@ -324,11 +324,11 @@ pipe_seg_scale_id(struct mged_state *s, struct wdb_pipe_pnt *ps, fastf_t scale) else tmp_id = (-scale); if (ps->pp_od < tmp_id) { - bu_vls_printf(s->s_edit.log_str, "Cannot make ID greater than OD\n"); + bu_vls_printf(s->s_edit->log_str, "Cannot make ID greater than OD\n"); return; } if (tmp_id > 2.0*ps->pp_bendradius) { - bu_vls_printf(s->s_edit.log_str, "Cannot make inner radius greater than bend radius\n"); + bu_vls_printf(s->s_edit->log_str, "Cannot make inner radius greater than bend radius\n"); return; } @@ -359,7 +359,7 @@ pipe_seg_scale_radius(struct mged_state *s, struct wdb_pipe_pnt *ps, fastf_t sca ps->pp_bendradius = (-scale); if (ps->pp_bendradius < ps->pp_od * 0.5) { - bu_vls_printf(s->s_edit.log_str, "Cannot make bend radius less than pipe outer radius\n"); + bu_vls_printf(s->s_edit->log_str, "Cannot make bend radius less than pipe outer radius\n"); ps->pp_bendradius = old_radius; return; } @@ -387,12 +387,12 @@ pipe_scale_radius(struct mged_state *s, struct rt_db_internal *db_int, fastf_t s for (BU_LIST_FOR(old_ps, wdb_pipe_pnt, &pipeip->pipe_segs_head)) { if (scale < 0.0) { if ((-scale) < old_ps->pp_od * 0.5) { - bu_vls_printf(s->s_edit.log_str, "Cannot make bend radius less than pipe outer radius\n"); + bu_vls_printf(s->s_edit->log_str, "Cannot make bend radius less than pipe outer radius\n"); return; } } else { if (old_ps->pp_bendradius * scale < old_ps->pp_od * 0.5) { - bu_vls_printf(s->s_edit.log_str, "Cannot make bend radius less than pipe outer radius\n"); + bu_vls_printf(s->s_edit->log_str, "Cannot make bend radius less than pipe outer radius\n"); return; } } @@ -595,14 +595,14 @@ pipe_del_pnt(struct mged_state *s, struct wdb_pipe_pnt *ps) prev = (struct wdb_pipe_pnt *)NULL; if (!prev && !next) { - bu_vls_printf(s->s_edit.log_str, "Cannot delete last point in pipe\n"); + bu_vls_printf(s->s_edit->log_str, "Cannot delete last point in pipe\n"); return ps; } BU_LIST_DEQUEUE(&ps->l); if (rt_pipe_ck(&head->l)) { - bu_vls_printf(s->s_edit.log_str, "Cannot delete this point, it will result in an illegal pipe\n"); + bu_vls_printf(s->s_edit->log_str, "Cannot delete this point, it will result in an illegal pipe\n"); if (next) BU_LIST_INSERT(&next->l, &ps->l) else if (prev) @@ -634,7 +634,7 @@ pipe_move_pnt(struct mged_state *s, struct rt_pipe_internal *pipeip, struct wdb_ VMOVE(ps->pp_coord, new_pt); if (rt_pipe_ck(&pipeip->pipe_segs_head)) { - bu_vls_printf(s->s_edit.log_str, "Cannot move point there\n"); + bu_vls_printf(s->s_edit->log_str, "Cannot move point there\n"); VMOVE(ps->pp_coord, old_pt); } } @@ -701,25 +701,25 @@ int menu_pipe_pt_od(struct mged_state *s) { - if (s->s_edit.e_para[0] < 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR < 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] < 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR < 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } if (!es_pipe_pnt) { - bu_vls_printf(s->s_edit.log_str, "pscale: no pipe segment selected for scaling\n"); + bu_vls_printf(s->s_edit->log_str, "pscale: no pipe segment selected for scaling\n"); return TCL_ERROR; } - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ if (es_pipe_pnt->pp_od > 0.0) - s->s_edit.es_scale = s->s_edit.e_para[0] * s->s_edit.e_mat[15]/es_pipe_pnt->pp_od; + s->s_edit->es_scale = s->s_edit->e_para[0] * s->s_edit->e_mat[15]/es_pipe_pnt->pp_od; else - s->s_edit.es_scale = (-s->s_edit.e_para[0] * s->s_edit.e_mat[15]); + s->s_edit->es_scale = (-s->s_edit->e_para[0] * s->s_edit->e_mat[15]); } - pipe_seg_scale_od(s, es_pipe_pnt, s->s_edit.es_scale); + pipe_seg_scale_od(s, es_pipe_pnt, s->s_edit->es_scale); return 0; } @@ -728,26 +728,26 @@ menu_pipe_pt_od(struct mged_state *s) int menu_pipe_pt_id(struct mged_state *s) { - if (s->s_edit.e_para[0] < 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR < 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] < 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR < 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } if (!es_pipe_pnt) { - bu_vls_printf(s->s_edit.log_str, "pscale: no pipe segment selected for scaling\n"); + bu_vls_printf(s->s_edit->log_str, "pscale: no pipe segment selected for scaling\n"); return TCL_ERROR; } - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ if (es_pipe_pnt->pp_id > 0.0) - s->s_edit.es_scale = s->s_edit.e_para[0] * s->s_edit.e_mat[15]/es_pipe_pnt->pp_id; + s->s_edit->es_scale = s->s_edit->e_para[0] * s->s_edit->e_mat[15]/es_pipe_pnt->pp_id; else - s->s_edit.es_scale = (-s->s_edit.e_para[0] * s->s_edit.e_mat[15]); + s->s_edit->es_scale = (-s->s_edit->e_para[0] * s->s_edit->e_mat[15]); } - pipe_seg_scale_id(s, es_pipe_pnt, s->s_edit.es_scale); + pipe_seg_scale_id(s, es_pipe_pnt, s->s_edit->es_scale); return 0; } @@ -756,26 +756,26 @@ menu_pipe_pt_id(struct mged_state *s) int menu_pipe_pt_radius(struct mged_state *s) { - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } if (!es_pipe_pnt) { - bu_vls_printf(s->s_edit.log_str, "pscale: no pipe segment selected for scaling\n"); + bu_vls_printf(s->s_edit->log_str, "pscale: no pipe segment selected for scaling\n"); return TCL_ERROR; } - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ if (es_pipe_pnt->pp_id > 0.0) - s->s_edit.es_scale = s->s_edit.e_para[0] * s->s_edit.e_mat[15]/es_pipe_pnt->pp_bendradius; + s->s_edit->es_scale = s->s_edit->e_para[0] * s->s_edit->e_mat[15]/es_pipe_pnt->pp_bendradius; else - s->s_edit.es_scale = (-s->s_edit.e_para[0] * s->s_edit.e_mat[15]); + s->s_edit->es_scale = (-s->s_edit->e_para[0] * s->s_edit->e_mat[15]); } - pipe_seg_scale_radius(s, es_pipe_pnt, s->s_edit.es_scale); + pipe_seg_scale_radius(s, es_pipe_pnt, s->s_edit->es_scale); return 0; } @@ -784,15 +784,15 @@ menu_pipe_pt_radius(struct mged_state *s) int menu_pipe_scale_od(struct mged_state *s) { - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (s->s_edit.e_inpara) { + if (s->s_edit->e_inpara) { struct rt_pipe_internal *pipeip = - (struct rt_pipe_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_pipe_internal *)s->s_edit->es_int.idb_ptr; struct wdb_pipe_pnt *ps; RT_PIPE_CK_MAGIC(pipeip); @@ -801,21 +801,21 @@ menu_pipe_scale_od(struct mged_state *s) BU_CKMAG(ps, WDB_PIPESEG_MAGIC, "wdb_pipe_pnt"); if (ps->pp_od > 0.0) { - s->s_edit.es_scale = s->s_edit.e_para[0] * s->s_edit.e_mat[15]/ps->pp_od; + s->s_edit->es_scale = s->s_edit->e_para[0] * s->s_edit->e_mat[15]/ps->pp_od; } else { while (ps->l.magic != BU_LIST_HEAD_MAGIC && ps->pp_od <= 0.0) ps = BU_LIST_NEXT(wdb_pipe_pnt, &ps->l); if (ps->l.magic == BU_LIST_HEAD_MAGIC) { - bu_vls_printf(s->s_edit.log_str, "Entire pipe solid has zero OD!\n"); + bu_vls_printf(s->s_edit->log_str, "Entire pipe solid has zero OD!\n"); return TCL_ERROR; } - s->s_edit.es_scale = s->s_edit.e_para[0] * s->s_edit.e_mat[15]/ps->pp_od; + s->s_edit->es_scale = s->s_edit->e_para[0] * s->s_edit->e_mat[15]/ps->pp_od; } } - pipe_scale_od(s, &s->s_edit.es_int, s->s_edit.es_scale); + pipe_scale_od(s, &s->s_edit->es_int, s->s_edit->es_scale); return 0; } @@ -824,15 +824,15 @@ menu_pipe_scale_od(struct mged_state *s) int menu_pipe_scale_id(struct mged_state *s) { - if (s->s_edit.e_para[0] < 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR < 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] < 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR < 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (s->s_edit.e_inpara) { + if (s->s_edit->e_inpara) { struct rt_pipe_internal *pipeip = - (struct rt_pipe_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_pipe_internal *)s->s_edit->es_int.idb_ptr; struct wdb_pipe_pnt *ps; RT_PIPE_CK_MAGIC(pipeip); @@ -841,19 +841,19 @@ menu_pipe_scale_id(struct mged_state *s) BU_CKMAG(ps, WDB_PIPESEG_MAGIC, "wdb_pipe_pnt"); if (ps->pp_id > 0.0) { - s->s_edit.es_scale = s->s_edit.e_para[0] * s->s_edit.e_mat[15]/ps->pp_id; + s->s_edit->es_scale = s->s_edit->e_para[0] * s->s_edit->e_mat[15]/ps->pp_id; } else { while (ps->l.magic != BU_LIST_HEAD_MAGIC && ps->pp_id <= 0.0) ps = BU_LIST_NEXT(wdb_pipe_pnt, &ps->l); /* Check if entire pipe has zero ID */ if (ps->l.magic == BU_LIST_HEAD_MAGIC) - s->s_edit.es_scale = (-s->s_edit.e_para[0] * s->s_edit.e_mat[15]); + s->s_edit->es_scale = (-s->s_edit->e_para[0] * s->s_edit->e_mat[15]); else - s->s_edit.es_scale = s->s_edit.e_para[0] * s->s_edit.e_mat[15]/ps->pp_id; + s->s_edit->es_scale = s->s_edit->e_para[0] * s->s_edit->e_mat[15]/ps->pp_id; } } - pipe_scale_id(s, &s->s_edit.es_int, s->s_edit.es_scale); + pipe_scale_id(s, &s->s_edit->es_int, s->s_edit->es_scale); return 0; } @@ -862,15 +862,15 @@ menu_pipe_scale_id(struct mged_state *s) int menu_pipe_scale_radius(struct mged_state *s) { - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (s->s_edit.e_inpara) { + if (s->s_edit->e_inpara) { struct rt_pipe_internal *pipeip = - (struct rt_pipe_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_pipe_internal *)s->s_edit->es_int.idb_ptr; struct wdb_pipe_pnt *ps; RT_PIPE_CK_MAGIC(pipeip); @@ -879,20 +879,20 @@ menu_pipe_scale_radius(struct mged_state *s) BU_CKMAG(ps, WDB_PIPESEG_MAGIC, "wdb_pipe_pnt"); if (ps->pp_bendradius > 0.0) { - s->s_edit.es_scale = s->s_edit.e_para[0] * s->s_edit.e_mat[15]/ps->pp_bendradius; + s->s_edit->es_scale = s->s_edit->e_para[0] * s->s_edit->e_mat[15]/ps->pp_bendradius; } else { while (ps->l.magic != BU_LIST_HEAD_MAGIC && ps->pp_bendradius <= 0.0) ps = BU_LIST_NEXT(wdb_pipe_pnt, &ps->l); /* Check if entire pipe has zero ID */ if (ps->l.magic == BU_LIST_HEAD_MAGIC) - s->s_edit.es_scale = (-s->s_edit.e_para[0] * s->s_edit.e_mat[15]); + s->s_edit->es_scale = (-s->s_edit->e_para[0] * s->s_edit->e_mat[15]); else - s->s_edit.es_scale = s->s_edit.e_para[0] * s->s_edit.e_mat[15]/ps->pp_bendradius; + s->s_edit->es_scale = s->s_edit->e_para[0] * s->s_edit->e_mat[15]/ps->pp_bendradius; } } - pipe_scale_radius(s, &s->s_edit.es_int, s->s_edit.es_scale); + pipe_scale_radius(s, &s->s_edit->es_int, s->s_edit->es_scale); return 0; } @@ -900,35 +900,35 @@ menu_pipe_scale_radius(struct mged_state *s) void ecmd_pipe_pick(struct mged_state *s) { struct rt_pipe_internal *pipeip = - (struct rt_pipe_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_pipe_internal *)s->s_edit->es_int.idb_ptr; point_t new_pt; RT_PIPE_CK_MAGIC(pipeip); /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; - - if (s->s_edit.e_mvalid) { - VMOVE(new_pt, s->s_edit.e_mparam); - } else if (s->s_edit.e_inpara == 3) { - if (s->s_edit.mv_context) { - /* apply s->s_edit.e_invmat to convert to real model space */ - MAT4X3PNT(new_pt, s->s_edit.e_invmat, s->s_edit.e_para); + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; + + if (s->s_edit->e_mvalid) { + VMOVE(new_pt, s->s_edit->e_mparam); + } else if (s->s_edit->e_inpara == 3) { + if (s->s_edit->mv_context) { + /* apply s->s_edit->e_invmat to convert to real model space */ + MAT4X3PNT(new_pt, s->s_edit->e_invmat, s->s_edit->e_para); } else { - VMOVE(new_pt, s->s_edit.e_para); + VMOVE(new_pt, s->s_edit->e_para); } - } else if (s->s_edit.e_inpara && s->s_edit.e_inpara != 3) { - bu_vls_printf(s->s_edit.log_str, "x y z coordinates required for segment selection\n"); + } else if (s->s_edit->e_inpara && s->s_edit->e_inpara != 3) { + bu_vls_printf(s->s_edit->log_str, "x y z coordinates required for segment selection\n"); mged_print_result(s, TCL_ERROR); return; - } else if (!s->s_edit.e_mvalid && !s->s_edit.e_inpara) + } else if (!s->s_edit->e_mvalid && !s->s_edit->e_inpara) return; es_pipe_pnt = find_pipe_pnt_nearest_pnt(s, &pipeip->pipe_segs_head, new_pt); if (!es_pipe_pnt) { - bu_vls_printf(s->s_edit.log_str, "No PIPE segment selected\n"); + bu_vls_printf(s->s_edit->log_str, "No PIPE segment selected\n"); mged_print_result(s, TCL_ERROR); } else rt_pipe_pnt_print(es_pipe_pnt, s->dbip->dbi_base2local); @@ -937,34 +937,34 @@ void ecmd_pipe_pick(struct mged_state *s) void ecmd_pipe_split(struct mged_state *s) { struct rt_pipe_internal *pipeip = - (struct rt_pipe_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_pipe_internal *)s->s_edit->es_int.idb_ptr; point_t new_pt; RT_PIPE_CK_MAGIC(pipeip); /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; - - if (s->s_edit.e_mvalid) { - VMOVE(new_pt, s->s_edit.e_mparam); - } else if (s->s_edit.e_inpara == 3) { - if (s->s_edit.mv_context) { - /* apply s->s_edit.e_invmat to convert to real model space */ - MAT4X3PNT(new_pt, s->s_edit.e_invmat, s->s_edit.e_para); + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; + + if (s->s_edit->e_mvalid) { + VMOVE(new_pt, s->s_edit->e_mparam); + } else if (s->s_edit->e_inpara == 3) { + if (s->s_edit->mv_context) { + /* apply s->s_edit->e_invmat to convert to real model space */ + MAT4X3PNT(new_pt, s->s_edit->e_invmat, s->s_edit->e_para); } else { - VMOVE(new_pt, s->s_edit.e_para); + VMOVE(new_pt, s->s_edit->e_para); } - } else if (s->s_edit.e_inpara && s->s_edit.e_inpara != 3) { - bu_vls_printf(s->s_edit.log_str, "x y z coordinates required for segment split\n"); + } else if (s->s_edit->e_inpara && s->s_edit->e_inpara != 3) { + bu_vls_printf(s->s_edit->log_str, "x y z coordinates required for segment split\n"); mged_print_result(s, TCL_ERROR); return; - } else if (!s->s_edit.e_mvalid && !s->s_edit.e_inpara) + } else if (!s->s_edit->e_mvalid && !s->s_edit->e_inpara) return; if (!es_pipe_pnt) { - bu_vls_printf(s->s_edit.log_str, "No pipe segment selected\n"); + bu_vls_printf(s->s_edit->log_str, "No pipe segment selected\n"); mged_print_result(s, TCL_ERROR); return; } @@ -975,34 +975,34 @@ void ecmd_pipe_split(struct mged_state *s) void ecmd_pipe_pt_move(struct mged_state *s) { struct rt_pipe_internal *pipeip = - (struct rt_pipe_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_pipe_internal *)s->s_edit->es_int.idb_ptr; point_t new_pt; RT_PIPE_CK_MAGIC(pipeip); /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; - - if (s->s_edit.e_mvalid) { - VMOVE(new_pt, s->s_edit.e_mparam); - } else if (s->s_edit.e_inpara == 3) { - if (s->s_edit.mv_context) { - /* apply s->s_edit.e_invmat to convert to real model space */ - MAT4X3PNT(new_pt, s->s_edit.e_invmat, s->s_edit.e_para); + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; + + if (s->s_edit->e_mvalid) { + VMOVE(new_pt, s->s_edit->e_mparam); + } else if (s->s_edit->e_inpara == 3) { + if (s->s_edit->mv_context) { + /* apply s->s_edit->e_invmat to convert to real model space */ + MAT4X3PNT(new_pt, s->s_edit->e_invmat, s->s_edit->e_para); } else { - VMOVE(new_pt, s->s_edit.e_para); + VMOVE(new_pt, s->s_edit->e_para); } - } else if (s->s_edit.e_inpara && s->s_edit.e_inpara != 3) { - bu_vls_printf(s->s_edit.log_str, "x y z coordinates required for segment movement\n"); + } else if (s->s_edit->e_inpara && s->s_edit->e_inpara != 3) { + bu_vls_printf(s->s_edit->log_str, "x y z coordinates required for segment movement\n"); mged_print_result(s, TCL_ERROR); return; - } else if (!s->s_edit.e_mvalid && !s->s_edit.e_inpara) + } else if (!s->s_edit->e_mvalid && !s->s_edit->e_inpara) return; if (!es_pipe_pnt) { - bu_vls_printf(s->s_edit.log_str, "No pipe segment selected\n"); + bu_vls_printf(s->s_edit->log_str, "No pipe segment selected\n"); mged_print_result(s, TCL_ERROR); return; } @@ -1013,30 +1013,30 @@ void ecmd_pipe_pt_move(struct mged_state *s) void ecmd_pipe_pt_add(struct mged_state *s) { struct rt_pipe_internal *pipeip = - (struct rt_pipe_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_pipe_internal *)s->s_edit->es_int.idb_ptr; point_t new_pt; RT_PIPE_CK_MAGIC(pipeip); /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; - - if (s->s_edit.e_mvalid) { - VMOVE(new_pt, s->s_edit.e_mparam); - } else if (s->s_edit.e_inpara == 3) { - if (s->s_edit.mv_context) { - /* apply s->s_edit.e_invmat to convert to real model space */ - MAT4X3PNT(new_pt, s->s_edit.e_invmat, s->s_edit.e_para); + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; + + if (s->s_edit->e_mvalid) { + VMOVE(new_pt, s->s_edit->e_mparam); + } else if (s->s_edit->e_inpara == 3) { + if (s->s_edit->mv_context) { + /* apply s->s_edit->e_invmat to convert to real model space */ + MAT4X3PNT(new_pt, s->s_edit->e_invmat, s->s_edit->e_para); } else { - VMOVE(new_pt, s->s_edit.e_para); + VMOVE(new_pt, s->s_edit->e_para); } - } else if (s->s_edit.e_inpara && s->s_edit.e_inpara != 3) { - bu_vls_printf(s->s_edit.log_str, "x y z coordinates required for 'append segment'\n"); + } else if (s->s_edit->e_inpara && s->s_edit->e_inpara != 3) { + bu_vls_printf(s->s_edit->log_str, "x y z coordinates required for 'append segment'\n"); mged_print_result(s, TCL_ERROR); return; - } else if (!s->s_edit.e_mvalid && !s->s_edit.e_inpara) + } else if (!s->s_edit->e_mvalid && !s->s_edit->e_inpara) return; es_pipe_pnt = pipe_add_pnt(pipeip, es_pipe_pnt, new_pt); @@ -1045,30 +1045,30 @@ void ecmd_pipe_pt_add(struct mged_state *s) void ecmd_pipe_pt_ins(struct mged_state *s) { struct rt_pipe_internal *pipeip = - (struct rt_pipe_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_pipe_internal *)s->s_edit->es_int.idb_ptr; point_t new_pt; RT_PIPE_CK_MAGIC(pipeip); /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; - - if (s->s_edit.e_mvalid) { - VMOVE(new_pt, s->s_edit.e_mparam); - } else if (s->s_edit.e_inpara == 3) { - if (s->s_edit.mv_context) { - /* apply s->s_edit.e_invmat to convert to real model space */ - MAT4X3PNT(new_pt, s->s_edit.e_invmat, s->s_edit.e_para); + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; + + if (s->s_edit->e_mvalid) { + VMOVE(new_pt, s->s_edit->e_mparam); + } else if (s->s_edit->e_inpara == 3) { + if (s->s_edit->mv_context) { + /* apply s->s_edit->e_invmat to convert to real model space */ + MAT4X3PNT(new_pt, s->s_edit->e_invmat, s->s_edit->e_para); } else { - VMOVE(new_pt, s->s_edit.e_para); + VMOVE(new_pt, s->s_edit->e_para); } - } else if (s->s_edit.e_inpara && s->s_edit.e_inpara != 3) { - bu_vls_printf(s->s_edit.log_str, "x y z coordinates required for 'prepend segment'\n"); + } else if (s->s_edit->e_inpara && s->s_edit->e_inpara != 3) { + bu_vls_printf(s->s_edit->log_str, "x y z coordinates required for 'prepend segment'\n"); mged_print_result(s, TCL_ERROR); return; - } else if (!s->s_edit.e_mvalid && !s->s_edit.e_inpara) + } else if (!s->s_edit->e_mvalid && !s->s_edit->e_inpara) return; pipe_ins_pnt(pipeip, es_pipe_pnt, new_pt); @@ -1077,7 +1077,7 @@ void ecmd_pipe_pt_ins(struct mged_state *s) void ecmd_pipe_pt_del(struct mged_state *s) { if (!es_pipe_pnt) { - bu_vls_printf(s->s_edit.log_str, "No pipe segment selected\n"); + bu_vls_printf(s->s_edit->log_str, "No pipe segment selected\n"); mged_print_result(s, TCL_ERROR); return; } @@ -1087,16 +1087,16 @@ void ecmd_pipe_pt_del(struct mged_state *s) static int mged_pipe_pscale(struct mged_state *s, int mode) { - if (s->s_edit.e_inpara > 1) { - bu_vls_printf(s->s_edit.log_str, "ERROR: only one argument needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara > 1) { + bu_vls_printf(s->s_edit->log_str, "ERROR: only one argument needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; switch (mode) { case MENU_PIPE_PT_OD: /* scale OD of one pipe segment */ @@ -1123,19 +1123,19 @@ mged_pipe_edit(struct mged_state *s, int edflag) case SSCALE: /* scale the solid uniformly about its vertex point */ es_pipe_pnt = (struct wdb_pipe_pnt *)NULL; /* Reset es_pipe_pnt */ - return mged_generic_sscale(s, &s->s_edit.es_int); + return mged_generic_sscale(s, &s->s_edit->es_int); case STRANS: /* translate solid */ es_pipe_pnt = (struct wdb_pipe_pnt *)NULL; /* Reset es_pipe_pnt */ - mged_generic_strans(s, &s->s_edit.es_int); + mged_generic_strans(s, &s->s_edit->es_int); break; case SROT: /* rot solid about vertex */ es_pipe_pnt = (struct wdb_pipe_pnt *)NULL; /* Reset es_pipe_pnt */ - mged_generic_srot(s, &s->s_edit.es_int); + mged_generic_srot(s, &s->s_edit->es_int); break; case PSCALE: - return mged_pipe_pscale(s, s->s_edit.edit_menu); + return mged_pipe_pscale(s, s->s_edit->edit_menu); case ECMD_PIPE_PICK: ecmd_pipe_pick(s); break; @@ -1168,7 +1168,7 @@ mged_pipe_edit_xy( { vect_t pos_view = VINIT_ZERO; /* Unrotated view space pos */ vect_t temp = VINIT_ZERO; - struct rt_db_internal *ip = &s->s_edit.es_int; + struct rt_db_internal *ip = &s->s_edit->es_int; switch (edflag) { case SSCALE: @@ -1184,15 +1184,15 @@ mged_pipe_edit_xy( case ECMD_PIPE_PT_MOVE: case ECMD_PIPE_PT_ADD: case ECMD_PIPE_PT_INS: - MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit.curr_e_axes_pos); + MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit->curr_e_axes_pos); pos_view[X] = mousevec[X]; pos_view[Y] = mousevec[Y]; MAT4X3PNT(temp, view_state->vs_gvp->gv_view2model, pos_view); - MAT4X3PNT(s->s_edit.e_mparam, s->s_edit.e_invmat, temp); - s->s_edit.e_mvalid = 1; + MAT4X3PNT(s->s_edit->e_mparam, s->s_edit->e_invmat, temp); + s->s_edit->e_mvalid = 1; break; default: - bu_vls_printf(s->s_edit.log_str, "%s: XY edit undefined in solid edit mode %d\n", MGED_OBJ[ip->idb_type].ft_label, edflag); + bu_vls_printf(s->s_edit->log_str, "%s: XY edit undefined in solid edit mode %d\n", MGED_OBJ[ip->idb_type].ft_label, edflag); mged_print_result(s, TCL_ERROR); return TCL_ERROR; } diff --git a/src/mged/primitives/edrhc.c b/src/mged/primitives/edrhc.c index 14272f03aa..2431a15463 100644 --- a/src/mged/primitives/edrhc.c +++ b/src/mged/primitives/edrhc.c @@ -45,7 +45,7 @@ static void rhc_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg; + s->s_edit->edit_menu = arg; mged_set_edflag(s, PSCALE); set_e_axes_pos(s, 1); @@ -172,15 +172,15 @@ void menu_rhc_b(struct mged_state *s) { struct rt_rhc_internal *rhc = - (struct rt_rhc_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_rhc_internal *)s->s_edit->es_int.idb_ptr; RT_RHC_CK_MAGIC(rhc); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / MAGNITUDE(rhc->rhc_B); + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / MAGNITUDE(rhc->rhc_B); } - VSCALE(rhc->rhc_B, rhc->rhc_B, s->s_edit.es_scale); + VSCALE(rhc->rhc_B, rhc->rhc_B, s->s_edit->es_scale); } /* scale vector H */ @@ -188,15 +188,15 @@ void menu_rhc_h(struct mged_state *s) { struct rt_rhc_internal *rhc = - (struct rt_rhc_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_rhc_internal *)s->s_edit->es_int.idb_ptr; RT_RHC_CK_MAGIC(rhc); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / MAGNITUDE(rhc->rhc_H); + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / MAGNITUDE(rhc->rhc_H); } - VSCALE(rhc->rhc_H, rhc->rhc_H, s->s_edit.es_scale); + VSCALE(rhc->rhc_H, rhc->rhc_H, s->s_edit->es_scale); } /* scale rectangular half-width of RHC */ @@ -204,15 +204,15 @@ void menu_rhc_r(struct mged_state *s) { struct rt_rhc_internal *rhc = - (struct rt_rhc_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_rhc_internal *)s->s_edit->es_int.idb_ptr; RT_RHC_CK_MAGIC(rhc); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / rhc->rhc_r; + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / rhc->rhc_r; } - rhc->rhc_r *= s->s_edit.es_scale; + rhc->rhc_r *= s->s_edit->es_scale; } /* scale rectangular half-width of RHC */ @@ -220,36 +220,36 @@ void menu_rhc_c(struct mged_state *s) { struct rt_rhc_internal *rhc = - (struct rt_rhc_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_rhc_internal *)s->s_edit->es_int.idb_ptr; RT_RHC_CK_MAGIC(rhc); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / rhc->rhc_c; + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / rhc->rhc_c; } - rhc->rhc_c *= s->s_edit.es_scale; + rhc->rhc_c *= s->s_edit->es_scale; } static int mged_rhc_pscale(struct mged_state *s, int mode) { - if (s->s_edit.e_inpara > 1) { - bu_vls_printf(s->s_edit.log_str, "ERROR: only one argument needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara > 1) { + bu_vls_printf(s->s_edit->log_str, "ERROR: only one argument needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; switch (mode) { case MENU_RHC_B: @@ -275,17 +275,17 @@ mged_rhc_edit(struct mged_state *s, int edflag) switch (edflag) { case SSCALE: /* scale the solid uniformly about its vertex point */ - return mged_generic_sscale(s, &s->s_edit.es_int); + return mged_generic_sscale(s, &s->s_edit->es_int); case STRANS: /* translate solid */ - mged_generic_strans(s, &s->s_edit.es_int); + mged_generic_strans(s, &s->s_edit->es_int); break; case SROT: /* rot solid about vertex */ - mged_generic_srot(s, &s->s_edit.es_int); + mged_generic_srot(s, &s->s_edit->es_int); break; case PSCALE: - return mged_rhc_pscale(s, s->s_edit.edit_menu); + return mged_rhc_pscale(s, s->s_edit->edit_menu); } return 0; } diff --git a/src/mged/primitives/edrpc.c b/src/mged/primitives/edrpc.c index 120b981d1a..4cc94af160 100644 --- a/src/mged/primitives/edrpc.c +++ b/src/mged/primitives/edrpc.c @@ -44,7 +44,7 @@ static void rpc_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg; + s->s_edit->edit_menu = arg; mged_set_edflag(s, PSCALE); set_e_axes_pos(s, 1); @@ -164,15 +164,15 @@ void menu_rpc_b(struct mged_state *s) { struct rt_rpc_internal *rpc = - (struct rt_rpc_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_rpc_internal *)s->s_edit->es_int.idb_ptr; RT_RPC_CK_MAGIC(rpc); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / MAGNITUDE(rpc->rpc_B); + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / MAGNITUDE(rpc->rpc_B); } - VSCALE(rpc->rpc_B, rpc->rpc_B, s->s_edit.es_scale); + VSCALE(rpc->rpc_B, rpc->rpc_B, s->s_edit->es_scale); } /* scale vector H */ @@ -180,15 +180,15 @@ void menu_rpc_h(struct mged_state *s) { struct rt_rpc_internal *rpc = - (struct rt_rpc_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_rpc_internal *)s->s_edit->es_int.idb_ptr; RT_RPC_CK_MAGIC(rpc); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / MAGNITUDE(rpc->rpc_H); + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / MAGNITUDE(rpc->rpc_H); } - VSCALE(rpc->rpc_H, rpc->rpc_H, s->s_edit.es_scale); + VSCALE(rpc->rpc_H, rpc->rpc_H, s->s_edit->es_scale); } /* scale rectangular half-width of RPC */ @@ -196,36 +196,36 @@ void menu_rpc_r(struct mged_state *s) { struct rt_rpc_internal *rpc = - (struct rt_rpc_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_rpc_internal *)s->s_edit->es_int.idb_ptr; RT_RPC_CK_MAGIC(rpc); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / rpc->rpc_r; + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / rpc->rpc_r; } - rpc->rpc_r *= s->s_edit.es_scale; + rpc->rpc_r *= s->s_edit->es_scale; } static int mged_rpc_pscale(struct mged_state *s, int mode) { - if (s->s_edit.e_inpara > 1) { - bu_vls_printf(s->s_edit.log_str, "ERROR: only one argument needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara > 1) { + bu_vls_printf(s->s_edit->log_str, "ERROR: only one argument needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; switch (mode) { case MENU_RPC_B: @@ -248,17 +248,17 @@ mged_rpc_edit(struct mged_state *s, int edflag) switch (edflag) { case SSCALE: /* scale the solid uniformly about its vertex point */ - return mged_generic_sscale(s, &s->s_edit.es_int); + return mged_generic_sscale(s, &s->s_edit->es_int); case STRANS: /* translate solid */ - mged_generic_strans(s, &s->s_edit.es_int); + mged_generic_strans(s, &s->s_edit->es_int); break; case SROT: /* rot solid about vertex */ - mged_generic_srot(s, &s->s_edit.es_int); + mged_generic_srot(s, &s->s_edit->es_int); break; case PSCALE: - return mged_rpc_pscale(s, s->s_edit.edit_menu); + return mged_rpc_pscale(s, s->s_edit->edit_menu); } return 0; } diff --git a/src/mged/primitives/edsuperell.c b/src/mged/primitives/edsuperell.c index 4da74269b4..105ecf5c9c 100644 --- a/src/mged/primitives/edsuperell.c +++ b/src/mged/primitives/edsuperell.c @@ -44,7 +44,7 @@ static void superell_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg; + s->s_edit->edit_menu = arg; mged_set_edflag(s, PSCALE); set_e_axes_pos(s, 1); return; @@ -171,14 +171,14 @@ void menu_superell_scale_a(struct mged_state *s) { struct rt_superell_internal *superell = - (struct rt_superell_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_superell_internal *)s->s_edit->es_int.idb_ptr; RT_SUPERELL_CK_MAGIC(superell); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.es_scale = s->s_edit.e_para[0] * s->s_edit.e_mat[15] / + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->es_scale = s->s_edit->e_para[0] * s->s_edit->e_mat[15] / MAGNITUDE(superell->a); } - VSCALE(superell->a, superell->a, s->s_edit.es_scale); + VSCALE(superell->a, superell->a, s->s_edit->es_scale); } /* scale vector B */ @@ -186,14 +186,14 @@ void menu_superell_scale_b(struct mged_state *s) { struct rt_superell_internal *superell = - (struct rt_superell_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_superell_internal *)s->s_edit->es_int.idb_ptr; RT_SUPERELL_CK_MAGIC(superell); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.es_scale = s->s_edit.e_para[0] * s->s_edit.e_mat[15] / + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->es_scale = s->s_edit->e_para[0] * s->s_edit->e_mat[15] / MAGNITUDE(superell->b); } - VSCALE(superell->b, superell->b, s->s_edit.es_scale); + VSCALE(superell->b, superell->b, s->s_edit->es_scale); } /* scale vector C */ @@ -201,14 +201,14 @@ void menu_superell_scale_c(struct mged_state *s) { struct rt_superell_internal *superell = - (struct rt_superell_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_superell_internal *)s->s_edit->es_int.idb_ptr; RT_SUPERELL_CK_MAGIC(superell); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.es_scale = s->s_edit.e_para[0] * s->s_edit.e_mat[15] / + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->es_scale = s->s_edit->e_para[0] * s->s_edit->e_mat[15] / MAGNITUDE(superell->c); } - VSCALE(superell->c, superell->c, s->s_edit.es_scale); + VSCALE(superell->c, superell->c, s->s_edit->es_scale); } /* set A, B, and C length the same */ @@ -217,14 +217,14 @@ menu_superell_scale_abc(struct mged_state *s) { fastf_t ma, mb; struct rt_superell_internal *superell = - (struct rt_superell_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_superell_internal *)s->s_edit->es_int.idb_ptr; RT_SUPERELL_CK_MAGIC(superell); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.es_scale = s->s_edit.e_para[0] * s->s_edit.e_mat[15] / + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->es_scale = s->s_edit->e_para[0] * s->s_edit->e_mat[15] / MAGNITUDE(superell->a); } - VSCALE(superell->a, superell->a, s->s_edit.es_scale); + VSCALE(superell->a, superell->a, s->s_edit->es_scale); ma = MAGNITUDE(superell->a); mb = MAGNITUDE(superell->b); VSCALE(superell->b, superell->b, ma/mb); @@ -235,22 +235,22 @@ menu_superell_scale_abc(struct mged_state *s) static int mged_superell_pscale(struct mged_state *s, int mode) { - if (s->s_edit.e_inpara > 1) { - bu_vls_printf(s->s_edit.log_str, "ERROR: only one argument needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara > 1) { + bu_vls_printf(s->s_edit->log_str, "ERROR: only one argument needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; switch (mode) { case MENU_SUPERELL_SCALE_A: @@ -276,17 +276,17 @@ mged_superell_edit(struct mged_state *s, int edflag) switch (edflag) { case SSCALE: /* scale the solid uniformly about its vertex point */ - return mged_generic_sscale(s, &s->s_edit.es_int); + return mged_generic_sscale(s, &s->s_edit->es_int); case STRANS: /* translate solid */ - mged_generic_strans(s, &s->s_edit.es_int); + mged_generic_strans(s, &s->s_edit->es_int); break; case SROT: /* rot solid about vertex */ - mged_generic_srot(s, &s->s_edit.es_int); + mged_generic_srot(s, &s->s_edit->es_int); break; case PSCALE: - return mged_superell_pscale(s, s->s_edit.edit_menu); + return mged_superell_pscale(s, s->s_edit->edit_menu); } return 0; } diff --git a/src/mged/primitives/edtgc.c b/src/mged/primitives/edtgc.c index 840bb2f8fb..8c67b91c1d 100644 --- a/src/mged/primitives/edtgc.c +++ b/src/mged/primitives/edtgc.c @@ -64,29 +64,29 @@ static void tgc_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg; + s->s_edit->edit_menu = arg; mged_set_edflag(s, PSCALE); // PSCALE already reset most of the flags, so for the following we just // need to zero scale and set the specific flag of interest. if (arg == MENU_TGC_ROT_H) { - s->s_edit.edit_flag = ECMD_TGC_ROT_H; - s->s_edit.solid_edit_rotate = 1; - s->s_edit.solid_edit_scale = 0; + s->s_edit->edit_flag = ECMD_TGC_ROT_H; + s->s_edit->solid_edit_rotate = 1; + s->s_edit->solid_edit_scale = 0; } if (arg == MENU_TGC_ROT_AB) { - s->s_edit.edit_flag = ECMD_TGC_ROT_AB; - s->s_edit.solid_edit_rotate = 1; - s->s_edit.solid_edit_scale = 0; + s->s_edit->edit_flag = ECMD_TGC_ROT_AB; + s->s_edit->solid_edit_rotate = 1; + s->s_edit->solid_edit_scale = 0; } if (arg == MENU_TGC_MV_H) { - s->s_edit.edit_flag = ECMD_TGC_MV_H; - s->s_edit.solid_edit_translate = 1; - s->s_edit.solid_edit_scale = 0; + s->s_edit->edit_flag = ECMD_TGC_MV_H; + s->s_edit->solid_edit_translate = 1; + s->s_edit->solid_edit_scale = 0; } if (arg == MENU_TGC_MV_HH) { - s->s_edit.edit_flag = ECMD_TGC_MV_HH; - s->s_edit.solid_edit_translate = 1; - s->s_edit.solid_edit_scale = 0; + s->s_edit->edit_flag = ECMD_TGC_MV_HH; + s->s_edit->solid_edit_translate = 1; + s->s_edit->solid_edit_scale = 0; } set_e_axes_pos(s, 1); } @@ -123,17 +123,17 @@ mged_tgc_e_axes_pos( const struct rt_db_internal *ip, const struct bn_tol *UNUSED(tol)) { - if (s->s_edit.edit_flag == ECMD_TGC_MV_H || - s->s_edit.edit_flag == ECMD_TGC_MV_HH) { + if (s->s_edit->edit_flag == ECMD_TGC_MV_H || + s->s_edit->edit_flag == ECMD_TGC_MV_HH) { struct rt_tgc_internal *tgc = (struct rt_tgc_internal *)ip->idb_ptr; point_t tgc_v; vect_t tgc_h; - MAT4X3PNT(tgc_v, s->s_edit.e_mat, tgc->v); - MAT4X3VEC(tgc_h, s->s_edit.e_mat, tgc->h); - VADD2(s->s_edit.curr_e_axes_pos, tgc_h, tgc_v); + MAT4X3PNT(tgc_v, s->s_edit->e_mat, tgc->v); + MAT4X3VEC(tgc_h, s->s_edit->e_mat, tgc->h); + VADD2(s->s_edit->curr_e_axes_pos, tgc_h, tgc_v); } else { - VMOVE(s->s_edit.curr_e_axes_pos, s->s_edit.e_keypoint); + VMOVE(s->s_edit->curr_e_axes_pos, s->s_edit->e_keypoint); } } @@ -254,14 +254,14 @@ void menu_tgc_scale_h(struct mged_state *s) { struct rt_tgc_internal *tgc = - (struct rt_tgc_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_tgc_internal *)s->s_edit->es_int.idb_ptr; RT_TGC_CK_MAGIC(tgc); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / MAGNITUDE(tgc->h); + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / MAGNITUDE(tgc->h); } - VSCALE(tgc->h, tgc->h, s->s_edit.es_scale); + VSCALE(tgc->h, tgc->h, s->s_edit->es_scale); } /* scale height vector (but move V) */ @@ -271,15 +271,15 @@ menu_tgc_scale_h_v(struct mged_state *s) point_t old_top; struct rt_tgc_internal *tgc = - (struct rt_tgc_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_tgc_internal *)s->s_edit->es_int.idb_ptr; RT_TGC_CK_MAGIC(tgc); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / MAGNITUDE(tgc->h); + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / MAGNITUDE(tgc->h); } VADD2(old_top, tgc->v, tgc->h); - VSCALE(tgc->h, tgc->h, s->s_edit.es_scale); + VSCALE(tgc->h, tgc->h, s->s_edit->es_scale); VSUB2(tgc->v, old_top, tgc->h); } @@ -289,24 +289,24 @@ menu_tgc_scale_h_cd(struct mged_state *s) vect_t vec1, vec2; vect_t c, d; struct rt_tgc_internal *tgc = - (struct rt_tgc_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_tgc_internal *)s->s_edit->es_int.idb_ptr; RT_TGC_CK_MAGIC(tgc); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / MAGNITUDE(tgc->h); + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / MAGNITUDE(tgc->h); } /* calculate new c */ VSUB2(vec1, tgc->a, tgc->c); - VSCALE(vec2, vec1, 1-s->s_edit.es_scale); + VSCALE(vec2, vec1, 1-s->s_edit->es_scale); VADD2(c, tgc->c, vec2); /* calculate new d */ VSUB2(vec1, tgc->b, tgc->d); - VSCALE(vec2, vec1, 1-s->s_edit.es_scale); + VSCALE(vec2, vec1, 1-s->s_edit->es_scale); VADD2(d, tgc->d, vec2); if (0 <= VDOT(tgc->c, c) && @@ -316,7 +316,7 @@ menu_tgc_scale_h_cd(struct mged_state *s) /* adjust c, d and h */ VMOVE(tgc->c, c); VMOVE(tgc->d, d); - VSCALE(tgc->h, tgc->h, s->s_edit.es_scale); + VSCALE(tgc->h, tgc->h, s->s_edit->es_scale); } } @@ -327,24 +327,24 @@ menu_tgc_scale_h_v_ab(struct mged_state *s) vect_t a, b; point_t old_top; struct rt_tgc_internal *tgc = - (struct rt_tgc_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_tgc_internal *)s->s_edit->es_int.idb_ptr; RT_TGC_CK_MAGIC(tgc); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / MAGNITUDE(tgc->h); + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / MAGNITUDE(tgc->h); } /* calculate new a */ VSUB2(vec1, tgc->c, tgc->a); - VSCALE(vec2, vec1, 1-s->s_edit.es_scale); + VSCALE(vec2, vec1, 1-s->s_edit->es_scale); VADD2(a, tgc->a, vec2); /* calculate new b */ VSUB2(vec1, tgc->d, tgc->b); - VSCALE(vec2, vec1, 1-s->s_edit.es_scale); + VSCALE(vec2, vec1, 1-s->s_edit->es_scale); VADD2(b, tgc->b, vec2); if (0 <= VDOT(tgc->a, a) && @@ -355,7 +355,7 @@ menu_tgc_scale_h_v_ab(struct mged_state *s) VMOVE(tgc->a, a); VMOVE(tgc->b, b); VADD2(old_top, tgc->v, tgc->h); - VSCALE(tgc->h, tgc->h, s->s_edit.es_scale); + VSCALE(tgc->h, tgc->h, s->s_edit->es_scale); VSUB2(tgc->v, old_top, tgc->h); } } @@ -365,15 +365,15 @@ void menu_tgc_scale_a(struct mged_state *s) { struct rt_tgc_internal *tgc = - (struct rt_tgc_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_tgc_internal *)s->s_edit->es_int.idb_ptr; RT_TGC_CK_MAGIC(tgc); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / MAGNITUDE(tgc->a); + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / MAGNITUDE(tgc->a); } - VSCALE(tgc->a, tgc->a, s->s_edit.es_scale); + VSCALE(tgc->a, tgc->a, s->s_edit->es_scale); } /* scale vector B */ @@ -381,15 +381,15 @@ void menu_tgc_scale_b(struct mged_state *s) { struct rt_tgc_internal *tgc = - (struct rt_tgc_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_tgc_internal *)s->s_edit->es_int.idb_ptr; RT_TGC_CK_MAGIC(tgc); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / MAGNITUDE(tgc->b); + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / MAGNITUDE(tgc->b); } - VSCALE(tgc->b, tgc->b, s->s_edit.es_scale); + VSCALE(tgc->b, tgc->b, s->s_edit->es_scale); } /* TGC: scale ratio "c" */ @@ -397,15 +397,15 @@ void menu_tgc_scale_c(struct mged_state *s) { struct rt_tgc_internal *tgc = - (struct rt_tgc_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_tgc_internal *)s->s_edit->es_int.idb_ptr; RT_TGC_CK_MAGIC(tgc); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / MAGNITUDE(tgc->c); + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / MAGNITUDE(tgc->c); } - VSCALE(tgc->c, tgc->c, s->s_edit.es_scale); + VSCALE(tgc->c, tgc->c, s->s_edit->es_scale); } /* scale d for tgc */ @@ -413,15 +413,15 @@ void menu_tgc_scale_d(struct mged_state *s) { struct rt_tgc_internal *tgc = - (struct rt_tgc_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_tgc_internal *)s->s_edit->es_int.idb_ptr; RT_TGC_CK_MAGIC(tgc); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / MAGNITUDE(tgc->d); + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / MAGNITUDE(tgc->d); } - VSCALE(tgc->d, tgc->d, s->s_edit.es_scale); + VSCALE(tgc->d, tgc->d, s->s_edit->es_scale); } void @@ -429,15 +429,15 @@ menu_tgc_scale_ab(struct mged_state *s) { fastf_t ma, mb; struct rt_tgc_internal *tgc = - (struct rt_tgc_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_tgc_internal *)s->s_edit->es_int.idb_ptr; RT_TGC_CK_MAGIC(tgc); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / MAGNITUDE(tgc->a); + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / MAGNITUDE(tgc->a); } - VSCALE(tgc->a, tgc->a, s->s_edit.es_scale); + VSCALE(tgc->a, tgc->a, s->s_edit->es_scale); ma = MAGNITUDE(tgc->a); mb = MAGNITUDE(tgc->b); VSCALE(tgc->b, tgc->b, ma/mb); @@ -449,15 +449,15 @@ menu_tgc_scale_cd(struct mged_state *s) { fastf_t ma, mb; struct rt_tgc_internal *tgc = - (struct rt_tgc_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_tgc_internal *)s->s_edit->es_int.idb_ptr; RT_TGC_CK_MAGIC(tgc); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / MAGNITUDE(tgc->c); + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / MAGNITUDE(tgc->c); } - VSCALE(tgc->c, tgc->c, s->s_edit.es_scale); + VSCALE(tgc->c, tgc->c, s->s_edit->es_scale); ma = MAGNITUDE(tgc->c); mb = MAGNITUDE(tgc->d); VSCALE(tgc->d, tgc->d, ma/mb); @@ -469,15 +469,15 @@ menu_tgc_scale_abcd(struct mged_state *s) { fastf_t ma, mb; struct rt_tgc_internal *tgc = - (struct rt_tgc_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_tgc_internal *)s->s_edit->es_int.idb_ptr; RT_TGC_CK_MAGIC(tgc); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - s->s_edit.es_scale = s->s_edit.e_para[0] / MAGNITUDE(tgc->a); + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + s->s_edit->es_scale = s->s_edit->e_para[0] / MAGNITUDE(tgc->a); } - VSCALE(tgc->a, tgc->a, s->s_edit.es_scale); + VSCALE(tgc->a, tgc->a, s->s_edit->es_scale); ma = MAGNITUDE(tgc->a); mb = MAGNITUDE(tgc->b); VSCALE(tgc->b, tgc->b, ma/mb); @@ -497,33 +497,33 @@ ecmd_tgc_mv_h(struct mged_state *s) float la, lb, lc, ld; /* TGC: length of vectors */ vect_t work; struct rt_tgc_internal *tgc = - (struct rt_tgc_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_tgc_internal *)s->s_edit->es_int.idb_ptr; RT_TGC_CK_MAGIC(tgc); - if (s->s_edit.e_inpara) { - if (s->s_edit.e_inpara != 3) { - bu_vls_printf(s->s_edit.log_str, "ERROR: three arguments needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara) { + if (s->s_edit->e_inpara != 3) { + bu_vls_printf(s->s_edit->log_str, "ERROR: three arguments needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; - if (s->s_edit.mv_context) { - /* apply s->s_edit.e_invmat to convert to real model coordinates */ - MAT4X3PNT(work, s->s_edit.e_invmat, s->s_edit.e_para); + if (s->s_edit->mv_context) { + /* apply s->s_edit->e_invmat to convert to real model coordinates */ + MAT4X3PNT(work, s->s_edit->e_invmat, s->s_edit->e_para); VSUB2(tgc->h, work, tgc->v); } else { - VSUB2(tgc->h, s->s_edit.e_para, tgc->v); + VSUB2(tgc->h, s->s_edit->e_para, tgc->v); } } /* check for zero H vector */ if (MAGNITUDE(tgc->h) <= SQRT_SMALL_FASTF) { - bu_vls_printf(s->s_edit.log_str, "Zero H vector not allowed, resetting to +Z\n"); + bu_vls_printf(s->s_edit->log_str, "Zero H vector not allowed, resetting to +Z\n"); mged_print_result(s, TCL_ERROR); VSET(tgc->h, 0.0, 0.0, 1.0); return TCL_ERROR; @@ -558,33 +558,33 @@ ecmd_tgc_mv_hh(struct mged_state *s) { vect_t work; struct rt_tgc_internal *tgc = - (struct rt_tgc_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_tgc_internal *)s->s_edit->es_int.idb_ptr; RT_TGC_CK_MAGIC(tgc); - if (s->s_edit.e_inpara) { - if (s->s_edit.e_inpara != 3) { - bu_vls_printf(s->s_edit.log_str, "ERROR: three arguments needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara) { + if (s->s_edit->e_inpara != 3) { + bu_vls_printf(s->s_edit->log_str, "ERROR: three arguments needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; - if (s->s_edit.mv_context) { - /* apply s->s_edit.e_invmat to convert to real model coordinates */ - MAT4X3PNT(work, s->s_edit.e_invmat, s->s_edit.e_para); + if (s->s_edit->mv_context) { + /* apply s->s_edit->e_invmat to convert to real model coordinates */ + MAT4X3PNT(work, s->s_edit->e_invmat, s->s_edit->e_para); VSUB2(tgc->h, work, tgc->v); } else { - VSUB2(tgc->h, s->s_edit.e_para, tgc->v); + VSUB2(tgc->h, s->s_edit->e_para, tgc->v); } } /* check for zero H vector */ if (MAGNITUDE(tgc->h) <= SQRT_SMALL_FASTF) { - bu_vls_printf(s->s_edit.log_str, "Zero H vector not allowed, resetting to +Z\n"); + bu_vls_printf(s->s_edit->log_str, "Zero H vector not allowed, resetting to +Z\n"); mged_print_result(s, TCL_ERROR); VSET(tgc->h, 0.0, 0.0, 1.0); return TCL_ERROR; @@ -598,17 +598,17 @@ int ecmd_tgc_rot_h(struct mged_state *s) { struct rt_tgc_internal *tgc = - (struct rt_tgc_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_tgc_internal *)s->s_edit->es_int.idb_ptr; mat_t mat; mat_t mat1; mat_t edit; RT_TGC_CK_MAGIC(tgc); - if (s->s_edit.e_inpara) { - if (s->s_edit.e_inpara != 3) { - bu_vls_printf(s->s_edit.log_str, "ERROR: three arguments needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara) { + if (s->s_edit->e_inpara != 3) { + bu_vls_printf(s->s_edit->log_str, "ERROR: three arguments needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } @@ -618,42 +618,42 @@ ecmd_tgc_rot_h(struct mged_state *s) * in degrees. First, cancel any existing rotations, * then perform new rotation */ - bn_mat_inv(invsolr, s->s_edit.acc_rot_sol); + bn_mat_inv(invsolr, s->s_edit->acc_rot_sol); /* Build completely new rotation change */ - MAT_IDN(s->s_edit.model_changes); - bn_mat_angles(s->s_edit.model_changes, - s->s_edit.e_para[0], - s->s_edit.e_para[1], - s->s_edit.e_para[2]); - /* Borrow s->s_edit.incr_change matrix here */ - bn_mat_mul(s->s_edit.incr_change, s->s_edit.model_changes, invsolr); - MAT_COPY(s->s_edit.acc_rot_sol, s->s_edit.model_changes); + MAT_IDN(s->s_edit->model_changes); + bn_mat_angles(s->s_edit->model_changes, + s->s_edit->e_para[0], + s->s_edit->e_para[1], + s->s_edit->e_para[2]); + /* Borrow s->s_edit->incr_change matrix here */ + bn_mat_mul(s->s_edit->incr_change, s->s_edit->model_changes, invsolr); + MAT_COPY(s->s_edit->acc_rot_sol, s->s_edit->model_changes); /* Apply new rotation to solid */ /* Clear out solid rotation */ - MAT_IDN(s->s_edit.model_changes); + MAT_IDN(s->s_edit->model_changes); } else { - /* Apply incremental changes already in s->s_edit.incr_change */ + /* Apply incremental changes already in s->s_edit->incr_change */ } - if (s->s_edit.mv_context) { + if (s->s_edit->mv_context) { /* calculate rotations about keypoint */ - bn_mat_xform_about_pnt(edit, s->s_edit.incr_change, s->s_edit.e_keypoint); + bn_mat_xform_about_pnt(edit, s->s_edit->incr_change, s->s_edit->e_keypoint); /* We want our final matrix (mat) to xform the original solid * to the position of this instance of the solid, perform the * current edit operations, then xform back. - * mat = s->s_edit.e_invmat * edit * s->s_edit.e_mat + * mat = s->s_edit->e_invmat * edit * s->s_edit->e_mat */ - bn_mat_mul(mat1, edit, s->s_edit.e_mat); - bn_mat_mul(mat, s->s_edit.e_invmat, mat1); + bn_mat_mul(mat1, edit, s->s_edit->e_mat); + bn_mat_mul(mat, s->s_edit->e_invmat, mat1); MAT4X3VEC(tgc->h, mat, tgc->h); } else { - MAT4X3VEC(tgc->h, s->s_edit.incr_change, tgc->h); + MAT4X3VEC(tgc->h, s->s_edit->incr_change, tgc->h); } - MAT_IDN(s->s_edit.incr_change); + MAT_IDN(s->s_edit->incr_change); return 0; } @@ -663,17 +663,17 @@ int ecmd_tgc_rot_ab(struct mged_state *s) { struct rt_tgc_internal *tgc = - (struct rt_tgc_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_tgc_internal *)s->s_edit->es_int.idb_ptr; mat_t mat; mat_t mat1; mat_t edit; RT_TGC_CK_MAGIC(tgc); - if (s->s_edit.e_inpara) { - if (s->s_edit.e_inpara != 3) { - bu_vls_printf(s->s_edit.log_str, "ERROR: three arguments needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara) { + if (s->s_edit->e_inpara != 3) { + bu_vls_printf(s->s_edit->log_str, "ERROR: three arguments needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } @@ -683,47 +683,47 @@ ecmd_tgc_rot_ab(struct mged_state *s) * in degrees. First, cancel any existing rotations, * then perform new rotation */ - bn_mat_inv(invsolr, s->s_edit.acc_rot_sol); + bn_mat_inv(invsolr, s->s_edit->acc_rot_sol); /* Build completely new rotation change */ - MAT_IDN(s->s_edit.model_changes); - bn_mat_angles(s->s_edit.model_changes, - s->s_edit.e_para[0], - s->s_edit.e_para[1], - s->s_edit.e_para[2]); - /* Borrow s->s_edit.incr_change matrix here */ - bn_mat_mul(s->s_edit.incr_change, s->s_edit.model_changes, invsolr); - MAT_COPY(s->s_edit.acc_rot_sol, s->s_edit.model_changes); + MAT_IDN(s->s_edit->model_changes); + bn_mat_angles(s->s_edit->model_changes, + s->s_edit->e_para[0], + s->s_edit->e_para[1], + s->s_edit->e_para[2]); + /* Borrow s->s_edit->incr_change matrix here */ + bn_mat_mul(s->s_edit->incr_change, s->s_edit->model_changes, invsolr); + MAT_COPY(s->s_edit->acc_rot_sol, s->s_edit->model_changes); /* Apply new rotation to solid */ /* Clear out solid rotation */ - MAT_IDN(s->s_edit.model_changes); + MAT_IDN(s->s_edit->model_changes); } else { - /* Apply incremental changes already in s->s_edit.incr_change */ + /* Apply incremental changes already in s->s_edit->incr_change */ } - if (s->s_edit.mv_context) { + if (s->s_edit->mv_context) { /* calculate rotations about keypoint */ - bn_mat_xform_about_pnt(edit, s->s_edit.incr_change, s->s_edit.e_keypoint); + bn_mat_xform_about_pnt(edit, s->s_edit->incr_change, s->s_edit->e_keypoint); /* We want our final matrix (mat) to xform the original solid * to the position of this instance of the solid, perform the * current edit operations, then xform back. - * mat = s->s_edit.e_invmat * edit * s->s_edit.e_mat + * mat = s->s_edit->e_invmat * edit * s->s_edit->e_mat */ - bn_mat_mul(mat1, edit, s->s_edit.e_mat); - bn_mat_mul(mat, s->s_edit.e_invmat, mat1); + bn_mat_mul(mat1, edit, s->s_edit->e_mat); + bn_mat_mul(mat, s->s_edit->e_invmat, mat1); MAT4X3VEC(tgc->a, mat, tgc->a); MAT4X3VEC(tgc->b, mat, tgc->b); MAT4X3VEC(tgc->c, mat, tgc->c); MAT4X3VEC(tgc->d, mat, tgc->d); } else { - MAT4X3VEC(tgc->a, s->s_edit.incr_change, tgc->a); - MAT4X3VEC(tgc->b, s->s_edit.incr_change, tgc->b); - MAT4X3VEC(tgc->c, s->s_edit.incr_change, tgc->c); - MAT4X3VEC(tgc->d, s->s_edit.incr_change, tgc->d); + MAT4X3VEC(tgc->a, s->s_edit->incr_change, tgc->a); + MAT4X3VEC(tgc->b, s->s_edit->incr_change, tgc->b); + MAT4X3VEC(tgc->c, s->s_edit->incr_change, tgc->c); + MAT4X3VEC(tgc->d, s->s_edit->incr_change, tgc->d); } - MAT_IDN(s->s_edit.incr_change); + MAT_IDN(s->s_edit->incr_change); return 0; } @@ -733,40 +733,40 @@ void ecmd_tgc_mv_h_mousevec(struct mged_state *s, const vect_t mousevec) { struct rt_tgc_internal *tgc = - (struct rt_tgc_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_tgc_internal *)s->s_edit->es_int.idb_ptr; RT_TGC_CK_MAGIC(tgc); vect_t pos_view = VINIT_ZERO; vect_t tr_temp = VINIT_ZERO; vect_t temp = VINIT_ZERO; - MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit.curr_e_axes_pos); + MAT4X3PNT(pos_view, view_state->vs_gvp->gv_model2view, s->s_edit->curr_e_axes_pos); pos_view[X] = mousevec[X]; pos_view[Y] = mousevec[Y]; /* Do NOT change pos_view[Z] ! */ MAT4X3PNT(temp, view_state->vs_gvp->gv_view2model, pos_view); - MAT4X3PNT(tr_temp, s->s_edit.e_invmat, temp); + MAT4X3PNT(tr_temp, s->s_edit->e_invmat, temp); VSUB2(tgc->h, tr_temp, tgc->v); } static int mged_tgc_pscale(struct mged_state *s, int mode) { - if (s->s_edit.e_inpara > 1) { - bu_vls_printf(s->s_edit.log_str, "ERROR: only one argument needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara > 1) { + bu_vls_printf(s->s_edit->log_str, "ERROR: only one argument needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; switch (mode) { case MENU_TGC_SCALE_H: @@ -813,17 +813,17 @@ mged_tgc_edit(struct mged_state *s, int edflag) switch (edflag) { case SSCALE: /* scale the solid uniformly about its vertex point */ - return mged_generic_sscale(s, &s->s_edit.es_int); + return mged_generic_sscale(s, &s->s_edit->es_int); case STRANS: /* translate solid */ - mged_generic_strans(s, &s->s_edit.es_int); + mged_generic_strans(s, &s->s_edit->es_int); break; case SROT: /* rot solid about vertex */ - mged_generic_srot(s, &s->s_edit.es_int); + mged_generic_srot(s, &s->s_edit->es_int); break; case PSCALE: - return mged_tgc_pscale(s, s->s_edit.edit_menu); + return mged_tgc_pscale(s, s->s_edit->edit_menu); case ECMD_TGC_MV_H: return ecmd_tgc_mv_h(s); case ECMD_TGC_MV_HH: @@ -845,7 +845,7 @@ mged_tgc_edit_xy( ) { vect_t pos_view = VINIT_ZERO; /* Unrotated view space pos */ - struct rt_db_internal *ip = &s->s_edit.es_int; + struct rt_db_internal *ip = &s->s_edit->es_int; switch (edflag) { case SSCALE: @@ -861,7 +861,7 @@ mged_tgc_edit_xy( ecmd_tgc_mv_h_mousevec(s, mousevec); break; default: - bu_vls_printf(s->s_edit.log_str, "%s: XY edit undefined in solid edit mode %d\n", MGED_OBJ[ip->idb_type].ft_label, edflag); + bu_vls_printf(s->s_edit->log_str, "%s: XY edit undefined in solid edit mode %d\n", MGED_OBJ[ip->idb_type].ft_label, edflag); mged_print_result(s, TCL_ERROR); return TCL_ERROR; } diff --git a/src/mged/primitives/edtor.c b/src/mged/primitives/edtor.c index 5c8b0e69e3..3c580807c8 100644 --- a/src/mged/primitives/edtor.c +++ b/src/mged/primitives/edtor.c @@ -43,7 +43,7 @@ static void tor_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg; + s->s_edit->edit_menu = arg; mged_set_edflag(s, PSCALE); set_e_axes_pos(s, 1); @@ -167,15 +167,15 @@ void menu_tor_r1(struct mged_state *s) { struct rt_tor_internal *tor = - (struct rt_tor_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_tor_internal *)s->s_edit->es_int.idb_ptr; fastf_t newrad; RT_TOR_CK_MAGIC(tor); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - newrad = s->s_edit.e_para[0]; + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + newrad = s->s_edit->e_para[0]; } else { - newrad = tor->r_a * s->s_edit.es_scale; + newrad = tor->r_a * s->s_edit->es_scale; } if (newrad < SMALL) newrad = 4*SMALL; if (tor->r_h <= newrad) @@ -187,15 +187,15 @@ void menu_tor_r2(struct mged_state *s) { struct rt_tor_internal *tor = - (struct rt_tor_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_tor_internal *)s->s_edit->es_int.idb_ptr; fastf_t newrad; RT_TOR_CK_MAGIC(tor); - if (s->s_edit.e_inpara) { - /* take s->s_edit.e_mat[15] (path scaling) into account */ - s->s_edit.e_para[0] *= s->s_edit.e_mat[15]; - newrad = s->s_edit.e_para[0]; + if (s->s_edit->e_inpara) { + /* take s->s_edit->e_mat[15] (path scaling) into account */ + s->s_edit->e_para[0] *= s->s_edit->e_mat[15]; + newrad = s->s_edit->e_para[0]; } else { - newrad = tor->r_h * s->s_edit.es_scale; + newrad = tor->r_h * s->s_edit->es_scale; } if (newrad < SMALL) newrad = 4*SMALL; if (newrad <= tor->r_a) @@ -205,22 +205,22 @@ menu_tor_r2(struct mged_state *s) static int mged_tor_pscale(struct mged_state *s, int mode) { - if (s->s_edit.e_inpara > 1) { - bu_vls_printf(s->s_edit.log_str, "ERROR: only one argument needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara > 1) { + bu_vls_printf(s->s_edit->log_str, "ERROR: only one argument needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; switch (mode) { case MENU_TOR_R1: @@ -240,17 +240,17 @@ mged_tor_edit(struct mged_state *s, int edflag) switch (edflag) { case SSCALE: /* scale the solid uniformly about its vertex point */ - return mged_generic_sscale(s, &s->s_edit.es_int); + return mged_generic_sscale(s, &s->s_edit->es_int); case STRANS: /* translate solid */ - mged_generic_strans(s, &s->s_edit.es_int); + mged_generic_strans(s, &s->s_edit->es_int); break; case SROT: /* rot solid about vertex */ - mged_generic_srot(s, &s->s_edit.es_int); + mged_generic_srot(s, &s->s_edit->es_int); break; case PSCALE: - return mged_tor_pscale(s, s->s_edit.edit_menu); + return mged_tor_pscale(s, s->s_edit->edit_menu); } return 0; } diff --git a/src/mged/primitives/edvol.c b/src/mged/primitives/edvol.c index 3cf7c6f6bb..f200aa40cc 100644 --- a/src/mged/primitives/edvol.c +++ b/src/mged/primitives/edvol.c @@ -55,7 +55,7 @@ extern const char * get_file_name(struct mged_state *s, char *str); static void vol_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED(data)) { - s->s_edit.edit_menu = arg; + s->s_edit->edit_menu = arg; switch (arg) { case MENU_VOL_FNAME: @@ -65,25 +65,25 @@ vol_ed(struct mged_state *s, int arg, int UNUSED(a), int UNUSED(b), void *UNUSED mged_set_edflag(s, ECMD_VOL_FSIZE); break; case MENU_VOL_CSIZE: - s->s_edit.edit_flag = ECMD_VOL_CSIZE; - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 0; - s->s_edit.solid_edit_scale = 1; - s->s_edit.solid_edit_pick = 0; + s->s_edit->edit_flag = ECMD_VOL_CSIZE; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 0; + s->s_edit->solid_edit_scale = 1; + s->s_edit->solid_edit_pick = 0; break; case MENU_VOL_THRESH_LO: - s->s_edit.edit_flag = ECMD_VOL_THRESH_LO; - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 0; - s->s_edit.solid_edit_scale = 1; - s->s_edit.solid_edit_pick = 0; + s->s_edit->edit_flag = ECMD_VOL_THRESH_LO; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 0; + s->s_edit->solid_edit_scale = 1; + s->s_edit->solid_edit_pick = 0; break; case MENU_VOL_THRESH_HI: - s->s_edit.edit_flag = ECMD_VOL_THRESH_HI; - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 0; - s->s_edit.solid_edit_scale = 1; - s->s_edit.solid_edit_pick = 0; + s->s_edit->edit_flag = ECMD_VOL_THRESH_HI; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 0; + s->s_edit->solid_edit_scale = 1; + s->s_edit->solid_edit_pick = 0; break; } @@ -111,7 +111,7 @@ mged_vol_menu_item(const struct bn_tol *UNUSED(tol)) void menu_vol_csize(struct mged_state *s) { - bu_log("s->s_edit.es_scale = %g\n", s->s_edit.es_scale); + bu_log("s->s_edit->es_scale = %g\n", s->s_edit->es_scale); } /* set voxel size */ @@ -119,24 +119,24 @@ void ecmd_vol_csize(struct mged_state *s) { struct rt_vol_internal *vol = - (struct rt_vol_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_vol_internal *)s->s_edit->es_int.idb_ptr; RT_VOL_CK_MAGIC(vol); /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; - - if (s->s_edit.e_inpara == 3) { - VMOVE(vol->cellsize, s->s_edit.e_para); - } else if (s->s_edit.e_inpara > 0 && s->s_edit.e_inpara != 3) { - bu_vls_printf(s->s_edit.log_str, "x, y, and z cell sizes are required\n"); + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; + + if (s->s_edit->e_inpara == 3) { + VMOVE(vol->cellsize, s->s_edit->e_para); + } else if (s->s_edit->e_inpara > 0 && s->s_edit->e_inpara != 3) { + bu_vls_printf(s->s_edit->log_str, "x, y, and z cell sizes are required\n"); mged_print_result(s, TCL_ERROR); return; - } else if (s->s_edit.es_scale > 0.0) { - VSCALE(vol->cellsize, vol->cellsize, s->s_edit.es_scale); - s->s_edit.es_scale = 0.0; + } else if (s->s_edit->es_scale > 0.0) { + VSCALE(vol->cellsize, vol->cellsize, s->s_edit->es_scale); + s->s_edit->es_scale = 0.0; } } @@ -145,29 +145,29 @@ void ecmd_vol_fsize(struct mged_state *s) { struct rt_vol_internal *vol = - (struct rt_vol_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_vol_internal *)s->s_edit->es_int.idb_ptr; struct stat stat_buf; b_off_t need_size; RT_VOL_CK_MAGIC(vol); - if (s->s_edit.e_inpara == 3) { + if (s->s_edit->e_inpara == 3) { if (stat(vol->name, &stat_buf)) { - bu_vls_printf(s->s_edit.log_str, "Cannot get status of file %s\n", vol->name); + bu_vls_printf(s->s_edit->log_str, "Cannot get status of file %s\n", vol->name); mged_print_result(s, TCL_ERROR); return; } - need_size = s->s_edit.e_para[0] * s->s_edit.e_para[1] * s->s_edit.e_para[2] * sizeof(unsigned char); + need_size = s->s_edit->e_para[0] * s->s_edit->e_para[1] * s->s_edit->e_para[2] * sizeof(unsigned char); if (stat_buf.st_size < need_size) { - bu_vls_printf(s->s_edit.log_str, "File (%s) is too small, set file name first", vol->name); + bu_vls_printf(s->s_edit->log_str, "File (%s) is too small, set file name first", vol->name); mged_print_result(s, TCL_ERROR); return; } - vol->xdim = s->s_edit.e_para[0]; - vol->ydim = s->s_edit.e_para[1]; - vol->zdim = s->s_edit.e_para[2]; - } else if (s->s_edit.e_inpara > 0) { - bu_vls_printf(s->s_edit.log_str, "x, y, and z file sizes are required\n"); + vol->xdim = s->s_edit->e_para[0]; + vol->ydim = s->s_edit->e_para[1]; + vol->zdim = s->s_edit->e_para[2]; + } else if (s->s_edit->e_inpara > 0) { + bu_vls_printf(s->s_edit->log_str, "x, y, and z file sizes are required\n"); mged_print_result(s, TCL_ERROR); return; } @@ -176,31 +176,31 @@ ecmd_vol_fsize(struct mged_state *s) int ecmd_vol_thresh_lo(struct mged_state *s) { - if (s->s_edit.e_inpara != 1) { - bu_vls_printf(s->s_edit.log_str, "ERROR: only one argument needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara != 1) { + bu_vls_printf(s->s_edit->log_str, "ERROR: only one argument needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } struct rt_vol_internal *vol = - (struct rt_vol_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_vol_internal *)s->s_edit->es_int.idb_ptr; RT_VOL_CK_MAGIC(vol); size_t i = vol->lo; - if (s->s_edit.e_inpara) { - i = s->s_edit.e_para[0]; - } else if (s->s_edit.es_scale > 0.0) { - i = vol->lo * s->s_edit.es_scale; - if (i == vol->lo && s->s_edit.es_scale > 1.0) { + if (s->s_edit->e_inpara) { + i = s->s_edit->e_para[0]; + } else if (s->s_edit->es_scale > 0.0) { + i = vol->lo * s->s_edit->es_scale; + if (i == vol->lo && s->s_edit->es_scale > 1.0) { i++; - } else if (i == vol->lo && s->s_edit.es_scale < 1.0) { + } else if (i == vol->lo && s->s_edit->es_scale < 1.0) { i--; } } @@ -216,31 +216,31 @@ ecmd_vol_thresh_lo(struct mged_state *s) int ecmd_vol_thresh_hi(struct mged_state *s) { - if (s->s_edit.e_inpara != 1) { - bu_vls_printf(s->s_edit.log_str, "ERROR: only one argument needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara != 1) { + bu_vls_printf(s->s_edit->log_str, "ERROR: only one argument needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } struct rt_vol_internal *vol = - (struct rt_vol_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_vol_internal *)s->s_edit->es_int.idb_ptr; RT_VOL_CK_MAGIC(vol); size_t i = vol->hi; - if (s->s_edit.e_inpara) { - i = s->s_edit.e_para[0]; - } else if (s->s_edit.es_scale > 0.0) { - i = vol->hi * s->s_edit.es_scale; - if (i == vol->hi && s->s_edit.es_scale > 1.0) { + if (s->s_edit->e_inpara) { + i = s->s_edit->e_para[0]; + } else if (s->s_edit->es_scale > 0.0) { + i = vol->hi * s->s_edit->es_scale; + if (i == vol->hi && s->s_edit->es_scale > 1.0) { i++; - } else if (i == vol->hi && s->s_edit.es_scale < 1.0) { + } else if (i == vol->hi && s->s_edit->es_scale < 1.0) { i--; } } @@ -257,7 +257,7 @@ void ecmd_vol_fname(struct mged_state *s) { struct rt_vol_internal *vol = - (struct rt_vol_internal *)s->s_edit.es_int.idb_ptr; + (struct rt_vol_internal *)s->s_edit->es_int.idb_ptr; const char *fname; struct stat stat_buf; b_off_t need_size; @@ -268,16 +268,16 @@ ecmd_vol_fname(struct mged_state *s) if (fname) { if (stat(fname, &stat_buf)) { // We were calling Tcl_SetResult here, which reset the result str, so zero out log_str - bu_vls_trunc(s->s_edit.log_str, 0); - bu_vls_printf(s->s_edit.log_str, "Cannot get status of file %s\n", fname); + bu_vls_trunc(s->s_edit->log_str, 0); + bu_vls_printf(s->s_edit->log_str, "Cannot get status of file %s\n", fname); mged_print_result(s, TCL_ERROR); return; } need_size = vol->xdim * vol->ydim * vol->zdim * sizeof(unsigned char); if (stat_buf.st_size < need_size) { // We were calling Tcl_SetResult here, which reset the result str, so zero out log_str - bu_vls_trunc(s->s_edit.log_str, 0); - bu_vls_printf(s->s_edit.log_str, "File (%s) is too small, adjust the file size parameters first", fname); + bu_vls_trunc(s->s_edit->log_str, 0); + bu_vls_printf(s->s_edit->log_str, "File (%s) is too small, adjust the file size parameters first", fname); mged_print_result(s, TCL_ERROR); return; } @@ -288,22 +288,22 @@ ecmd_vol_fname(struct mged_state *s) static int mged_vol_pscale(struct mged_state *s, int mode) { - if (s->s_edit.e_inpara > 1) { - bu_vls_printf(s->s_edit.log_str, "ERROR: only one argument needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara > 1) { + bu_vls_printf(s->s_edit->log_str, "ERROR: only one argument needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (s->s_edit.e_para[0] <= 0.0) { - bu_vls_printf(s->s_edit.log_str, "ERROR: SCALE FACTOR <= 0\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_para[0] <= 0.0) { + bu_vls_printf(s->s_edit->log_str, "ERROR: SCALE FACTOR <= 0\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; switch (mode) { case MENU_VOL_CSIZE: @@ -320,17 +320,17 @@ mged_vol_edit(struct mged_state *s, int edflag) switch (edflag) { case SSCALE: /* scale the solid uniformly about its vertex point */ - return mged_generic_sscale(s, &s->s_edit.es_int); + return mged_generic_sscale(s, &s->s_edit->es_int); case STRANS: /* translate solid */ - mged_generic_strans(s, &s->s_edit.es_int); + mged_generic_strans(s, &s->s_edit->es_int); break; case SROT: /* rot solid about vertex */ - mged_generic_srot(s, &s->s_edit.es_int); + mged_generic_srot(s, &s->s_edit->es_int); break; case PSCALE: - return mged_vol_pscale(s, s->s_edit.edit_menu); + return mged_vol_pscale(s, s->s_edit->edit_menu); case ECMD_VOL_CSIZE: ecmd_vol_csize(s); break; @@ -357,7 +357,7 @@ mged_vol_edit_xy( ) { vect_t pos_view = VINIT_ZERO; /* Unrotated view space pos */ - struct rt_db_internal *ip = &s->s_edit.es_int; + struct rt_db_internal *ip = &s->s_edit->es_int; switch (edflag) { case SSCALE: @@ -372,7 +372,7 @@ mged_vol_edit_xy( mged_generic_strans_xy(&pos_view, s, mousevec); break; default: - bu_vls_printf(s->s_edit.log_str, "%s: XY edit undefined in solid edit mode %d\n", MGED_OBJ[ip->idb_type].ft_label, edflag); + bu_vls_printf(s->s_edit->log_str, "%s: XY edit undefined in solid edit mode %d\n", MGED_OBJ[ip->idb_type].ft_label, edflag); mged_print_result(s, TCL_ERROR); return TCL_ERROR; } diff --git a/src/mged/primitives/generic.c b/src/mged/primitives/generic.c index ec83d0b8e3..3fc4f4d72f 100644 --- a/src/mged/primitives/generic.c +++ b/src/mged/primitives/generic.c @@ -61,25 +61,25 @@ mged_generic_sscale( { mat_t mat, mat1, scalemat; - if (s->s_edit.e_inpara > 1) { - bu_vls_printf(s->s_edit.log_str, "ERROR: only one argument needed\n"); - s->s_edit.e_inpara = 0; + if (s->s_edit->e_inpara > 1) { + bu_vls_printf(s->s_edit->log_str, "ERROR: only one argument needed\n"); + s->s_edit->e_inpara = 0; return TCL_ERROR; } - if (s->s_edit.e_inpara) { + if (s->s_edit->e_inpara) { /* accumulate the scale factor */ - s->s_edit.es_scale = s->s_edit.e_para[0] / s->s_edit.acc_sc_sol; - s->s_edit.acc_sc_sol = s->s_edit.e_para[0]; + s->s_edit->es_scale = s->s_edit->e_para[0] / s->s_edit->acc_sc_sol; + s->s_edit->acc_sc_sol = s->s_edit->e_para[0]; } - bn_mat_scale_about_pnt(scalemat, s->s_edit.e_keypoint, s->s_edit.es_scale); - bn_mat_mul(mat1, scalemat, s->s_edit.e_mat); - bn_mat_mul(mat, s->s_edit.e_invmat, mat1); + bn_mat_scale_about_pnt(scalemat, s->s_edit->e_keypoint, s->s_edit->es_scale); + bn_mat_mul(mat1, scalemat, s->s_edit->e_mat); + bn_mat_mul(mat, s->s_edit->e_invmat, mat1); transform_editing_solid(s, ip, mat, ip, 1); /* reset solid scale factor */ - s->s_edit.es_scale = 1.0; + s->s_edit->es_scale = 1.0; return 0; } @@ -94,30 +94,30 @@ mged_generic_strans( static vect_t work; vect_t delta; - if (s->s_edit.e_inpara) { + if (s->s_edit->e_inpara) { /* Need vector from current vertex/keypoint * to desired new location. */ /* must convert to base units */ - s->s_edit.e_para[0] *= s->dbip->dbi_local2base; - s->s_edit.e_para[1] *= s->dbip->dbi_local2base; - s->s_edit.e_para[2] *= s->dbip->dbi_local2base; + s->s_edit->e_para[0] *= s->dbip->dbi_local2base; + s->s_edit->e_para[1] *= s->dbip->dbi_local2base; + s->s_edit->e_para[2] *= s->dbip->dbi_local2base; - if (s->s_edit.mv_context) { - /* move solid so that s->s_edit.e_keypoint is at position s->s_edit.e_para */ + if (s->s_edit->mv_context) { + /* move solid so that s->s_edit->e_keypoint is at position s->s_edit->e_para */ vect_t raw_para; - MAT4X3PNT(raw_para, s->s_edit.e_invmat, s->s_edit.e_para); - MAT4X3PNT(work, s->s_edit.e_invmat, s->s_edit.e_keypoint); + MAT4X3PNT(raw_para, s->s_edit->e_invmat, s->s_edit->e_para); + MAT4X3PNT(work, s->s_edit->e_invmat, s->s_edit->e_keypoint); VSUB2(delta, work, raw_para); MAT_IDN(mat); MAT_DELTAS_VEC_NEG(mat, delta); } else { - /* move solid to position s->s_edit.e_para */ - /* move solid to position s->s_edit.e_para */ - MAT4X3PNT(work, s->s_edit.e_invmat, s->s_edit.e_keypoint); - VSUB2(delta, work, s->s_edit.e_para); + /* move solid to position s->s_edit->e_para */ + /* move solid to position s->s_edit->e_para */ + MAT4X3PNT(work, s->s_edit->e_invmat, s->s_edit->e_keypoint); + VSUB2(delta, work, s->s_edit->e_para); MAT_IDN(mat); MAT_DELTAS_VEC_NEG(mat, delta); } @@ -135,30 +135,30 @@ mged_generic_srot( point_t rot_point; mat_t mat, mat1, edit; - if (s->s_edit.e_inpara) { + if (s->s_edit->e_inpara) { static mat_t invsolr; /* * Keyboard parameters: absolute x, y, z rotations, * in degrees. First, cancel any existing rotations, * then perform new rotation */ - bn_mat_inv(invsolr, s->s_edit.acc_rot_sol); + bn_mat_inv(invsolr, s->s_edit->acc_rot_sol); /* Build completely new rotation change */ - MAT_IDN(s->s_edit.model_changes); - bn_mat_angles(s->s_edit.model_changes, - s->s_edit.e_para[0], - s->s_edit.e_para[1], - s->s_edit.e_para[2]); - /* Borrow s->s_edit.incr_change matrix here */ - bn_mat_mul(s->s_edit.incr_change, s->s_edit.model_changes, invsolr); - MAT_COPY(s->s_edit.acc_rot_sol, s->s_edit.model_changes); + MAT_IDN(s->s_edit->model_changes); + bn_mat_angles(s->s_edit->model_changes, + s->s_edit->e_para[0], + s->s_edit->e_para[1], + s->s_edit->e_para[2]); + /* Borrow s->s_edit->incr_change matrix here */ + bn_mat_mul(s->s_edit->incr_change, s->s_edit->model_changes, invsolr); + MAT_COPY(s->s_edit->acc_rot_sol, s->s_edit->model_changes); /* Apply new rotation to solid */ /* Clear out solid rotation */ - MAT_IDN(s->s_edit.model_changes); + MAT_IDN(s->s_edit->model_changes); } else { - /* Apply incremental changes already in s->s_edit.incr_change */ + /* Apply incremental changes already in s->s_edit->incr_change */ } /* Apply changes to solid */ /* xlate keypoint to origin, rotate, then put back. */ @@ -176,28 +176,28 @@ mged_generic_srot( break; case 'k': /* Key Point */ default: - VMOVE(rot_point, s->s_edit.e_keypoint); + VMOVE(rot_point, s->s_edit->e_keypoint); break; } - if (s->s_edit.mv_context) { + if (s->s_edit->mv_context) { /* calculate rotations about keypoint */ - bn_mat_xform_about_pnt(edit, s->s_edit.incr_change, rot_point); + bn_mat_xform_about_pnt(edit, s->s_edit->incr_change, rot_point); /* We want our final matrix (mat) to xform the original solid * to the position of this instance of the solid, perform the * current edit operations, then xform back. - * mat = s->s_edit.e_invmat * edit * s->s_edit.e_mat + * mat = s->s_edit->e_invmat * edit * s->s_edit->e_mat */ - bn_mat_mul(mat1, edit, s->s_edit.e_mat); - bn_mat_mul(mat, s->s_edit.e_invmat, mat1); + bn_mat_mul(mat1, edit, s->s_edit->e_mat); + bn_mat_mul(mat, s->s_edit->e_invmat, mat1); } else { - MAT4X3PNT(work, s->s_edit.e_invmat, rot_point); - bn_mat_xform_about_pnt(mat, s->s_edit.incr_change, work); + MAT4X3PNT(work, s->s_edit->e_invmat, rot_point); + bn_mat_xform_about_pnt(mat, s->s_edit->incr_change, work); } transform_editing_solid(s, ip, mat, ip, 1); - MAT_IDN(s->s_edit.incr_change); + MAT_IDN(s->s_edit->incr_change); } int @@ -232,15 +232,15 @@ mged_generic_edit( switch (edflag) { case SSCALE: /* scale the solid uniformly about its vertex point */ - mged_generic_sscale(s, &s->s_edit.es_int); + mged_generic_sscale(s, &s->s_edit->es_int); break; case STRANS: /* translate solid */ - mged_generic_strans(s, &s->s_edit.es_int); + mged_generic_strans(s, &s->s_edit->es_int); break; case SROT: /* rot solid about vertex */ - mged_generic_srot(s, &s->s_edit.es_int); + mged_generic_srot(s, &s->s_edit->es_int); break; } return 0; @@ -253,17 +253,17 @@ mged_generic_sscale_xy( ) { /* use mouse to get a scale factor */ - s->s_edit.es_scale = 1.0 + 0.25 * ((fastf_t) + s->s_edit->es_scale = 1.0 + 0.25 * ((fastf_t) (mousevec[Y] > 0 ? mousevec[Y] : -mousevec[Y])); if (mousevec[Y] <= 0) - s->s_edit.es_scale = 1.0 / s->s_edit.es_scale; + s->s_edit->es_scale = 1.0 / s->s_edit->es_scale; /* accumulate scale factor */ - s->s_edit.acc_sc_sol *= s->s_edit.es_scale; + s->s_edit->acc_sc_sol *= s->s_edit->es_scale; - s->s_edit.edit_absolute_scale = s->s_edit.acc_sc_sol - 1.0; - if (s->s_edit.edit_absolute_scale > 0) - s->s_edit.edit_absolute_scale /= 3.0; + s->s_edit->edit_absolute_scale = s->s_edit->acc_sc_sol - 1.0; + if (s->s_edit->edit_absolute_scale > 0) + s->s_edit->edit_absolute_scale /= 3.0; } /* @@ -281,11 +281,11 @@ mged_generic_strans_xy(vect_t *pos_view, { point_t pt; vect_t delta; - vect_t raw_kp = VINIT_ZERO; /* s->s_edit.e_keypoint with s->s_edit.e_invmat applied */ + vect_t raw_kp = VINIT_ZERO; /* s->s_edit->e_keypoint with s->s_edit->e_invmat applied */ vect_t raw_mp = VINIT_ZERO; /* raw model position */ mat_t mat; - MAT4X3PNT((*pos_view), view_state->vs_gvp->gv_model2view, s->s_edit.curr_e_axes_pos); + MAT4X3PNT((*pos_view), view_state->vs_gvp->gv_model2view, s->s_edit->curr_e_axes_pos); (*pos_view)[X] = mousevec[X]; (*pos_view)[Y] = mousevec[Y]; MAT4X3PNT(pt, view_state->vs_gvp->gv_view2model, (*pos_view)); @@ -293,12 +293,12 @@ mged_generic_strans_xy(vect_t *pos_view, /* Need vector from current vertex/keypoint * to desired new location. */ - MAT4X3PNT(raw_mp, s->s_edit.e_invmat, pt); - MAT4X3PNT(raw_kp, s->s_edit.e_invmat, s->s_edit.curr_e_axes_pos); + MAT4X3PNT(raw_mp, s->s_edit->e_invmat, pt); + MAT4X3PNT(raw_kp, s->s_edit->e_invmat, s->s_edit->curr_e_axes_pos); VSUB2(delta, raw_kp, raw_mp); MAT_IDN(mat); MAT_DELTAS_VEC_NEG(mat, delta); - transform_editing_solid(s, &s->s_edit.es_int, mat, &s->s_edit.es_int, 1); + transform_editing_solid(s, &s->s_edit->es_int, mat, &s->s_edit->es_int, 1); } void @@ -310,13 +310,13 @@ update_edit_absolute_tran(struct mged_state *s, vect_t view_pos) fastf_t inv_Viewscale = 1/view_state->vs_gvp->gv_scale; MAT4X3PNT(model_pos, view_state->vs_gvp->gv_view2model, view_pos); - VSUB2(diff, model_pos, s->s_edit.e_axes_pos); - VSCALE(s->s_edit.edit_absolute_model_tran, diff, inv_Viewscale); - VMOVE(s->s_edit.last_edit_absolute_model_tran, s->s_edit.edit_absolute_model_tran); + VSUB2(diff, model_pos, s->s_edit->e_axes_pos); + VSCALE(s->s_edit->edit_absolute_model_tran, diff, inv_Viewscale); + VMOVE(s->s_edit->last_edit_absolute_model_tran, s->s_edit->edit_absolute_model_tran); - MAT4X3PNT(ea_view_pos, view_state->vs_gvp->gv_model2view, s->s_edit.e_axes_pos); - VSUB2(s->s_edit.edit_absolute_view_tran, view_pos, ea_view_pos); - VMOVE(s->s_edit.last_edit_absolute_view_tran, s->s_edit.edit_absolute_view_tran); + MAT4X3PNT(ea_view_pos, view_state->vs_gvp->gv_model2view, s->s_edit->e_axes_pos); + VSUB2(s->s_edit->edit_absolute_view_tran, view_pos, ea_view_pos); + VMOVE(s->s_edit->last_edit_absolute_view_tran, s->s_edit->edit_absolute_view_tran); } int @@ -327,7 +327,7 @@ mged_generic_edit_xy( ) { vect_t pos_view = VINIT_ZERO; /* Unrotated view space pos */ - struct rt_db_internal *ip = &s->s_edit.es_int; + struct rt_db_internal *ip = &s->s_edit->es_int; switch (edflag) { case SSCALE: @@ -340,7 +340,7 @@ mged_generic_edit_xy( mged_generic_strans_xy(&pos_view, s, mousevec); break; default: - bu_vls_printf(s->s_edit.log_str, "%s: XY edit undefined in solid edit mode %d\n", MGED_OBJ[ip->idb_type].ft_label, edflag); + bu_vls_printf(s->s_edit->log_str, "%s: XY edit undefined in solid edit mode %d\n", MGED_OBJ[ip->idb_type].ft_label, edflag); mged_print_result(s, TCL_ERROR); return TCL_ERROR; } @@ -358,30 +358,30 @@ mged_generic_edit_xy( void mged_set_edflag(struct mged_state *s, int edflag) { - s->s_edit.edit_flag = edflag; - s->s_edit.solid_edit_pick = 0; + s->s_edit->edit_flag = edflag; + s->s_edit->solid_edit_pick = 0; switch (edflag) { case SROT: - s->s_edit.solid_edit_rotate = 1; - s->s_edit.solid_edit_translate = 0; - s->s_edit.solid_edit_scale = 0; + s->s_edit->solid_edit_rotate = 1; + s->s_edit->solid_edit_translate = 0; + s->s_edit->solid_edit_scale = 0; break; case STRANS: - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 1; - s->s_edit.solid_edit_scale = 0; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 1; + s->s_edit->solid_edit_scale = 0; break; case SSCALE: case PSCALE: - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 0; - s->s_edit.solid_edit_scale = 1; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 0; + s->s_edit->solid_edit_scale = 1; break; default: - s->s_edit.solid_edit_rotate = 0; - s->s_edit.solid_edit_translate = 0; - s->s_edit.solid_edit_scale = 0; + s->s_edit->solid_edit_rotate = 0; + s->s_edit->solid_edit_translate = 0; + s->s_edit->solid_edit_scale = 0; break; } } diff --git a/src/mged/primitives/table.cpp b/src/mged/primitives/table.cpp index 7a92f317e8..dec94495fc 100644 --- a/src/mged/primitives/table.cpp +++ b/src/mged/primitives/table.cpp @@ -110,7 +110,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_TOR", "tor", NULL, /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_generic_keypoint), /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ MGEDFUNCTAB_FUNC_WRITE_PARAMS_CAST(mged_tor_write_params), /* write_params */ MGEDFUNCTAB_FUNC_READ_PARAMS_CAST(mged_tor_read_params), /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_tor_edit), /* edit */ @@ -126,7 +126,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_TGC", "tgc", NULL, /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_generic_keypoint), /* keypoint */ - MGEDFUNCTAB_FUNC_E_AXES_POS_CAST(mged_tgc_e_axes_pos), /* s->s_edit.e_axes_pos */ + MGEDFUNCTAB_FUNC_E_AXES_POS_CAST(mged_tgc_e_axes_pos), /* s->s_edit->e_axes_pos */ MGEDFUNCTAB_FUNC_WRITE_PARAMS_CAST(mged_tgc_write_params), /* write_params */ MGEDFUNCTAB_FUNC_READ_PARAMS_CAST(mged_tgc_read_params), /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_tgc_edit), /* edit */ @@ -142,7 +142,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_ELL", "ell", NULL, /* label */ NULL, /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ MGEDFUNCTAB_FUNC_WRITE_PARAMS_CAST(mged_ell_write_params), /* write_params */ MGEDFUNCTAB_FUNC_READ_PARAMS_CAST(mged_ell_read_params), /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_ell_edit), /* edit */ @@ -158,7 +158,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_ARB8", "arb8", NULL, /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_arb_keypoint), /* keypoint */ - MGEDFUNCTAB_FUNC_E_AXES_POS_CAST(mged_arb_e_axes_pos), /* s->s_edit.e_axes_pos */ + MGEDFUNCTAB_FUNC_E_AXES_POS_CAST(mged_arb_e_axes_pos), /* s->s_edit->e_axes_pos */ MGEDFUNCTAB_FUNC_WRITE_PARAMS_CAST(mged_arb_write_params), /* write_params */ MGEDFUNCTAB_FUNC_READ_PARAMS_CAST(mged_arb_read_params), /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_arb_edit), /* edit */ @@ -174,7 +174,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_ARS", "ars", MGEDFUNCTAB_FUNC_LABELS_CAST(mged_ars_labels), /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_ars_keypoint), /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_ars_edit), /* edit */ @@ -190,7 +190,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_HALF", "half", NULL, /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_generic_keypoint), /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ MGEDFUNCTAB_FUNC_WRITE_PARAMS_CAST(mged_hlf_write_params), /* write_params */ MGEDFUNCTAB_FUNC_READ_PARAMS_CAST(mged_hlf_read_params), /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_generic_edit), /* edit */ @@ -206,7 +206,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_REC", "rec", NULL, /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_generic_keypoint), /* keypoint */ - MGEDFUNCTAB_FUNC_E_AXES_POS_CAST(mged_tgc_e_axes_pos), /* s->s_edit.e_axes_pos */ + MGEDFUNCTAB_FUNC_E_AXES_POS_CAST(mged_tgc_e_axes_pos), /* s->s_edit->e_axes_pos */ MGEDFUNCTAB_FUNC_WRITE_PARAMS_CAST(mged_tgc_write_params), /* write_params */ MGEDFUNCTAB_FUNC_READ_PARAMS_CAST(mged_tgc_read_params), /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_tgc_edit), /* edit */ @@ -222,7 +222,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_POLY", "poly", NULL, /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_generic_keypoint), /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_generic_edit), /* edit */ @@ -238,7 +238,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_BSPLINE", "bspline", MGEDFUNCTAB_FUNC_LABELS_CAST(mged_bspline_labels), /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_bspline_keypoint), /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_bspline_edit), /* edit */ @@ -254,7 +254,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_SPH", "sph", NULL, /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_generic_keypoint), /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ MGEDFUNCTAB_FUNC_WRITE_PARAMS_CAST(mged_ell_write_params), /* write_params */ MGEDFUNCTAB_FUNC_READ_PARAMS_CAST(mged_ell_read_params), /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_ell_edit), /* edit */ @@ -270,7 +270,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_NMG", "nmg", MGEDFUNCTAB_FUNC_LABELS_CAST(mged_nmg_labels), /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_nmg_keypoint), /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_nmg_edit), /* edit */ @@ -286,7 +286,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_EBM", "ebm", NULL, /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_generic_keypoint), /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_ebm_edit), /* edit */ @@ -302,7 +302,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_VOL", "vol", NULL, /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_generic_keypoint), /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_vol_edit), /* edit */ @@ -318,7 +318,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_ARBN", "arbn", NULL, /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_generic_keypoint), /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_generic_edit), /* edit */ @@ -334,7 +334,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_PIPE", "pipe", MGEDFUNCTAB_FUNC_LABELS_CAST(mged_pipe_labels), /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_pipe_keypoint), /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_pipe_edit), /* edit */ @@ -350,7 +350,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_PARTICLE", "part", NULL, /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_generic_keypoint), /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ MGEDFUNCTAB_FUNC_WRITE_PARAMS_CAST(mged_part_write_params), /* write_params */ MGEDFUNCTAB_FUNC_READ_PARAMS_CAST(mged_part_read_params), /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_part_edit), /* edit */ @@ -366,7 +366,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_RPC", "rpc", NULL, /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_generic_keypoint), /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ MGEDFUNCTAB_FUNC_WRITE_PARAMS_CAST(mged_rpc_write_params), /* write_params */ MGEDFUNCTAB_FUNC_READ_PARAMS_CAST(mged_rpc_read_params), /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_rpc_edit), /* edit */ @@ -382,7 +382,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_RHC", "rhc", NULL, /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_generic_keypoint), /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ MGEDFUNCTAB_FUNC_WRITE_PARAMS_CAST(mged_rhc_write_params), /* write_params */ MGEDFUNCTAB_FUNC_READ_PARAMS_CAST(mged_rhc_read_params), /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_rhc_edit), /* edit */ @@ -398,7 +398,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_EPA", "epa", NULL, /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_generic_keypoint), /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ MGEDFUNCTAB_FUNC_WRITE_PARAMS_CAST(mged_epa_write_params), /* write_params */ MGEDFUNCTAB_FUNC_READ_PARAMS_CAST(mged_epa_read_params), /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_epa_edit), /* edit */ @@ -414,7 +414,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_EHY", "ehy", NULL, /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_generic_keypoint), /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ MGEDFUNCTAB_FUNC_WRITE_PARAMS_CAST(mged_ehy_write_params), /* write_params */ MGEDFUNCTAB_FUNC_READ_PARAMS_CAST(mged_ehy_read_params), /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_ehy_edit), /* edit */ @@ -430,7 +430,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_ETO", "eto", NULL, /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_generic_keypoint), /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ MGEDFUNCTAB_FUNC_WRITE_PARAMS_CAST(mged_eto_write_params), /* write_params */ MGEDFUNCTAB_FUNC_READ_PARAMS_CAST(mged_eto_read_params), /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_eto_edit), /* edit */ @@ -446,7 +446,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_GRIP", "grip", NULL, /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_grp_keypoint), /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ MGEDFUNCTAB_FUNC_WRITE_PARAMS_CAST(mged_grp_write_params), /* write_params */ MGEDFUNCTAB_FUNC_READ_PARAMS_CAST(mged_grp_read_params), /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_generic_edit), /* edit */ @@ -462,7 +462,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_JOINT", "joint", NULL, /* label */ NULL, /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_generic_edit), /* edit */ @@ -478,7 +478,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_HF", "hf", NULL, /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_generic_keypoint), /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_generic_edit), /* edit */ @@ -494,7 +494,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_DSP", "dsp", NULL, /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_generic_keypoint), /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_dsp_edit), /* edit */ @@ -510,7 +510,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_SKETCH", "sketch", NULL, /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_generic_keypoint), /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_generic_edit), /* edit */ @@ -526,7 +526,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_EXTRUDE", "extrude", NULL, /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_extrude_keypoint), /* keypoint */ - MGEDFUNCTAB_FUNC_E_AXES_POS_CAST(mged_extrude_e_axes_pos), /* s->s_edit.e_axes_pos */ + MGEDFUNCTAB_FUNC_E_AXES_POS_CAST(mged_extrude_e_axes_pos), /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_extrude_edit), /* edit */ @@ -542,7 +542,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_SUBMODEL", "submodel", NULL, /* label */ NULL, /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_generic_edit), /* edit */ @@ -558,7 +558,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_CLINE", "cline", NULL, /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_generic_keypoint), /* keypoint */ - MGEDFUNCTAB_FUNC_E_AXES_POS_CAST(mged_cline_e_axes_pos), /* s->s_edit.e_axes_pos */ + MGEDFUNCTAB_FUNC_E_AXES_POS_CAST(mged_cline_e_axes_pos), /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_cline_edit), /* edit */ @@ -574,7 +574,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_BOT", "bot", MGEDFUNCTAB_FUNC_LABELS_CAST(mged_bot_labels), /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_bot_keypoint), /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_bot_edit), /* edit */ @@ -590,7 +590,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_COMBINATION", "comb", NULL, /* label */ NULL, /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ NULL, /* edit */ @@ -608,7 +608,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_UNUSED1", "UNUSED1", NULL, /* label */ NULL, /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ NULL, /* edit */ @@ -624,7 +624,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_BINUNIF", "binunif", NULL, /* label */ NULL, /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ NULL, /* edit */ @@ -642,7 +642,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_UNUSED2", "UNUSED2", NULL, /* label */ NULL, /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ NULL, /* edit */ @@ -658,7 +658,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_SUPERELL", "superell", NULL, /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_generic_keypoint), /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ MGEDFUNCTAB_FUNC_WRITE_PARAMS_CAST(mged_superell_write_params), /* write_params */ MGEDFUNCTAB_FUNC_READ_PARAMS_CAST(mged_superell_read_params), /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_superell_edit), /* edit */ @@ -674,7 +674,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_METABALL", "metaball", MGEDFUNCTAB_FUNC_LABELS_CAST(mged_metaball_labels), /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_metaball_keypoint), /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_metaball_edit), /* edit */ @@ -690,7 +690,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_BREP", "brep", NULL, /* label */ NULL, /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_generic_edit), /* edit */ @@ -706,7 +706,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_HYP", "hyp", NULL, /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_generic_keypoint), /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ MGEDFUNCTAB_FUNC_WRITE_PARAMS_CAST(mged_hyp_write_params), /* write_params */ MGEDFUNCTAB_FUNC_READ_PARAMS_CAST(mged_hyp_read_params), /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_hyp_edit), /* edit */ @@ -722,7 +722,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_CONSTRAINT", "constrnt", NULL, /* label */ NULL, /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_generic_edit), /* edit */ @@ -738,7 +738,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_REVOLVE", "revolve", NULL, /* label */ NULL, /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_generic_edit), /* edit */ @@ -754,7 +754,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_PNTS", "pnts", NULL, /* label */ NULL, /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_generic_edit), /* edit */ @@ -770,7 +770,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_ANNOT", "annot", NULL, /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_generic_keypoint), /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_generic_edit), /* edit */ @@ -786,7 +786,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_HRT", "hrt", NULL, /* label */ NULL, /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_generic_edit), /* edit */ @@ -803,7 +803,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_DATUM", "datum", NULL, /* label */ MGEDFUNCTAB_FUNC_KEYPOINT_CAST(mged_generic_keypoint), /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ MGEDFUNCTAB_FUNC_WRITE_PARAMS_CAST(mged_datum_write_params), /* write_params */ MGEDFUNCTAB_FUNC_READ_PARAMS_CAST(mged_datum_read_params), /* read_params */ MGEDFUNCTAB_FUNC_EDIT_CAST(mged_generic_edit), /* edit */ @@ -820,7 +820,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_SCRIPT", "script", NULL, /* label */ NULL, /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ NULL, /* edit */ @@ -836,7 +836,7 @@ const struct mged_functab MGED_OBJ[] = { RT_FUNCTAB_MAGIC, "ID_MATERIAL", "material", NULL, /* label */ NULL, /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ NULL, /* edit */ @@ -852,7 +852,7 @@ const struct mged_functab MGED_OBJ[] = { 0L, ">ID_MAXIMUM", ">id_max", NULL, /* label */ NULL, /* keypoint */ - NULL, /* s->s_edit.e_axes_pos */ + NULL, /* s->s_edit->e_axes_pos */ NULL, /* write_params */ NULL, /* read_params */ NULL, /* edit */ diff --git a/src/mged/scroll.c b/src/mged/scroll.c index 5160e42b4d..df5f2d077c 100644 --- a/src/mged/scroll.c +++ b/src/mged/scroll.c @@ -325,14 +325,14 @@ scroll_display(struct mged_state *s, int y_top) if (mged_variables->mv_rateknobs) f = s->edit_state.edit_rate_model_tran[X]; else - f = s->s_edit.edit_absolute_model_tran[X]; + f = s->s_edit->edit_absolute_model_tran[X]; break; case 'v': default: if (mged_variables->mv_rateknobs) f = s->edit_state.edit_rate_view_tran[X]; else - f = s->s_edit.edit_absolute_view_tran[X]; + f = s->s_edit->edit_absolute_view_tran[X]; break; } @@ -376,13 +376,13 @@ scroll_display(struct mged_state *s, int y_top) if (mged_variables->mv_rateknobs) f = s->edit_state.edit_rate_model_tran[Y]; else - f = s->s_edit.edit_absolute_model_tran[Y]; + f = s->s_edit->edit_absolute_model_tran[Y]; break; case 'v': if (mged_variables->mv_rateknobs) f = s->edit_state.edit_rate_view_tran[Y]; else - f = s->s_edit.edit_absolute_view_tran[Y]; + f = s->s_edit->edit_absolute_view_tran[Y]; break; } @@ -426,13 +426,13 @@ scroll_display(struct mged_state *s, int y_top) if (mged_variables->mv_rateknobs) f = s->edit_state.edit_rate_model_tran[Z]; else - f = s->s_edit.edit_absolute_model_tran[Z]; + f = s->s_edit->edit_absolute_model_tran[Z]; break; case 'v': if (mged_variables->mv_rateknobs) f = s->edit_state.edit_rate_view_tran[Z]; else - f = s->s_edit.edit_absolute_view_tran[Z]; + f = s->s_edit->edit_absolute_view_tran[Z]; break; } @@ -473,7 +473,7 @@ scroll_display(struct mged_state *s, int y_top) if (mged_variables->mv_rateknobs) f = s->edit_state.edit_rate_scale; else - f = s->s_edit.edit_absolute_scale; + f = s->s_edit->edit_absolute_scale; dm_set_fg(DMP, color_scheme->cs_slider_text1[0], diff --git a/src/mged/sedit.h b/src/mged/sedit.h index 21f25d24b5..8a8e466a1b 100644 --- a/src/mged/sedit.h +++ b/src/mged/sedit.h @@ -46,13 +46,13 @@ #define PSCALE 4 /* Scale one solid parameter by scalar */ #define SEDIT_ROTATE (s->edit_state.global_editing_state == ST_S_EDIT && \ - s->s_edit.solid_edit_rotate) + s->s_edit->solid_edit_rotate) #define SEDIT_TRAN (s->edit_state.global_editing_state == ST_S_EDIT && \ - s->s_edit.solid_edit_translate) + s->s_edit->solid_edit_translate) #define SEDIT_SCALE (s->edit_state.global_editing_state == ST_S_EDIT && \ - s->s_edit.solid_edit_scale) + s->s_edit->solid_edit_scale) #define SEDIT_PICK (s->edit_state.global_editing_state == ST_S_EDIT && \ - s->s_edit.solid_edit_pick) + s->s_edit->solid_edit_pick) #define OEDIT_ROTATE (s->edit_state.global_editing_state == ST_O_EDIT && \ edobj == BE_O_ROTATE) diff --git a/src/mged/set.c b/src/mged/set.c index 67f543d204..8941797442 100644 --- a/src/mged/set.c +++ b/src/mged/set.c @@ -226,7 +226,7 @@ write_var(ClientData clientData, Tcl_Interp *interp, const char *name1, const ch * editing container is dynamically created and destroyed, we'll have to first check * for s_edit before doing this assignment (and always initialize it after creating an * s_edit instance.) */ - s->s_edit.mv_context = mged_variables->mv_context; + s->s_edit->mv_context = mged_variables->mv_context; bu_vls_free(&str); return read_var(clientData, interp, name1, name2, @@ -262,7 +262,7 @@ unset_var(ClientData clientData, Tcl_Interp *interp, const char *name1, const ch read_var(clientData, interp, name1, name2, (flags&(~TCL_TRACE_UNSETS))|TCL_TRACE_READS); - MGED_STATE->s_edit.mv_context = MGED_STATE->mged_curr_dm->dm_mged_variables->mv_context; + MGED_STATE->s_edit->mv_context = MGED_STATE->mged_curr_dm->dm_mged_variables->mv_context; return NULL; } @@ -292,7 +292,7 @@ mged_variable_setup(struct mged_state *s) (Tcl_VarTraceProc *)unset_var, (ClientData)sp); } - s->s_edit.mv_context = mged_variables->mv_context; + s->s_edit->mv_context = mged_variables->mv_context; } @@ -318,7 +318,7 @@ f_set(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[]) Tcl_AppendResult(interp, bu_vls_addr(&vls), (char *)NULL); bu_vls_free(&vls); - s->s_edit.mv_context = mged_variables->mv_context; + s->s_edit->mv_context = mged_variables->mv_context; return TCL_OK; } diff --git a/src/mged/tedit.c b/src/mged/tedit.c index 772f4c6581..7a801e567f 100644 --- a/src/mged/tedit.c +++ b/src/mged/tedit.c @@ -159,7 +159,7 @@ writesolid(struct mged_state *s) CHECK_DBI_NULL; - struct rt_db_internal *ip = &s->s_edit.es_int; + struct rt_db_internal *ip = &s->s_edit->es_int; if (!MGED_OBJ[ip->idb_type].ft_write_params) { Tcl_AppendResult(s->interp, "Cannot text edit this solid type\n", (char *)NULL); return 1; @@ -179,7 +179,7 @@ readsolid(struct mged_state *s) { CHECK_DBI_NULL; - struct rt_db_internal *ip = &s->s_edit.es_int; + struct rt_db_internal *ip = &s->s_edit->es_int; if (!MGED_OBJ[ip->idb_type].ft_read_params) { Tcl_AppendResult(s->interp, "Cannot text edit this solid type\n", (char *)NULL); diff --git a/src/mged/titles.c b/src/mged/titles.c index 7f320f9052..b7da3f8f32 100644 --- a/src/mged/titles.c +++ b/src/mged/titles.c @@ -73,7 +73,7 @@ create_text_overlay(struct mged_state *s, struct bu_vls *vp) * Check if the illuminated solid still exists or it has been killed * before Accept was clicked. */ - if (s->s_edit.edit_flag >= 0 && illump != NULL && illump->s_u_data != NULL) { + if (s->s_edit->edit_flag >= 0 && illump != NULL && illump->s_u_data != NULL) { struct ged_bv_data *bdata = (struct ged_bv_data *)illump->s_u_data; dp = LAST_SOLID(bdata); @@ -82,7 +82,7 @@ create_text_overlay(struct mged_state *s, struct bu_vls *vp) bu_vls_strcat(vp, dp->d_namep); bu_vls_strcat(vp, ": "); - vls_solid(s, vp, &s->s_edit.es_int, bn_mat_identity); + vls_solid(s, vp, &s->s_edit->es_int, bn_mat_identity); if (bdata->s_fullpath.fp_len > 1) { bu_vls_strcat(vp, "\n** PATH -- "); @@ -90,7 +90,7 @@ create_text_overlay(struct mged_state *s, struct bu_vls *vp) bu_vls_strcat(vp, ": "); /* print the evaluated (path) solid parameters */ - vls_solid(s, vp, &s->s_edit.es_int, s->s_edit.e_mat); + vls_solid(s, vp, &s->s_edit->es_int, s->s_edit->e_mat); } } @@ -107,9 +107,9 @@ create_text_overlay(struct mged_state *s, struct bu_vls *vp) mat_t new_mat; /* NOT an evaluated region */ /* object edit option selected */ - bn_mat_mul(new_mat, s->s_edit.model_changes, s->s_edit.e_mat); + bn_mat_mul(new_mat, s->s_edit->model_changes, s->s_edit->e_mat); - vls_solid(s, vp, &s->s_edit.es_int, new_mat); + vls_solid(s, vp, &s->s_edit->es_int, new_mat); } } @@ -338,22 +338,22 @@ dotitles(struct mged_state *s, struct bu_vls *overlay_vls) dm_set_line_attr(DMP, mged_variables->mv_linewidth, 0); /* Label the vertices of the edited solid */ - if (s->s_edit.edit_flag >= 0 || (s->edit_state.global_editing_state == ST_O_EDIT && illump->s_old.s_Eflag == 0)) { + if (s->s_edit->edit_flag >= 0 || (s->edit_state.global_editing_state == ST_O_EDIT && illump->s_old.s_Eflag == 0)) { mat_t xform; struct rt_point_labels pl[8+1]; point_t lines[2*4]; /* up to 4 lines to draw */ int num_lines=0; if (view_state->vs_gvp->gv_perspective <= 0) - bn_mat_mul(xform, view_state->vs_model2objview, s->s_edit.e_mat); + bn_mat_mul(xform, view_state->vs_model2objview, s->s_edit->e_mat); else { mat_t tmat; - bn_mat_mul(tmat, view_state->vs_model2objview, s->s_edit.e_mat); + bn_mat_mul(tmat, view_state->vs_model2objview, s->s_edit->e_mat); bn_mat_mul(xform, perspective_mat, tmat); } - label_edited_solid(s, &num_lines, lines, pl, 8+1, xform, &s->s_edit.es_int); + label_edited_solid(s, &num_lines, lines, pl, 8+1, xform, &s->s_edit->es_int); dm_set_fg(DMP, color_scheme->cs_geo_label[0], @@ -461,7 +461,7 @@ dotitles(struct mged_state *s, struct bu_vls *overlay_vls) /* print parameter locations on screen */ if (s->edit_state.global_editing_state == ST_O_EDIT && illump->s_old.s_Eflag) { /* region is a processed region */ - MAT4X3PNT(temp, view_state->vs_model2objview, s->s_edit.e_keypoint); + MAT4X3PNT(temp, view_state->vs_model2objview, s->s_edit->e_keypoint); xloc = (int)(temp[X]*GED_MAX); yloc = (int)(temp[Y]*GED_MAX); dm_set_fg(DMP, @@ -560,11 +560,11 @@ dotitles(struct mged_state *s, struct bu_vls *overlay_vls) bu_vls_printf(&kp_vls, " Keypoint: %s %s: (%g, %g, %g)", - OBJ[s->s_edit.es_int.idb_type].ft_name+3, /* Skip ID_ */ - s->s_edit.e_keytag, - s->s_edit.e_keypoint[X] * s->dbip->dbi_base2local, - s->s_edit.e_keypoint[Y] * s->dbip->dbi_base2local, - s->s_edit.e_keypoint[Z] * s->dbip->dbi_base2local); + OBJ[s->s_edit->es_int.idb_type].ft_name+3, /* Skip ID_ */ + s->s_edit->e_keytag, + s->s_edit->e_keypoint[X] * s->dbip->dbi_base2local, + s->s_edit->e_keypoint[Y] * s->dbip->dbi_base2local, + s->s_edit->e_keypoint[Z] * s->dbip->dbi_base2local); if (mged_variables->mv_faceplate && ss_line_not_drawn) { dm_set_fg(DMP, color_scheme->cs_status_text2[0],