@@ -146,19 +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 ;
159
- int mx , my ;
160
- int dx , dy ;
161
- int width , height ;
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 ;
162
180
fastf_t f ;
163
181
fastf_t fx , fy ;
164
182
fastf_t td ;
@@ -168,12 +186,12 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
168
186
if (s -> dbip == DBI_NULL )
169
187
return ;
170
188
171
- width = dm_get_width (DMP );
172
- height = dm_get_height (DMP );
173
- mx = xmotion -> x ;
174
- my = xmotion -> y ;
175
- dx = mx - dm_omx ;
176
- dy = my - dm_omy ;
189
+ int width = dm_get_width (DMP );
190
+ int height = dm_get_height (DMP );
191
+ int mx = xmotion -> x ;
192
+ int my = xmotion -> y ;
193
+ int dx = mx - dm_omx ;
194
+ int dy = my - dm_omy ;
177
195
178
196
switch (am_mode ) {
179
197
case AMM_IDLE :
@@ -220,23 +238,16 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
220
238
break ;
221
239
case AMM_ROT :
222
240
{
223
- char save_coords ;
224
-
225
- save_coords = mged_variables -> mv_coords ;
226
241
mged_variables -> mv_coords = 'v' ;
227
242
228
243
if (edit_mode ) {
229
244
230
245
if (s -> edit_state .global_editing_state == ST_S_EDIT ) {
231
- save_edflag = s -> s_edit -> edit_flag ;
232
- save_rot = s -> s_edit -> solid_edit_rotate ;
233
- save_tra = s -> s_edit -> solid_edit_translate ;
234
- save_sca = s -> s_edit -> solid_edit_scale ;
235
- save_pic = s -> s_edit -> solid_edit_pick ;
246
+ save_flags (& edflags , s );
236
247
if (!SEDIT_ROTATE )
237
248
rt_solid_edit_set_edflag (s -> s_edit , RT_SOLID_EDIT_ROT );
238
249
} else {
239
- save_edflag = edobj ;
250
+ edflags . save_edflag = edobj ;
240
251
edobj = BE_O_ROTATE ;
241
252
}
242
253
@@ -264,9 +275,6 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
264
275
}
265
276
case AMM_TRAN :
266
277
{
267
- char save_coords ;
268
-
269
- save_coords = mged_variables -> mv_coords ;
270
278
mged_variables -> mv_coords = 'v' ;
271
279
272
280
fx = dx / (fastf_t )width * 2.0 ;
@@ -275,15 +283,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
275
283
if (edit_mode ) {
276
284
277
285
if (s -> edit_state .global_editing_state == ST_S_EDIT ) {
278
- save_edflag = s -> s_edit -> edit_flag ;
279
- save_rot = s -> s_edit -> solid_edit_rotate ;
280
- save_tra = s -> s_edit -> solid_edit_translate ;
281
- save_sca = s -> s_edit -> solid_edit_scale ;
282
- save_pic = s -> s_edit -> solid_edit_pick ;
286
+ save_flags (& edflags , s );
283
287
if (!SEDIT_TRAN )
284
288
rt_solid_edit_set_edflag (s -> s_edit , RT_SOLID_EDIT_TRANS );
285
289
} else {
286
- save_edflag = edobj ;
290
+ edflags . save_edflag = edobj ;
287
291
edobj = BE_O_XY ;
288
292
}
289
293
@@ -343,14 +347,10 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
343
347
case AMM_SCALE :
344
348
if (edit_mode ) {
345
349
if (s -> edit_state .global_editing_state == ST_S_EDIT && !SEDIT_SCALE ) {
346
- save_edflag = s -> s_edit -> edit_flag ;
347
- save_rot = s -> s_edit -> solid_edit_rotate ;
348
- save_tra = s -> s_edit -> solid_edit_translate ;
349
- save_sca = s -> s_edit -> solid_edit_scale ;
350
- save_pic = s -> s_edit -> solid_edit_pick ;
350
+ save_flags (& edflags , s );
351
351
rt_solid_edit_set_edflag (s -> s_edit , RT_SOLID_EDIT_SCALE );
352
352
} else if (s -> edit_state .global_editing_state == ST_O_EDIT && !OEDIT_SCALE ) {
353
- save_edflag = edobj ;
353
+ edflags . save_edflag = edobj ;
354
354
edobj = BE_O_SCALE ;
355
355
}
356
356
}
@@ -404,15 +404,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
404
404
case AMM_CON_ROT_X :
405
405
if (edit_mode ) {
406
406
if (s -> edit_state .global_editing_state == ST_S_EDIT ) {
407
- save_edflag = s -> s_edit -> edit_flag ;
408
- save_rot = s -> s_edit -> solid_edit_rotate ;
409
- save_tra = s -> s_edit -> solid_edit_translate ;
410
- save_sca = s -> s_edit -> solid_edit_scale ;
411
- save_pic = s -> s_edit -> solid_edit_pick ;
407
+ save_flags (& edflags , s );
412
408
if (!SEDIT_ROTATE )
413
409
rt_solid_edit_set_edflag (s -> s_edit , RT_SOLID_EDIT_ROT );
414
410
} else {
415
- save_edflag = edobj ;
411
+ edflags . save_edflag = edobj ;
416
412
edobj = BE_O_ROTATE ;
417
413
}
418
414
}
@@ -432,15 +428,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
432
428
case AMM_CON_ROT_Y :
433
429
if (edit_mode ) {
434
430
if (s -> edit_state .global_editing_state == ST_S_EDIT ) {
435
- save_edflag = s -> s_edit -> edit_flag ;
436
- save_rot = s -> s_edit -> solid_edit_rotate ;
437
- save_tra = s -> s_edit -> solid_edit_translate ;
438
- save_sca = s -> s_edit -> solid_edit_scale ;
439
- save_pic = s -> s_edit -> solid_edit_pick ;
431
+ save_flags (& edflags , s );
440
432
if (!SEDIT_ROTATE )
441
433
rt_solid_edit_set_edflag (s -> s_edit , RT_SOLID_EDIT_ROT );
442
434
} else {
443
- save_edflag = edobj ;
435
+ edflags . save_edflag = edobj ;
444
436
edobj = BE_O_ROTATE ;
445
437
}
446
438
}
@@ -460,15 +452,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
460
452
case AMM_CON_ROT_Z :
461
453
if (edit_mode ) {
462
454
if (s -> edit_state .global_editing_state == ST_S_EDIT ) {
463
- save_edflag = s -> s_edit -> edit_flag ;
464
- save_rot = s -> s_edit -> solid_edit_rotate ;
465
- save_tra = s -> s_edit -> solid_edit_translate ;
466
- save_sca = s -> s_edit -> solid_edit_scale ;
467
- save_pic = s -> s_edit -> solid_edit_pick ;
455
+ save_flags (& edflags , s );
468
456
if (!SEDIT_ROTATE )
469
457
rt_solid_edit_set_edflag (s -> s_edit , RT_SOLID_EDIT_ROT );
470
458
} else {
471
- save_edflag = edobj ;
459
+ edflags . save_edflag = edobj ;
472
460
edobj = BE_O_ROTATE ;
473
461
}
474
462
}
@@ -488,15 +476,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
488
476
case AMM_CON_TRAN_X :
489
477
if (edit_mode ) {
490
478
if (s -> edit_state .global_editing_state == ST_S_EDIT ) {
491
- save_edflag = s -> s_edit -> edit_flag ;
492
- save_rot = s -> s_edit -> solid_edit_rotate ;
493
- save_tra = s -> s_edit -> solid_edit_translate ;
494
- save_sca = s -> s_edit -> solid_edit_scale ;
495
- save_pic = s -> s_edit -> solid_edit_pick ;
479
+ save_flags (& edflags , s );
496
480
if (!SEDIT_TRAN )
497
481
rt_solid_edit_set_edflag (s -> s_edit , RT_SOLID_EDIT_TRANS );
498
482
} else if (s -> edit_state .global_editing_state == ST_O_EDIT && !OEDIT_TRAN ) {
499
- save_edflag = edobj ;
483
+ edflags . save_edflag = edobj ;
500
484
edobj = BE_O_X ;
501
485
}
502
486
}
@@ -515,15 +499,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
515
499
case AMM_CON_TRAN_Y :
516
500
if (edit_mode ) {
517
501
if (s -> edit_state .global_editing_state == ST_S_EDIT ) {
518
- save_edflag = s -> s_edit -> edit_flag ;
519
- save_rot = s -> s_edit -> solid_edit_rotate ;
520
- save_tra = s -> s_edit -> solid_edit_translate ;
521
- save_sca = s -> s_edit -> solid_edit_scale ;
522
- save_pic = s -> s_edit -> solid_edit_pick ;
502
+ save_flags (& edflags , s );
523
503
if (!SEDIT_TRAN )
524
504
rt_solid_edit_set_edflag (s -> s_edit , RT_SOLID_EDIT_TRANS );
525
505
} else if (s -> edit_state .global_editing_state == ST_O_EDIT && !OEDIT_TRAN ) {
526
- save_edflag = edobj ;
506
+ edflags . save_edflag = edobj ;
527
507
edobj = BE_O_Y ;
528
508
}
529
509
}
@@ -542,15 +522,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
542
522
case AMM_CON_TRAN_Z :
543
523
if (edit_mode ) {
544
524
if (s -> edit_state .global_editing_state == ST_S_EDIT ) {
545
- save_edflag = s -> s_edit -> edit_flag ;
546
- save_rot = s -> s_edit -> solid_edit_rotate ;
547
- save_tra = s -> s_edit -> solid_edit_translate ;
548
- save_sca = s -> s_edit -> solid_edit_scale ;
549
- save_pic = s -> s_edit -> solid_edit_pick ;
525
+ save_flags (& edflags , s );
550
526
if (!SEDIT_TRAN )
551
527
rt_solid_edit_set_edflag (s -> s_edit , RT_SOLID_EDIT_TRANS );
552
528
} else if (s -> edit_state .global_editing_state == ST_O_EDIT && !OEDIT_TRAN ) {
553
- save_edflag = edobj ;
529
+ edflags . save_edflag = edobj ;
554
530
edobj = BE_O_XY ;
555
531
}
556
532
}
@@ -569,15 +545,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
569
545
case AMM_CON_SCALE_X :
570
546
if (edit_mode ) {
571
547
if (s -> edit_state .global_editing_state == ST_S_EDIT ) {
572
- save_edflag = s -> s_edit -> edit_flag ;
573
- save_rot = s -> s_edit -> solid_edit_rotate ;
574
- save_tra = s -> s_edit -> solid_edit_translate ;
575
- save_sca = s -> s_edit -> solid_edit_scale ;
576
- save_pic = s -> s_edit -> solid_edit_pick ;
548
+ save_flags (& edflags , s );
577
549
if (!SEDIT_SCALE )
578
550
rt_solid_edit_set_edflag (s -> s_edit , RT_SOLID_EDIT_SCALE );
579
551
} else if (s -> edit_state .global_editing_state == ST_O_EDIT && !OEDIT_SCALE ) {
580
- save_edflag = edobj ;
552
+ edflags . save_edflag = edobj ;
581
553
edobj = BE_O_XSCALE ;
582
554
}
583
555
}
@@ -596,15 +568,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
596
568
case AMM_CON_SCALE_Y :
597
569
if (edit_mode ) {
598
570
if (s -> edit_state .global_editing_state == ST_S_EDIT ) {
599
- save_edflag = s -> s_edit -> edit_flag ;
600
- save_rot = s -> s_edit -> solid_edit_rotate ;
601
- save_tra = s -> s_edit -> solid_edit_translate ;
602
- save_sca = s -> s_edit -> solid_edit_scale ;
603
- save_pic = s -> s_edit -> solid_edit_pick ;
571
+ save_flags (& edflags , s );
604
572
if (!SEDIT_SCALE )
605
573
rt_solid_edit_set_edflag (s -> s_edit , RT_SOLID_EDIT_SCALE );
606
574
} else if (s -> edit_state .global_editing_state == ST_O_EDIT && !OEDIT_SCALE ) {
607
- save_edflag = edobj ;
575
+ edflags . save_edflag = edobj ;
608
576
edobj = BE_O_YSCALE ;
609
577
}
610
578
}
@@ -623,15 +591,11 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
623
591
case AMM_CON_SCALE_Z :
624
592
if (edit_mode ) {
625
593
if (s -> edit_state .global_editing_state == ST_S_EDIT ) {
626
- save_edflag = s -> s_edit -> edit_flag ;
627
- save_rot = s -> s_edit -> solid_edit_rotate ;
628
- save_tra = s -> s_edit -> solid_edit_translate ;
629
- save_sca = s -> s_edit -> solid_edit_scale ;
630
- save_pic = s -> s_edit -> solid_edit_pick ;
594
+ save_flags (& edflags , s );
631
595
if (!SEDIT_SCALE )
632
596
rt_solid_edit_set_edflag (s -> s_edit , RT_SOLID_EDIT_SCALE );
633
597
} else if (s -> edit_state .global_editing_state == ST_O_EDIT && !OEDIT_SCALE ) {
634
- save_edflag = edobj ;
598
+ edflags . save_edflag = edobj ;
635
599
edobj = BE_O_ZSCALE ;
636
600
}
637
601
}
@@ -697,15 +661,15 @@ motion_event_handler(struct mged_state *s, XMotionEvent *xmotion)
697
661
(void )Tcl_Eval (s -> interp , bu_vls_addr (& cmd ));
698
662
699
663
reset_edflag :
700
- if (save_edflag != -1 ) {
664
+ if (edflags . save_edflag != -1 ) {
701
665
if (s -> edit_state .global_editing_state == ST_S_EDIT ) {
702
- s -> s_edit -> edit_flag = save_edflag ;
703
- s -> s_edit -> solid_edit_rotate = save_rot ;
704
- s -> s_edit -> solid_edit_translate = save_tra ;
705
- s -> s_edit -> solid_edit_scale = save_sca ;
706
- 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 ;
707
671
} else if (s -> edit_state .global_editing_state == ST_O_EDIT )
708
- edobj = save_edflag ;
672
+ edobj = edflags . save_edflag ;
709
673
}
710
674
711
675
handled :
0 commit comments