⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fl_widget_type.cxx

📁 PIXIL is a small footprint operating environment, complete with PDA PIM applications, a browser and
💻 CXX
📖 第 1 页 / 共 4 页
字号:
    for (int n=0; n < NUM_EXTRA_CODE; n++)      if (extra_code(n) && !isdeclare(extra_code(n))) varused = 1;  }  write_c(indent());  if (varused) write_c("{ %s* o = ", t);  if (name()) write_c("%s = ", name());  if (is_window()) {    // Handle special case of Fl_Group class type within a window -    // output constructor using x, y, w, h...    if (strcmp(t, "Fl_Group") == 0)      write_c("new %s(0, 0, %d, %d", t, o->w(), o->h());    else      write_c("new %s(%d, %d", t, o->w(), o->h());    // prevent type() code from being emitted:    ((Fl_Widget_Type*)factory)->o->type(o->type());  } else {    write_c("new %s(%d, %d, %d, %d", t, o->x(), o->y(), o->w(), o->h());  }  if (!image && label() && *label()) {    write_c(", ");    write_cstring(label());  }  write_c(");\n");  indentation += 2;  if (is_window()) write_c("%sw = o;\n",indent());  if (varused) write_widget_code();}// this is split from write_code1() for Fl_Window_Type:void Fl_Widget_Type::write_widget_code() {  Fl_Widget* tplate = ((Fl_Widget_Type*)factory)->o;  if (o->type() != tplate->type())    write_c("%so->type(%d);\n", indent(), o->type());  if (o->box() != tplate->box())    write_c("%so->box(FL_%s);\n", indent(), boxname(o->box()));  if (is_button()) {    Fl_Button* b = (Fl_Button*)o;    if (b->down_box()) write_c("%so->down_box(FL_%s);\n", indent(),			       boxname(b->down_box()));    if (b->value()) write_c("%so->value(1);\n", indent());    if (b->shortcut())      write_c("%so->shortcut(0x%x);\n", indent(), b->shortcut());  }  if (is_menu_button()) {    Fl_Menu_* b = (Fl_Menu_*)o;    if (b->down_box()) write_c("%so->down_box(FL_%s);\n", indent(),			       boxname(b->down_box()));  }  if (o->color() != tplate->color())    write_c("%so->color(%d);\n", indent(), o->color());  if (o->selection_color() != tplate->selection_color())    write_c("%so->selection_color(%d);\n", indent(), o->selection_color());  if (image)    image->write_code();  else if (o->labeltype() != tplate->labeltype())    write_c("%so->labeltype(FL_%s);\n", indent(),	    item_name(labeltypemenu, o->labeltype()));  if (o->labelfont() != tplate->labelfont())    write_c("%so->labelfont(%d);\n", indent(), o->labelfont());  if (o->labelsize() != tplate->labelsize())    write_c("%so->labelsize(%d);\n", indent(), o->labelsize());  if (o->labelcolor() != tplate->labelcolor())    write_c("%so->labelcolor(%d);\n", indent(), o->labelcolor());  if (is_valuator()) {    Fl_Valuator* v = (Fl_Valuator*)o;    Fl_Valuator* f = (Fl_Valuator*)(tplate);    if (v->minimum()!=f->minimum())      write_c("%so->minimum(%g);\n", indent(), v->minimum());    if (v->maximum()!=f->maximum())      write_c("%so->maximum(%g);\n", indent(), v->maximum());    if (v->step()!=f->step())      write_c("%so->step(%g);\n", indent(), v->step());    if (v->value())      write_c("%so->value(%g);\n", indent(), v->value());    if (is_valuator()==2) {      double x = ((Fl_Slider*)v)->slider_size();      double y = ((Fl_Slider*)f)->slider_size();      if (x != y) write_c("%so->slider_size(%g);\n", indent(), x);    }  }  {Fl_Font ff; int fs; Fl_Color fc; if (textstuff(4,ff,fs,fc)) {    Fl_Font f; int s; Fl_Color c; textstuff(0,f,s,c);    if (f != ff) write_c("%so->textfont(%d);\n", indent(), f);    if (s != fs) write_c("%so->textsize(%d);\n", indent(), s);    if (c != fc) write_c("%so->textcolor(%d);\n",indent(), c);  }}  const char* ud = user_data();  if (class_name() && !parent->is_widget()) ud = "this";  if (callback()) {    write_c("%so->callback((Fl_Callback*)%s", indent(), callback_name());    if (ud)      write_c(", (void*)(%s));\n", ud);    else      write_c(");\n");  } else if (ud) {    write_c("%so->user_data((void*)(%s));\n", indent(), ud);  }  if (o->align() != tplate->align()) {    int i = o->align();    write_c("%so->align(%s", indent(),	    item_name(alignmenu, i & ~FL_ALIGN_INSIDE));    if (i & FL_ALIGN_INSIDE) write_c("|FL_ALIGN_INSIDE");    write_c(");\n");  }  if (o->when() != tplate->when())    write_c("%so->when(%s);\n", indent(),item_name(whensymbolmenu, o->when()));  if (!o->visible() && o->parent())    write_c("%so->hide();\n", indent());  if (!o->active())    write_c("%so->deactivate();\n", indent());  if (!is_group() && resizable())    write_c("%sFl_Group::current()->resizable(o);\n",indent());  if (hotspot())    write_c("%sw->hotspot(o);\n", indent());}void Fl_Widget_Type::write_extra_code() {  for (int n=0; n < NUM_EXTRA_CODE; n++)    if (extra_code(n) && !isdeclare(extra_code(n)))      write_c("%s%s\n", indent(), extra_code(n));}void Fl_Widget_Type::write_block_close() {  indentation -= 2;  if (is_parent() || varused) write_c("%s}\n", indent());}void Fl_Widget_Type::write_code2() {  write_extra_code();  write_block_close();}////////////////////////////////////////////////////////////////void Fl_Widget_Type::write_properties() {  Fl_Type::write_properties();  write_indent(level+1);  if (!public_) write_string("private");  write_string("xywh {%d %d %d %d}", o->x(), o->y(), o->w(), o->h());  Fl_Widget* tplate = ((Fl_Widget_Type*)factory)->o;  if (o->type() != tplate->type()) {    write_string("type");    write_word(item_name(subtypes(), o->type()));  }  if (o->box() != tplate->box()) {    write_string("box"); write_word(boxname(o->box()));}  if (is_button()) {    Fl_Button* b = (Fl_Button*)o;    if (b->down_box()) {      write_string("down_box"); write_word(boxname(b->down_box()));}    if (b->shortcut()) write_string("shortcut 0x%x", b->shortcut());    if (b->value()) write_string("value 1");  }  if (is_menu_button()) {    Fl_Menu_* b = (Fl_Menu_*)o;    if (b->down_box()) {      write_string("down_box"); write_word(boxname(b->down_box()));}  }  if (o->color()!=tplate->color())    write_string("color %d", o->color());  if (o->selection_color()!=tplate->selection_color())    write_string("selection_color %d", o->selection_color());  if (image)    write_string("labeltype image");  else if (o->labeltype()!=tplate->labeltype()) {    write_string("labeltype");    write_word(item_name(labeltypemenu, o->labeltype()));  }  if (o->labelfont()!=tplate->labelfont())    write_string("labelfont %d", o->labelfont());  if (o->labelsize()!=tplate->labelsize())    write_string("labelsize %d", o->labelsize());  if (o->labelcolor()!=tplate->labelcolor())    write_string("labelcolor %d", o->labelcolor());  if (o->align()!=tplate->align())    write_string("align %d", o->align());  if (o->when() != tplate->when())    write_string("when %d", o->when());  if (is_valuator()) {    Fl_Valuator* v = (Fl_Valuator*)o;    Fl_Valuator* f = (Fl_Valuator*)(tplate);    if (v->minimum()!=f->minimum()) write_string("minimum %g",v->minimum());    if (v->maximum()!=f->maximum()) write_string("maximum %g",v->maximum());    if (v->step()!=f->step()) write_string("step %g",v->step());    if (v->value()!=0.0) write_string("value %g",v->value());    if (is_valuator()==2) {      double x = ((Fl_Slider*)v)->slider_size();      double y = ((Fl_Slider*)f)->slider_size();      if (x != y) write_string("slider_size %g", x);    }  }  {Fl_Font ff; int fs; Fl_Color fc; if (textstuff(4,ff,fs,fc)) {    Fl_Font f; int s; Fl_Color c; textstuff(0,f,s,c);    if (f != ff) write_string("textfont %d", f);    if (s != fs) write_string("textsize %d", s);    if (c != fc) write_string("textcolor %d", c);  }}  if (!o->visible()) write_string("hide");  if (!o->active()) write_string("deactivate");  if (resizable()) write_string("resizable");  if (hotspot()) write_string(is_menu_item() ? "divider" : "hotspot");  for (int n=0; n < NUM_EXTRA_CODE; n++) if (extra_code(n)) {    write_indent(level+1);    write_string("code%d",n);    write_word(extra_code(n));  }  if (subclass()) {    write_indent(level+1);    write_string("class");    write_word(subclass());  }}int pasteoffset;void Fl_Widget_Type::read_property(const char *c) {  int x,y,w,h; Fl_Font f; int s; Fl_Color cc;  if (!strcmp(c,"private")) {    public_ = 0;  } else if (!strcmp(c,"xywh")) {    if (sscanf(read_word(),"%d %d %d %d",&x,&y,&w,&h) == 4) {      x += pasteoffset;      y += pasteoffset;      o->resize(x,y,w,h);    }  } else if (!strcmp(c,"type")) {    o->type(item_number(subtypes(), read_word()));  } else if (!strcmp(c,"box")) {    const char* value = read_word();    if ((x = boxnumber(value))) {      if (x == ZERO_ENTRY) x = 0;      o->box((Fl_Boxtype)x);    } else if (sscanf(value,"%d",&x) == 1) o->box((Fl_Boxtype)x);  } else if (is_button() && !strcmp(c,"down_box")) {    const char* value = read_word();    if ((x = boxnumber(value))) {      if (x == ZERO_ENTRY) x = 0;      ((Fl_Button*)o)->down_box((Fl_Boxtype)x);    }  } else if (is_menu_button() && !strcmp(c,"down_box")) {    const char* value = read_word();    if ((x = boxnumber(value))) {      if (x == ZERO_ENTRY) x = 0;      ((Fl_Menu_*)o)->down_box((Fl_Boxtype)x);    }  } else if (is_button() && !strcmp(c,"value")) {    const char* value = read_word();    ((Fl_Button*)o)->value(atoi(value));  } else if (!strcmp(c,"color")) {    int n = sscanf(read_word(),"%d %d",&x,&y);    if (n == 2) { // back compatability...      if (x != 47) o->color(x);      o->selection_color(y);    } else {      o->color(x);    }  } else if (!strcmp(c,"selection_color")) {    if (sscanf(read_word(),"%d",&x)) o->selection_color(x);  } else if (!strcmp(c,"labeltype")) {    c = read_word();    if (!strcmp(c,"image")) {      Fluid_Image *i = Fluid_Image::find(label());      if (!i) read_error("Image file '%s' not found", label());      else setimage(i);    } else {      o->labeltype((Fl_Labeltype)item_number(labeltypemenu,c));    }  } else if (!strcmp(c,"labelfont")) {    if (sscanf(read_word(),"%d",&x) == 1) o->labelfont(x);  } else if (!strcmp(c,"labelsize")) {    if (sscanf(read_word(),"%d",&x) == 1) o->labelsize(x);  } else if (!strcmp(c,"labelcolor")) {    if (sscanf(read_word(),"%d",&x) == 1) o->labelcolor(x);  } else if (!strcmp(c,"align")) {    if (sscanf(read_word(),"%d",&x) == 1) o->align(x);  } else if (!strcmp(c,"when")) {    if (sscanf(read_word(),"%d",&x) == 1) o->when(x);  } else if (!strcmp(c,"minimum") && is_valuator()) {    ((Fl_Valuator*)o)->minimum(strtod(read_word(),0));  } else if (!strcmp(c,"maximum") && is_valuator()) {    ((Fl_Valuator*)o)->maximum(strtod(read_word(),0));  } else if (!strcmp(c,"step") && is_valuator()) {    ((Fl_Valuator*)o)->step(strtod(read_word(),0));  } else if (!strcmp(c,"value") && is_valuator()) {    ((Fl_Valuator*)o)->value(strtod(read_word(),0));  } else if ((!strcmp(c,"slider_size")||!strcmp(c,"size"))&&is_valuator()==2) {    ((Fl_Slider*)o)->slider_size(strtod(read_word(),0));  } else if (!strcmp(c,"textfont")) {    if (sscanf(read_word(),"%d",&x) == 1) {f=(Fl_Font)x; textstuff(1,f,s,cc);}  } else if (!strcmp(c,"textsize")) {    if (sscanf(read_word(),"%d",&x) == 1) {s=x; textstuff(2,f,s,cc);}  } else if (!strcmp(c,"textcolor")) {    if (sscanf(read_word(),"%d",&x) == 1) {cc=(Fl_Color)x;textstuff(3,f,s,cc);}  } else if (!strcmp(c,"hide")) {    o->hide();  } else if (!strcmp(c,"deactivate")) {    o->deactivate();  } else if (!strcmp(c,"resizable")) {    resizable(1);  } else if (!strcmp(c,"hotspot") || !strcmp(c, "divider")) {    hotspot(1);  } else if (!strcmp(c,"class")) {    subclass(read_word());  } else if (is_button() && !strcmp(c,"shortcut")) {    ((Fl_Button*)o)->shortcut(strtol(read_word(),0,0));  } else {    if (!strncmp(c,"code",4)) {      int n = atoi(c+4);      if (n >= 0 && n <= NUM_EXTRA_CODE) {	extra_code(n,read_word());	return;      }    }    Fl_Type::read_property(c);  }}Fl_Menu_Item boxmenu1[] = {  // these extra ones are for looking up fdesign saved strings:  {"NO_FRAME",		0,0,(void *)FL_NO_BOX},  {"ROUNDED3D_UPBOX",	0,0,(void *)_FL_ROUND_UP_BOX},  {"ROUNDED3D_DOWNBOX",	0,0,(void *)_FL_ROUND_DOWN_BOX},  {"OVAL3D_UPBOX",	0,0,(void *)_FL_ROUND_UP_BOX},  {"OVAL3D_DOWNBOX",	0,0,(void *)_FL_ROUND_DOWN_BOX},  {"0",			0,0,(void *)ZERO_ENTRY},  {"1",			0,0,(void *)FL_UP_BOX},  {"2",			0,0,(void *)FL_DOWN_BOX},  {"3",			0,0,(void *)FL_FLAT_BOX},  {"4",			0,0,(void *)FL_BORDER_BOX},  {"5",			0,0,(void *)FL_SHADOW_BOX},  {"6",			0,0,(void *)FL_FRAME_BOX},  {"7",			0,0,(void *)FL_ROUNDED_BOX},  {"8",			0,0,(void *)FL_RFLAT_BOX},  {"9",			0,0,(void *)FL_RSHADOW_BOX},  {"10",		0,0,(void *)FL_UP_FRAME},  {"11",		0,0,(void *)FL_DOWN_FRAME},{0}};extern int fdesign_flip;int lookup_symbol(const char *, int &, int numberok = 0);int Fl_Widget_Type::read_fdesign(const char* name, const char* value) {  int v;  if (!strcmp(name,"box")) {    float x,y,w,h;    if (sscanf(value,"%f %f %f %f",&x,&y,&w,&h) == 4) {      if (fdesign_flip) {	Fl_Type *p;	for (p = parent; p && !p->is_window(); p = p->parent);	if (p && p->is_widget()) y = ((Fl_Widget_Type*)p)->o->h()-(y+h);      }	        x += pasteoffset;      y += pasteoffset;      o->resize(int(x),int(y),int(w),int(h));    }  } else if (!strcmp(name,"label")) {    label(value);    if (value[0] == '@') o->labeltype(FL_SYMBOL_LABEL);  } else if (!strcmp(name,"name")) {    this->name(value);  } else if (!strcmp(name,"callback")) {    callback(value); user_data_type("long");  } else if (!strcmp(name,"argument")) {    user_data(value);  } else if (!strcmp(name,"shortcut")) {    if (value[0]) {      char buf[128]; sprintf(buf,"o->shortcut(\"%s\");",value);      extra_code(0,buf);    }  } else if (!strcmp(name,"style")) {    if (!strncmp(value,"FL_NORMAL",9)) return 1;    if (!lookup_symbol(value,v,1)) return 0;    o->labelfont(v); o->labeltype((Fl_Labeltype)(v>>8));  } else if (!strcmp(name,"size")) {    if (!lookup_symbol(value,v,1)) return 0;    o->labelsize(v);  } else if (!strcmp(name,"type")) {    if (!strncmp(value,"NORMAL",6)) return 1;    if (lookup_symbol(value,v,1)) {o->type(v); return 1;}    if (!strcmp(value+strlen(value)-5,"FRAME")) goto TRY_BOXTYPE;    if (!strcmp(value+strlen(value)-3,"BOX")) goto TRY_BOXTYPE;    return 0;  } else if (!strcmp(name,"lcol")) {    if (!lookup_symbol(value,v,1)) return 0;    o->labelcolor(v);  } else if (!strcmp(name,"return")) {    if (!lookup_symbol(value,v,0)) return 0;    o->when(v|FL_WHEN_RELEASE);  } else if (!strcmp(name,"alignment")) {    if (!lookup_symbol(value,v)) {      // convert old numeric values:      int v1 = atoi(value); if (v1 <= 0 && strcmp(value,"0")) return 0;      v = 0;      if (v1 >= 5) {v = FL_ALIGN_INSIDE; v1 -= 5;}      switch (v1) {      case 0: v += FL_ALIGN_TOP; break;      case 1: v += FL_ALIGN_BOTTOM; break;      case 2: v += FL_ALIGN_LEFT; break;      case 3: v += FL_ALIGN_RIGHT; break;      case 4: v += FL_ALIGN_CENTER; break;      default: return 0;      }    }    o->align(v);  } else if (!strcmp(name,"resizebox")) {    resizable(1);  } else if (!strcmp(name,"colors")) {    char* p = (char*)value;    while (*p != ' ') {if (!*p) return 0; p++;}    *p = 0;    int v1;    if (!lookup_symbol(value,v,1) || !lookup_symbol(p+1,v1,1)) {      *p=' '; return 0;}    o->color(v,v1);  } else if (!strcmp(name,"resize")) {    return !strcmp(value,"FL_RESIZE_ALL");  } else if (!strcmp(name,"gravity")) {    return !strcmp(value,"FL_NoGravity FL_NoGravity");  } else if (!strcmp(name,"boxtype")) {  TRY_BOXTYPE:    int x = boxnumber(value);    if (!x) {x = item_number(boxmenu1, value); if (x < 0) return 0;}    if (x == ZERO_ENTRY) {      x = 0;      if (o->box() != ((Fl_Widget_Type*)factory)->o->box()) return 1; // kludge for frame    }    o->box((Fl_Boxtype)x);  } else {    return 0;  }  return 1;}//// End of "$Id: Fl_Widget_Type.cxx,v 1.1.1.1 2003/08/07 21:18:39 jasonk Exp $".//

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -