FLTK 1.3.2
|
00001 // 00002 // "$Id$" 00003 // 00004 // Forms emulation header file for the Fast Light Tool Kit (FLTK). 00005 // 00006 // Copyright 1998-2011 by Bill Spitzak and others. 00007 // 00008 // This library is free software. Distribution and use rights are outlined in 00009 // the file "COPYING" which should have been included with this file. If this 00010 // file is missing or damaged, see the license at: 00011 // 00012 // http://www.fltk.org/COPYING.php 00013 // 00014 // Please report all bugs and problems on the following page: 00015 // 00016 // http://www.fltk.org/str.php 00017 // 00018 00019 #ifndef __FORMS_H__ 00020 #define __FORMS_H__ 00021 00022 #include "Fl.H" 00023 #include "Fl_Group.H" 00024 #include "Fl_Window.H" 00025 #include "fl_draw.H" 00026 00027 typedef Fl_Widget FL_OBJECT; 00028 typedef Fl_Window FL_FORM; 00029 00031 // Random constants & symbols defined by forms.h file: 00032 00033 #ifndef NULL 00034 #define NULL 0 00035 #endif 00036 #ifndef FALSE 00037 #define FALSE 0 00038 #define TRUE 1 00039 #endif 00040 00041 #define FL_ON 1 00042 #define FL_OK 1 00043 #define FL_VALID 1 00044 #define FL_PREEMPT 1 00045 #define FL_AUTO 2 00046 #define FL_WHEN_NEEDED FL_AUTO 00047 #define FL_OFF 0 00048 #define FL_NONE 0 00049 #define FL_CANCEL 0 00050 #define FL_INVALID 0 00051 #define FL_IGNORE -1 00052 //#define FL_CLOSE -2 // this variable is never used in FLTK Forms. It is removed becaus it conflicts with the window FL_CLOSE event 00053 00054 #define FL_LCOL FL_BLACK 00055 #define FL_COL1 FL_GRAY 00056 #define FL_MCOL FL_LIGHT1 00057 #define FL_LEFT_BCOL FL_LIGHT3 // 53 is better match 00058 #define FL_TOP_BCOL FL_LIGHT2 // 51 00059 #define FL_BOTTOM_BCOL FL_DARK2 // 40 00060 #define FL_RIGHT_BCOL FL_DARK3 // 36 00061 #define FL_INACTIVE FL_INACTIVE_COLOR 00062 #define FL_INACTIVE_COL FL_INACTIVE_COLOR 00063 #define FL_FREE_COL1 FL_FREE_COLOR 00064 #define FL_FREE_COL2 ((Fl_Color)(FL_FREE_COLOR+1)) 00065 #define FL_FREE_COL3 ((Fl_Color)(FL_FREE_COLOR+2)) 00066 #define FL_FREE_COL4 ((Fl_Color)(FL_FREE_COLOR+3)) 00067 #define FL_FREE_COL5 ((Fl_Color)(FL_FREE_COLOR+4)) 00068 #define FL_FREE_COL6 ((Fl_Color)(FL_FREE_COLOR+5)) 00069 #define FL_FREE_COL7 ((Fl_Color)(FL_FREE_COLOR+6)) 00070 #define FL_FREE_COL8 ((Fl_Color)(FL_FREE_COLOR+7)) 00071 #define FL_FREE_COL9 ((Fl_Color)(FL_FREE_COLOR+8)) 00072 #define FL_FREE_COL10 ((Fl_Color)(FL_FREE_COLOR+9)) 00073 #define FL_FREE_COL11 ((Fl_Color)(FL_FREE_COLOR+10)) 00074 #define FL_FREE_COL12 ((Fl_Color)(FL_FREE_COLOR+11)) 00075 #define FL_FREE_COL13 ((Fl_Color)(FL_FREE_COLOR+12)) 00076 #define FL_FREE_COL14 ((Fl_Color)(FL_FREE_COLOR+13)) 00077 #define FL_FREE_COL15 ((Fl_Color)(FL_FREE_COLOR+14)) 00078 #define FL_FREE_COL16 ((Fl_Color)(FL_FREE_COLOR+15)) 00079 #define FL_TOMATO ((Fl_Color)(131)) 00080 #define FL_INDIANRED ((Fl_Color)(164)) 00081 #define FL_SLATEBLUE ((Fl_Color)(195)) 00082 #define FL_DARKGOLD ((Fl_Color)(84)) 00083 #define FL_PALEGREEN ((Fl_Color)(157)) 00084 #define FL_ORCHID ((Fl_Color)(203)) 00085 #define FL_DARKCYAN ((Fl_Color)(189)) 00086 #define FL_DARKTOMATO ((Fl_Color)(113)) 00087 #define FL_WHEAT ((Fl_Color)(174)) 00088 00089 #define FL_ALIGN_BESIDE FL_ALIGN_INSIDE 00090 00091 #define FL_PUP_TOGGLE 2 // FL_MENU_TOGGLE 00092 #define FL_PUP_INACTIVE 1 // FL_MENU_INACTIVE 00093 #define FL_NO_FRAME FL_NO_BOX 00094 #define FL_ROUNDED3D_UPBOX FL_ROUND_UP_BOX 00095 #define FL_ROUNDED3D_DOWNBOX FL_ROUND_DOWN_BOX 00096 #define FL_OVAL3D_UPBOX FL_ROUND_UP_BOX 00097 #define FL_OVAL3D_DOWNBOX FL_ROUND_DOWN_BOX 00098 00099 #define FL_MBUTTON1 1 00100 #define FL_LEFTMOUSE 1 00101 #define FL_MBUTTON2 2 00102 #define FL_MIDDLEMOUSE 2 00103 #define FL_MBUTTON3 3 00104 #define FL_RIGHTMOUSE 3 00105 #define FL_MBUTTON4 4 00106 #define FL_MBUTTON5 5 00107 00108 #define FL_INVALID_STYLE 255 00109 #define FL_NORMAL_STYLE FL_HELVETICA 00110 #define FL_BOLD_STYLE FL_HELVETICA_BOLD 00111 #define FL_ITALIC_STYLE FL_HELVETICA_ITALIC 00112 #define FL_BOLDITALIC_STYLE FL_HELVETICA_BOLD_ITALIC 00113 #define FL_FIXED_STYLE FL_COURIER 00114 #define FL_FIXEDBOLD_STYLE FL_COURIER_BOLD 00115 #define FL_FIXEDITALIC_STYLE FL_COURIER_ITALIC 00116 #define FL_FIXEDBOLDITALIC_STYLE FL_COURIER_BOLD_ITALIC 00117 #define FL_TIMES_STYLE FL_TIMES 00118 #define FL_TIMESBOLD_STYLE FL_TIMES_BOLD 00119 #define FL_TIMESITALIC_STYLE FL_TIMES_ITALIC 00120 #define FL_TIMESBOLDITALIC_STYLE FL_TIMES_BOLD_ITALIC 00121 00122 // hacks to change the labeltype() when passed to fl_set_object_lstyle(): 00123 #define FL_SHADOW_STYLE (FL_SHADOW_LABEL<<8) 00124 #define FL_ENGRAVED_STYLE (FL_ENGRAVED_LABEL<<8) 00125 #define FL_EMBOSSED_STYLE (FL_EMBOSSED_LABEL<<0) 00126 00127 // size values are different from XForms, match older Forms: 00128 #define FL_TINY_SIZE 8 00129 #define FL_SMALL_SIZE 11 // 10 00130 //#define FL_NORMAL_SIZE 14 // 12 00131 #define FL_MEDIUM_SIZE 18 // 14 00132 #define FL_LARGE_SIZE 24 // 18 00133 #define FL_HUGE_SIZE 32 // 24 00134 #define FL_DEFAULT_SIZE FL_SMALL_SIZE 00135 #define FL_TINY_FONT FL_TINY_SIZE 00136 #define FL_SMALL_FONT FL_SMALL_SIZE 00137 #define FL_NORMAL_FONT FL_NORMAL_SIZE 00138 #define FL_MEDIUM_FONT FL_MEDIUM_SIZE 00139 #define FL_LARGE_FONT FL_LARGE_SIZE 00140 #define FL_HUGE_FONT FL_HUGE_SIZE 00141 #define FL_NORMAL_FONT1 FL_SMALL_FONT 00142 #define FL_NORMAL_FONT2 FL_NORMAL_FONT 00143 #define FL_DEFAULT_FONT FL_SMALL_FONT 00144 00145 #define FL_RETURN_END_CHANGED FL_WHEN_RELEASE 00146 #define FL_RETURN_CHANGED FL_WHEN_CHANGED 00147 #define FL_RETURN_END FL_WHEN_RELEASE_ALWAYS 00148 #define FL_RETURN_ALWAYS (FL_WHEN_CHANGED|FL_WHEN_NOT_CHANGED) 00149 00150 #define FL_BOUND_WIDTH 3 00151 00152 typedef int FL_Coord; 00153 typedef int FL_COLOR; 00154 00156 // fltk interaction: 00157 00158 #define FL_CMD_OPT void 00159 extern FL_EXPORT void fl_initialize(int*, char*[], const char*, FL_CMD_OPT*, int); 00160 inline void fl_finish() {} 00161 00162 typedef void (*FL_IO_CALLBACK) (FL_SOCKET, void*); 00163 inline void fl_add_io_callback(int fd, short w, FL_IO_CALLBACK cb, void* v) { 00164 Fl::add_fd(fd, w, cb, v);} 00165 inline void fl_remove_io_callback(int fd, short, FL_IO_CALLBACK) { 00166 Fl::remove_fd(fd);} // removes all the callbacks! 00167 00168 // type of callback is different and no "id" number is returned: 00169 inline void fl_add_timeout(long msec, void (*cb)(void*), void* v) { 00170 Fl::add_timeout(msec*.001, cb, v);} 00171 inline void fl_remove_timeout(int) {} 00172 00173 // type of callback is different! 00174 inline void fl_set_idle_callback(void (*cb)()) {Fl::set_idle(cb);} 00175 00176 FL_EXPORT Fl_Widget* fl_do_forms(void); 00177 FL_EXPORT Fl_Widget* fl_check_forms(); 00178 inline Fl_Widget* fl_do_only_forms(void) {return fl_do_forms();} 00179 inline Fl_Widget* fl_check_only_forms(void) {return fl_check_forms();} 00180 00181 // because of new redraw behavior, these are no-ops: 00182 inline void fl_freeze_object(Fl_Widget*) {} 00183 inline void fl_unfreeze_object(Fl_Widget*) {} 00184 inline void fl_freeze_form(Fl_Window*) {} 00185 inline void fl_unfreeze_form(Fl_Window*) {} 00186 inline void fl_freeze_all_forms() {} 00187 inline void fl_unfreeze_all_forms() {} 00188 00189 inline void fl_set_focus_object(Fl_Window*, Fl_Widget* o) {Fl::focus(o);} 00190 inline void fl_reset_focus_object(Fl_Widget* o) {Fl::focus(o);} 00191 #define fl_set_object_focus fl_set_focus_object 00192 00193 // void fl_set_form_atclose(Fl_Window*w,int (*cb)(Fl_Window*,void*),void* v) 00194 // void fl_set_atclose(int (*cb)(Fl_Window*,void*),void*) 00195 // fl_set_form_atactivate/atdeactivate not implemented! 00196 00198 // Fl_Widget: 00199 00200 inline void fl_set_object_boxtype(Fl_Widget* o, Fl_Boxtype a) {o->box(a);} 00201 inline void fl_set_object_lsize(Fl_Widget* o,int s) {o->labelsize(s);} 00202 00203 /* forms lib font indexes must be byte sized - extract correct byte from style word */ 00204 inline void fl_set_object_lstyle(Fl_Widget* o,int a) { 00205 o->labelfont((Fl_Font)(a&0xff)); o->labeltype((Fl_Labeltype)(a>>8));} 00206 inline void fl_set_object_lcol(Fl_Widget* o, Fl_Color a) {o->labelcolor(a);} 00207 #define fl_set_object_lcolor fl_set_object_lcol 00208 inline void fl_set_object_lalign(Fl_Widget* o, Fl_Align a) {o->align(a);} 00209 #define fl_set_object_align fl_set_object_lalign 00210 inline void fl_set_object_color(Fl_Widget* o,Fl_Color a,Fl_Color b) {o->color(a,b);} 00211 inline void fl_set_object_label(Fl_Widget* o, const char* a) {o->label(a); o->redraw();} 00212 inline void fl_set_object_position(Fl_Widget*o,int x,int y) {o->position(x,y);} 00213 inline void fl_set_object_size(Fl_Widget* o, int w, int h) {o->size(w,h);} 00214 inline void fl_set_object_geometry(Fl_Widget* o,int x,int y,int w,int h) {o->resize(x,y,w,h);} 00215 00216 inline void fl_get_object_geometry(Fl_Widget* o,int*x,int*y,int*w,int*h) { 00217 *x = o->x(); *y = o->y(); *w = o->w(); *h = o->h();} 00218 inline void fl_get_object_position(Fl_Widget* o,int*x,int*y) { 00219 *x = o->x(); *y = o->y();} 00220 00221 typedef void (*Forms_CB)(Fl_Widget*, long); 00222 inline void fl_set_object_callback(Fl_Widget*o,Forms_CB c,long a) {o->callback(c,a);} 00223 #define fl_set_call_back fl_set_object_callback 00224 inline void fl_call_object_callback(Fl_Widget* o) {o->do_callback();} 00225 inline void fl_trigger_object(Fl_Widget* o) {o->do_callback();} 00226 inline void fl_set_object_return(Fl_Widget* o, int v) { 00227 o->when((Fl_When)(v|FL_WHEN_RELEASE));} 00228 00229 inline void fl_redraw_object(Fl_Widget* o) {o->redraw();} 00230 inline void fl_show_object(Fl_Widget* o) {o->show();} 00231 inline void fl_hide_object(Fl_Widget* o) {o->hide();} 00232 inline void fl_free_object(Fl_Widget* x) {delete x;} 00233 inline void fl_delete_object(Fl_Widget* o) {o->parent()->remove(*o);} 00234 inline void fl_activate_object(Fl_Widget* o) {o->activate();} 00235 inline void fl_deactivate_object(Fl_Widget* o) {o->deactivate();} 00236 00237 inline void fl_add_object(Fl_Window* f, Fl_Widget* x) {f->add(x);} 00238 inline void fl_insert_object(Fl_Widget* o, Fl_Widget* b) {b->parent()->insert(*o,b);} 00239 00240 inline Fl_Window* FL_ObjWin(Fl_Widget* o) {return o->window();} 00241 00243 // things that appered in the demos a lot that I don't emulate, but 00244 // I did not want to edit out of all the demos... 00245 00246 inline int fl_get_border_width() {return 3;} 00247 inline void fl_set_border_width(int) {} 00248 inline void fl_set_object_dblbuffer(Fl_Widget*, int) {} 00249 inline void fl_set_form_dblbuffer(Fl_Window*, int) {} 00250 00252 // Fl_Window: 00253 00254 inline void fl_free_form(Fl_Window* x) {delete x;} 00255 inline void fl_redraw_form(Fl_Window* f) {f->redraw();} 00256 00257 inline Fl_Window* fl_bgn_form(Fl_Boxtype b,int w,int h) { 00258 Fl_Window* g = new Fl_Window(w,h,0); 00259 g->box(b); 00260 return g; 00261 } 00262 FL_EXPORT void fl_end_form(); 00263 inline void fl_addto_form(Fl_Window* f) {f->begin();} 00264 inline Fl_Group* fl_bgn_group() {return new Fl_Group(0,0,0,0,0);} 00265 inline void fl_end_group() {Fl_Group::current()->forms_end();} 00266 inline void fl_addto_group(Fl_Widget* o) {((Fl_Group* )o)->begin();} 00267 #define resizebox _ddfdesign_kludge() 00268 00269 inline void fl_scale_form(Fl_Window* f, double x, double y) { 00270 f->resizable(f); f->size(int(f->w()*x),int(f->h()*y));} 00271 inline void fl_set_form_position(Fl_Window* f,int x,int y) {f->position(x,y);} 00272 inline void fl_set_form_size(Fl_Window* f, int w, int h) {f->size(w,h);} 00273 inline void fl_set_form_geometry(Fl_Window* f,int x,int y,int w,int h) { 00274 f->resize(x,y,w,h);} 00275 #define fl_set_initial_placement fl_set_form_geometry 00276 inline void fl_adjust_form_size(Fl_Window*) {} 00277 00278 FL_EXPORT void fl_show_form(Fl_Window* f,int p,int b,const char* n); 00279 enum { // "p" argument values: 00280 FL_PLACE_FREE = 0, // make resizable 00281 FL_PLACE_MOUSE = 1, // mouse centered on form 00282 FL_PLACE_CENTER = 2, // center of the screen 00283 FL_PLACE_POSITION = 4,// fixed position, resizable 00284 FL_PLACE_SIZE = 8, // fixed size, normal fltk behavior 00285 FL_PLACE_GEOMETRY =16,// fixed size and position 00286 FL_PLACE_ASPECT = 32, // keep aspect ratio (ignored) 00287 FL_PLACE_FULLSCREEN=64,// fill screen 00288 FL_PLACE_HOTSPOT = 128,// enables hotspot 00289 FL_PLACE_ICONIC = 256,// iconic (ignored) 00290 FL_FREE_SIZE=(1<<14), // force resizable 00291 FL_FIX_SIZE =(1<<15) // force off resizable 00292 }; 00293 #define FL_PLACE_FREE_CENTER (FL_PLACE_CENTER|FL_FREE_SIZE) 00294 #define FL_PLACE_CENTERFREE (FL_PLACE_CENTER|FL_FREE_SIZE) 00295 enum { // "b" arguement values: 00296 FL_NOBORDER = 0, 00297 FL_FULLBORDER, 00298 FL_TRANSIENT 00299 //FL_MODAL = (1<<8) // not implemented yet in Forms 00300 }; 00301 inline void fl_set_form_hotspot(Fl_Window* w,int x,int y) {w->hotspot(x,y);} 00302 inline void fl_set_form_hotobject(Fl_Window* w, Fl_Widget* o) {w->hotspot(o);} 00303 extern FL_EXPORT char fl_flip; // in forms.C 00304 inline void fl_flip_yorigin() {fl_flip = 1;} 00305 00306 #define fl_prepare_form_window fl_show_form 00307 inline void fl_show_form_window(Fl_Window*) {} 00308 00309 inline void fl_raise_form(Fl_Window* f) {f->show();} 00310 00311 inline void fl_hide_form(Fl_Window* f) {f->hide();} 00312 inline void fl_pop_form(Fl_Window* f) {f->show();} 00313 00314 extern FL_EXPORT char fl_modal_next; // in forms.C 00315 inline void fl_activate_all_forms() {} 00316 inline void fl_deactivate_all_forms() {fl_modal_next = 1;} 00317 inline void fl_deactivate_form(Fl_Window*w) {w->deactivate();} 00318 inline void fl_activate_form(Fl_Window*w) {w->activate();} 00319 00320 inline void fl_set_form_title(Fl_Window* f, const char* s) {f->label(s);} 00321 inline void fl_title_form(Fl_Window* f, const char* s) {f->label(s);} 00322 00323 typedef void (*Forms_FormCB)(Fl_Widget*); 00324 inline void fl_set_form_callback(Fl_Window* f,Forms_FormCB c) {f->callback(c);} 00325 #define fl_set_form_call_back fl_set_form_callback 00326 00327 inline void fl_init() {} 00328 FL_EXPORT void fl_set_graphics_mode(int,int); 00329 00330 inline int fl_form_is_visible(Fl_Window* f) {return f->visible();} 00331 00332 inline int fl_mouse_button() {return Fl::event_button();} 00333 #define fl_mousebutton fl_mouse_button 00334 00335 #define fl_free free 00336 #define fl_malloc malloc 00337 #define fl_calloc calloc 00338 #define fl_realloc realloc 00339 00341 // Drawing functions. Only usable inside an Fl_Free object? 00342 00343 inline void fl_drw_box(Fl_Boxtype b,int x,int y,int w,int h,Fl_Color bgc,int=3) { 00344 fl_draw_box(b,x,y,w,h,bgc);} 00345 inline void fl_drw_frame(Fl_Boxtype b,int x,int y,int w,int h,Fl_Color bgc,int=3) { 00346 fl_draw_box(b,x,y,w,h,bgc);} 00347 00348 inline void fl_drw_text(Fl_Align align, int x, int y, int w, int h, 00349 Fl_Color fgcolor, int size, Fl_Font style, 00350 const char* s) { 00351 fl_font(style,size); 00352 fl_color(fgcolor); 00353 fl_draw(s,x,y,w,h,align); 00354 } 00355 00356 // this does not work except for CENTER... 00357 inline void fl_drw_text_beside(Fl_Align align, int x, int y, int w, int h, 00358 Fl_Color fgcolor, int size, Fl_Font style, 00359 const char* s) { 00360 fl_font(style,size); 00361 fl_color(fgcolor); 00362 fl_draw(s,x,y,w,h,align); 00363 } 00364 00365 inline void fl_set_font_name(Fl_Font n,const char* s) {Fl::set_font(n,s);} 00366 00367 inline void fl_mapcolor(Fl_Color c, uchar r, uchar g, uchar b) {Fl::set_color(c,r,g,b);} 00368 00369 #define fl_set_clipping(x,y,w,h) fl_push_clip(x,y,w,h) 00370 #define fl_unset_clipping() fl_pop_clip() 00371 00373 // Forms classes: 00374 00375 inline Fl_Widget* fl_add_new(Fl_Widget* p) {return p;} 00376 inline Fl_Widget* fl_add_new(uchar t,Fl_Widget* p) {p->type(t); return p;} 00377 00378 #define forms_constructor(type,name) \ 00379 inline type* name(uchar t,int x,int y,int w,int h,const char* l) { \ 00380 return (type*)(fl_add_new(t, new type(x,y,w,h,l)));} 00381 #define forms_constructort(type,name) \ 00382 inline type* name(uchar t,int x,int y,int w,int h,const char* l) { \ 00383 return (type*)(fl_add_new(new type(t,x,y,w,h,l)));} 00384 #define forms_constructorb(type,name) \ 00385 inline type* name(Fl_Boxtype t,int x,int y,int w,int h,const char* l) { \ 00386 return (type*)(fl_add_new(new type(t,x,y,w,h,l)));} 00387 00388 #include "Fl_FormsBitmap.H" 00389 #define FL_NORMAL_BITMAP FL_NO_BOX 00390 forms_constructorb(Fl_FormsBitmap, fl_add_bitmap) 00391 inline void fl_set_bitmap_data(Fl_Widget* o, int w, int h, const uchar* b) { 00392 ((Fl_FormsBitmap*)o)->set(w,h,b); 00393 } 00394 00395 #include "Fl_FormsPixmap.H" 00396 #define FL_NORMAL_PIXMAP FL_NO_BOX 00397 forms_constructorb(Fl_FormsPixmap, fl_add_pixmap) 00398 inline void fl_set_pixmap_data(Fl_Widget* o, char*const* b) { 00399 ((Fl_FormsPixmap*)o)->set(b); 00400 } 00401 //inline void fl_set_pixmap_file(Fl_Widget*, const char*); 00402 inline void fl_set_pixmap_align(Fl_Widget* o,Fl_Align a,int,int) {o->align(a);} 00403 //inline void fl_set_pixmap_colorcloseness(int, int, int); 00404 00405 #include "Fl_Box.H" 00406 forms_constructorb(Fl_Box, fl_add_box) 00407 00408 #include "Fl_Browser.H" 00409 forms_constructor(Fl_Browser, fl_add_browser) 00410 00411 inline void fl_clear_browser(Fl_Widget* o) { 00412 ((Fl_Browser*)o)->clear();} 00413 inline void fl_add_browser_line(Fl_Widget* o, const char* s) { 00414 ((Fl_Browser*)o)->add(s);} 00415 inline void fl_addto_browser(Fl_Widget* o, const char* s) { 00416 ((Fl_Browser*)o)->add(s);} /* should also scroll to bottom */ 00417 //inline void fl_addto_browser_chars(Fl_Widget*, const char*) 00418 //#define fl_append_browser fl_addto_browser_chars 00419 inline void fl_insert_browser_line(Fl_Widget* o, int n, const char* s) { 00420 ((Fl_Browser*)o)->insert(n,s);} 00421 inline void fl_delete_browser_line(Fl_Widget* o, int n) { 00422 ((Fl_Browser*)o)->remove(n);} 00423 inline void fl_replace_browser_line(Fl_Widget* o, int n, const char* s) { 00424 ((Fl_Browser*)o)->replace(n,s);} 00425 inline char* fl_get_browser_line(Fl_Widget* o, int n) { 00426 return (char*)(((Fl_Browser*)o)->text(n));} 00427 inline int fl_load_browser(Fl_Widget* o, const char* f) { 00428 return ((Fl_Browser*)o)->load(f);} 00429 inline void fl_select_browser_line(Fl_Widget* o, int n) { 00430 ((Fl_Browser*)o)->select(n,1);} 00431 inline void fl_deselect_browser_line(Fl_Widget* o, int n) { 00432 ((Fl_Browser*)o)->select(n,0);} 00433 inline void fl_deselect_browser(Fl_Widget* o) { 00434 ((Fl_Browser*)o)->deselect();} 00435 inline int fl_isselected_browser_line(Fl_Widget* o, int n) { 00436 return ((Fl_Browser*)o)->selected(n);} 00437 inline int fl_get_browser_topline(Fl_Widget* o) { 00438 return ((Fl_Browser*)o)->topline();} 00439 inline int fl_get_browser(Fl_Widget* o) { 00440 return ((Fl_Browser*)o)->value();} 00441 inline int fl_get_browser_maxline(Fl_Widget* o) { 00442 return ((Fl_Browser*)o)->size();} 00443 //linline int fl_get_browser_screenlines(Fl_Widget*); 00444 inline void fl_set_browser_topline(Fl_Widget* o, int n) { 00445 ((Fl_Browser*)o)->topline(n);} 00446 inline void fl_set_browser_fontsize(Fl_Widget* o, int s) { 00447 ((Fl_Browser*)o)->textsize(s);} 00448 inline void fl_set_browser_fontstyle(Fl_Widget* o, Fl_Font s) { 00449 ((Fl_Browser*)o)->textfont(s);} 00450 inline void fl_set_browser_specialkey(Fl_Widget* o, char c) { 00451 ((Fl_Browser*)o)->format_char(c);} 00452 //inline void fl_set_browser_vscrollbar(Fl_Widget*, int); 00453 //inline void fl_set_browser_hscrollbar(Fl_Widget*, int); 00454 //inline void fl_set_browser_leftslider(Fl_Widget*, int); 00455 //#define fl_set_browser_leftscrollbar fl_set_browser_leftslider 00456 //inline void fl_set_browser_line_selectable(Fl_Widget*, int, int); 00457 //inline void fl_get_browser_dimension(Fl_Widget*,int*,int*,int*,int*); 00458 //inline void fl_set_browser_dblclick_callback(Fl_Widget*,FL_CALLBACKPTR,long); 00459 //inline void fl_set_browser_xoffset(Fl_Widget*, FL_Coord); 00460 //inline void fl_set_browser_scrollbarsize(Fl_Widget*, int, int); 00461 inline void fl_setdisplayed_browser_line(Fl_Widget* o, int n, int i) { 00462 ((Fl_Browser*)o)->display(n,i);} 00463 inline int fl_isdisplayed_browser_line(Fl_Widget* o, int n) { 00464 return ((Fl_Browser*)o)->displayed(n);} 00465 00466 #include "Fl_Button.H" 00467 00468 #define FL_NORMAL_BUTTON 0 00469 #define FL_TOUCH_BUTTON 4 00470 #define FL_INOUT_BUTTON 5 00471 #define FL_RETURN_BUTTON 6 00472 #define FL_HIDDEN_RET_BUTTON 7 00473 #define FL_PUSH_BUTTON FL_TOGGLE_BUTTON 00474 #define FL_MENU_BUTTON 9 00475 00476 FL_EXPORT Fl_Button* fl_add_button(uchar t,int x,int y,int w,int h,const char* l); 00477 inline int fl_get_button(Fl_Widget* b) {return ((Fl_Button*)b)->value();} 00478 inline void fl_set_button(Fl_Widget* b, int v) {((Fl_Button*)b)->value(v);} 00479 inline int fl_get_button_numb(Fl_Widget*) {return Fl::event_button();} 00480 inline void fl_set_button_shortcut(Fl_Widget* b, const char* s,int=0) { 00481 ((Fl_Button*)b)->shortcut(s);} 00482 //#define fl_set_object_shortcut(b,s) fl_set_button_shortcut(b,s) 00483 00484 #include "Fl_Light_Button.H" 00485 forms_constructor(Fl_Light_Button, fl_add_lightbutton) 00486 00487 #include "Fl_Round_Button.H" 00488 forms_constructor(Fl_Round_Button, fl_add_roundbutton) 00489 forms_constructor(Fl_Round_Button, fl_add_round3dbutton) 00490 00491 #include "Fl_Check_Button.H" 00492 forms_constructor(Fl_Check_Button, fl_add_checkbutton) 00493 00494 inline Fl_Widget* fl_add_bitmapbutton(int t,int x,int y,int w,int h,const char* l) {Fl_Widget* o = fl_add_button(t,x,y,w,h,l); return o;} 00495 inline void fl_set_bitmapbutton_data(Fl_Widget* o,int a,int b,uchar* c) { 00496 (new Fl_Bitmap(c,a,b))->label(o);} // does not delete old Fl_Bitmap! 00497 00498 inline Fl_Widget* fl_add_pixmapbutton(int t,int x,int y,int w,int h,const char* l) {Fl_Widget* o = fl_add_button(t,x,y,w,h,l); return o;} 00499 inline void fl_set_pixmapbutton_data(Fl_Widget* o, const char*const* c) { 00500 (new Fl_Pixmap(c))->label(o);} // does not delete old Fl_Pixmap! 00501 00502 // Fl_Canvas object not yet implemented! 00503 00504 #include "Fl_Chart.H" 00505 00506 forms_constructor(Fl_Chart, fl_add_chart) 00507 inline void fl_clear_chart(Fl_Widget* o) { 00508 ((Fl_Chart*)o)->clear();} 00509 inline void fl_add_chart_value(Fl_Widget* o,double v,const char* s,uchar c){ 00510 ((Fl_Chart*)o)->add(v,s,c);} 00511 inline void fl_insert_chart_value(Fl_Widget* o, int i, double v, const char* s, uchar c) { 00512 ((Fl_Chart*)o)->insert(i,v,s,c);} 00513 inline void fl_replace_chart_value(Fl_Widget* o, int i, double v, const char* s, uchar c) { 00514 ((Fl_Chart*)o)->replace(i,v,s,c);} 00515 inline void fl_set_chart_bounds(Fl_Widget* o, double a, double b) { 00516 ((Fl_Chart*)o)->bounds(a,b);} 00517 inline void fl_set_chart_maxnumb(Fl_Widget* o, int v) { 00518 ((Fl_Chart*)o)->maxsize(v);} 00519 inline void fl_set_chart_autosize(Fl_Widget* o, int v) { 00520 ((Fl_Chart*)o)->autosize(v);} 00521 inline void fl_set_chart_lstyle(Fl_Widget* o, Fl_Font v) { 00522 ((Fl_Chart*)o)->textfont(v);} 00523 inline void fl_set_chart_lsize(Fl_Widget* o, int v) { 00524 ((Fl_Chart*)o)->textsize(v);} 00525 inline void fl_set_chart_lcolor(Fl_Widget* o, Fl_Color v) { 00526 ((Fl_Chart*)o)->textcolor(v);} 00527 #define fl_set_chart_lcol fl_set_chart_lcolor 00528 00529 #include "Fl_Choice.H" 00530 00531 #define FL_NORMAL_CHOICE 0 00532 #define FL_NORMAL_CHOICE2 0 00533 #define FL_DROPLIST_CHOICE 0 00534 00535 forms_constructor(Fl_Choice, fl_add_choice) 00536 inline void fl_clear_choice(Fl_Widget* o) { 00537 ((Fl_Choice*)o)->clear();} 00538 inline void fl_addto_choice(Fl_Widget* o, const char* s) { 00539 ((Fl_Choice*)o)->add(s);} 00540 inline void fl_replace_choice(Fl_Widget* o, int i, const char* s) { 00541 ((Fl_Choice*)o)->replace(i-1,s);} 00542 inline void fl_delete_choice(Fl_Widget* o, int i) { 00543 ((Fl_Choice*)o)->remove(i-1);} 00544 inline void fl_set_choice(Fl_Widget* o, int i) { 00545 ((Fl_Choice*)o)->value(i-1);} 00546 // inline void fl_set_choice_text(Fl_Widget*, const char*); 00547 inline int fl_get_choice(Fl_Widget* o) { 00548 return ((Fl_Choice*)o)->value()+1;} 00549 // inline const char* fl_get_choice_item_text(Fl_Widget*, int); 00550 // inline int fl_get_choice_maxitems(Fl_Widget*); 00551 inline const char* fl_get_choice_text(Fl_Widget* o) { 00552 return ((Fl_Choice*)o)->text();} 00553 inline void fl_set_choice_fontsize(Fl_Widget* o, int x) { 00554 ((Fl_Choice*)o)->textsize(x);} 00555 inline void fl_set_choice_fontstyle(Fl_Widget* o, Fl_Font x) { 00556 ((Fl_Choice*)o)->textfont(x);} 00557 // inline void fl_set_choice_item_mode(Fl_Widget*, int, unsigned); 00558 // inline void fl_set_choice_item_shortcut(Fl_Widget*, int, const char*); 00559 00560 #include "Fl_Clock.H" 00561 forms_constructort(Fl_Clock, fl_add_clock) 00562 inline void fl_get_clock(Fl_Widget* o, int* h, int* m, int* s) { 00563 *h = ((Fl_Clock*)o)->hour(); 00564 *m = ((Fl_Clock*)o)->minute(); 00565 *s = ((Fl_Clock*)o)->second(); 00566 } 00567 00568 #include "Fl_Counter.H" 00569 forms_constructor(Fl_Counter, fl_add_counter) 00570 inline void fl_set_counter_value(Fl_Widget* o, double v) { 00571 ((Fl_Counter*)o)->value(v);} 00572 inline void fl_set_counter_bounds(Fl_Widget* o, double a, double b) { 00573 ((Fl_Counter*)o)->bounds(a,b);} 00574 inline void fl_set_counter_step(Fl_Widget* o, double a, double b) { 00575 ((Fl_Counter*)o)->step(a,b);} 00576 inline void fl_set_counter_precision(Fl_Widget* o, int v) { 00577 ((Fl_Counter*)o)->precision(v);} 00578 inline void fl_set_counter_return(Fl_Widget* o, int v) { 00579 ((Fl_Counter*)o)->when((Fl_When)(v|FL_WHEN_RELEASE));} 00580 inline double fl_get_counter_value(Fl_Widget* o) { 00581 return ((Fl_Counter*)o)->value();} 00582 inline void fl_get_counter_bounds(Fl_Widget* o, float* a, float* b) { 00583 *a = float(((Fl_Counter*)o)->minimum()); 00584 *b = float(((Fl_Counter*)o)->maximum()); 00585 } 00586 //inline void fl_set_counter_filter(Fl_Widget*,const char* (*)(Fl_Widget*,double,int)); 00587 00588 // Cursor stuff cannot be emulated because it uses X stuff 00589 inline void fl_set_cursor(Fl_Window* w, Fl_Cursor c) {w->cursor(c);} 00590 #define FL_INVISIBLE_CURSOR FL_CURSOR_NONE 00591 #define FL_DEFAULT_CURSOR FL_CURSOR_DEFAULT 00592 00593 #include "Fl_Dial.H" 00594 00595 #define FL_DIAL_COL1 FL_GRAY 00596 #define FL_DIAL_COL2 37 00597 00598 forms_constructor(Fl_Dial, fl_add_dial) 00599 inline void fl_set_dial_value(Fl_Widget* o, double v) { 00600 ((Fl_Dial*)o)->value(v);} 00601 inline double fl_get_dial_value(Fl_Widget* o) { 00602 return ((Fl_Dial*)o)->value();} 00603 inline void fl_set_dial_bounds(Fl_Widget* o, double a, double b) { 00604 ((Fl_Dial*)o)->bounds(a, b);} 00605 inline void fl_get_dial_bounds(Fl_Widget* o, float* a, float* b) { 00606 *a = float(((Fl_Dial*)o)->minimum()); 00607 *b = float(((Fl_Dial*)o)->maximum()); 00608 } 00609 inline void fl_set_dial_return(Fl_Widget* o, int i) { 00610 ((Fl_Dial*)o)->when((Fl_When)(i|FL_WHEN_RELEASE));} 00611 inline void fl_set_dial_angles(Fl_Widget* o, int a, int b) { 00612 ((Fl_Dial*)o)->angles((short)a, (short)b);} 00613 //inline void fl_set_dial_cross(Fl_Widget* o, int); 00614 // inline void fl_set_dial_direction(Fl_Widget* o, uchar d) { 00615 // ((Fl_Dial*)o)->direction(d);} 00616 inline void fl_set_dial_step(Fl_Widget* o, double v) { 00617 ((Fl_Dial*)o)->step(v);} 00618 00619 // Frames: 00620 00621 inline Fl_Widget* fl_add_frame(Fl_Boxtype i,int x,int y,int w,int h,const char* l) { 00622 return fl_add_box(i,x-3,y-3,w+6,h+6,l);} 00623 00624 // labelframe nyi 00625 inline Fl_Widget* fl_add_labelframe(Fl_Boxtype i,int x,int y,int w,int h,const char* l) { 00626 Fl_Widget* o = fl_add_box(i,x-3,y-3,w+6,h+6,l); 00627 o->align(FL_ALIGN_TOP_LEFT); 00628 return o; 00629 } 00630 00631 #include "Fl_Free.H" 00632 inline Fl_Free* 00633 fl_add_free(int t,double x,double y,double w,double h,const char* l, 00634 FL_HANDLEPTR hdl) { 00635 return (Fl_Free*)(fl_add_new( 00636 new Fl_Free(t,int(x),int(y),int(w),int(h),l,hdl))); 00637 } 00638 00639 #include "fl_ask.H" 00640 #include "fl_show_colormap.H" 00641 00642 inline int fl_show_question(const char* c, int = 0) {return fl_choice("%s",fl_no,fl_yes,0L,c);} 00643 FL_EXPORT void fl_show_message(const char *,const char *,const char *); 00644 FL_EXPORT void fl_show_alert(const char *,const char *,const char *,int=0); 00645 FL_EXPORT int fl_show_question(const char *,const char *,const char *); 00646 inline const char *fl_show_input(const char *l,const char*d=0) {return fl_input("%s",d,l);} 00647 FL_EXPORT /*const*/ char *fl_show_simple_input(const char *label, const char *deflt = 0); 00648 FL_EXPORT int fl_show_choice( 00649 const char *m1, 00650 const char *m2, 00651 const char *m3, 00652 int numb, 00653 const char *b0, 00654 const char *b1, 00655 const char *b2); 00656 00657 inline void fl_set_goodies_font(Fl_Font a, Fl_Fontsize b) {fl_message_font(a,b);} 00658 #define fl_show_messages fl_message 00659 inline int fl_show_choices(const char* c,int n,const char* b1,const char* b2, 00660 const char* b3, int) { 00661 return fl_show_choice(0,c,0,n,b1,b2,b3); 00662 } 00663 00664 #include "filename.H" 00665 #include "Fl_File_Chooser.H" 00666 inline int do_matching(char* a, const char* b) {return fl_filename_match(a,b);} 00667 00668 // Forms-compatible file chooser (implementation in fselect.C): 00669 FL_EXPORT char* fl_show_file_selector(const char* message,const char* dir, 00670 const char* pat,const char* fname); 00671 FL_EXPORT char* fl_get_directory(); 00672 FL_EXPORT char* fl_get_pattern(); 00673 FL_EXPORT char* fl_get_filename(); 00674 00675 #include "Fl_Input.H" 00676 forms_constructor(Fl_Input, fl_add_input) 00677 inline void fl_set_input(Fl_Widget* o, const char* v) { 00678 ((Fl_Input*)o)->value(v);} 00679 inline void fl_set_input_return(Fl_Widget* o, int x) { 00680 ((Fl_Input*)o)->when((Fl_When)(x | FL_WHEN_RELEASE));} 00681 inline void fl_set_input_color(Fl_Widget* o, Fl_Color a, Fl_Color b) { 00682 ((Fl_Input*)o)->textcolor(a); 00683 ((Fl_Input*)o)->cursor_color(b); 00684 } 00685 // inline void fl_set_input_scroll(Fl_Widget*, int); 00686 inline void fl_set_input_cursorpos(Fl_Widget* o, int x, int /*y*/) { 00687 ((Fl_Input*)o)->position(x);} 00688 // inline void fl_set_input_selected(Fl_Widget*, int); 00689 // inline void fl_set_input_selected_range(Fl_Widget*, int, int); 00690 // inline void fl_set_input_maxchars(Fl_Widget*, int); 00691 // inline void fl_set_input_format(Fl_Widget*, int, int); 00692 // inline void fl_set_input_hscrollbar(Fl_Widget*, int); 00693 // inline void fl_set_input_vscrollbar(Fl_Widget*, int); 00694 // inline void fl_set_input_xoffset(Fl_Widget*, int); 00695 // inline void fl_set_input_topline(Fl_Widget*, int); 00696 // inline void fl_set_input_scrollbarsize(Fl_Widget*, int, int); 00697 // inline int fl_get_input_topline(Fl_Widget*); 00698 // inline int fl_get_input_screenlines(Fl_Widget*); 00699 inline int fl_get_input_cursorpos(Fl_Widget* o, int*x, int*y) { 00700 *x = ((Fl_Input*)o)->position(); *y = 0; return *x;} 00701 // inline int fl_get_input_numberoflines(Fl_Widget*); 00702 // inline void fl_get_input_format(Fl_Widget*, int*, int*); 00703 inline const char* fl_get_input(Fl_Widget* o) {return ((Fl_Input*)o)->value();} 00704 00705 #include "Fl_Menu_Button.H" 00706 00707 // types are not implemented, they all act like FL_PUSH_MENU: 00708 #define FL_TOUCH_MENU 0 00709 #define FL_PUSH_MENU 1 00710 #define FL_PULLDOWN_MENU 2 00711 forms_constructor(Fl_Menu_Button, fl_add_menu) 00712 00713 inline void fl_clear_menu(Fl_Widget* o) { 00714 ((Fl_Menu_Button*)o)->clear();} 00715 inline void fl_set_menu(Fl_Widget* o, const char* s) { 00716 ((Fl_Menu_Button*)o)->clear(); ((Fl_Menu_Button*)o)->add(s);} 00717 inline void fl_addto_menu(Fl_Widget* o, const char* s) { 00718 ((Fl_Menu_Button*)o)->add(s);} 00719 inline void fl_replace_menu_item(Fl_Widget* o, int i, const char* s) { 00720 ((Fl_Menu_Button*)o)->replace(i-1,s);} 00721 inline void fl_delete_menu_item(Fl_Widget* o, int i) { 00722 ((Fl_Menu_Button*)o)->remove(i-1);} 00723 inline void fl_set_menu_item_shortcut(Fl_Widget* o, int i, const char* s) { 00724 ((Fl_Menu_Button*)o)->shortcut(i-1,fl_old_shortcut(s));} 00725 inline void fl_set_menu_item_mode(Fl_Widget* o, int i, long x) { 00726 ((Fl_Menu_Button*)o)->mode(i-1,x);} 00727 inline void fl_show_menu_symbol(Fl_Widget*, int ) { 00728 /* ((Fl_Menu_Button*)o)->show_menu_symbol(i); */} 00729 // inline void fl_set_menu_popup(Fl_Widget*, int); 00730 inline int fl_get_menu(Fl_Widget* o) { 00731 return ((Fl_Menu_Button*)o)->value()+1;} 00732 inline const char* fl_get_menu_item_text(Fl_Widget* o, int i) { 00733 return ((Fl_Menu_Button*)o)->text(i);} 00734 inline int fl_get_menu_maxitems(Fl_Widget* o) { 00735 return ((Fl_Menu_Button*)o)->size();} 00736 inline int fl_get_menu_item_mode(Fl_Widget* o, int i) { 00737 return ((Fl_Menu_Button*)o)->mode(i);} 00738 inline const char* fl_get_menu_text(Fl_Widget* o) { 00739 return ((Fl_Menu_Button*)o)->text();} 00740 00741 #include "Fl_Positioner.H" 00742 #define FL_NORMAL_POSITIONER 0 00743 forms_constructor(Fl_Positioner, fl_add_positioner) 00744 inline void fl_set_positioner_xvalue(Fl_Widget* o, double v) { 00745 ((Fl_Positioner*)o)->xvalue(v);} 00746 inline double fl_get_positioner_xvalue(Fl_Widget* o) { 00747 return ((Fl_Positioner*)o)->xvalue();} 00748 inline void fl_set_positioner_xbounds(Fl_Widget* o, double a, double b) { 00749 ((Fl_Positioner*)o)->xbounds(a,b);} 00750 inline void fl_get_positioner_xbounds(Fl_Widget* o, float* a, float* b) { 00751 *a = float(((Fl_Positioner*)o)->xminimum()); 00752 *b = float(((Fl_Positioner*)o)->xmaximum()); 00753 } 00754 inline void fl_set_positioner_yvalue(Fl_Widget* o, double v) { 00755 ((Fl_Positioner*)o)->yvalue(v);} 00756 inline double fl_get_positioner_yvalue(Fl_Widget* o) { 00757 return ((Fl_Positioner*)o)->yvalue();} 00758 inline void fl_set_positioner_ybounds(Fl_Widget* o, double a, double b) { 00759 ((Fl_Positioner*)o)->ybounds(a,b);} 00760 inline void fl_get_positioner_ybounds(Fl_Widget* o, float* a, float* b) { 00761 *a = float(((Fl_Positioner*)o)->yminimum()); 00762 *b = float(((Fl_Positioner*)o)->ymaximum()); 00763 } 00764 inline void fl_set_positioner_xstep(Fl_Widget* o, double v) { 00765 ((Fl_Positioner*)o)->xstep(v);} 00766 inline void fl_set_positioner_ystep(Fl_Widget* o, double v) { 00767 ((Fl_Positioner*)o)->ystep(v);} 00768 inline void fl_set_positioner_return(Fl_Widget* o, int v) { 00769 ((Fl_Positioner*)o)->when((Fl_When)(v|FL_WHEN_RELEASE));} 00770 00771 #include "Fl_Slider.H" 00772 00773 #define FL_HOR_BROWSER_SLIDER FL_HOR_SLIDER 00774 #define FL_VERT_BROWSER_SLIDER FL_VERT_SLIDER 00775 00776 forms_constructort(Fl_Slider, fl_add_slider) 00777 #define FL_SLIDER_COL1 FL_GRAY 00778 inline void fl_set_slider_value(Fl_Widget* o, double v) { 00779 ((Fl_Slider*)o)->value(v);} 00780 inline double fl_get_slider_value(Fl_Widget* o) { 00781 return ((Fl_Slider*)o)->value();} 00782 inline void fl_set_slider_bounds(Fl_Widget* o, double a, double b) { 00783 ((Fl_Slider*)o)->bounds(a, b);} 00784 inline void fl_get_slider_bounds(Fl_Widget* o, float* a, float* b) { 00785 *a = float(((Fl_Slider*)o)->minimum()); 00786 *b = float(((Fl_Slider*)o)->maximum()); 00787 } 00788 inline void fl_set_slider_return(Fl_Widget* o, int i) { 00789 ((Fl_Slider*)o)->when((Fl_When)(i|FL_WHEN_RELEASE));} 00790 inline void fl_set_slider_step(Fl_Widget* o, double v) { 00791 ((Fl_Slider*)o)->step(v);} 00792 // inline void fl_set_slider_increment(Fl_Widget* o, double v, double); 00793 inline void fl_set_slider_size(Fl_Widget* o, double v) { 00794 ((Fl_Slider*)o)->slider_size(v);} 00795 00796 #include "Fl_Value_Slider.H" 00797 forms_constructor(Fl_Value_Slider, fl_add_valslider) 00798 00799 inline void fl_set_slider_precision(Fl_Widget* o, int i) { 00800 ((Fl_Value_Slider*)o)->precision(i);} 00801 // filter function! 00802 00803 // The forms text object was the same as an Fl_Box except it inverted the 00804 // meaning of FL_ALIGN_INSIDE. Implementation in forms.cxx 00805 class FL_EXPORT Fl_FormsText : public Fl_Widget { 00806 protected: 00807 void draw(); 00808 public: 00809 Fl_FormsText(Fl_Boxtype b, int X, int Y, int W, int H, const char* l=0) 00810 : Fl_Widget(X,Y,W,H,l) {box(b); align(FL_ALIGN_LEFT);} 00811 }; 00812 #define FL_NORMAL_TEXT FL_NO_BOX 00813 forms_constructorb(Fl_FormsText, fl_add_text) 00814 00815 #include "Fl_Timer.H" 00816 forms_constructort(Fl_Timer, fl_add_timer) 00817 inline void fl_set_timer(Fl_Widget* o, double v) {((Fl_Timer*)o)->value(v);} 00818 inline double fl_get_timer(Fl_Widget* o) {return ((Fl_Timer*)o)->value();} 00819 inline void fl_suspend_timer(Fl_Widget* o) {((Fl_Timer*)o)->suspended(1);} 00820 inline void fl_resume_timer(Fl_Widget* o) {((Fl_Timer*)o)->suspended(0);} 00821 inline void fl_set_timer_countup(Fl_Widget* o,char d) {((Fl_Timer*)o)->direction(d);} 00822 void fl_gettime(long* sec, long* usec); 00823 00824 // Fl_XYPlot nyi 00825 00826 00827 // stuff from DDForms: 00828 00829 inline int fl_double_click() {return Fl::event_clicks();} 00830 inline void fl_draw() {Fl::flush();} 00831 00832 #endif /* define __FORMS_H__ */ 00833 00834 // 00835 // End of "$Id$". 00836 //