@@ -146,16 +146,37 @@ doEvent(ClientData UNUSED(clientData), void *UNUSED(eventPtr)) {
146
146
#endif /* HAVE_X11_XLIB_H */
147
147
148
148
149
+ struct saved_edflags {
150
+ int save_edflag ;
151
+ int save_rot ;
152
+ int save_tra ;
153
+ int save_sca ;
154
+ int save_pic ;
155
+ };
156
+
157
+ static void
158
+ save_flags (struct saved_edflags * sf , struct mged_state * s )
159
+ {
160
+ sf -> save_edflag = s -> s_edit -> edit_flag ;
161
+ sf -> save_rot = s -> s_edit -> solid_edit_rotate ;
162
+ sf -> save_tra = s -> s_edit -> solid_edit_translate ;
163
+ sf -> save_sca = s -> s_edit -> solid_edit_scale ;
164
+ sf -> save_pic = s -> s_edit -> solid_edit_pick ;
165
+ }
166
+
167
+
149
168
#ifdef HAVE_X11_TYPES
150
169
static void
151
170
motion_event_handler (struct mged_state * s , XMotionEvent * xmotion )
152
171
{
153
172
struct bu_vls cmd = BU_VLS_INIT_ZERO ;
154
- int save_edflag = -1 ;
155
- int save_rot = 0 ;
156
- int save_tra = 0 ;
157
- int save_sca = 0 ;
158
- int save_pic = 0 ;
173
+ char save_coords = mged_variables -> mv_coords ;
174
+ struct saved_edflags edflags ;
175
+ edflags .save_edflag = -1 ;
176
+ edflags .save_rot = 0 ;
177
+ edflags .save_tra = 0 ;
178
+ edflags .save_sca = 0 ;
179
+ edflags .save_pic = 0 ;
159
180
fastf_t f ;
160
181
fastf_t fx , fy ;
161
182
fastf_t td ;
@@ -217,23 +238,16 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
217
238
break ;
218
239
case AMM_ROT :
219
240
{
220
- char save_coords ;
221
-
222
- save_coords = mged_variables -> mv_coords ;
223
241
mged_variables -> mv_coords = 'v' ;
224
242
225
243
if (edit_mode ) {
226
244
227
245
if (s -> edit_state .global_editing_state == ST_S_EDIT ) {
228
- save_edflag = s -> s_edit -> edit_flag ;
229
- save_rot = s -> s_edit -> solid_edit_rotate ;
230
- save_tra = s -> s_edit -> solid_edit_translate ;
231
- save_sca = s -> s_edit -> solid_edit_scale ;
232
- save_pic = s -> s_edit -> solid_edit_pick ;
246
+ save_flags (& edflags , s );
233
247
if (!SEDIT_ROTATE )
234
248
rt_solid_edit_set_edflag (s -> s_edit , RT_SOLID_EDIT_ROT );
235
249
} else {
236
- save_edflag = edobj ;
250
+ edflags . save_edflag = edobj ;
237
251
edobj = BE_O_ROTATE ;
238
252
}
239
253
@@ -261,9 +275,6 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
261
275
}
262
276
case AMM_TRAN :
263
277
{
264
- char save_coords ;
265
-
266
- save_coords = mged_variables -> mv_coords ;
267
278
mged_variables -> mv_coords = 'v' ;
268
279
269
280
fx = dx / (fastf_t )width * 2.0 ;
@@ -272,15 +283,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
272
283
if (edit_mode ) {
273
284
274
285
if (s -> edit_state .global_editing_state == ST_S_EDIT ) {
275
- save_edflag = s -> s_edit -> edit_flag ;
276
- save_rot = s -> s_edit -> solid_edit_rotate ;
277
- save_tra = s -> s_edit -> solid_edit_translate ;
278
- save_sca = s -> s_edit -> solid_edit_scale ;
279
- save_pic = s -> s_edit -> solid_edit_pick ;
286
+ save_flags (& edflags , s );
280
287
if (!SEDIT_TRAN )
281
288
rt_solid_edit_set_edflag (s -> s_edit , RT_SOLID_EDIT_TRANS );
282
289
} else {
283
- save_edflag = edobj ;
290
+ edflags . save_edflag = edobj ;
284
291
edobj = BE_O_XY ;
285
292
}
286
293
@@ -340,14 +347,10 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
340
347
case AMM_SCALE :
341
348
if (edit_mode ) {
342
349
if (s -> edit_state .global_editing_state == ST_S_EDIT && !SEDIT_SCALE ) {
343
- save_edflag = s -> s_edit -> edit_flag ;
344
- save_rot = s -> s_edit -> solid_edit_rotate ;
345
- save_tra = s -> s_edit -> solid_edit_translate ;
346
- save_sca = s -> s_edit -> solid_edit_scale ;
347
- save_pic = s -> s_edit -> solid_edit_pick ;
350
+ save_flags (& edflags , s );
348
351
rt_solid_edit_set_edflag (s -> s_edit , RT_SOLID_EDIT_SCALE );
349
352
} else if (s -> edit_state .global_editing_state == ST_O_EDIT && !OEDIT_SCALE ) {
350
- save_edflag = edobj ;
353
+ edflags . save_edflag = edobj ;
351
354
edobj = BE_O_SCALE ;
352
355
}
353
356
}
@@ -401,15 +404,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
401
404
case AMM_CON_ROT_X :
402
405
if (edit_mode ) {
403
406
if (s -> edit_state .global_editing_state == ST_S_EDIT ) {
404
- save_edflag = s -> s_edit -> edit_flag ;
405
- save_rot = s -> s_edit -> solid_edit_rotate ;
406
- save_tra = s -> s_edit -> solid_edit_translate ;
407
- save_sca = s -> s_edit -> solid_edit_scale ;
408
- save_pic = s -> s_edit -> solid_edit_pick ;
407
+ save_flags (& edflags , s );
409
408
if (!SEDIT_ROTATE )
410
409
rt_solid_edit_set_edflag (s -> s_edit , RT_SOLID_EDIT_ROT );
411
410
} else {
412
- save_edflag = edobj ;
411
+ edflags . save_edflag = edobj ;
413
412
edobj = BE_O_ROTATE ;
414
413
}
415
414
}
@@ -429,15 +428,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
429
428
case AMM_CON_ROT_Y :
430
429
if (edit_mode ) {
431
430
if (s -> edit_state .global_editing_state == ST_S_EDIT ) {
432
- save_edflag = s -> s_edit -> edit_flag ;
433
- save_rot = s -> s_edit -> solid_edit_rotate ;
434
- save_tra = s -> s_edit -> solid_edit_translate ;
435
- save_sca = s -> s_edit -> solid_edit_scale ;
436
- save_pic = s -> s_edit -> solid_edit_pick ;
431
+ save_flags (& edflags , s );
437
432
if (!SEDIT_ROTATE )
438
433
rt_solid_edit_set_edflag (s -> s_edit , RT_SOLID_EDIT_ROT );
439
434
} else {
440
- save_edflag = edobj ;
435
+ edflags . save_edflag = edobj ;
441
436
edobj = BE_O_ROTATE ;
442
437
}
443
438
}
@@ -457,15 +452,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
457
452
case AMM_CON_ROT_Z :
458
453
if (edit_mode ) {
459
454
if (s -> edit_state .global_editing_state == ST_S_EDIT ) {
460
- save_edflag = s -> s_edit -> edit_flag ;
461
- save_rot = s -> s_edit -> solid_edit_rotate ;
462
- save_tra = s -> s_edit -> solid_edit_translate ;
463
- save_sca = s -> s_edit -> solid_edit_scale ;
464
- save_pic = s -> s_edit -> solid_edit_pick ;
455
+ save_flags (& edflags , s );
465
456
if (!SEDIT_ROTATE )
466
457
rt_solid_edit_set_edflag (s -> s_edit , RT_SOLID_EDIT_ROT );
467
458
} else {
468
- save_edflag = edobj ;
459
+ edflags . save_edflag = edobj ;
469
460
edobj = BE_O_ROTATE ;
470
461
}
471
462
}
@@ -485,15 +476,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
485
476
case AMM_CON_TRAN_X :
486
477
if (edit_mode ) {
487
478
if (s -> edit_state .global_editing_state == ST_S_EDIT ) {
488
- save_edflag = s -> s_edit -> edit_flag ;
489
- save_rot = s -> s_edit -> solid_edit_rotate ;
490
- save_tra = s -> s_edit -> solid_edit_translate ;
491
- save_sca = s -> s_edit -> solid_edit_scale ;
492
- save_pic = s -> s_edit -> solid_edit_pick ;
479
+ save_flags (& edflags , s );
493
480
if (!SEDIT_TRAN )
494
481
rt_solid_edit_set_edflag (s -> s_edit , RT_SOLID_EDIT_TRANS );
495
482
} else if (s -> edit_state .global_editing_state == ST_O_EDIT && !OEDIT_TRAN ) {
496
- save_edflag = edobj ;
483
+ edflags . save_edflag = edobj ;
497
484
edobj = BE_O_X ;
498
485
}
499
486
}
@@ -512,15 +499,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
512
499
case AMM_CON_TRAN_Y :
513
500
if (edit_mode ) {
514
501
if (s -> edit_state .global_editing_state == ST_S_EDIT ) {
515
- save_edflag = s -> s_edit -> edit_flag ;
516
- save_rot = s -> s_edit -> solid_edit_rotate ;
517
- save_tra = s -> s_edit -> solid_edit_translate ;
518
- save_sca = s -> s_edit -> solid_edit_scale ;
519
- save_pic = s -> s_edit -> solid_edit_pick ;
502
+ save_flags (& edflags , s );
520
503
if (!SEDIT_TRAN )
521
504
rt_solid_edit_set_edflag (s -> s_edit , RT_SOLID_EDIT_TRANS );
522
505
} else if (s -> edit_state .global_editing_state == ST_O_EDIT && !OEDIT_TRAN ) {
523
- save_edflag = edobj ;
506
+ edflags . save_edflag = edobj ;
524
507
edobj = BE_O_Y ;
525
508
}
526
509
}
@@ -539,15 +522,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
539
522
case AMM_CON_TRAN_Z :
540
523
if (edit_mode ) {
541
524
if (s -> edit_state .global_editing_state == ST_S_EDIT ) {
542
- save_edflag = s -> s_edit -> edit_flag ;
543
- save_rot = s -> s_edit -> solid_edit_rotate ;
544
- save_tra = s -> s_edit -> solid_edit_translate ;
545
- save_sca = s -> s_edit -> solid_edit_scale ;
546
- save_pic = s -> s_edit -> solid_edit_pick ;
525
+ save_flags (& edflags , s );
547
526
if (!SEDIT_TRAN )
548
527
rt_solid_edit_set_edflag (s -> s_edit , RT_SOLID_EDIT_TRANS );
549
528
} else if (s -> edit_state .global_editing_state == ST_O_EDIT && !OEDIT_TRAN ) {
550
- save_edflag = edobj ;
529
+ edflags . save_edflag = edobj ;
551
530
edobj = BE_O_XY ;
552
531
}
553
532
}
@@ -566,15 +545,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
566
545
case AMM_CON_SCALE_X :
567
546
if (edit_mode ) {
568
547
if (s -> edit_state .global_editing_state == ST_S_EDIT ) {
569
- save_edflag = s -> s_edit -> edit_flag ;
570
- save_rot = s -> s_edit -> solid_edit_rotate ;
571
- save_tra = s -> s_edit -> solid_edit_translate ;
572
- save_sca = s -> s_edit -> solid_edit_scale ;
573
- save_pic = s -> s_edit -> solid_edit_pick ;
548
+ save_flags (& edflags , s );
574
549
if (!SEDIT_SCALE )
575
550
rt_solid_edit_set_edflag (s -> s_edit , RT_SOLID_EDIT_SCALE );
576
551
} else if (s -> edit_state .global_editing_state == ST_O_EDIT && !OEDIT_SCALE ) {
577
- save_edflag = edobj ;
552
+ edflags . save_edflag = edobj ;
578
553
edobj = BE_O_XSCALE ;
579
554
}
580
555
}
@@ -593,15 +568,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
593
568
case AMM_CON_SCALE_Y :
594
569
if (edit_mode ) {
595
570
if (s -> edit_state .global_editing_state == ST_S_EDIT ) {
596
- save_edflag = s -> s_edit -> edit_flag ;
597
- save_rot = s -> s_edit -> solid_edit_rotate ;
598
- save_tra = s -> s_edit -> solid_edit_translate ;
599
- save_sca = s -> s_edit -> solid_edit_scale ;
600
- save_pic = s -> s_edit -> solid_edit_pick ;
571
+ save_flags (& edflags , s );
601
572
if (!SEDIT_SCALE )
602
573
rt_solid_edit_set_edflag (s -> s_edit , RT_SOLID_EDIT_SCALE );
603
574
} else if (s -> edit_state .global_editing_state == ST_O_EDIT && !OEDIT_SCALE ) {
604
- save_edflag = edobj ;
575
+ edflags . save_edflag = edobj ;
605
576
edobj = BE_O_YSCALE ;
606
577
}
607
578
}
@@ -620,15 +591,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
620
591
case AMM_CON_SCALE_Z :
621
592
if (edit_mode ) {
622
593
if (s -> edit_state .global_editing_state == ST_S_EDIT ) {
623
- save_edflag = s -> s_edit -> edit_flag ;
624
- save_rot = s -> s_edit -> solid_edit_rotate ;
625
- save_tra = s -> s_edit -> solid_edit_translate ;
626
- save_sca = s -> s_edit -> solid_edit_scale ;
627
- save_pic = s -> s_edit -> solid_edit_pick ;
594
+ save_flags (& edflags , s );
628
595
if (!SEDIT_SCALE )
629
596
rt_solid_edit_set_edflag (s -> s_edit , RT_SOLID_EDIT_SCALE );
630
597
} else if (s -> edit_state .global_editing_state == ST_O_EDIT && !OEDIT_SCALE ) {
631
- save_edflag = edobj ;
598
+ edflags . save_edflag = edobj ;
632
599
edobj = BE_O_ZSCALE ;
633
600
}
634
601
}
@@ -694,15 +661,15 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
694
661
(void )Tcl_Eval (s -> interp , bu_vls_addr (& cmd ));
695
662
696
663
reset_edflag :
697
- if (save_edflag != -1 ) {
664
+ if (edflags . save_edflag != -1 ) {
698
665
if (s -> edit_state .global_editing_state == ST_S_EDIT ) {
699
- s -> s_edit -> edit_flag = save_edflag ;
700
- s -> s_edit -> solid_edit_rotate = save_rot ;
701
- s -> s_edit -> solid_edit_translate = save_tra ;
702
- s -> s_edit -> solid_edit_scale = save_sca ;
703
- s -> s_edit -> solid_edit_pick = save_pic ;
666
+ s -> s_edit -> edit_flag = edflags . save_edflag ;
667
+ s -> s_edit -> solid_edit_rotate = edflags . save_rot ;
668
+ s -> s_edit -> solid_edit_translate = edflags . save_tra ;
669
+ s -> s_edit -> solid_edit_scale = edflags . save_sca ;
670
+ s -> s_edit -> solid_edit_pick = edflags . save_pic ;
704
671
} else if (s -> edit_state .global_editing_state == ST_O_EDIT )
705
- edobj = save_edflag ;
672
+ edobj = edflags . save_edflag ;
706
673
}
707
674
708
675
handled :
0 commit comments