Skip to content

Commit 335aaf8

Browse files
committed
Reorder knob_tran and knob_rot, pass through pre-baked vars
Simplify knob_tran and knob_rot conditional checks, since we have already done them in the f_knob function.
1 parent 84349dd commit 335aaf8

File tree

1 file changed

+50
-53
lines changed

1 file changed

+50
-53
lines changed

src/mged/chgview.c

+50-53
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,6 @@ void mged_center(struct mged_state *s, point_t center);
5050
static void abs_zoom(struct mged_state *s);
5151
void usejoy(struct mged_state *s, double xangle, double yangle, double zangle);
5252

53-
int knob_rot(struct mged_state *s, vect_t rvec, char origin, int mf, int vf, int ef);
54-
int knob_tran(struct mged_state *s, vect_t tvec, int model_flag, int view_flag, int edit_flag);
5553
int mged_erot_xyz(struct mged_state *s, char origin, vect_t rvec);
5654
int mged_etran(struct mged_state *s, char coords, vect_t tvec);
5755
int mged_mtran(struct mged_state *s, const vect_t tvec);
@@ -1251,6 +1249,49 @@ mged_print_knobvals(struct mged_state *s, Tcl_Interp *interp)
12511249
}
12521250

12531251

1252+
static int
1253+
knob_tran(struct mged_state *s,
1254+
vect_t tvec,
1255+
int model_flag,
1256+
int view_flag,
1257+
int edit_flag_tra)
1258+
{
1259+
if (edit_flag_tra) {
1260+
mged_etran(s, mged_variables->mv_coords, tvec);
1261+
} else if (model_flag || (mged_variables->mv_coords == 'm' && !view_flag)) {
1262+
mged_mtran(s, tvec);
1263+
} else if (mged_variables->mv_coords == 'o') {
1264+
mged_otran(s, tvec);
1265+
} else {
1266+
mged_vtran(s, tvec);
1267+
}
1268+
1269+
return TCL_OK;
1270+
}
1271+
1272+
1273+
static int
1274+
knob_rot(struct mged_state *s,
1275+
vect_t rvec,
1276+
char origin,
1277+
int model_flag,
1278+
int view_flag,
1279+
int edit_flag_rot)
1280+
{
1281+
if (edit_flag_rot) {
1282+
mged_erot_xyz(s, origin, rvec);
1283+
} else if (model_flag || (mged_variables->mv_coords == 'm' && !view_flag)) {
1284+
mged_vrot_xyz(s, origin, 'm', rvec);
1285+
} else if (mged_variables->mv_coords == 'o') {
1286+
mged_vrot_xyz(s, origin, 'o', rvec);
1287+
} else {
1288+
mged_vrot_xyz(s, origin, 'v', rvec);
1289+
}
1290+
1291+
return TCL_OK;
1292+
}
1293+
1294+
12541295
/* Main processing of knob twists. "knob id val id val ..." */
12551296
int
12561297
f_knob(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[])
@@ -1270,7 +1311,7 @@ f_knob(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[])
12701311
int incr_flag = 0; /* interpret values as increments */
12711312
int view_flag = 0; /* manipulate view using view coords */
12721313
int model_flag = 0; /* manipulate view using model coords */
1273-
int edit_flag = 0; /* force edit interpretation */
1314+
int edit_flag_force = 0; /* force edit interpretation */
12741315

12751316
CHECK_DBI_NULL;
12761317

@@ -1293,7 +1334,7 @@ f_knob(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[])
12931334
while ((c = bu_getopt(argc, (char * const *)argv, "eimo:v")) != -1) {
12941335
switch (c) {
12951336
case 'e':
1296-
edit_flag = 1;
1337+
edit_flag_force = 1;
12971338
break;
12981339
case 'i':
12991340
incr_flag = 1;
@@ -1316,10 +1357,10 @@ f_knob(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[])
13161357
argc -= bu_optind - 1;
13171358
}
13181359

1319-
int edit_flag_rot = (EDIT_ROTATE && ((mged_variables->mv_transform == 'e' && !view_flag && !model_flag) || edit_flag)) ? 1 : 0;
1320-
int edit_flag_tra = (EDIT_TRAN && ((mged_variables->mv_transform == 'e' && !view_flag && !model_flag) || edit_flag)) ? 1 : 0;
1360+
int edit_flag_rot = (EDIT_ROTATE && ((mged_variables->mv_transform == 'e' && !view_flag && !model_flag) || edit_flag_force)) ? 1 : 0;
1361+
int edit_flag_tra = (EDIT_TRAN && ((mged_variables->mv_transform == 'e' && !view_flag && !model_flag) || edit_flag_force)) ? 1 : 0;
13211362
// NOTE - edit_flag_sca doesn't care about model_flag...
1322-
int edit_flag_sca = (EDIT_SCALE && ((mged_variables->mv_transform == 'e' && !view_flag) || edit_flag)) ? 1 : 0;
1363+
int edit_flag_sca = (EDIT_SCALE && ((mged_variables->mv_transform == 'e' && !view_flag) || edit_flag_force)) ? 1 : 0;
13231364

13241365
if (origin != 'v' && origin != 'm' && origin != 'e' && origin != 'k') {
13251366
origin = mged_variables->mv_rotate_about;
@@ -2323,62 +2364,18 @@ f_knob(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[])
23232364
}
23242365

23252366
if (do_tran) {
2326-
(void)knob_tran(s, tvec, model_flag, view_flag, edit_flag);
2367+
(void)knob_tran(s, tvec, model_flag, view_flag, edit_flag_tra);
23272368
}
23282369

23292370
if (do_rot) {
2330-
(void)knob_rot(s, rvec, origin, model_flag, view_flag, edit_flag);
2371+
(void)knob_rot(s, rvec, origin, model_flag, view_flag, edit_flag_rot);
23312372
}
23322373

23332374
check_nonzero_rates(s);
23342375
return TCL_OK;
23352376
}
23362377

23372378

2338-
int
2339-
knob_tran(struct mged_state *s,
2340-
vect_t tvec,
2341-
int model_flag,
2342-
int view_flag,
2343-
int edit_flag)
2344-
{
2345-
if (EDIT_TRAN && ((mged_variables->mv_transform == 'e' &&
2346-
!view_flag && !model_flag) || edit_flag)) {
2347-
mged_etran(s, mged_variables->mv_coords, tvec);
2348-
} else if (model_flag || (mged_variables->mv_coords == 'm' && !view_flag)) {
2349-
mged_mtran(s, tvec);
2350-
} else if (mged_variables->mv_coords == 'o') {
2351-
mged_otran(s, tvec);
2352-
} else {
2353-
mged_vtran(s, tvec);
2354-
}
2355-
2356-
return TCL_OK;
2357-
}
2358-
2359-
2360-
int
2361-
knob_rot(struct mged_state *s,
2362-
vect_t rvec,
2363-
char origin,
2364-
int model_flag,
2365-
int view_flag,
2366-
int edit_flag)
2367-
{
2368-
if (EDIT_ROTATE && ((mged_variables->mv_transform == 'e' &&
2369-
!view_flag && !model_flag) || edit_flag)) {
2370-
mged_erot_xyz(s, origin, rvec);
2371-
} else if (model_flag || (mged_variables->mv_coords == 'm' && !view_flag)) {
2372-
mged_vrot_xyz(s, origin, 'm', rvec);
2373-
} else if (mged_variables->mv_coords == 'o') {
2374-
mged_vrot_xyz(s, origin, 'o', rvec);
2375-
} else {
2376-
mged_vrot_xyz(s, origin, 'v', rvec);
2377-
}
2378-
2379-
return TCL_OK;
2380-
}
2381-
23822379

23832380
/* absolute_scale's value range is [-1.0, 1.0] */
23842381
static void

0 commit comments

Comments
 (0)