Esempio n. 1
0
static bool getFlColor(const std::string &str, Fl_Color &c)
{
  if(str == "1"){
    c = FL_YELLOW;
    return true;
  }
  int r, g, b;
  if(str.size() && GetRGBForString(str.c_str(), r, g, b)){
    c = fl_color_cube(r * (FL_NUM_RED - 1) / 255,
                      g * (FL_NUM_GREEN - 1) / 255,
                      b * (FL_NUM_BLUE - 1) / 255);
    return true;
  }
  c = FL_BLACK;
  return false;
}
Esempio n. 2
0
 FL_EXPORT_C(Fl_Color, fl_color_cubeC)(int r, int g, int b){return fl_color_cube(r,g,b);}
Esempio n. 3
0
void pQuery(DdManager *ddman, DdNode *value, DdNode *action, char * pfile, onum *ovars, rnum *vars, int numvars, int numovars) { 
  int i,j;
  nvars = numvars;
  novars = numovars;
  ov = ovars;
  v = vars;
  dd = ddman;
  
  act = new DdNode*[MAXNUMPOLICIES];
  val = new DdNode*[MAXNUMPOLICIES];
  action_out = new Fl_Output*[MAXNUMPOLICIES];
  value_out = new Fl_Output*[MAXNUMPOLICIES];
  policyName= new Fl_Text_Display*[MAXNUMPOLICIES];
  policyNameBuf = new Fl_Text_Buffer*[MAXNUMPOLICIES];
  ask = new Fl_Button*[MAXNUMPOLICIES];
  askindex = new int[MAXNUMPOLICIES];
  numpolicies = 1;
  
  act[0] = action;
  Cudd_Ref(act[0]);
  val[0] = value;
  Cudd_Ref(val[0]);

  query = new int[numovars];
  choice_width = 80;
  label_width = 80;
  choice_height = 20;
  menubar_height = 30;
  max_chars = 10;
  field_width = choice_width+label_width;
  window_width = 2*(field_width)+300;
  window_height = menubar_height+max(int(ceil(novars/2.0)),5)*(choice_height+10);
  window = new Fl_Window(window_width,window_height);
  int k,R,G,B;
  R=125; G=125; B=255;
  window->color( fl_color_cube(R*FL_NUM_RED/256,G*FL_NUM_GREEN/256, B*FL_NUM_BLUE/256)); 

  var_choice = new Fl_Choice*[numovars];
  char *buf[numovars];
  char **buff[numovars];
  varindex = new int**[numovars];
  varvals = new int[numovars];
  int xpos,ypos;
  R=0; G=12; B=12;
  for (i=0; i<numovars; i++) {
    varindex[i] = new int*[ovars[i].nvals];
    varvals[i] = 0;
    buf[i] = new char[max_chars];
    buff[i] = new char*[ovars[i].nvals];
    for (j=0; j<max_chars-1; j++) 
      buf[i][j] = ov[i].name[j];
    buf[i][j] = '\0';

    xpos = i%2; ypos = i/2;
    var_choice[i] = new Fl_Choice(xpos*field_width+label_width,
				  menubar_height+ypos*(choice_height+10),
				  choice_width,choice_height,buf[i]);
    var_choice[i]->labelcolor(fl_color_cube(R*FL_NUM_RED/256,G*FL_NUM_GREEN/256, B*FL_NUM_BLUE/256)); 
    for (j=0; j<ovars[i].nvals; j++) {
      varindex[i][j] = new int[2];
      varindex[i][j][0] = i;
      varindex[i][j][1] = j;
      buff[i][j] = new char[max_chars];
      for (k=0; k<max_chars-1; k++) 
	buff[i][j][k] = ovars[i].valname[j][k];
      buff[i][j][k] = '\0';
      var_choice[i]->add(buff[i][j],"",&var_callback,varindex[i][j]);
    }
    var_choice[i]->value(0);
  }
  policyName[0] =new Fl_Text_Display(2*field_width+120,menubar_height,150,40);
  policyNameBuf[0] = new Fl_Text_Buffer(10);
  policyNameBuf[0]->append(pfile);
  policyName[0]->buffer(policyNameBuf[0]);
  
  ask[0] = new Fl_Button(2*field_width+120,menubar_height+40,150,30,"query");
  askindex[0] = 0;
  ask[0]->callback(ask_callback, askindex);

  action_out[0] = new Fl_Output(2*field_width+120,menubar_height+70,150,40,strdup("action"));
  value_out[0] = new Fl_Output(2*field_width+120,menubar_height+110,150,40,strdup("value"));

  menu_bar = new Fl_Menu_Bar(0,0,window_width,menubar_height-10);
  menu_bar->menu(baritems);

  window->end();
  window->show();
  Fl::run();
  
  // clean up
  for (i=0; i<numpolicies; i++) {
    Cudd_RecursiveDeref(dd,act[i]);
    Cudd_RecursiveDeref(dd,val[i]);
  }
  delete [] var_choice;
  for (i=0; i<numovars; i++) {
    for (j=0; j<ovars[i].nvals; j++) {
      delete [] varindex[i][j];
      delete [] buff[i][j];
    }
    delete [] buff[i];
    delete [] buf[i];
    delete [] varindex[i];
  }
  delete [] varvals;
  delete [] varindex;
}