Exemple #1
0
void draw_transition(void) {
	if(!check_transition()) {
		return;
	}

	transition.rule(transition.fade);

	if(transition.rule2 && transition.rule2 != transition.rule) {
		transition.rule2(transition.fade);
	}
}
Exemple #2
0
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();
		}
	}
}
Exemple #3
0
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;
}