This commit is contained in:
Cary Sandvig 2000-12-01 23:00:35 +00:00
parent 01abfa2069
commit 1980d04382

View File

@ -164,14 +164,110 @@ static void* internal_monitor(void*) {
return (void*)0L;
}
static void predict_event_up(CPT_Event e) {
string s = e->get_name();
s = s.substr(0, s.find("-up"));
event_handler.remove_hook(s + "-up", predict_event_up);
event_handler.remove_hook(s + "-up-rollover", predict_event_up);
switch (curr_pred) {
case P_Null:
pnullButton->up();
break;
case P_Linear:
plinearButton->up();
break;
}
curr_pred = pred_switch;
switch (curr_pred) {
case P_Null:
pnullButton->inactive();
break;
case P_Linear:
plinearButton->inactive();
break;
default:
deadrec_cat->error() << "switching predictor to invalid type ("
<< (int)curr_pred << ")" << endl;
}
}
static void predict_event(CPT_Event e) {
string s = e->get_name();
s = s.substr(0, s.find("-down"));
if (s == "null") {
if (curr_pred != P_Null) {
pred_switch = P_Null;
event_handler.add_hook(s + "-up", predict_event_up);
event_handler.add_hook(s + "-up-rollover", predict_event_up);
}
} else if (s == "linear") {
if (curr_pred != P_Linear) {
pred_switch = P_Linear;
event_handler.add_hook(s + "-up", predict_event_up);
event_handler.add_hook(s + "-up-rollover", predict_event_up);
}
} else {
deadrec_cat->error() << "got invalid button event '" << s << "'" << endl;
}
}
static void correct_event_up(CPT_Event e) {
string s = e->get_name();
s = s.substr(0, s.find("-up"));
event_handler.remove_hook(s + "-up", correct_event_up);
event_handler.remove_hook(s + "-up-rollover", correct_event_up);
switch (curr_corr) {
case C_Pop:
cpopButton->up();
break;
case C_Lerp:
clerpButton->up();
break;
case C_Spline:
csplineButton->up();
break;
}
curr_corr = corr_switch;
switch (curr_corr) {
case C_Pop:
cpopButton->inactive();
break;
case C_Lerp:
clerpButton->inactive();
break;
case C_Spline:
csplineButton->inactive();
break;
default:
deadrec_cat->error() << "switching corrector to invalid type ("
<< (int)curr_corr << ")" << endl;
}
}
static void correct_event(CPT_Event e) {
string s = e->get_name();
s = s.substr(0, s.find("-down"));
if (s == "pop") {
if (curr_corr != C_Pop) {
corr_switch = C_Pop;
event_handler.add_hook(s + "-up", correct_event_up);
event_handler.add_hook(s + "-up-rollover", correct_event_up);
}
} else if (s == "lerp") {
if (curr_corr != C_Lerp) {
corr_switch = C_Lerp;
event_handler.add_hook(s + "-up", correct_event_up);
event_handler.add_hook(s + "-up-rollover", correct_event_up);
}
} else if (s == "spline") {
if (curr_corr != C_Spline) {
corr_switch = C_Spline;
event_handler.add_hook(s + "-up", correct_event_up);
event_handler.add_hook(s + "-up-rollover", correct_event_up);
}
} else {
deadrec_cat->error() << "got invalid button event '" << s << "'" << endl;
}
}
typedef void event_func(CPT_Event);
@ -270,6 +366,10 @@ static void deadrec_setup(EventHandler& eh) {
f2->align_to_bottom(0.05);
f2->recompute();
f2->manage(mgr, eh);
curr_pred = P_Null;
pnullButton->inactive();
curr_corr = C_Pop;
cpopButton->inactive();
}
static void update_smiley(void) {