FLTK 1.3.2

- Main Page
- Related Pages
- Modules
- Classes
- Files

- File List
- File Members

forms.H

    00001 //
    00002 // "$Id: forms.H 9325 2012-04-05 05:12:30Z fabien $"
    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: forms.H 9325 2012-04-05 05:12:30Z fabien $".
    00836 //