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