forms.H 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836
  1. //
  2. // "$Id: forms.H 9325 2012-04-05 05:12:30Z fabien $"
  3. //
  4. // Forms emulation header file for the Fast Light Tool Kit (FLTK).
  5. //
  6. // Copyright 1998-2011 by Bill Spitzak and others.
  7. //
  8. // This library is free software. Distribution and use rights are outlined in
  9. // the file "COPYING" which should have been included with this file. If this
  10. // file is missing or damaged, see the license at:
  11. //
  12. // http://www.fltk.org/COPYING.php
  13. //
  14. // Please report all bugs and problems on the following page:
  15. //
  16. // http://www.fltk.org/str.php
  17. //
  18. #ifndef __FORMS_H__
  19. #define __FORMS_H__
  20. #include "Fl.H"
  21. #include "Fl_Group.H"
  22. #include "Fl_Window.H"
  23. #include "fl_draw.H"
  24. typedef Fl_Widget FL_OBJECT;
  25. typedef Fl_Window FL_FORM;
  26. ////////////////////////////////////////////////////////////////
  27. // Random constants & symbols defined by forms.h file:
  28. #ifndef NULL
  29. #define NULL 0
  30. #endif
  31. #ifndef FALSE
  32. #define FALSE 0
  33. #define TRUE 1
  34. #endif
  35. #define FL_ON 1
  36. #define FL_OK 1
  37. #define FL_VALID 1
  38. #define FL_PREEMPT 1
  39. #define FL_AUTO 2
  40. #define FL_WHEN_NEEDED FL_AUTO
  41. #define FL_OFF 0
  42. #define FL_NONE 0
  43. #define FL_CANCEL 0
  44. #define FL_INVALID 0
  45. #define FL_IGNORE -1
  46. //#define FL_CLOSE -2 // this variable is never used in FLTK Forms. It is removed becaus it conflicts with the window FL_CLOSE event
  47. #define FL_LCOL FL_BLACK
  48. #define FL_COL1 FL_GRAY
  49. #define FL_MCOL FL_LIGHT1
  50. #define FL_LEFT_BCOL FL_LIGHT3 // 53 is better match
  51. #define FL_TOP_BCOL FL_LIGHT2 // 51
  52. #define FL_BOTTOM_BCOL FL_DARK2 // 40
  53. #define FL_RIGHT_BCOL FL_DARK3 // 36
  54. #define FL_INACTIVE FL_INACTIVE_COLOR
  55. #define FL_INACTIVE_COL FL_INACTIVE_COLOR
  56. #define FL_FREE_COL1 FL_FREE_COLOR
  57. #define FL_FREE_COL2 ((Fl_Color)(FL_FREE_COLOR+1))
  58. #define FL_FREE_COL3 ((Fl_Color)(FL_FREE_COLOR+2))
  59. #define FL_FREE_COL4 ((Fl_Color)(FL_FREE_COLOR+3))
  60. #define FL_FREE_COL5 ((Fl_Color)(FL_FREE_COLOR+4))
  61. #define FL_FREE_COL6 ((Fl_Color)(FL_FREE_COLOR+5))
  62. #define FL_FREE_COL7 ((Fl_Color)(FL_FREE_COLOR+6))
  63. #define FL_FREE_COL8 ((Fl_Color)(FL_FREE_COLOR+7))
  64. #define FL_FREE_COL9 ((Fl_Color)(FL_FREE_COLOR+8))
  65. #define FL_FREE_COL10 ((Fl_Color)(FL_FREE_COLOR+9))
  66. #define FL_FREE_COL11 ((Fl_Color)(FL_FREE_COLOR+10))
  67. #define FL_FREE_COL12 ((Fl_Color)(FL_FREE_COLOR+11))
  68. #define FL_FREE_COL13 ((Fl_Color)(FL_FREE_COLOR+12))
  69. #define FL_FREE_COL14 ((Fl_Color)(FL_FREE_COLOR+13))
  70. #define FL_FREE_COL15 ((Fl_Color)(FL_FREE_COLOR+14))
  71. #define FL_FREE_COL16 ((Fl_Color)(FL_FREE_COLOR+15))
  72. #define FL_TOMATO ((Fl_Color)(131))
  73. #define FL_INDIANRED ((Fl_Color)(164))
  74. #define FL_SLATEBLUE ((Fl_Color)(195))
  75. #define FL_DARKGOLD ((Fl_Color)(84))
  76. #define FL_PALEGREEN ((Fl_Color)(157))
  77. #define FL_ORCHID ((Fl_Color)(203))
  78. #define FL_DARKCYAN ((Fl_Color)(189))
  79. #define FL_DARKTOMATO ((Fl_Color)(113))
  80. #define FL_WHEAT ((Fl_Color)(174))
  81. #define FL_ALIGN_BESIDE FL_ALIGN_INSIDE
  82. #define FL_PUP_TOGGLE 2 // FL_MENU_TOGGLE
  83. #define FL_PUP_INACTIVE 1 // FL_MENU_INACTIVE
  84. #define FL_NO_FRAME FL_NO_BOX
  85. #define FL_ROUNDED3D_UPBOX FL_ROUND_UP_BOX
  86. #define FL_ROUNDED3D_DOWNBOX FL_ROUND_DOWN_BOX
  87. #define FL_OVAL3D_UPBOX FL_ROUND_UP_BOX
  88. #define FL_OVAL3D_DOWNBOX FL_ROUND_DOWN_BOX
  89. #define FL_MBUTTON1 1
  90. #define FL_LEFTMOUSE 1
  91. #define FL_MBUTTON2 2
  92. #define FL_MIDDLEMOUSE 2
  93. #define FL_MBUTTON3 3
  94. #define FL_RIGHTMOUSE 3
  95. #define FL_MBUTTON4 4
  96. #define FL_MBUTTON5 5
  97. #define FL_INVALID_STYLE 255
  98. #define FL_NORMAL_STYLE FL_HELVETICA
  99. #define FL_BOLD_STYLE FL_HELVETICA_BOLD
  100. #define FL_ITALIC_STYLE FL_HELVETICA_ITALIC
  101. #define FL_BOLDITALIC_STYLE FL_HELVETICA_BOLD_ITALIC
  102. #define FL_FIXED_STYLE FL_COURIER
  103. #define FL_FIXEDBOLD_STYLE FL_COURIER_BOLD
  104. #define FL_FIXEDITALIC_STYLE FL_COURIER_ITALIC
  105. #define FL_FIXEDBOLDITALIC_STYLE FL_COURIER_BOLD_ITALIC
  106. #define FL_TIMES_STYLE FL_TIMES
  107. #define FL_TIMESBOLD_STYLE FL_TIMES_BOLD
  108. #define FL_TIMESITALIC_STYLE FL_TIMES_ITALIC
  109. #define FL_TIMESBOLDITALIC_STYLE FL_TIMES_BOLD_ITALIC
  110. // hacks to change the labeltype() when passed to fl_set_object_lstyle():
  111. #define FL_SHADOW_STYLE (FL_SHADOW_LABEL<<8)
  112. #define FL_ENGRAVED_STYLE (FL_ENGRAVED_LABEL<<8)
  113. #define FL_EMBOSSED_STYLE (FL_EMBOSSED_LABEL<<0)
  114. // size values are different from XForms, match older Forms:
  115. #define FL_TINY_SIZE 8
  116. #define FL_SMALL_SIZE 11 // 10
  117. //#define FL_NORMAL_SIZE 14 // 12
  118. #define FL_MEDIUM_SIZE 18 // 14
  119. #define FL_LARGE_SIZE 24 // 18
  120. #define FL_HUGE_SIZE 32 // 24
  121. #define FL_DEFAULT_SIZE FL_SMALL_SIZE
  122. #define FL_TINY_FONT FL_TINY_SIZE
  123. #define FL_SMALL_FONT FL_SMALL_SIZE
  124. #define FL_NORMAL_FONT FL_NORMAL_SIZE
  125. #define FL_MEDIUM_FONT FL_MEDIUM_SIZE
  126. #define FL_LARGE_FONT FL_LARGE_SIZE
  127. #define FL_HUGE_FONT FL_HUGE_SIZE
  128. #define FL_NORMAL_FONT1 FL_SMALL_FONT
  129. #define FL_NORMAL_FONT2 FL_NORMAL_FONT
  130. #define FL_DEFAULT_FONT FL_SMALL_FONT
  131. #define FL_RETURN_END_CHANGED FL_WHEN_RELEASE
  132. #define FL_RETURN_CHANGED FL_WHEN_CHANGED
  133. #define FL_RETURN_END FL_WHEN_RELEASE_ALWAYS
  134. #define FL_RETURN_ALWAYS (FL_WHEN_CHANGED|FL_WHEN_NOT_CHANGED)
  135. #define FL_BOUND_WIDTH 3
  136. typedef int FL_Coord;
  137. typedef int FL_COLOR;
  138. ////////////////////////////////////////////////////////////////
  139. // fltk interaction:
  140. #define FL_CMD_OPT void
  141. extern FL_EXPORT void fl_initialize(int*, char*[], const char*, FL_CMD_OPT*, int);
  142. inline void fl_finish() {}
  143. typedef void (*FL_IO_CALLBACK) (FL_SOCKET, void*);
  144. inline void fl_add_io_callback(int fd, short w, FL_IO_CALLBACK cb, void* v) {
  145. Fl::add_fd(fd, w, cb, v);}
  146. inline void fl_remove_io_callback(int fd, short, FL_IO_CALLBACK) {
  147. Fl::remove_fd(fd);} // removes all the callbacks!
  148. // type of callback is different and no "id" number is returned:
  149. inline void fl_add_timeout(long msec, void (*cb)(void*), void* v) {
  150. Fl::add_timeout(msec*.001, cb, v);}
  151. inline void fl_remove_timeout(int) {}
  152. // type of callback is different!
  153. inline void fl_set_idle_callback(void (*cb)()) {Fl::set_idle(cb);}
  154. FL_EXPORT Fl_Widget* fl_do_forms(void);
  155. FL_EXPORT Fl_Widget* fl_check_forms();
  156. inline Fl_Widget* fl_do_only_forms(void) {return fl_do_forms();}
  157. inline Fl_Widget* fl_check_only_forms(void) {return fl_check_forms();}
  158. // because of new redraw behavior, these are no-ops:
  159. inline void fl_freeze_object(Fl_Widget*) {}
  160. inline void fl_unfreeze_object(Fl_Widget*) {}
  161. inline void fl_freeze_form(Fl_Window*) {}
  162. inline void fl_unfreeze_form(Fl_Window*) {}
  163. inline void fl_freeze_all_forms() {}
  164. inline void fl_unfreeze_all_forms() {}
  165. inline void fl_set_focus_object(Fl_Window*, Fl_Widget* o) {Fl::focus(o);}
  166. inline void fl_reset_focus_object(Fl_Widget* o) {Fl::focus(o);}
  167. #define fl_set_object_focus fl_set_focus_object
  168. // void fl_set_form_atclose(Fl_Window*w,int (*cb)(Fl_Window*,void*),void* v)
  169. // void fl_set_atclose(int (*cb)(Fl_Window*,void*),void*)
  170. // fl_set_form_atactivate/atdeactivate not implemented!
  171. ////////////////////////////////////////////////////////////////
  172. // Fl_Widget:
  173. inline void fl_set_object_boxtype(Fl_Widget* o, Fl_Boxtype a) {o->box(a);}
  174. inline void fl_set_object_lsize(Fl_Widget* o,int s) {o->labelsize(s);}
  175. /* forms lib font indexes must be byte sized - extract correct byte from style word */
  176. inline void fl_set_object_lstyle(Fl_Widget* o,int a) {
  177. o->labelfont((Fl_Font)(a&0xff)); o->labeltype((Fl_Labeltype)(a>>8));}
  178. inline void fl_set_object_lcol(Fl_Widget* o, Fl_Color a) {o->labelcolor(a);}
  179. #define fl_set_object_lcolor fl_set_object_lcol
  180. inline void fl_set_object_lalign(Fl_Widget* o, Fl_Align a) {o->align(a);}
  181. #define fl_set_object_align fl_set_object_lalign
  182. inline void fl_set_object_color(Fl_Widget* o,Fl_Color a,Fl_Color b) {o->color(a,b);}
  183. inline void fl_set_object_label(Fl_Widget* o, const char* a) {o->label(a); o->redraw();}
  184. inline void fl_set_object_position(Fl_Widget*o,int x,int y) {o->position(x,y);}
  185. inline void fl_set_object_size(Fl_Widget* o, int w, int h) {o->size(w,h);}
  186. inline void fl_set_object_geometry(Fl_Widget* o,int x,int y,int w,int h) {o->resize(x,y,w,h);}
  187. inline void fl_get_object_geometry(Fl_Widget* o,int*x,int*y,int*w,int*h) {
  188. *x = o->x(); *y = o->y(); *w = o->w(); *h = o->h();}
  189. inline void fl_get_object_position(Fl_Widget* o,int*x,int*y) {
  190. *x = o->x(); *y = o->y();}
  191. typedef void (*Forms_CB)(Fl_Widget*, long);
  192. inline void fl_set_object_callback(Fl_Widget*o,Forms_CB c,long a) {o->callback(c,a);}
  193. #define fl_set_call_back fl_set_object_callback
  194. inline void fl_call_object_callback(Fl_Widget* o) {o->do_callback();}
  195. inline void fl_trigger_object(Fl_Widget* o) {o->do_callback();}
  196. inline void fl_set_object_return(Fl_Widget* o, int v) {
  197. o->when((Fl_When)(v|FL_WHEN_RELEASE));}
  198. inline void fl_redraw_object(Fl_Widget* o) {o->redraw();}
  199. inline void fl_show_object(Fl_Widget* o) {o->show();}
  200. inline void fl_hide_object(Fl_Widget* o) {o->hide();}
  201. inline void fl_free_object(Fl_Widget* x) {delete x;}
  202. inline void fl_delete_object(Fl_Widget* o) {o->parent()->remove(*o);}
  203. inline void fl_activate_object(Fl_Widget* o) {o->activate();}
  204. inline void fl_deactivate_object(Fl_Widget* o) {o->deactivate();}
  205. inline void fl_add_object(Fl_Window* f, Fl_Widget* x) {f->add(x);}
  206. inline void fl_insert_object(Fl_Widget* o, Fl_Widget* b) {b->parent()->insert(*o,b);}
  207. inline Fl_Window* FL_ObjWin(Fl_Widget* o) {return o->window();}
  208. ////////////////////////////////////////////////////////////////
  209. // things that appered in the demos a lot that I don't emulate, but
  210. // I did not want to edit out of all the demos...
  211. inline int fl_get_border_width() {return 3;}
  212. inline void fl_set_border_width(int) {}
  213. inline void fl_set_object_dblbuffer(Fl_Widget*, int) {}
  214. inline void fl_set_form_dblbuffer(Fl_Window*, int) {}
  215. ////////////////////////////////////////////////////////////////
  216. // Fl_Window:
  217. inline void fl_free_form(Fl_Window* x) {delete x;}
  218. inline void fl_redraw_form(Fl_Window* f) {f->redraw();}
  219. inline Fl_Window* fl_bgn_form(Fl_Boxtype b,int w,int h) {
  220. Fl_Window* g = new Fl_Window(w,h,0);
  221. g->box(b);
  222. return g;
  223. }
  224. FL_EXPORT void fl_end_form();
  225. inline void fl_addto_form(Fl_Window* f) {f->begin();}
  226. inline Fl_Group* fl_bgn_group() {return new Fl_Group(0,0,0,0,0);}
  227. inline void fl_end_group() {Fl_Group::current()->forms_end();}
  228. inline void fl_addto_group(Fl_Widget* o) {((Fl_Group* )o)->begin();}
  229. #define resizebox _ddfdesign_kludge()
  230. inline void fl_scale_form(Fl_Window* f, double x, double y) {
  231. f->resizable(f); f->size(int(f->w()*x),int(f->h()*y));}
  232. inline void fl_set_form_position(Fl_Window* f,int x,int y) {f->position(x,y);}
  233. inline void fl_set_form_size(Fl_Window* f, int w, int h) {f->size(w,h);}
  234. inline void fl_set_form_geometry(Fl_Window* f,int x,int y,int w,int h) {
  235. f->resize(x,y,w,h);}
  236. #define fl_set_initial_placement fl_set_form_geometry
  237. inline void fl_adjust_form_size(Fl_Window*) {}
  238. FL_EXPORT void fl_show_form(Fl_Window* f,int p,int b,const char* n);
  239. enum { // "p" argument values:
  240. FL_PLACE_FREE = 0, // make resizable
  241. FL_PLACE_MOUSE = 1, // mouse centered on form
  242. FL_PLACE_CENTER = 2, // center of the screen
  243. FL_PLACE_POSITION = 4,// fixed position, resizable
  244. FL_PLACE_SIZE = 8, // fixed size, normal fltk behavior
  245. FL_PLACE_GEOMETRY =16,// fixed size and position
  246. FL_PLACE_ASPECT = 32, // keep aspect ratio (ignored)
  247. FL_PLACE_FULLSCREEN=64,// fill screen
  248. FL_PLACE_HOTSPOT = 128,// enables hotspot
  249. FL_PLACE_ICONIC = 256,// iconic (ignored)
  250. FL_FREE_SIZE=(1<<14), // force resizable
  251. FL_FIX_SIZE =(1<<15) // force off resizable
  252. };
  253. #define FL_PLACE_FREE_CENTER (FL_PLACE_CENTER|FL_FREE_SIZE)
  254. #define FL_PLACE_CENTERFREE (FL_PLACE_CENTER|FL_FREE_SIZE)
  255. enum { // "b" arguement values:
  256. FL_NOBORDER = 0,
  257. FL_FULLBORDER,
  258. FL_TRANSIENT
  259. //FL_MODAL = (1<<8) // not implemented yet in Forms
  260. };
  261. inline void fl_set_form_hotspot(Fl_Window* w,int x,int y) {w->hotspot(x,y);}
  262. inline void fl_set_form_hotobject(Fl_Window* w, Fl_Widget* o) {w->hotspot(o);}
  263. extern FL_EXPORT char fl_flip; // in forms.C
  264. inline void fl_flip_yorigin() {fl_flip = 1;}
  265. #define fl_prepare_form_window fl_show_form
  266. inline void fl_show_form_window(Fl_Window*) {}
  267. inline void fl_raise_form(Fl_Window* f) {f->show();}
  268. inline void fl_hide_form(Fl_Window* f) {f->hide();}
  269. inline void fl_pop_form(Fl_Window* f) {f->show();}
  270. extern FL_EXPORT char fl_modal_next; // in forms.C
  271. inline void fl_activate_all_forms() {}
  272. inline void fl_deactivate_all_forms() {fl_modal_next = 1;}
  273. inline void fl_deactivate_form(Fl_Window*w) {w->deactivate();}
  274. inline void fl_activate_form(Fl_Window*w) {w->activate();}
  275. inline void fl_set_form_title(Fl_Window* f, const char* s) {f->label(s);}
  276. inline void fl_title_form(Fl_Window* f, const char* s) {f->label(s);}
  277. typedef void (*Forms_FormCB)(Fl_Widget*);
  278. inline void fl_set_form_callback(Fl_Window* f,Forms_FormCB c) {f->callback(c);}
  279. #define fl_set_form_call_back fl_set_form_callback
  280. inline void fl_init() {}
  281. FL_EXPORT void fl_set_graphics_mode(int,int);
  282. inline int fl_form_is_visible(Fl_Window* f) {return f->visible();}
  283. inline int fl_mouse_button() {return Fl::event_button();}
  284. #define fl_mousebutton fl_mouse_button
  285. #define fl_free free
  286. #define fl_malloc malloc
  287. #define fl_calloc calloc
  288. #define fl_realloc realloc
  289. ////////////////////////////////////////////////////////////////
  290. // Drawing functions. Only usable inside an Fl_Free object?
  291. inline void fl_drw_box(Fl_Boxtype b,int x,int y,int w,int h,Fl_Color bgc,int=3) {
  292. fl_draw_box(b,x,y,w,h,bgc);}
  293. inline void fl_drw_frame(Fl_Boxtype b,int x,int y,int w,int h,Fl_Color bgc,int=3) {
  294. fl_draw_box(b,x,y,w,h,bgc);}
  295. inline void fl_drw_text(Fl_Align align, int x, int y, int w, int h,
  296. Fl_Color fgcolor, int size, Fl_Font style,
  297. const char* s) {
  298. fl_font(style,size);
  299. fl_color(fgcolor);
  300. fl_draw(s,x,y,w,h,align);
  301. }
  302. // this does not work except for CENTER...
  303. inline void fl_drw_text_beside(Fl_Align align, int x, int y, int w, int h,
  304. Fl_Color fgcolor, int size, Fl_Font style,
  305. const char* s) {
  306. fl_font(style,size);
  307. fl_color(fgcolor);
  308. fl_draw(s,x,y,w,h,align);
  309. }
  310. inline void fl_set_font_name(Fl_Font n,const char* s) {Fl::set_font(n,s);}
  311. inline void fl_mapcolor(Fl_Color c, uchar r, uchar g, uchar b) {Fl::set_color(c,r,g,b);}
  312. #define fl_set_clipping(x,y,w,h) fl_push_clip(x,y,w,h)
  313. #define fl_unset_clipping() fl_pop_clip()
  314. ////////////////////////////////////////////////////////////////
  315. // Forms classes:
  316. inline Fl_Widget* fl_add_new(Fl_Widget* p) {return p;}
  317. inline Fl_Widget* fl_add_new(uchar t,Fl_Widget* p) {p->type(t); return p;}
  318. #define forms_constructor(type,name) \
  319. inline type* name(uchar t,int x,int y,int w,int h,const char* l) { \
  320. return (type*)(fl_add_new(t, new type(x,y,w,h,l)));}
  321. #define forms_constructort(type,name) \
  322. inline type* name(uchar t,int x,int y,int w,int h,const char* l) { \
  323. return (type*)(fl_add_new(new type(t,x,y,w,h,l)));}
  324. #define forms_constructorb(type,name) \
  325. inline type* name(Fl_Boxtype t,int x,int y,int w,int h,const char* l) { \
  326. return (type*)(fl_add_new(new type(t,x,y,w,h,l)));}
  327. #include "Fl_FormsBitmap.H"
  328. #define FL_NORMAL_BITMAP FL_NO_BOX
  329. forms_constructorb(Fl_FormsBitmap, fl_add_bitmap)
  330. inline void fl_set_bitmap_data(Fl_Widget* o, int w, int h, const uchar* b) {
  331. ((Fl_FormsBitmap*)o)->set(w,h,b);
  332. }
  333. #include "Fl_FormsPixmap.H"
  334. #define FL_NORMAL_PIXMAP FL_NO_BOX
  335. forms_constructorb(Fl_FormsPixmap, fl_add_pixmap)
  336. inline void fl_set_pixmap_data(Fl_Widget* o, char*const* b) {
  337. ((Fl_FormsPixmap*)o)->set(b);
  338. }
  339. //inline void fl_set_pixmap_file(Fl_Widget*, const char*);
  340. inline void fl_set_pixmap_align(Fl_Widget* o,Fl_Align a,int,int) {o->align(a);}
  341. //inline void fl_set_pixmap_colorcloseness(int, int, int);
  342. #include "Fl_Box.H"
  343. forms_constructorb(Fl_Box, fl_add_box)
  344. #include "Fl_Browser.H"
  345. forms_constructor(Fl_Browser, fl_add_browser)
  346. inline void fl_clear_browser(Fl_Widget* o) {
  347. ((Fl_Browser*)o)->clear();}
  348. inline void fl_add_browser_line(Fl_Widget* o, const char* s) {
  349. ((Fl_Browser*)o)->add(s);}
  350. inline void fl_addto_browser(Fl_Widget* o, const char* s) {
  351. ((Fl_Browser*)o)->add(s);} /* should also scroll to bottom */
  352. //inline void fl_addto_browser_chars(Fl_Widget*, const char*)
  353. //#define fl_append_browser fl_addto_browser_chars
  354. inline void fl_insert_browser_line(Fl_Widget* o, int n, const char* s) {
  355. ((Fl_Browser*)o)->insert(n,s);}
  356. inline void fl_delete_browser_line(Fl_Widget* o, int n) {
  357. ((Fl_Browser*)o)->remove(n);}
  358. inline void fl_replace_browser_line(Fl_Widget* o, int n, const char* s) {
  359. ((Fl_Browser*)o)->replace(n,s);}
  360. inline char* fl_get_browser_line(Fl_Widget* o, int n) {
  361. return (char*)(((Fl_Browser*)o)->text(n));}
  362. inline int fl_load_browser(Fl_Widget* o, const char* f) {
  363. return ((Fl_Browser*)o)->load(f);}
  364. inline void fl_select_browser_line(Fl_Widget* o, int n) {
  365. ((Fl_Browser*)o)->select(n,1);}
  366. inline void fl_deselect_browser_line(Fl_Widget* o, int n) {
  367. ((Fl_Browser*)o)->select(n,0);}
  368. inline void fl_deselect_browser(Fl_Widget* o) {
  369. ((Fl_Browser*)o)->deselect();}
  370. inline int fl_isselected_browser_line(Fl_Widget* o, int n) {
  371. return ((Fl_Browser*)o)->selected(n);}
  372. inline int fl_get_browser_topline(Fl_Widget* o) {
  373. return ((Fl_Browser*)o)->topline();}
  374. inline int fl_get_browser(Fl_Widget* o) {
  375. return ((Fl_Browser*)o)->value();}
  376. inline int fl_get_browser_maxline(Fl_Widget* o) {
  377. return ((Fl_Browser*)o)->size();}
  378. //linline int fl_get_browser_screenlines(Fl_Widget*);
  379. inline void fl_set_browser_topline(Fl_Widget* o, int n) {
  380. ((Fl_Browser*)o)->topline(n);}
  381. inline void fl_set_browser_fontsize(Fl_Widget* o, int s) {
  382. ((Fl_Browser*)o)->textsize(s);}
  383. inline void fl_set_browser_fontstyle(Fl_Widget* o, Fl_Font s) {
  384. ((Fl_Browser*)o)->textfont(s);}
  385. inline void fl_set_browser_specialkey(Fl_Widget* o, char c) {
  386. ((Fl_Browser*)o)->format_char(c);}
  387. //inline void fl_set_browser_vscrollbar(Fl_Widget*, int);
  388. //inline void fl_set_browser_hscrollbar(Fl_Widget*, int);
  389. //inline void fl_set_browser_leftslider(Fl_Widget*, int);
  390. //#define fl_set_browser_leftscrollbar fl_set_browser_leftslider
  391. //inline void fl_set_browser_line_selectable(Fl_Widget*, int, int);
  392. //inline void fl_get_browser_dimension(Fl_Widget*,int*,int*,int*,int*);
  393. //inline void fl_set_browser_dblclick_callback(Fl_Widget*,FL_CALLBACKPTR,long);
  394. //inline void fl_set_browser_xoffset(Fl_Widget*, FL_Coord);
  395. //inline void fl_set_browser_scrollbarsize(Fl_Widget*, int, int);
  396. inline void fl_setdisplayed_browser_line(Fl_Widget* o, int n, int i) {
  397. ((Fl_Browser*)o)->display(n,i);}
  398. inline int fl_isdisplayed_browser_line(Fl_Widget* o, int n) {
  399. return ((Fl_Browser*)o)->displayed(n);}
  400. #include "Fl_Button.H"
  401. #define FL_NORMAL_BUTTON 0
  402. #define FL_TOUCH_BUTTON 4
  403. #define FL_INOUT_BUTTON 5
  404. #define FL_RETURN_BUTTON 6
  405. #define FL_HIDDEN_RET_BUTTON 7
  406. #define FL_PUSH_BUTTON FL_TOGGLE_BUTTON
  407. #define FL_MENU_BUTTON 9
  408. FL_EXPORT Fl_Button* fl_add_button(uchar t,int x,int y,int w,int h,const char* l);
  409. inline int fl_get_button(Fl_Widget* b) {return ((Fl_Button*)b)->value();}
  410. inline void fl_set_button(Fl_Widget* b, int v) {((Fl_Button*)b)->value(v);}
  411. inline int fl_get_button_numb(Fl_Widget*) {return Fl::event_button();}
  412. inline void fl_set_button_shortcut(Fl_Widget* b, const char* s,int=0) {
  413. ((Fl_Button*)b)->shortcut(s);}
  414. //#define fl_set_object_shortcut(b,s) fl_set_button_shortcut(b,s)
  415. #include "Fl_Light_Button.H"
  416. forms_constructor(Fl_Light_Button, fl_add_lightbutton)
  417. #include "Fl_Round_Button.H"
  418. forms_constructor(Fl_Round_Button, fl_add_roundbutton)
  419. forms_constructor(Fl_Round_Button, fl_add_round3dbutton)
  420. #include "Fl_Check_Button.H"
  421. forms_constructor(Fl_Check_Button, fl_add_checkbutton)
  422. 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;}
  423. inline void fl_set_bitmapbutton_data(Fl_Widget* o,int a,int b,uchar* c) {
  424. (new Fl_Bitmap(c,a,b))->label(o);} // does not delete old Fl_Bitmap!
  425. 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;}
  426. inline void fl_set_pixmapbutton_data(Fl_Widget* o, const char*const* c) {
  427. (new Fl_Pixmap(c))->label(o);} // does not delete old Fl_Pixmap!
  428. // Fl_Canvas object not yet implemented!
  429. #include "Fl_Chart.H"
  430. forms_constructor(Fl_Chart, fl_add_chart)
  431. inline void fl_clear_chart(Fl_Widget* o) {
  432. ((Fl_Chart*)o)->clear();}
  433. inline void fl_add_chart_value(Fl_Widget* o,double v,const char* s,uchar c){
  434. ((Fl_Chart*)o)->add(v,s,c);}
  435. inline void fl_insert_chart_value(Fl_Widget* o, int i, double v, const char* s, uchar c) {
  436. ((Fl_Chart*)o)->insert(i,v,s,c);}
  437. inline void fl_replace_chart_value(Fl_Widget* o, int i, double v, const char* s, uchar c) {
  438. ((Fl_Chart*)o)->replace(i,v,s,c);}
  439. inline void fl_set_chart_bounds(Fl_Widget* o, double a, double b) {
  440. ((Fl_Chart*)o)->bounds(a,b);}
  441. inline void fl_set_chart_maxnumb(Fl_Widget* o, int v) {
  442. ((Fl_Chart*)o)->maxsize(v);}
  443. inline void fl_set_chart_autosize(Fl_Widget* o, int v) {
  444. ((Fl_Chart*)o)->autosize(v);}
  445. inline void fl_set_chart_lstyle(Fl_Widget* o, Fl_Font v) {
  446. ((Fl_Chart*)o)->textfont(v);}
  447. inline void fl_set_chart_lsize(Fl_Widget* o, int v) {
  448. ((Fl_Chart*)o)->textsize(v);}
  449. inline void fl_set_chart_lcolor(Fl_Widget* o, Fl_Color v) {
  450. ((Fl_Chart*)o)->textcolor(v);}
  451. #define fl_set_chart_lcol fl_set_chart_lcolor
  452. #include "Fl_Choice.H"
  453. #define FL_NORMAL_CHOICE 0
  454. #define FL_NORMAL_CHOICE2 0
  455. #define FL_DROPLIST_CHOICE 0
  456. forms_constructor(Fl_Choice, fl_add_choice)
  457. inline void fl_clear_choice(Fl_Widget* o) {
  458. ((Fl_Choice*)o)->clear();}
  459. inline void fl_addto_choice(Fl_Widget* o, const char* s) {
  460. ((Fl_Choice*)o)->add(s);}
  461. inline void fl_replace_choice(Fl_Widget* o, int i, const char* s) {
  462. ((Fl_Choice*)o)->replace(i-1,s);}
  463. inline void fl_delete_choice(Fl_Widget* o, int i) {
  464. ((Fl_Choice*)o)->remove(i-1);}
  465. inline void fl_set_choice(Fl_Widget* o, int i) {
  466. ((Fl_Choice*)o)->value(i-1);}
  467. // inline void fl_set_choice_text(Fl_Widget*, const char*);
  468. inline int fl_get_choice(Fl_Widget* o) {
  469. return ((Fl_Choice*)o)->value()+1;}
  470. // inline const char* fl_get_choice_item_text(Fl_Widget*, int);
  471. // inline int fl_get_choice_maxitems(Fl_Widget*);
  472. inline const char* fl_get_choice_text(Fl_Widget* o) {
  473. return ((Fl_Choice*)o)->text();}
  474. inline void fl_set_choice_fontsize(Fl_Widget* o, int x) {
  475. ((Fl_Choice*)o)->textsize(x);}
  476. inline void fl_set_choice_fontstyle(Fl_Widget* o, Fl_Font x) {
  477. ((Fl_Choice*)o)->textfont(x);}
  478. // inline void fl_set_choice_item_mode(Fl_Widget*, int, unsigned);
  479. // inline void fl_set_choice_item_shortcut(Fl_Widget*, int, const char*);
  480. #include "Fl_Clock.H"
  481. forms_constructort(Fl_Clock, fl_add_clock)
  482. inline void fl_get_clock(Fl_Widget* o, int* h, int* m, int* s) {
  483. *h = ((Fl_Clock*)o)->hour();
  484. *m = ((Fl_Clock*)o)->minute();
  485. *s = ((Fl_Clock*)o)->second();
  486. }
  487. #include "Fl_Counter.H"
  488. forms_constructor(Fl_Counter, fl_add_counter)
  489. inline void fl_set_counter_value(Fl_Widget* o, double v) {
  490. ((Fl_Counter*)o)->value(v);}
  491. inline void fl_set_counter_bounds(Fl_Widget* o, double a, double b) {
  492. ((Fl_Counter*)o)->bounds(a,b);}
  493. inline void fl_set_counter_step(Fl_Widget* o, double a, double b) {
  494. ((Fl_Counter*)o)->step(a,b);}
  495. inline void fl_set_counter_precision(Fl_Widget* o, int v) {
  496. ((Fl_Counter*)o)->precision(v);}
  497. inline void fl_set_counter_return(Fl_Widget* o, int v) {
  498. ((Fl_Counter*)o)->when((Fl_When)(v|FL_WHEN_RELEASE));}
  499. inline double fl_get_counter_value(Fl_Widget* o) {
  500. return ((Fl_Counter*)o)->value();}
  501. inline void fl_get_counter_bounds(Fl_Widget* o, float* a, float* b) {
  502. *a = float(((Fl_Counter*)o)->minimum());
  503. *b = float(((Fl_Counter*)o)->maximum());
  504. }
  505. //inline void fl_set_counter_filter(Fl_Widget*,const char* (*)(Fl_Widget*,double,int));
  506. // Cursor stuff cannot be emulated because it uses X stuff
  507. inline void fl_set_cursor(Fl_Window* w, Fl_Cursor c) {w->cursor(c);}
  508. #define FL_INVISIBLE_CURSOR FL_CURSOR_NONE
  509. #define FL_DEFAULT_CURSOR FL_CURSOR_DEFAULT
  510. #include "Fl_Dial.H"
  511. #define FL_DIAL_COL1 FL_GRAY
  512. #define FL_DIAL_COL2 37
  513. forms_constructor(Fl_Dial, fl_add_dial)
  514. inline void fl_set_dial_value(Fl_Widget* o, double v) {
  515. ((Fl_Dial*)o)->value(v);}
  516. inline double fl_get_dial_value(Fl_Widget* o) {
  517. return ((Fl_Dial*)o)->value();}
  518. inline void fl_set_dial_bounds(Fl_Widget* o, double a, double b) {
  519. ((Fl_Dial*)o)->bounds(a, b);}
  520. inline void fl_get_dial_bounds(Fl_Widget* o, float* a, float* b) {
  521. *a = float(((Fl_Dial*)o)->minimum());
  522. *b = float(((Fl_Dial*)o)->maximum());
  523. }
  524. inline void fl_set_dial_return(Fl_Widget* o, int i) {
  525. ((Fl_Dial*)o)->when((Fl_When)(i|FL_WHEN_RELEASE));}
  526. inline void fl_set_dial_angles(Fl_Widget* o, int a, int b) {
  527. ((Fl_Dial*)o)->angles((short)a, (short)b);}
  528. //inline void fl_set_dial_cross(Fl_Widget* o, int);
  529. // inline void fl_set_dial_direction(Fl_Widget* o, uchar d) {
  530. // ((Fl_Dial*)o)->direction(d);}
  531. inline void fl_set_dial_step(Fl_Widget* o, double v) {
  532. ((Fl_Dial*)o)->step(v);}
  533. // Frames:
  534. inline Fl_Widget* fl_add_frame(Fl_Boxtype i,int x,int y,int w,int h,const char* l) {
  535. return fl_add_box(i,x-3,y-3,w+6,h+6,l);}
  536. // labelframe nyi
  537. inline Fl_Widget* fl_add_labelframe(Fl_Boxtype i,int x,int y,int w,int h,const char* l) {
  538. Fl_Widget* o = fl_add_box(i,x-3,y-3,w+6,h+6,l);
  539. o->align(FL_ALIGN_TOP_LEFT);
  540. return o;
  541. }
  542. #include "Fl_Free.H"
  543. inline Fl_Free*
  544. fl_add_free(int t,double x,double y,double w,double h,const char* l,
  545. FL_HANDLEPTR hdl) {
  546. return (Fl_Free*)(fl_add_new(
  547. new Fl_Free(t,int(x),int(y),int(w),int(h),l,hdl)));
  548. }
  549. #include "fl_ask.H"
  550. #include "fl_show_colormap.H"
  551. inline int fl_show_question(const char* c, int = 0) {return fl_choice("%s",fl_no,fl_yes,0L,c);}
  552. FL_EXPORT void fl_show_message(const char *,const char *,const char *);
  553. FL_EXPORT void fl_show_alert(const char *,const char *,const char *,int=0);
  554. FL_EXPORT int fl_show_question(const char *,const char *,const char *);
  555. inline const char *fl_show_input(const char *l,const char*d=0) {return fl_input("%s",d,l);}
  556. FL_EXPORT /*const*/ char *fl_show_simple_input(const char *label, const char *deflt = 0);
  557. FL_EXPORT int fl_show_choice(
  558. const char *m1,
  559. const char *m2,
  560. const char *m3,
  561. int numb,
  562. const char *b0,
  563. const char *b1,
  564. const char *b2);
  565. inline void fl_set_goodies_font(Fl_Font a, Fl_Fontsize b) {fl_message_font(a,b);}
  566. #define fl_show_messages fl_message
  567. inline int fl_show_choices(const char* c,int n,const char* b1,const char* b2,
  568. const char* b3, int) {
  569. return fl_show_choice(0,c,0,n,b1,b2,b3);
  570. }
  571. #include "filename.H"
  572. #include "Fl_File_Chooser.H"
  573. inline int do_matching(char* a, const char* b) {return fl_filename_match(a,b);}
  574. // Forms-compatible file chooser (implementation in fselect.C):
  575. FL_EXPORT char* fl_show_file_selector(const char* message,const char* dir,
  576. const char* pat,const char* fname);
  577. FL_EXPORT char* fl_get_directory();
  578. FL_EXPORT char* fl_get_pattern();
  579. FL_EXPORT char* fl_get_filename();
  580. #include "Fl_Input.H"
  581. forms_constructor(Fl_Input, fl_add_input)
  582. inline void fl_set_input(Fl_Widget* o, const char* v) {
  583. ((Fl_Input*)o)->value(v);}
  584. inline void fl_set_input_return(Fl_Widget* o, int x) {
  585. ((Fl_Input*)o)->when((Fl_When)(x | FL_WHEN_RELEASE));}
  586. inline void fl_set_input_color(Fl_Widget* o, Fl_Color a, Fl_Color b) {
  587. ((Fl_Input*)o)->textcolor(a);
  588. ((Fl_Input*)o)->cursor_color(b);
  589. }
  590. // inline void fl_set_input_scroll(Fl_Widget*, int);
  591. inline void fl_set_input_cursorpos(Fl_Widget* o, int x, int /*y*/) {
  592. ((Fl_Input*)o)->position(x);}
  593. // inline void fl_set_input_selected(Fl_Widget*, int);
  594. // inline void fl_set_input_selected_range(Fl_Widget*, int, int);
  595. // inline void fl_set_input_maxchars(Fl_Widget*, int);
  596. // inline void fl_set_input_format(Fl_Widget*, int, int);
  597. // inline void fl_set_input_hscrollbar(Fl_Widget*, int);
  598. // inline void fl_set_input_vscrollbar(Fl_Widget*, int);
  599. // inline void fl_set_input_xoffset(Fl_Widget*, int);
  600. // inline void fl_set_input_topline(Fl_Widget*, int);
  601. // inline void fl_set_input_scrollbarsize(Fl_Widget*, int, int);
  602. // inline int fl_get_input_topline(Fl_Widget*);
  603. // inline int fl_get_input_screenlines(Fl_Widget*);
  604. inline int fl_get_input_cursorpos(Fl_Widget* o, int*x, int*y) {
  605. *x = ((Fl_Input*)o)->position(); *y = 0; return *x;}
  606. // inline int fl_get_input_numberoflines(Fl_Widget*);
  607. // inline void fl_get_input_format(Fl_Widget*, int*, int*);
  608. inline const char* fl_get_input(Fl_Widget* o) {return ((Fl_Input*)o)->value();}
  609. #include "Fl_Menu_Button.H"
  610. // types are not implemented, they all act like FL_PUSH_MENU:
  611. #define FL_TOUCH_MENU 0
  612. #define FL_PUSH_MENU 1
  613. #define FL_PULLDOWN_MENU 2
  614. forms_constructor(Fl_Menu_Button, fl_add_menu)
  615. inline void fl_clear_menu(Fl_Widget* o) {
  616. ((Fl_Menu_Button*)o)->clear();}
  617. inline void fl_set_menu(Fl_Widget* o, const char* s) {
  618. ((Fl_Menu_Button*)o)->clear(); ((Fl_Menu_Button*)o)->add(s);}
  619. inline void fl_addto_menu(Fl_Widget* o, const char* s) {
  620. ((Fl_Menu_Button*)o)->add(s);}
  621. inline void fl_replace_menu_item(Fl_Widget* o, int i, const char* s) {
  622. ((Fl_Menu_Button*)o)->replace(i-1,s);}
  623. inline void fl_delete_menu_item(Fl_Widget* o, int i) {
  624. ((Fl_Menu_Button*)o)->remove(i-1);}
  625. inline void fl_set_menu_item_shortcut(Fl_Widget* o, int i, const char* s) {
  626. ((Fl_Menu_Button*)o)->shortcut(i-1,fl_old_shortcut(s));}
  627. inline void fl_set_menu_item_mode(Fl_Widget* o, int i, long x) {
  628. ((Fl_Menu_Button*)o)->mode(i-1,x);}
  629. inline void fl_show_menu_symbol(Fl_Widget*, int ) {
  630. /* ((Fl_Menu_Button*)o)->show_menu_symbol(i); */}
  631. // inline void fl_set_menu_popup(Fl_Widget*, int);
  632. inline int fl_get_menu(Fl_Widget* o) {
  633. return ((Fl_Menu_Button*)o)->value()+1;}
  634. inline const char* fl_get_menu_item_text(Fl_Widget* o, int i) {
  635. return ((Fl_Menu_Button*)o)->text(i);}
  636. inline int fl_get_menu_maxitems(Fl_Widget* o) {
  637. return ((Fl_Menu_Button*)o)->size();}
  638. inline int fl_get_menu_item_mode(Fl_Widget* o, int i) {
  639. return ((Fl_Menu_Button*)o)->mode(i);}
  640. inline const char* fl_get_menu_text(Fl_Widget* o) {
  641. return ((Fl_Menu_Button*)o)->text();}
  642. #include "Fl_Positioner.H"
  643. #define FL_NORMAL_POSITIONER 0
  644. forms_constructor(Fl_Positioner, fl_add_positioner)
  645. inline void fl_set_positioner_xvalue(Fl_Widget* o, double v) {
  646. ((Fl_Positioner*)o)->xvalue(v);}
  647. inline double fl_get_positioner_xvalue(Fl_Widget* o) {
  648. return ((Fl_Positioner*)o)->xvalue();}
  649. inline void fl_set_positioner_xbounds(Fl_Widget* o, double a, double b) {
  650. ((Fl_Positioner*)o)->xbounds(a,b);}
  651. inline void fl_get_positioner_xbounds(Fl_Widget* o, float* a, float* b) {
  652. *a = float(((Fl_Positioner*)o)->xminimum());
  653. *b = float(((Fl_Positioner*)o)->xmaximum());
  654. }
  655. inline void fl_set_positioner_yvalue(Fl_Widget* o, double v) {
  656. ((Fl_Positioner*)o)->yvalue(v);}
  657. inline double fl_get_positioner_yvalue(Fl_Widget* o) {
  658. return ((Fl_Positioner*)o)->yvalue();}
  659. inline void fl_set_positioner_ybounds(Fl_Widget* o, double a, double b) {
  660. ((Fl_Positioner*)o)->ybounds(a,b);}
  661. inline void fl_get_positioner_ybounds(Fl_Widget* o, float* a, float* b) {
  662. *a = float(((Fl_Positioner*)o)->yminimum());
  663. *b = float(((Fl_Positioner*)o)->ymaximum());
  664. }
  665. inline void fl_set_positioner_xstep(Fl_Widget* o, double v) {
  666. ((Fl_Positioner*)o)->xstep(v);}
  667. inline void fl_set_positioner_ystep(Fl_Widget* o, double v) {
  668. ((Fl_Positioner*)o)->ystep(v);}
  669. inline void fl_set_positioner_return(Fl_Widget* o, int v) {
  670. ((Fl_Positioner*)o)->when((Fl_When)(v|FL_WHEN_RELEASE));}
  671. #include "Fl_Slider.H"
  672. #define FL_HOR_BROWSER_SLIDER FL_HOR_SLIDER
  673. #define FL_VERT_BROWSER_SLIDER FL_VERT_SLIDER
  674. forms_constructort(Fl_Slider, fl_add_slider)
  675. #define FL_SLIDER_COL1 FL_GRAY
  676. inline void fl_set_slider_value(Fl_Widget* o, double v) {
  677. ((Fl_Slider*)o)->value(v);}
  678. inline double fl_get_slider_value(Fl_Widget* o) {
  679. return ((Fl_Slider*)o)->value();}
  680. inline void fl_set_slider_bounds(Fl_Widget* o, double a, double b) {
  681. ((Fl_Slider*)o)->bounds(a, b);}
  682. inline void fl_get_slider_bounds(Fl_Widget* o, float* a, float* b) {
  683. *a = float(((Fl_Slider*)o)->minimum());
  684. *b = float(((Fl_Slider*)o)->maximum());
  685. }
  686. inline void fl_set_slider_return(Fl_Widget* o, int i) {
  687. ((Fl_Slider*)o)->when((Fl_When)(i|FL_WHEN_RELEASE));}
  688. inline void fl_set_slider_step(Fl_Widget* o, double v) {
  689. ((Fl_Slider*)o)->step(v);}
  690. // inline void fl_set_slider_increment(Fl_Widget* o, double v, double);
  691. inline void fl_set_slider_size(Fl_Widget* o, double v) {
  692. ((Fl_Slider*)o)->slider_size(v);}
  693. #include "Fl_Value_Slider.H"
  694. forms_constructor(Fl_Value_Slider, fl_add_valslider)
  695. inline void fl_set_slider_precision(Fl_Widget* o, int i) {
  696. ((Fl_Value_Slider*)o)->precision(i);}
  697. // filter function!
  698. // The forms text object was the same as an Fl_Box except it inverted the
  699. // meaning of FL_ALIGN_INSIDE. Implementation in forms.cxx
  700. class FL_EXPORT Fl_FormsText : public Fl_Widget {
  701. protected:
  702. void draw();
  703. public:
  704. Fl_FormsText(Fl_Boxtype b, int X, int Y, int W, int H, const char* l=0)
  705. : Fl_Widget(X,Y,W,H,l) {box(b); align(FL_ALIGN_LEFT);}
  706. };
  707. #define FL_NORMAL_TEXT FL_NO_BOX
  708. forms_constructorb(Fl_FormsText, fl_add_text)
  709. #include "Fl_Timer.H"
  710. forms_constructort(Fl_Timer, fl_add_timer)
  711. inline void fl_set_timer(Fl_Widget* o, double v) {((Fl_Timer*)o)->value(v);}
  712. inline double fl_get_timer(Fl_Widget* o) {return ((Fl_Timer*)o)->value();}
  713. inline void fl_suspend_timer(Fl_Widget* o) {((Fl_Timer*)o)->suspended(1);}
  714. inline void fl_resume_timer(Fl_Widget* o) {((Fl_Timer*)o)->suspended(0);}
  715. inline void fl_set_timer_countup(Fl_Widget* o,char d) {((Fl_Timer*)o)->direction(d);}
  716. void fl_gettime(long* sec, long* usec);
  717. // Fl_XYPlot nyi
  718. // stuff from DDForms:
  719. inline int fl_double_click() {return Fl::event_clicks();}
  720. inline void fl_draw() {Fl::flush();}
  721. #endif /* define __FORMS_H__ */
  722. //
  723. // End of "$Id: forms.H 9325 2012-04-05 05:12:30Z fabien $".
  724. //