home *** CD-ROM | disk | FTP | other *** search
/ Graphics 16,000 / graphics-16000.iso / sgi / editors / kali.lha / kali / forms.h < prev    next >
C/C++ Source or Header  |  1992-10-09  |  27KB  |  1,058 lines

  1. /************************************************************************
  2.  *                                    *
  3.  *  Forms is a library for building up dialogue and interaction boxes.  *
  4.  *  It is based of the Silicon Graphics Graphical Library.        *
  5.  *                                    *
  6.  *  This software is public domain. It may not be resold.        *
  7.  *                                    *
  8.  *  Written by: Mark Overmars                        *
  9.  *              Department of Computer Science                *
  10.  *              University of Utrecht                    *
  11.  *        P.O. Box 80.089                        *
  12.  *              3508 TB Utrecht, the Netherlands            *
  13.  *        Email: markov@cs.ruu.nl                    *
  14.  *                                    *
  15.  *  Version 2.0 a                            *
  16.  *  Date:  Nov 26, 1991                            *
  17.  ************************************************************************/
  18.  
  19. #ifndef __FORMS_H__
  20. #define __FORMS_H__
  21.  
  22. #if defined(_LANGUAGE_C_PLUS_PLUS) || defined(__cplusplus)
  23. extern "C" {
  24. #endif
  25.  
  26. #include <stddef.h>
  27. #include <gl/gl.h>
  28.  
  29. /************   The type OBJECT            ************/
  30.  
  31. #define FL_LABEL_SIZE        64
  32. #define FL_SHORTCUT_SIZE    32
  33.  
  34. struct forms;
  35.  
  36. typedef struct objs {
  37.    int objclass;        /* What type of object */
  38.    int type;            /* The type within the class */
  39.    int boxtype;         /* The type of the bounding box */
  40.    float x,y,w,h;       /* The bounding box */
  41.    int col1,col2;       /* Two possible colors */
  42.  
  43.    char label[FL_LABEL_SIZE];    /* The label */
  44.    int align;        /* Label or text alignment */
  45.    int lcol;        /* Color of the label */
  46.    float lsize;     /* Size of the label */
  47.    int lstyle;        /* Style of the text label */
  48.  
  49.    char shortcut[FL_SHORTCUT_SIZE];    /* The list of shortcuts */
  50.  
  51.    int (*handle)(struct objs *, int, float, float, char);
  52.             /* Handling procedure. */
  53.  
  54.    int *spec;           /* pointer to special stuff for object */
  55.  
  56.    int pushed;        /* wheter pushed */
  57.    int focus;         /* wheter focussed */
  58.    int belowmouse;    /* Whether currently below the mouse */
  59.  
  60.    int frozen;        /* Whether it will be redrawn */
  61.    int active;        /* Whether active */
  62.    int input;        /* Whether receiving input */
  63.    int visible;         /* Whether being displayed */
  64.    int radio;           /* Whether a radio object */
  65.    int automatic;       /* Whether this object gets timer events */
  66.    void (*object_call_back)(struct objs *, long);
  67.             /* The call-back routine */
  68.    long argument;    /* Its argument */
  69.  
  70.    struct objs *next;    /* Next object in the form */
  71.    struct objs *prev;    /* Previous object in the form */
  72.    struct forms *form;    /* Form to which object belong */
  73. } FL_OBJECT;
  74.  
  75. /************   The type FORM              ************/
  76.  
  77. typedef struct forms {
  78.    long window;         /* Window of the form */
  79.    float w,h;           /* The size of the form */
  80.    long x,y;        /* Position of form on screen */
  81.  
  82.    int deactivated;    /* Whether deactivated */
  83.    int visible;         /* Whether being displayed */
  84.    int frozen;          /* When true no redraws are performed */
  85.  
  86.    int doublebuf;    /* Whether in double buffer mode */
  87.  
  88.    void (*form_call_back)(struct objs *);
  89.             /* The call-back routine */
  90.  
  91.    struct objs *first;    /* First object in the form */
  92.    struct objs *last;    /* Last object in the form */
  93.  
  94.    struct objs *focusobj; /* Object to which input is directed */
  95. } FL_FORM;
  96.  
  97. /************   General Constants          ************/
  98.  
  99. #ifndef NULL
  100. #define NULL                    0
  101. #endif
  102.  
  103. #ifndef FALSE
  104. #define FALSE                   0
  105. #endif
  106.  
  107. #ifndef TRUE
  108. #define TRUE                    1
  109. #endif
  110.  
  111. /***** Placement *****/
  112.  
  113. #define FL_PLACE_FREE        0
  114. #define FL_PLACE_SIZE        1
  115. #define FL_PLACE_ASPECT        2
  116. #define FL_PLACE_MOUSE        3
  117. #define FL_PLACE_CENTER        4
  118. #define FL_PLACE_POSITION    5
  119.  
  120. /***** Finds *****/
  121.  
  122. #define FL_FIND_INPUT        0
  123. #define FL_FIND_AUTOMATIC    1
  124. #define FL_FIND_MOUSE        2
  125.  
  126. /***** Special Objects  *****/
  127.  
  128. #define FL_BEGIN_GROUP        10000
  129. #define FL_END_GROUP        20000
  130.  
  131. /***** Alignments *****/
  132.  
  133. #define FL_ALIGN_TOP        0
  134. #define FL_ALIGN_BOTTOM        1
  135. #define FL_ALIGN_LEFT        2
  136. #define FL_ALIGN_RIGHT        3
  137. #define FL_ALIGN_CENTER        4
  138.  
  139. /***** Bounding boxes *****/
  140.  
  141. #define FL_NO_BOX        0
  142. #define FL_UP_BOX        1
  143. #define FL_DOWN_BOX        2
  144. #define FL_FLAT_BOX        3
  145. #define FL_BORDER_BOX        4
  146. #define FL_SHADOW_BOX        5
  147. #define FL_FRAME_BOX        6
  148. #define FL_ROUNDED_BOX        7
  149. #define FL_RFLAT_BOX        8
  150. #define FL_RSHADOW_BOX        9
  151.  
  152. /***** Boundary Colors *****/
  153.  
  154. #define FL_TOP_BOUND_COL    51
  155. #define FL_LEFT_BOUND_COL    55
  156. #define FL_BOT_BOUND_COL    40
  157. #define FL_RIGHT_BOUND_COL    35
  158.  
  159. #define FL_COL1            47
  160. #define FL_MCOL            49
  161. #define FL_LCOL            0
  162.  
  163. #define FL_BOUND_WIDTH        3.0
  164.  
  165. /***** Events *****/
  166.  
  167. #define FL_DRAW            0
  168. #define FL_PUSH            1
  169. #define FL_RELEASE        2
  170. #define FL_ENTER        3
  171. #define FL_LEAVE        4
  172. #define FL_MOUSE        5
  173. #define FL_FOCUS        6
  174. #define FL_UNFOCUS        7
  175. #define FL_KEYBOARD        8
  176. #define FL_STEP            9
  177. #define FL_MOVE            10
  178.  
  179. /***** Font *****/
  180.  
  181. #define FL_FONT_NAME        "Helvetica"
  182. #define FL_FONT_BOLDNAME    "Helvetica-Bold"
  183. #define FL_FONT_ITALICNAME    "Helvetica-Oblique"
  184. #define FL_FONT_FIXEDNAME    "Courier"
  185. #define FL_FONT_ICONNAME    "Icon"
  186.  
  187. #define FL_SMALL_FONT        8.0
  188. #define FL_NORMAL_FONT        11.0
  189. #define FL_LARGE_FONT        20.0
  190.  
  191. #define FL_NORMAL_STYLE        0
  192. #define FL_BOLD_STYLE        1
  193. #define FL_ITALIC_STYLE        2
  194. #define FL_FIXED_STYLE        3
  195. #define FL_ENGRAVED_STYLE    4
  196. #define FL_ICON_STYLE        5
  197.  
  198.  
  199. /************   General Routines           ************/
  200.  
  201. /***** In objects.c *****/
  202.  
  203. typedef int (*FL_HANDLEPTR)(FL_OBJECT *, int , float, float, char);
  204.  
  205. FL_FORM        *fl_make_form(float,float); 
  206. FL_OBJECT    *fl_make_object(int,int,float,float,float,float,char [], FL_HANDLEPTR);
  207.  
  208. void    fl_free_object(FL_OBJECT *);
  209. void    fl_free_form(FL_FORM *);
  210.  
  211. void    fl_add_object(FL_FORM *, FL_OBJECT*);
  212. void    fl_insert_object(FL_OBJECT *, FL_OBJECT*);
  213. void    fl_delete_object(FL_OBJECT *);
  214.  
  215. void    fl_set_object_align(FL_OBJECT *, int);
  216. void    fl_set_object_boxtype(FL_OBJECT *, int);
  217. void    fl_set_object_color(FL_OBJECT *, int, int);
  218. void    fl_set_object_label(FL_OBJECT *, char []);
  219. void    fl_set_object_lcol(FL_OBJECT *, int);
  220. void    fl_set_object_lsize(FL_OBJECT *, float );
  221. void    fl_set_object_lstyle(FL_OBJECT *, int);
  222.  
  223. void    fl_show_object(FL_OBJECT *);
  224. void    fl_hide_object(FL_OBJECT *);
  225.  
  226. void     fl_set_object_focus(FL_FORM *, FL_OBJECT *);
  227.  
  228. void    fl_set_object_shortcut(FL_OBJECT *, char []);
  229.  
  230. FL_OBJECT    *fl_find_object(FL_OBJECT *, int, float, float);
  231. FL_OBJECT    *fl_find_first(FL_FORM *, int, float, float);
  232. FL_OBJECT    *fl_find_last(FL_FORM *, int, float, float);
  233.  
  234. void    fl_redraw_object(FL_OBJECT *);
  235. void    fl_redraw_form(FL_FORM *);
  236.  
  237. void    fl_freeze_object(FL_OBJECT *);
  238. void    fl_unfreeze_object(FL_OBJECT *);
  239. void    fl_freeze_form(FL_FORM *);
  240. void    fl_unfreeze_form(FL_FORM *);
  241.  
  242. void    fl_handle_object(FL_OBJECT *, int, float, float, char);
  243. int    fl_handle_object_direct(FL_OBJECT *, int, float, float, char);
  244.  
  245. /***** In forms.c *****/
  246.  
  247. extern FL_FORM *fl_current_form;
  248.  
  249. FL_FORM        *fl_bgn_form(int, float, float);
  250. void        fl_end_form(void);
  251. void          fl_addto_form(FL_FORM *);
  252.  
  253. FL_OBJECT    *fl_bgn_group(void);
  254. FL_OBJECT    *fl_end_group(void);
  255.  
  256. void        fl_set_form_position(FL_FORM *, long, long);
  257. long        fl_show_form(FL_FORM *, int, int, char *); 
  258. void        fl_hide_form(FL_FORM *);    
  259.  
  260. FL_OBJECT    *fl_do_forms(void);
  261. FL_OBJECT    *fl_check_forms(void);
  262. FL_OBJECT    *fl_do_only_forms(void);
  263. FL_OBJECT    *fl_check_only_forms(void);
  264.  
  265. void        fl_activate_form(FL_FORM *);
  266. void        fl_deactivate_form(FL_FORM *);
  267. void        fl_activate_all_forms();
  268. void        fl_deactivate_all_forms();
  269.  
  270. /***** In events.c *****/
  271.  
  272. extern FL_OBJECT *FL_EVENT;
  273.  
  274. typedef void (*FL_CALLBACKPTR)(FL_OBJECT *, long);
  275. typedef void (*FL_FORMCALLBACKPTR)(FL_OBJECT *);
  276. typedef void (*FL_EVENTCALLBACKPTR)(short, short);
  277.  
  278. void    fl_init_events();
  279.  
  280. void    fl_set_call_back(FL_OBJECT *, FL_CALLBACKPTR, long);
  281. void    fl_set_event_call_back(FL_EVENTCALLBACKPTR);
  282. void    fl_set_form_call_back(FL_FORM *, FL_FORMCALLBACKPTR);
  283.  
  284. void     fl_qdevice(Device);
  285. void     fl_unqdevice(Device);
  286. int     fl_isqueued(Device);
  287. long     fl_qtest(void);
  288. long     fl_qread(short *);
  289. long     fl_blkqread(short *, short);
  290. void     fl_qreset(void);
  291. void     fl_qenter(short,short);
  292. void     fl_tie(Device, Device, Device);
  293.  
  294. void    fl_treat_user_event(void);
  295.  
  296. FL_OBJECT     *fl_object_qtest(void);
  297. FL_OBJECT     *fl_object_qread(void);
  298. void         fl_object_qenter(FL_OBJECT *);
  299.  
  300. /***** In goodies.c *****/
  301.  
  302. long     fl_show_buttonbox(void);
  303. void     fl_hide_buttonbox(void);
  304. void     fl_set_buttonbox_label(int, char []);
  305.  
  306. void     fl_show_message(char [], char[], char []);
  307. int     fl_show_question(char [], char[], char []);
  308. int     fl_show_choice(char [], char[], char [], int,char [], char[], char []);
  309. char     *fl_show_input(char[], char[]);
  310.  
  311. int     fl_show_colormap(int);
  312.  
  313. /***** In fselect.c *****/
  314.  
  315. char     *fl_show_file_selector(char [], char [], char [], char []);
  316.  
  317. char     *fl_get_directory();
  318. char     *fl_get_pattern();
  319. char     *fl_get_filename();
  320.  
  321. /***** In draw.c *****/
  322.  
  323. void    fl_get_mouse(float *, float *);
  324.  
  325. void    fl_set_clipping(float, float, float, float);
  326. void    fl_unset_clipping(void);
  327.  
  328. void    fl_init_fonts();
  329. void    fl_set_font(char [], char [], char [], char[]);
  330. float    fl_get_char_height(float, int);
  331. float    fl_get_char_width(float, int, char);
  332. float    fl_get_string_width(float, int, char []);
  333.  
  334. void    fl_init_colormap();
  335. void    fl_color(int);
  336. void    fl_mapcolor(int, short, short, short);
  337. void    fl_getmcolor(int, short *, short *, short *);
  338.  
  339. void    fl_line(float, float, float, float, int);
  340. void    fl_rect(float, float, float, float, int);
  341. void    fl_bound(float, float, float, float, int);
  342. void    fl_rectbound(float, float, float, float, int);
  343.  
  344. void    fl_drw_box(int ,float, float, float, float, int,float);
  345. void    fl_drw_text(int, float, float, float, float, int, float, int, char[]);
  346. void    fl_drw_text_beside(int, float, float, float, float, int, float, int, char[]);
  347. void    fl_drw_text_cursor(int, float, float, float, float, int, float, int, char[], int, int);
  348.  
  349. /***** In symbols.c *****/
  350.  
  351. typedef void (*FL_DRAWPTR)(int);
  352.  
  353. void     fl_init_symbols();
  354.  
  355. int     fl_add_symbol(char [], FL_DRAWPTR, int);
  356. int     fl_draw_symbol(char [], float, float, float,float, int);
  357.  
  358. /***** In support.c *****/
  359.  
  360. extern int fl_rgbmode;
  361. extern int fl_doublebuf;
  362.  
  363. void    fl_init();
  364. void    fl_set_graphics_mode(int, int);
  365.  
  366. void    fl_show_errors(int);
  367. void    fl_error(char [], char []);
  368.  
  369. void    *fl_malloc(size_t);
  370.  
  371. /************************* The Classes ***********************/
  372.  
  373. /************   Object Class: Bitmap       ************/
  374.  
  375. /***** Class    *****/
  376.  
  377. #define FL_BITMAP        3
  378.  
  379. /***** Types    *****/
  380.  
  381. #define FL_NORMAL_BITMAP    0
  382.  
  383. /***** Defaults *****/
  384.  
  385. #define FL_BITMAP_BOXTYPE    FL_NO_BOX
  386. #define FL_BITMAP_COL1        0
  387. #define FL_BITMAP_COL2        FL_COL1
  388. #define FL_BITMAP_LCOL        FL_LCOL
  389. #define FL_BITMAP_ALIGN        FL_ALIGN_BOTTOM
  390.  
  391. /***** Others   *****/
  392.  
  393. #define FL_BITMAP_MAXSIZE    128*128
  394. #define FL_BITMAP_BW        FL_BOUND_WIDTH
  395.  
  396. /***** Routines *****/
  397.  
  398. FL_OBJECT     *fl_create_bitmap(int, float, float, float, float, char []);
  399. FL_OBJECT     *fl_add_bitmap(int, float, float, float, float, char []);
  400.  
  401. void        fl_set_bitmap(FL_OBJECT *, int, int, char *);
  402.  
  403.  
  404. /************   Object Class: Box          ************/
  405.  
  406. /***** Class    *****/
  407.  
  408. #define FL_BOX            1
  409.  
  410. /***** Types    *****/
  411.  
  412. /* See the bouding boxes */
  413.  
  414. /***** Defaults *****/
  415.  
  416. #define FL_BOX_BOXTYPE        FL_UP_BOX
  417. #define FL_BOX_COL1        FL_COL1
  418. #define FL_BOX_LCOL        FL_LCOL
  419. #define FL_BOX_ALIGN        FL_ALIGN_CENTER
  420.  
  421. /***** Others   *****/
  422.  
  423. #define FL_BOX_BW        FL_BOUND_WIDTH
  424.  
  425. /***** Routines *****/
  426.  
  427. FL_OBJECT    *fl_create_box(int, float, float, float, float, char []);
  428. FL_OBJECT    *fl_add_box(int, float, float, float, float, char []);
  429.  
  430. /************   Object Class: Browser      ************/
  431.  
  432. /***** Class    *****/
  433.  
  434. #define FL_BROWSER        71
  435.  
  436. /***** Types    *****/
  437.  
  438. #define FL_NORMAL_BROWSER    0
  439. #define FL_SELECT_BROWSER    1
  440. #define FL_HOLD_BROWSER        2
  441. #define FL_MULTI_BROWSER    3
  442.  
  443. /***** Defaults *****/
  444.  
  445. #define FL_BROWSER_BOXTYPE    FL_DOWN_BOX
  446. #define FL_BROWSER_COL1        FL_COL1
  447. #define FL_BROWSER_COL2        3
  448. #define FL_BROWSER_LCOL        FL_LCOL
  449. #define FL_BROWSER_ALIGN    FL_ALIGN_BOTTOM
  450.  
  451. /***** Others   *****/
  452.  
  453. #define FL_BROWSER_SLCOL    FL_COL1
  454. #define FL_BROWSER_BW        FL_BOUND_WIDTH
  455. #define FL_BROWSER_LINELENGTH    128
  456. #define FL_BROWSER_MAXLINE    512
  457.  
  458. /***** Routines *****/
  459.  
  460. FL_OBJECT    *fl_create_browser(int, float, float, float, float, char []);
  461. FL_OBJECT    *fl_add_browser(int, float, float, float, float, char []);
  462.  
  463. void     fl_set_browser_topline(FL_OBJECT *, int);
  464. void     fl_clear_browser(FL_OBJECT *);
  465. void     fl_add_browser_line(FL_OBJECT *, char []);
  466. void     fl_addto_browser(FL_OBJECT *, char []);
  467. void     fl_insert_browser_line(FL_OBJECT *, int , char []);
  468. void     fl_delete_browser_line(FL_OBJECT *, int );
  469. void     fl_replace_browser_line(FL_OBJECT *, int , char []);
  470. char    *fl_get_browser_line(FL_OBJECT *, int);
  471. int     fl_load_browser(FL_OBJECT *, char []);
  472. int    fl_get_browser_maxline(FL_OBJECT *);
  473. void     fl_select_browser_line(FL_OBJECT *, int );
  474. void     fl_deselect_browser_line(FL_OBJECT *, int );
  475. void     fl_deselect_browser(FL_OBJECT *);
  476. int     fl_isselected_browser_line(FL_OBJECT *, int );
  477. int     fl_get_browser(FL_OBJECT *);
  478. void     fl_set_browser_fontsize(FL_OBJECT *, float);
  479. void     fl_set_browser_fontstyle(FL_OBJECT *, int);
  480. void     fl_set_browser_specialkey(FL_OBJECT *, char);
  481. /************   Object Class: Button       ************/
  482.  
  483. /***** Class    *****/
  484.  
  485. #define FL_BUTTON            11
  486.  
  487. /***** Types    *****/
  488.  
  489. #define FL_NORMAL_BUTTON    0
  490. #define FL_PUSH_BUTTON        1
  491. #define FL_RADIO_BUTTON        2
  492. #define FL_HIDDEN_BUTTON    3
  493. #define FL_TOUCH_BUTTON        4
  494. #define FL_INOUT_BUTTON        5
  495. #define FL_RETURN_BUTTON    6
  496. #define FL_HIDDEN_RET_BUTTON    7
  497.  
  498. /***** Defaults *****/
  499.  
  500. #define FL_BUTTON_BOXTYPE    FL_UP_BOX
  501. #define FL_BUTTON_COL1        FL_COL1
  502. #define FL_BUTTON_COL2        FL_COL1
  503. #define FL_BUTTON_LCOL        FL_LCOL
  504. #define FL_BUTTON_ALIGN        FL_ALIGN_CENTER
  505.  
  506. /***** Others   *****/
  507.  
  508. #define FL_BUTTON_MCOL1        FL_MCOL
  509. #define FL_BUTTON_MCOL2        FL_MCOL
  510. #define FL_BUTTON_BW        FL_BOUND_WIDTH
  511.  
  512. /***** Routines *****/
  513.  
  514. FL_OBJECT    *fl_create_button(int, float, float, float, float, char []);
  515. FL_OBJECT    *fl_add_button(int, float, float, float, float, char []);
  516.  
  517. int    fl_get_button(FL_OBJECT *);
  518. void    fl_set_button(FL_OBJECT *, int);
  519.  
  520. void    fl_set_button_shortcut(FL_OBJECT *, char []);
  521.  
  522. /************   Object Class: Chart         ************/
  523.  
  524. /***** Class    *****/
  525.  
  526. #define FL_CHART        4
  527.  
  528. /***** Types    *****/
  529.  
  530. #define FL_BAR_CHART        0
  531. #define FL_HORBAR_CHART        1
  532. #define FL_LINE_CHART        2
  533. #define FL_FILLED_CHART        3
  534. #define FL_SPIKE_CHART        4
  535. #define FL_PIE_CHART        5
  536. #define FL_SPECIALPIE_CHART    6
  537.  
  538. /***** Defaults *****/
  539.  
  540. #define FL_CHART_BOXTYPE    FL_BORDER_BOX
  541. #define FL_CHART_COL1        FL_COL1
  542. #define FL_CHART_LCOL        FL_LCOL
  543. #define FL_CHART_ALIGN        FL_ALIGN_BOTTOM
  544.  
  545. /***** Others   *****/
  546.  
  547. #define FL_CHART_BW        FL_BOUND_WIDTH
  548. #define FL_CHART_MAX        128
  549.  
  550. /***** Routines *****/
  551.  
  552. FL_OBJECT    *fl_create_chart(int, float, float, float, float, char []);
  553. FL_OBJECT    *fl_add_chart(int, float, float, float, float, char []);
  554.  
  555. void    fl_clear_chart(FL_OBJECT *);
  556. void    fl_add_chart_value(FL_OBJECT *, float, char [], int);
  557. void    fl_insert_chart_value(FL_OBJECT *, int, float, char [], int);
  558. void    fl_replace_chart_value(FL_OBJECT *, int, float, char [], int);
  559. void    fl_set_chart_bounds(FL_OBJECT *, float, float);
  560. void    fl_set_chart_maxnumb(FL_OBJECT *, int);
  561. void    fl_set_chart_autosize(FL_OBJECT *, int);
  562. /************   Object Class: Choice       ************/
  563.  
  564. /***** Class    *****/
  565.  
  566. #define FL_CHOICE        42
  567.  
  568. /***** Types    *****/
  569.  
  570. #define FL_NORMAL_CHOICE    0
  571.  
  572. /***** Defaults *****/
  573.  
  574. #define FL_CHOICE_BOXTYPE    FL_DOWN_BOX
  575. #define FL_CHOICE_COL1        FL_COL1
  576. #define FL_CHOICE_COL2        FL_LCOL
  577. #define FL_CHOICE_LCOL        FL_LCOL
  578. #define FL_CHOICE_ALIGN        FL_ALIGN_LEFT
  579.  
  580. /***** Others   *****/
  581.  
  582. #define FL_CHOICE_BW        FL_BOUND_WIDTH
  583. #define FL_CHOICE_MCOL        FL_MCOL
  584. #define FL_CHOICE_MAXITEMS    128
  585. #define FL_CHOICE_MAXSTR    64
  586.  
  587. /***** Routines *****/
  588.  
  589. FL_OBJECT     *fl_create_choice(int ,float ,float ,float ,float ,char []);
  590. FL_OBJECT     *fl_add_choice(int ,float ,float ,float ,float ,char []);
  591.  
  592. void     fl_clear_choice(FL_OBJECT *);
  593. void     fl_addto_choice(FL_OBJECT *, char []);
  594. void     fl_replace_choice(FL_OBJECT *, int , char []);
  595. void     fl_delete_choice(FL_OBJECT *, int );
  596. void     fl_set_choice(FL_OBJECT *, int );
  597. int     fl_get_choice(FL_OBJECT *);
  598. char    *fl_get_choice_text(FL_OBJECT *);
  599. void    fl_set_choice_fontsize(FL_OBJECT *, float);
  600. void    fl_set_choice_fontstyle(FL_OBJECT *, int);
  601.  
  602.  
  603. /************   Object Class: Clock        ************/
  604.  
  605. /***** Class    *****/
  606.  
  607. #define FL_CLOCK        61
  608.  
  609. /***** Types    *****/
  610.  
  611. #define FL_SQUARE_CLOCK        0
  612. #define FL_ROUND_CLOCK        1
  613.  
  614. /***** Defaults *****/
  615.  
  616. #define FL_CLOCK_BOXTYPE    FL_UP_BOX
  617. #define FL_CLOCK_COL1        37
  618. #define FL_CLOCK_COL2        42
  619. #define FL_CLOCK_LCOL        FL_LCOL
  620. #define FL_CLOCK_ALIGN        FL_ALIGN_BOTTOM
  621.  
  622. /***** Others   *****/
  623.  
  624. #define FL_CLOCK_TOPCOL        FL_COL1
  625. #define FL_CLOCK_BW        FL_BOUND_WIDTH
  626.  
  627. /***** Routines *****/
  628.  
  629. FL_OBJECT    *fl_create_clock(int, float, float, float, float, char []);
  630. FL_OBJECT    *fl_add_clock(int, float, float, float, float, char []);
  631.  
  632. void    fl_get_clock(FL_OBJECT *,int * ,int *, int *);
  633.  
  634. /************   Object Class: Counter       ************/
  635.  
  636. /***** Class    *****/
  637.  
  638. #define FL_COUNTER        25
  639.  
  640. /***** Types    *****/
  641.  
  642. #define FL_NORMAL_COUNTER    0
  643. #define FL_SIMPLE_COUNTER    1
  644.  
  645. /***** Defaults *****/
  646.  
  647. #define FL_COUNTER_BOXTYPE    FL_UP_BOX
  648. #define FL_COUNTER_COL1        FL_COL1
  649. #define FL_COUNTER_COL2        4
  650. #define FL_COUNTER_LCOL        FL_LCOL
  651. #define FL_COUNTER_ALIGN    FL_ALIGN_BOTTOM
  652.  
  653. /***** Others   *****/
  654.  
  655. #define FL_COUNTER_BW        FL_BOUND_WIDTH
  656.  
  657. /***** Routines *****/
  658.  
  659. FL_OBJECT    *fl_create_counter(int, float, float, float, float, char []);
  660. FL_OBJECT    *fl_add_counter(int, float, float, float, float, char []);
  661.  
  662. void     fl_set_counter_value(FL_OBJECT *, float);
  663. void     fl_set_counter_bounds(FL_OBJECT *, float, float);
  664. void     fl_set_counter_step(FL_OBJECT *, float, float);
  665. void    fl_set_counter_precision(FL_OBJECT *, int);
  666. float     fl_get_counter_value(FL_OBJECT *);
  667.  
  668. void    fl_set_counter_return(FL_OBJECT *, int);
  669. /************   Object Class: Dial         ************/
  670.  
  671. /***** Class    *****/
  672.  
  673. #define FL_DIAL            22
  674.  
  675. /***** Types    *****/
  676.  
  677. #define FL_NORMAL_DIAL        0
  678. #define FL_LINE_DIAL        1
  679.  
  680. /***** Defaults *****/
  681.  
  682. #define FL_DIAL_BOXTYPE        FL_NO_BOX
  683. #define FL_DIAL_COL1        FL_COL1
  684. #define FL_DIAL_COL2        37
  685. #define FL_DIAL_LCOL        FL_LCOL
  686. #define FL_DIAL_ALIGN        FL_ALIGN_BOTTOM
  687.  
  688. /***** Others   *****/
  689.  
  690. #define FL_DIAL_TOPCOL        FL_COL1
  691. #define FL_DIAL_BW        FL_BOUND_WIDTH
  692.  
  693. /***** Routines *****/
  694.  
  695. FL_OBJECT    *fl_create_dial(int ,float, float, float, float, char []);
  696. FL_OBJECT    *fl_add_dial(int ,float, float, float, float, char []);
  697.  
  698. void     fl_set_dial_value(FL_OBJECT *, float);
  699. float     fl_get_dial_value(FL_OBJECT *);
  700. void     fl_set_dial_bounds(FL_OBJECT *, float, float);
  701. void     fl_get_dial_bounds(FL_OBJECT *, float *, float*);
  702.  
  703. void    fl_set_dial_step(FL_OBJECT *, float);
  704. void     fl_set_dial_return(FL_OBJECT *, int);
  705. /************   Object Class: Free         ************/
  706.  
  707. /***** Class    *****/
  708.  
  709. #define FL_FREE            101
  710.  
  711. /***** Types    *****/
  712.  
  713. #define FL_NORMAL_FREE        1
  714. #define FL_SLEEPING_FREE    2
  715. #define FL_INPUT_FREE        3
  716. #define FL_CONTINUOUS_FREE    4
  717. #define FL_ALL_FREE        5
  718.  
  719. /***** Defaults *****/
  720.  
  721. /***** Others   *****/
  722.  
  723. /***** Routines *****/
  724.  
  725. FL_OBJECT     *fl_create_free(int, float, float, float, float, char [], FL_HANDLEPTR);
  726. FL_OBJECT     *fl_add_free(int, float, float, float, float, char [], FL_HANDLEPTR);
  727.  
  728. /************   Object Class: Input        ************/
  729.  
  730. /***** Class    *****/
  731.  
  732. #define FL_INPUT        31
  733.  
  734. /***** Types    *****/
  735.  
  736. #define FL_NORMAL_INPUT        0
  737. #define FL_FLOAT_INPUT        1
  738. #define FL_INT_INPUT        2
  739. #define FL_HIDDEN_INPUT        3
  740.  
  741. /***** Defaults *****/
  742.  
  743. #define FL_INPUT_BOXTYPE    FL_DOWN_BOX
  744. #define FL_INPUT_COL1        13
  745. #define FL_INPUT_COL2        5
  746. #define FL_INPUT_LCOL        FL_LCOL
  747. #define FL_INPUT_ALIGN        FL_ALIGN_LEFT
  748.  
  749. /***** Others   *****/
  750.  
  751. #define FL_INPUT_TCOL        FL_LCOL
  752. #define FL_INPUT_CCOL        4
  753. #define FL_INPUT_BW        FL_BOUND_WIDTH
  754. #define FL_INPUT_MAX        128
  755.  
  756. /***** Routines *****/
  757.  
  758. FL_OBJECT    *fl_create_input(int, float, float, float, float, char []);
  759. FL_OBJECT    *fl_add_input(int, float, float, float, float, char []);
  760.  
  761. void    fl_set_input(FL_OBJECT *, char []);
  762. void    fl_set_input_color(FL_OBJECT *, int, int);
  763. char    *fl_get_input(FL_OBJECT *);
  764. void    fl_set_input_return(FL_OBJECT *, int);
  765.  
  766. /************   Object Class: Lightbutton  ************/
  767.  
  768. /***** Class    *****/
  769.  
  770. #define FL_LIGHTBUTTON        12
  771.  
  772. /***** Types    *****/
  773.  
  774.     /* Same types as for buttons */
  775.  
  776. /***** Defaults *****/
  777.  
  778. #define FL_LIGHTBUTTON_BOXTYPE    FL_UP_BOX
  779. #define FL_LIGHTBUTTON_COL1    39
  780. #define FL_LIGHTBUTTON_COL2    3
  781. #define FL_LIGHTBUTTON_LCOL    FL_LCOL
  782. #define FL_LIGHTBUTTON_ALIGN    FL_ALIGN_CENTER
  783.  
  784. /***** Others   *****/
  785.  
  786. #define FL_LIGHTBUTTON_TOPCOL    FL_COL1
  787. #define FL_LIGHTBUTTON_MCOL    FL_MCOL
  788. #define FL_LIGHTBUTTON_BW1    FL_BOUND_WIDTH
  789. #define FL_LIGHTBUTTON_BW2    FL_BOUND_WIDTH/2.0
  790. #define FL_LIGHTBUTTON_MINSIZE    12.0
  791.  
  792. /***** Routines *****/
  793.  
  794. FL_OBJECT  *fl_create_lightbutton(int, float, float, float, float, char []);
  795. FL_OBJECT  *fl_add_lightbutton(int, float, float, float, float, char []);
  796.  
  797. /************   Object Class: Menu         ************/
  798.  
  799. /***** Class    *****/
  800.  
  801. #define FL_MENU            41
  802.  
  803. /***** Types    *****/
  804.  
  805. #define FL_TOUCH_MENU        0
  806. #define FL_PUSH_MENU        1
  807.  
  808. /***** Defaults *****/
  809.  
  810. #define FL_MENU_BOXTYPE        FL_BORDER_BOX
  811. #define FL_MENU_COL1        55
  812. #define FL_MENU_COL2        37
  813. #define FL_MENU_LCOL        FL_LCOL
  814. #define FL_MENU_ALIGN        FL_ALIGN_CENTER
  815.  
  816. /***** Others   *****/
  817.  
  818. #define FL_MENU_BW        FL_BOUND_WIDTH
  819. #define FL_MENU_MAX        300
  820.  
  821. /***** Routines *****/
  822.  
  823. FL_OBJECT    *fl_create_menu(int, float, float, float, float, char []);
  824. FL_OBJECT    *fl_add_menu(int, float, float, float, float, char []);
  825.  
  826. void    fl_set_menu(FL_OBJECT *, char []);
  827. void    fl_addto_menu(FL_OBJECT *, char []);
  828. long    fl_get_menu(FL_OBJECT *);
  829.  
  830. /************   Object Class: Positioner   ************/
  831.  
  832. /***** Class    *****/
  833.  
  834. #define FL_POSITIONER        23
  835.  
  836. /***** Types    *****/
  837.  
  838. #define FL_NORMAL_POSITIONER    0
  839.  
  840. /***** Defaults *****/
  841.  
  842. #define FL_POSITIONER_BOXTYPE    FL_DOWN_BOX
  843. #define FL_POSITIONER_COL1    FL_COL1
  844. #define FL_POSITIONER_COL2    1
  845. #define FL_POSITIONER_LCOL    FL_LCOL
  846. #define FL_POSITIONER_ALIGN    FL_ALIGN_BOTTOM
  847.  
  848. /***** Others   *****/
  849.  
  850. #define FL_POSITIONER_BW    FL_BOUND_WIDTH
  851.  
  852. /***** Routines *****/
  853.  
  854. FL_OBJECT    *fl_create_positioner(int, float, float, float, float, char []);
  855. FL_OBJECT    *fl_add_positioner(int, float, float, float, float, char []);
  856.  
  857. void     fl_set_positioner_xvalue(FL_OBJECT *, float);
  858. float     fl_get_positioner_xvalue(FL_OBJECT *);
  859. void     fl_set_positioner_xbounds(FL_OBJECT *, float, float);
  860. void     fl_get_positioner_xbounds(FL_OBJECT *, float *, float *);
  861. void     fl_set_positioner_yvalue(FL_OBJECT *, float);
  862. float     fl_get_positioner_yvalue(FL_OBJECT *);
  863. void     fl_set_positioner_ybounds(FL_OBJECT *, float, float);
  864. void     fl_get_positioner_ybounds(FL_OBJECT *, float *, float *);
  865. void    fl_set_positioner_xstep(FL_OBJECT *, float);
  866. void    fl_set_positioner_ystep(FL_OBJECT *, float);
  867.  
  868.  
  869. void     fl_set_positioner_return(FL_OBJECT *, int);
  870. /************   Object Class: Roundbutton  ************/
  871.  
  872. /***** Class    *****/
  873.  
  874. #define FL_ROUNDBUTTON        13
  875.  
  876. /***** Types    *****/
  877.  
  878.     /* Same types as for buttons */
  879.  
  880. /***** Defaults *****/
  881.  
  882. #define FL_ROUNDBUTTON_BOXTYPE    FL_NO_BOX
  883. #define FL_ROUNDBUTTON_COL1    7
  884. #define FL_ROUNDBUTTON_COL2    3
  885. #define FL_ROUNDBUTTON_LCOL    FL_LCOL
  886. #define FL_ROUNDBUTTON_ALIGN    FL_ALIGN_CENTER
  887.  
  888. /***** Others   *****/
  889.  
  890. #define FL_ROUNDBUTTON_TOPCOL    FL_COL1
  891. #define FL_ROUNDBUTTON_MCOL    FL_MCOL
  892. #define FL_ROUNDBUTTON_BW    FL_BOUND_WIDTH
  893.  
  894. /***** Routines *****/
  895.  
  896. FL_OBJECT  *fl_create_roundbutton(int, float, float, float, float, char []);
  897. FL_OBJECT  *fl_add_roundbutton(int, float, float, float, float, char []);
  898.  
  899.  
  900. /************   Object Class: Slider       ************/
  901.  
  902. /***** Class    *****/
  903.  
  904. #define FL_SLIDER        21
  905. #define FL_VALSLIDER        24
  906.  
  907. /***** Types    *****/
  908.  
  909. #define FL_VERT_SLIDER        0
  910. #define FL_HOR_SLIDER        1
  911. #define FL_VERT_FILL_SLIDER    2
  912. #define FL_HOR_FILL_SLIDER    3
  913. #define FL_VERT_NICE_SLIDER    4
  914. #define FL_HOR_NICE_SLIDER    5
  915.  
  916. /***** Defaults *****/
  917.  
  918. #define FL_SLIDER_BOXTYPE    FL_DOWN_BOX
  919. #define FL_SLIDER_COL1        FL_COL1
  920. #define FL_SLIDER_COL2        FL_COL1
  921. #define FL_SLIDER_LCOL        FL_LCOL
  922. #define FL_SLIDER_ALIGN        FL_ALIGN_BOTTOM
  923.  
  924. /***** Others   *****/
  925.  
  926. #define FL_SLIDER_BW1        FL_BOUND_WIDTH
  927. #define FL_SLIDER_BW2        FL_BOUND_WIDTH*0.75
  928.  
  929. #define FL_SLIDER_FINE        0.05
  930. #define FL_SLIDER_WIDTH        0.08
  931.  
  932. /***** Routines *****/
  933.  
  934. FL_OBJECT    *fl_create_slider(int, float, float, float, float, char []);
  935. FL_OBJECT    *fl_add_slider(int, float, float, float, float, char []);
  936.  
  937. FL_OBJECT    *fl_create_valslider(int, float, float, float, float, char []);
  938. FL_OBJECT    *fl_add_valslider(int, float, float, float, float, char []);
  939.  
  940. void     fl_set_slider_value(FL_OBJECT *, float);
  941. float     fl_get_slider_value(FL_OBJECT *);
  942. void     fl_set_slider_bounds(FL_OBJECT *, float, float);
  943. void     fl_get_slider_bounds(FL_OBJECT *, float *, float *);
  944.  
  945. void    fl_set_slider_return(FL_OBJECT *, int);
  946.  
  947. void    fl_set_slider_step(FL_OBJECT *, float);
  948. void    fl_set_slider_size(FL_OBJECT *, float);
  949. void    fl_set_slider_precision(FL_OBJECT *, int);
  950. /************   Object Class: Text         ************/
  951.  
  952. /***** Class    *****/
  953.  
  954. #define FL_TEXT            2
  955.  
  956. /***** Types    *****/
  957.  
  958. #define FL_NORMAL_TEXT        0
  959.  
  960. /***** Defaults *****/
  961.  
  962. #define FL_TEXT_BOXTYPE        FL_NO_BOX
  963. #define FL_TEXT_COL1        FL_COL1
  964. #define FL_TEXT_LCOL        FL_LCOL
  965. #define FL_TEXT_ALIGN        FL_ALIGN_LEFT
  966.  
  967. /***** Others   *****/
  968.  
  969. #define FL_TEXT_BW        FL_BOUND_WIDTH
  970.  
  971. /***** Routines *****/
  972.  
  973. FL_OBJECT     *fl_create_text(int, float, float, float, float, char []);
  974. FL_OBJECT     *fl_add_text(int, float, float, float, float, char []);
  975.  
  976. /************   Object Class: Timer        ************/
  977.  
  978. /***** Class    *****/
  979.  
  980. #define FL_TIMER        62
  981.  
  982. /***** Types    *****/
  983.  
  984. #define FL_NORMAL_TIMER        0
  985. #define FL_VALUE_TIMER        1
  986. #define FL_HIDDEN_TIMER        2
  987.  
  988. /***** Defaults *****/
  989.  
  990. #define FL_TIMER_BOXTYPE    FL_DOWN_BOX
  991. #define FL_TIMER_COL1        FL_COL1
  992. #define FL_TIMER_COL2        1
  993. #define FL_TIMER_LCOL        FL_LCOL
  994. #define FL_TIMER_ALIGN        FL_ALIGN_CENTER
  995.  
  996. /***** Others   *****/
  997.  
  998. #define FL_TIMER_BW        FL_BOUND_WIDTH
  999. #define FL_TIMER_BLINKRATE    0.2
  1000.  
  1001. /***** Routines *****/
  1002.  
  1003. FL_OBJECT    *fl_create_timer(int, float, float, float, float, char []);
  1004. FL_OBJECT    *fl_add_timer(int, float, float, float, float, char []);
  1005.  
  1006. void    fl_set_timer(FL_OBJECT *, float);
  1007. float    fl_get_timer(FL_OBJECT *);
  1008.  
  1009.  
  1010. /************   Object Class: Fouraxis (unit vector in 4-space)  ************/
  1011.  
  1012. /***** Class    *****/
  1013.  
  1014. #define FL_FOURAXIS        1034
  1015.  
  1016. /***** Types    *****/
  1017.  
  1018. #define FL_NORMAL_FOURAXIS    0
  1019. #define    FL_CIRCLE_FOURAXIS    1
  1020. #define    FL_SPOKED_FOURAXIS    2
  1021.  
  1022. /***** Defaults *****/
  1023.  
  1024. #define FL_FOURAXIS_BOXTYPE    FL_DOWN_BOX
  1025. #define FL_FOURAXIS_COL1    FL_COL1
  1026. #define FL_FOURAXIS_COL2    1
  1027. #define FL_FOURAXIS_LCOL    FL_LCOL
  1028. #define FL_FOURAXIS_ALIGN    FL_ALIGN_BOTTOM
  1029.  
  1030. /***** Others   *****/
  1031.  
  1032. #define FL_FOURAXIS_BW        FL_BOUND_WIDTH
  1033.  
  1034. /***** Routines *****/
  1035.  
  1036. FL_OBJECT    *fl_create_fouraxis(int, float, float, float, float, char []);
  1037. FL_OBJECT    *fl_add_fouraxis(int, float, float, float, float, char []);
  1038.  
  1039.         /* Set direction vector.  w chosen to form unit vector */
  1040. void     fl_set_fouraxis(FL_OBJECT *, float x, float y, float z);
  1041. void     fl_get_fouraxis(FL_OBJECT *, float *xp, float *yp, float *zp, float *wp);
  1042.         /* Also maintains an orthonormal basis matrix, with column 3
  1043.          * (w) a unit vector in the chosen direction
  1044.          * and other columns chosen appropriately.
  1045.          */
  1046. void    fl_get_fouraxis_basis(FL_OBJECT *, float * /* really float[4][4] */);
  1047. void    fl_set_fouraxis_basis(FL_OBJECT *, float * /* really float[4][4] */);
  1048.  
  1049. void     fl_set_fouraxis_return(FL_OBJECT *, int);
  1050.  
  1051.  
  1052.  
  1053. #if defined(_LANGUAGE_C_PLUS_PLUS) || defined(__cplusplus)
  1054. }
  1055. #endif
  1056.  
  1057. #endif    /* define __FORMS_H__ */
  1058.