4
#define GA_ABS(x) (((x) < 0 )? -(x) : (x))
6
void DisplayIntervalValue()
8
(void) sprintf(interval_string, "%4d ms", interval);
9
XtSetArg(arg[0], XtNlabel, interval_string);
10
XtSetValues(interval_widget,arg,1);
13
void DisplaySlowdownValue()
15
(void) sprintf(slowdown_string, "%5.1f times", slowdown);
16
XtSetArg(arg[0], XtNlabel, slowdown_string);
17
XtSetValues(slowdown_widget,arg,1);
21
/* JJU: void ScrollProc(Widget scrollbar, caddr_t data, caddr_t position) */
22
void ScrollProc(Widget scrollbar, XtPointer data, XtPointer position)
24
Called when the left or right buttons are used to step the
25
scrollbar left or right. We have the responsibility of
33
/* Get the scrollbar length and move the scroll bar */
35
XtSetArg(arg[0], XtNlength, &length);
36
XtGetValues(scrollbar, arg, 1);
37
fraction = ((int) position)/ (double) length;
39
interval = fraction*0.05*interval_max;
40
interval = GA_MIN(interval, interval_max);
41
interval = GA_MAX(interval, 1);
43
fraction = (float) interval/ (float) interval_max;
46
DisplayIntervalValue();
47
XawScrollbarSetThumb(scrollbar, fraction, shown);
50
/***** slowdown **********/
51
/* JJU: void ScrollProc2(Widget scrollbar, caddr_t data, caddr_t position) */
52
void ScrollProc2(Widget scrollbar, XtPointer data, XtPointer position)
54
Called when the left or right buttons are used to step the
55
scrollbar left or right. We have the responsibility of
63
/* Get the scrollbar length and move the scroll bar */
65
XtSetArg(arg[0], XtNlength, &length);
66
XtGetValues(scrollbar, arg, 1);
68
fraction -= ((int) position)/ (double) length;
70
slowdown = fraction*0.2*slowdown_max;
73
/* need to add small number to avoid domain error in log(0) */
75
slowdown = GA_MIN(slowdown,slowdown_max);
76
slowdown = GA_MAX(slowdown, slowdown_min);
79
/* scale current time according to the slowdown factor */
81
printf("before scaling %lu ( %ld %ld factor=%f) ",cur_time,
82
slowdown,oldslowdown,(1.0*slowdown)/oldslowdown);
84
cur_time = cur_time*slowdown/oldslowdown;
87
printf("and after %lu\n ",cur_time);
89
oldslowdown = slowdown;
91
fraction = (float) slowdown/ (float) slowdown_max;
95
DisplaySlowdownValue();
96
XawScrollbarSetThumb(scrollbar, (float)fraction, shown);
101
/* JJU: void JumpProc(Widget scrollbar, caddr_t data, caddr_t fraction_ptr) */
102
void JumpProc(Widget scrollbar, XtPointer data, XtPointer fraction_ptr)
104
Called when the middle button is used to drag to
105
the scrollbar. The scrollbar is moved for us.
108
float fraction = *(float *) fraction_ptr;
110
interval = fraction*interval_max;
111
interval = GA_MIN(interval, interval_max);
112
interval = GA_MAX(interval, 1);
114
DisplayIntervalValue();
118
/* JJU: void JumpProc2(Widget scrollbar, caddr_t data, caddr_t fraction_ptr) */
119
void JumpProc2(Widget scrollbar, XtPointer data, XtPointer fraction_ptr)
121
Called when the middle button is used to drag to
122
the scrollbar. The scrollbar is moved for us.
126
float fraction = *(float *) fraction_ptr;
129
exp_fraction = pow(POW_BASE,(double)fraction);
131
exp_fraction = (exp_fraction-1.)/ (pow(POW_BASE,1.) -1.);
133
slowdown = exp_fraction*(slowdown_max-slowdown_min) + slowdown_min;
134
slowdown = GA_MIN(slowdown,slowdown_max);
135
slowdown = GA_MAX(slowdown, slowdown_min);
138
/* scale current time according to the slowdown factor */
140
printf("before scaling %lu ( %ld %ld factor=%f) ",cur_time,
141
slowdown,oldslowdown,(1.0*slowdown)/oldslowdown);
143
cur_time = cur_time*slowdown/oldslowdown;
146
printf("and after %lu\n ",cur_time);
148
oldslowdown = slowdown;
150
DisplaySlowdownValue();