void draw_transition(void) { if(!check_transition()) { return; } transition.rule(transition.fade); if(transition.rule2 && transition.rule2 != transition.rule) { transition.rule2(transition.fade); } }
void update_transition(void) { if(!check_transition()) { return; } if(transition.state == TRANS_FADE_IN) { transition.fade = approach(transition.fade, 1.0, 1.0/transition.dur1); if(transition.fade == 1.0) { transition.state = TRANS_FADE_OUT; call_callback(); if(popq()) { call_callback(); } } } else if(transition.state == TRANS_FADE_OUT) { transition.fade = transition.dur2 ? approach(transition.fade, 0.0, 1.0/transition.dur2) : 0.0; if(transition.fade == 0.0) { transition.state = TRANS_IDLE; popq(); } } }
bool transition_refinert::check_transitions( const predicatest &predicates, abstract_modelt &abstract_model, const fail_infot &fail_info) { status("Checking transitions"); bool error=true; abstract_counterexamplet::stepst::const_iterator previous; bool first_state=true; bool first_check=true; for(abstract_counterexamplet::stepst::const_iterator it=fail_info.steps.begin(); it!=fail_info.steps.end(); it++) { if(!it->is_state()) continue; if(first_state) first_state=false; else { if(check_transition( predicates, *previous, *it, first_check)) error=false; } // skip transition if path slicer tells us so if(!it->relevant) { #ifdef DEBUG std::cout << "Skipping L" << it->label_nr << std::endl; it->output (std::cout); #endif do { it++; } while(!it->is_state() && it!=fail_info.steps.end()); } if(it==fail_info.steps.end()) break; previous=it; } if(error) status("Transitions are not spurious"); else { status("Found a spurious transition"); const std::string opt="Transition refinement iterations"; assert(stats.find(opt)!=stats.end()); ++(stats[opt].val); } return error; }