home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / progtool / c / egem / source / e_gem.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-09-22  |  12.9 KB  |  588 lines

  1. #ifndef __E_GEM_LIB__
  2. #define __E_GEM_LIB__
  3.  
  4. #define E_GEM_VERSION    "1.45"
  5.  
  6. #ifdef __GNUC__
  7. /* Anpassung der Enhanced GEM-Library an GNU CC + MiNT-Lib */
  8.  
  9. #ifndef __MINT_LIB__
  10. #define __MINT_LIB__    /* MiNT-Lib wird beim GCC verwendet! */
  11. #endif    /* !__MINT_LIB__ */
  12.  
  13. #ifdef __CREATE_E_GEM_LIB__
  14. #define __TCC_COMPAT__
  15. #endif    /* __CREATE_E_GEM_LIB__ */
  16.  
  17. #define reg            /* Keine register Variablen */
  18. #define cdecl        /* Kein `cdecl' unter GCC */
  19.  
  20. extern short _global[];
  21.  
  22. #define AES_VERSION    gl_ap_version   /* Enhält unter GCC die AES-Version */
  23. #define GLOBAL        _global
  24. #define INTIN        _intin
  25. #define INTOUT        _intout
  26.  
  27. #define vq_gdos        vq_vgdos
  28.  
  29. int __aes__(unsigned long);        /* Def. aus der GemLib. */
  30. #define _aes(a, b) __aes__(b)
  31.  
  32. extern short _app;
  33. #endif    /* __GNUC__ */
  34.  
  35.  
  36. #ifdef LATTICE
  37. /* Anpassung der Enhanced GEM-Library an Lattice C + MiNT-Lib */
  38.  
  39. #ifndef __MINT_LIB__
  40. #define __MINT_LIB__        /* MiNT-Lib wird bei Lattice verwendet! */
  41. #endif    /* !__MINT_LIB__ */
  42.  
  43. #ifdef __CREATE_E_GEM_LIB__
  44. #define __TCC_COMPAT__
  45. #endif    /* __CREATE_E_GEM_LIB__ */
  46.  
  47. #define __TCC_GEMLIB__
  48.  
  49. #define reg                    /* Keine register Variablen */
  50. #define cdecl    __stdargs    /* `__stdargs' entspricht `cdecl' in Lattice C */
  51.  
  52. extern short _AESglobal[];
  53. #define AES_VERSION    _AESglobal[0]   /* Enhält unter Lattice C die AES-Version */
  54. #define GLOBAL        _AESglobal
  55. #define INTIN        _AESintin
  56. #define INTOUT        _AESintout
  57.  
  58. extern short _app;
  59. #endif    /* LATTICE */
  60.  
  61.  
  62. #ifdef __PUREC__
  63. /* Anpassung an Pure C */
  64.  
  65. #define reg register
  66.  
  67. #ifdef __MINT_LIB__
  68. #define __TCC_COMPAT__
  69. #define __TCC_GEMLIB__
  70.  
  71. typedef struct
  72. {
  73.     int        contrl[15];
  74.     int        intin[132];
  75.     int        intout[140];
  76.     int        ptsin[145];
  77.     int        ptsout[145];
  78. } VDIPARBLK;
  79.  
  80. typedef struct
  81. {
  82.     int        *contrl;
  83.     int        *intin;
  84.     int        *ptsin;
  85.     int        *intout;
  86.     int        *ptsout;
  87. } VDIPB;
  88.  
  89. typedef struct
  90. {
  91.     int        contrl[15];
  92.     int        global[15];
  93.     int        intin[132];
  94.     int        intout[140];
  95.     void    *addrin[16];
  96.     void    *addrout[16];
  97. } GEMPARBLK;
  98.  
  99. extern GEMPARBLK _GemParBlk;
  100. extern VDIPARBLK _VDIParBlk;
  101.  
  102. void vdi(VDIPB *vdipb);
  103.  
  104. #endif    /* __MINT_LIB__ */
  105.  
  106. #define GLOBAL            _GemParBlk.global
  107. #define AES_VERSION        GLOBAL[0]
  108. #define INTIN            _GemParBlk.intin
  109. #define INTOUT            _GemParBlk.intout
  110.  
  111. extern int _app;
  112. extern void _aes(int dummy,long);
  113.  
  114. #endif    /* __PUREC__ */
  115.  
  116. #include <stdlib.h>
  117.  
  118. #ifdef __MINT_LIB__
  119. #ifdef __PUREC__
  120. #define short        int
  121. #endif    /* __PUREC__ */
  122.  
  123. #include <unistd.h>
  124. #include <fcntl.h>
  125. #include <osbind.h>
  126. #include <aesbind.h>
  127. #include <vdibind.h>
  128.  
  129. #define DTA            _DTA
  130. #define d_fname        dta_name
  131. #define d_length    dta_size
  132.  
  133. /* Macros zum Umsetzen geringer MiNT-GEM-Lib-Abweichungen von der
  134.    Pure C und Lattice C GEM-Lib. */
  135.  
  136. #if (defined(__GNUC__) || defined(LATTICE)) && defined(__CREATE_E_GEM_LIB__)
  137. #define objc_edit(a,b,c,d,e) objc_edit(a,b,c,*d,e,d)
  138. #define evnt_timer(a,b) evnt_timer(((unsigned long)b << 16) + (unsigned short)a)
  139. #endif    /* (__GNUC__ || LATTICE) && __CREATE_E_GEM_LIB__ */
  140.  
  141. #else    /* __MINT_LIB__ */
  142.  
  143. #ifdef __PUREC__
  144. #include <tos.h>
  145. #include <aes.h>
  146. #include <vdi.h>
  147. #endif    /* __PUREC__ */
  148. #endif    /* !__MINT_LIB__ */
  149.  
  150. #ifndef WF_BEVENT /* MTOS-1.01-Erweiterungen bereits definiert ? */
  151.  
  152. #define WF_BEVENT             24
  153. #define WM_UNTOPPED         30
  154. #define WM_ONTOP             31
  155.  
  156. #define AP_TERM             50
  157.  
  158. #endif    /* WF_BEVENT */
  159.  
  160. #ifndef WF_ICONIFY /* MTOS-1.08-Erweiterungen bereits definiert ? */
  161.  
  162. #define WF_ICONIFY            26
  163. #define WF_UNICONIFY        27
  164. #define WF_UNICONIFYXYWH    28
  165.  
  166. #define WM_ICONIFY            34
  167. #define WM_UNICONIFY        35
  168. #define WM_ALLICONIFY        36
  169.  
  170. #define SMALLER                0x4000
  171.  
  172. #define AP_DRAGDROP            63
  173.  
  174. #define    DD_OK            0
  175. #define DD_NAK            1
  176. #define DD_EXT            2
  177. #define DD_LEN            3
  178. #define DD_TRASH        4
  179. #define DD_PRINTER        5
  180. #define DD_CLIPBOARD    6
  181.  
  182. #define DD_TIMEOUT    4000            /* timeout in milliseconds */
  183.  
  184. #define DD_NUMEXTS    8
  185. #define DD_EXTSIZE    32L
  186. #define DD_NAMEMAX    128                /* max size of a drag&drop item name */
  187.  
  188. #define DD_HDRMAX    (8+DD_NAMEMAX)    /* max length of a drag&drop header */
  189.  
  190. int appl_getinfo(int,int *,int *,int *,int *);
  191.  
  192. #endif    /* WF_BEVENT */
  193.  
  194. #ifndef ED_INIT
  195. #define ED_INIT             EDINIT
  196. #define ED_CHAR             EDCHAR
  197. #define ED_END                 EDEND
  198. #endif    /* ED_INIT */
  199.  
  200. #ifdef __MINT_LIB__
  201.  
  202. typedef struct
  203. {
  204.     int ev_mflags,ev_mbclicks,ev_bmask,ev_mbstate,ev_mm1flags,
  205.         ev_mm1x,ev_mm1y,ev_mm1width,ev_mm1height,ev_mm2flags,
  206.         ev_mm2x,ev_mm2y,ev_mm2width,ev_mm2height;
  207.     unsigned int ev_mtlocount,ev_mthicount;
  208.     int ev_mwich,ev_mmox,ev_mmoy,ev_mmobutton,ev_mmokstate,
  209.         ev_mkreturn,ev_mbreturn;
  210.     int ev_mmgpbuf[8];
  211. } EVENT;
  212.  
  213. int     EvntMulti(EVENT *evnt_struct);
  214.  
  215. #endif    /* __MINT_LIB__ */
  216.  
  217. /* Unterstützung von Winx ab V2.1 */
  218. #define WF_RETURN        1
  219. #define WF_WINX            22360
  220. #define    WF_WINXCFG        22361
  221. #define WF_OWNER        20
  222. #define WF_BOTTOM        25
  223. #define WM_BOTTOMED        33
  224.  
  225. #define WM_SHADED        22360
  226. #define WM_UNSHADED        22361
  227.  
  228. #define COOKIE_XBRA        0x58425241L        /* `XBRA' */
  229. #define COOKIE_VSCR        0x56534352L        /* `VSCR' */
  230. #define COOKIE_MAGX        0x4D616758L        /* `MagX' */
  231.  
  232. #define    HOR_SLIDER        0
  233. #define    VERT_SLIDER        1
  234.  
  235. #define GRAF_SET_ARROWS        1
  236. #define GRAF_SET_SIZE_POS    2
  237. #define GRAF_DRAW_SLIDER    4
  238. #define GRAF_SET            (GRAF_SET_ARROWS|GRAF_SET_SIZE_POS)
  239. #define GRAF_DRAW            (GRAF_SET|GRAF_DRAW_SLIDER)
  240.  
  241. #define OBJC_EDITED        31293
  242.  
  243. #define CENTER            1
  244. #define MOUSEPOS        2
  245. #define XPOS            3
  246. #define YPOS            4
  247. #define XYPOS            5
  248. #define OBJPOS            6
  249.  
  250. #define POPUP_BTN        0
  251. #define POPUP_CYCLE        1
  252. #define POPUP_CHECK        2
  253. #define POPUP_BTN_CHK    (POPUP_BTN|POPUP_CHECK)
  254. #define POPUP_CYCLE_CHK    (POPUP_CYCLE|POPUP_CHECK)
  255. #define POPUP_RADIO        POPUP_BTN_CHK
  256. #define POPUP_SELECT    POPUP_BTN
  257.  
  258. #define FLY_DIAL        1
  259. #define WIN_DIAL        2
  260. #define AUTO_DIAL        (FLY_DIAL|WIN_DIAL)
  261. #define MODAL            4
  262. #define FRAME            8
  263. #define NO_ICONIFY        16
  264.  
  265. #define CHECKBOX        1
  266. #define HEADER            2
  267. #define RADIO            3
  268. #define UNDERLINE        4
  269. #define HOTKEY            5
  270. #define CHKHOTKEY        6
  271. #define RBHOTKEY        7
  272. #define INDHOTKEY        8
  273. #define FLYDIAL            9
  274. #define TXTDEFAULT        10
  275. #define USERFLY            11
  276. #define HELP_BTN        12
  277. #define ATTR_TEXT        13
  278. #define CYCLE_BUTTON    14
  279. #define ARROW_LEFT        15
  280. #define ARROW_RIGHT        16
  281. #define ARROW_UP        17
  282. #define ARROW_DOWN        18
  283. #define UNDO_BTN        19
  284.  
  285. #define G_HOTKEY        (0x1000|G_USERDEF)
  286. #define G_IND            (0x2000|G_USERDEF)
  287. #define G_RB            (0x3000|G_USERDEF)
  288. #define G_CHK            (0x4000|G_USERDEF)
  289. #define G_FLY            (0x5000|G_USERDEF)
  290. #define G_MODAL            0x8000
  291.  
  292. #define INDDEFAULT        0x8000
  293.  
  294. #undef    NULL
  295. #define NULL            ((void *)0)
  296.  
  297. #define SL_STEP            0
  298. #define SL_LINEAR        1
  299. #define SL_LOG            2
  300. #define SL_EXP            3
  301.  
  302. #define W_ABANDON        -1
  303. #define W_CLOSED        -2
  304.  
  305. #define NO_SCALING        0
  306. #define SCALING            1
  307. #define TEST_SCALING    2
  308. #define DARK_SCALING    4
  309.  
  310. #define BOOLEAN        boolean
  311. #define DIALMODE    dialmode
  312.  
  313. typedef struct
  314. {
  315.     long    cookie;
  316.     long    product;
  317.     int        version;
  318.     int        x,y,w,h;
  319. } INFOVSCR;
  320.  
  321. typedef struct
  322. {
  323.     long    cookie_id;
  324.     long    cookie_value;
  325. } COOKIE;
  326.  
  327. typedef enum
  328. {
  329.     FAIL=-1,
  330.     FALSE,
  331.     TRUE
  332. } boolean;
  333.  
  334. typedef enum
  335. {
  336.     CLOSED,
  337.     OPENED,
  338.     FLYING,
  339.     WINDOW,
  340.     WIN_MODAL
  341. } dialmode;
  342.  
  343. typedef struct
  344. {
  345.     long        di_mem;
  346.     MFDB        di_mfdb;
  347.     DIALMODE    di_flag;
  348.     long        di_length;
  349.     OBJECT        *di_tree;
  350.     int            di_handle;
  351.     int            di_fly;
  352.     OBJECT        *di_ed_objptr;
  353.     int            di_ed_obj,di_ed_index,di_cursor;
  354.     int            di_default,di_help,di_undo;
  355.     int            di_xy_off,di_wh_off,di_iconified;
  356.     char        *di_title;
  357. } DIAINFO;
  358.  
  359. typedef struct
  360. {
  361.     DIAINFO        *sl_info;
  362.     int            sl_parent;
  363.     int            sl_slider;
  364.     int            sl_dec,sl_inc,sl_pos,sl_page,sl_max;
  365.     char        sl_vh,sl_mode;
  366.     int            sl_delay,sl_speed;
  367.     void        (*sl_do)(OBJECT*,int,int,int);
  368. } SLINFO;
  369.  
  370. typedef struct
  371. {
  372.     DIAINFO        *p_info;
  373.     OBJECT        *p_menu;
  374.     int            p_parent;
  375.     int         p_button;
  376.     int            p_cycle;
  377.     boolean        p_wrap,p_set;
  378. } POPUP;
  379.  
  380. #ifndef __MINT_LIB__
  381. typedef struct
  382. {
  383.     int            v_x1;
  384.     int            v_y1;
  385.     int            v_x2;
  386.     int            v_y2;
  387. } VRECT;
  388. #endif    /* !__MINT_LIB__ */
  389.  
  390. #ifdef __MINT_LIB__
  391. typedef struct
  392. {
  393.     char        *unshift;
  394.     char        *shift;
  395.     char        *capslock;
  396. } KEYTAB;
  397.  
  398. #ifdef __PUREC__
  399. #define Keytbl    (KEYTAB *) Keytbl
  400. #endif    /* __PUREC__ */
  401. #endif    /* __MINT_LIB__ */
  402.  
  403. typedef struct
  404. {
  405.     int            dummy;
  406.     int            *image;
  407. } RS_IMDOPE;
  408.  
  409. typedef struct
  410. {
  411.     int            *but_on,*but_off;
  412. } BUTTON;
  413.  
  414. typedef struct
  415. {
  416.     int            *hi_on,*hi_off,*lo_on,*lo_off;
  417. } IMAGE;
  418.  
  419. typedef struct
  420. {
  421.     int            count;
  422.     IMAGE         *image;
  423. } IMAGES;
  424.  
  425. extern    int    ap_id,menu_id,grhandle,x_handle;
  426. extern    int    gr_cw,gr_ch,gr_bw,gr_bh,gr_sw,gr_sh;
  427. extern    int    max_w,max_h,planes,colors,redraw;
  428. extern    int aes_version,winx,magx;
  429. extern  int small_font,small_font_id,ibm_font,ibm_font_id,fonts_loaded;
  430.  
  431. extern    GRECT    desk;
  432. extern    VRECT    clip;
  433. extern    MFDB    *screen;
  434. extern    OBJECT    *menu,*iconified;
  435. extern    DIAINFO    *dinfo;
  436.  
  437. void    ob_dostate(OBJECT*,int,int);
  438. void    ob_undostate(OBJECT*,int,int);
  439. int        ob_isstate(OBJECT*,int,int);
  440. void    ob_doflag(OBJECT*,int,int);
  441. void    ob_undoflag(OBJECT*,int,int);
  442. int        ob_isflag(OBJECT*,int,int);
  443. void    ob_xywh(OBJECT*,int,GRECT*);
  444. char    *ob_get_text(OBJECT*,int,int);
  445. void    ob_set_text(OBJECT*,int,char*);
  446. int        ob_set_hotkey(OBJECT*,int,char);
  447. char    ob_get_hotkey(OBJECT*,int);
  448. void    ob_draw_chg(DIAINFO*,int,GRECT*,int,boolean);
  449. void    ob_draw_list(DIAINFO*,int*,GRECT*);
  450. void    ob_draw_dialog(OBJECT*,int,int,int,int);
  451. void    ob_undraw_dialog(OBJECT*,int,int,int,int);
  452. int        ob_radio(OBJECT*,int,int);
  453. int        ob_get_parent(OBJECT*,int);
  454.  
  455. #ifdef __GNUC__
  456. int        rc_inside(int,int,GRECT*);
  457. #define rc_grect_to_array grect_to_array
  458. #else    /* __GNUC__ */
  459. void    rc_grect_to_array(GRECT*,int*);
  460. #ifdef __PUREC__
  461. int        rc_copy(GRECT*,GRECT*);
  462. int        rc_equal(GRECT*,GRECT*);
  463. int        rc_intersect(GRECT*,GRECT*);
  464. int        rc_inside(int,int,GRECT*);
  465. #endif    /* __PUREC__ */
  466. #endif    /* !__GNUC__ */
  467.  
  468. void    rc_array_to_grect(int*,GRECT*);
  469. void    rc_sc_copy(GRECT*,int,int,int);
  470. void    rc_sc_clear(GRECT*);
  471. void    rc_sc_invert(GRECT*);
  472.  
  473. void    scrp_clear(int);
  474. int        scrp_init(char*);
  475. int        scrp_length(void);
  476. int        scrp_find(char*,char*);
  477.  
  478. void    rsrc_calc(OBJECT*,int,int,int);
  479. void    rsrc_init(int,int,int,int,int,char**,long*,BITBLK*,long*,ICONBLK*,TEDINFO*,OBJECT*,OBJECT**,RS_IMDOPE*,int,int);
  480.  
  481. void    menu_enable(OBJECT*,boolean,boolean);
  482. boolean menu_dropped(OBJECT*);
  483.  
  484. void     graf_busy_mouse(void);
  485. void    graf_set_slider(SLINFO*,OBJECT*,int);
  486. void    graf_arrows(SLINFO*,OBJECT*,int);
  487. void    graf_rt_slidebox(SLINFO*,int,int);
  488. int        graf_rt_rubberbox(int,int,GRECT*,int*,int*,void(*foo)(int*));
  489.  
  490. int        Event_Multi(EVENT*,long);
  491.  
  492. int        X_Form_Do(DIAINFO**,int,int(*foo1)(EVENT*),void(*foo2)(EVENT*));
  493.  
  494. int        appl_xgetinfo(int,int *,int *,int *,int *);
  495. int        appl_getfontinfo(int,int *,int *,int *);
  496.  
  497. #ifdef  __PUREC__
  498. int        wind_xget(int, int, int *, int *, int *,int *);
  499. #else
  500. #define    wind_xget(hdl,field,p1,p2,p3,p4)    wind_get(hdl,field,p1,p2,p3,p4)
  501. #endif
  502.  
  503. boolean    init_gem(char*);
  504. void    exit_gem(void);
  505.  
  506. boolean open_work(int*,int*);
  507. void     close_work(int);
  508.  
  509. boolean    open_rsc(char*,char*);
  510. void    close_rsc(void);
  511.  
  512. void    fix_objects(OBJECT*,int);
  513. void    scale_image(OBJECT*,int);
  514. void    trans_image(OBJECT*);
  515.  
  516. void    vsf_aespattern(int,int,int,int);
  517.  
  518. void    vs_attr(void);
  519. void    v_set_text(int,int,int,int*);
  520. void    v_set_mode(int);
  521. void    v_set_line(int,int);
  522. void    v_set_fill(int,int,int);
  523. void    v_aespattern(int,int,int);
  524.  
  525. void    save_clipping(int *);
  526. void    restore_clipping(int *);
  527.  
  528. boolean open_dialog(OBJECT*,DIAINFO*,char*,boolean,boolean,int);
  529. void    close_dialog(DIAINFO*,boolean);
  530. void    redraw_dialog(DIAINFO*,GRECT*);
  531. void    move_dialog(DIAINFO *info,GRECT *area);
  532. void    redraw_iconified(int,OBJECT*,GRECT *);
  533.  
  534. int        xdialog(OBJECT*,char*,boolean,boolean,int,int(*foo1)(EVENT*),void(*foo2)(EVENT*));
  535. int        xalert(int,int,int,BITBLK *,char *,char *,char *,int (*foo1)(EVENT*),void (*foo2)(EVENT *));
  536.  
  537. /* Definition der wichtigsten Alert-Icons als Makros */
  538.  
  539. #define    X_ICN_NONE        -1
  540. #define X_ICN_MAX        17
  541.  
  542. #define    X_ICN_STOP        7
  543. #define    X_ICN_QUESTION    10
  544. #define X_ICN_ALERT        11
  545.  
  546. #define X_ICN_DISC_ERR    5
  547. #define X_ICN_ERROR        6
  548. #define X_ICN_FLOPPY    8
  549. #define X_ICN_DISC        9
  550. #define X_ICN_INFO        13
  551. #define    X_ICN_PRT_ERR    15
  552.  
  553. int        Popup(POPUP*,int,int,int,int,int *,int);
  554.  
  555. void    dial_colors(int,int,int,int,int,int,int);
  556. void    dial_options(boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean);
  557. void    title_options(boolean,int,int);
  558.  
  559. void    radio_image(int,BUTTON*);
  560. void    check_image(int,BUTTON*);
  561. void    arrow_image(int,BUTTON*,BUTTON*,BUTTON*,BUTTON*);
  562. void    cycle_image(int,BUTTON*);
  563.  
  564. void    create_cookie(COOKIE*,long,long);
  565. boolean    new_cookie(COOKIE*);
  566. boolean    get_cookie(long,long*);
  567. void    remove_cookie(long);
  568. void    move_cookiejar(long*,long);
  569. long    cookie_size(void);
  570.  
  571. #ifdef __PUREC__
  572. char    *getenv(const char*);    /* Funktionen gibt es in stdlib.h */
  573. int        putenv(const char*);
  574. #endif    /* __PUREC__ */
  575.  
  576. int        scan_2_ascii(int,int);
  577. char    ascii_box(char *,int(*foo1)(EVENT*),void(*foo2)(EVENT*));
  578.  
  579. int        min(int,int);
  580. int        max(int,int);
  581. void    Min(int*,int);
  582. void    Max(int*,int);
  583.  
  584. void    mfdb(MFDB*,int*,int,int,int,int);
  585. long    mfdb_size(MFDB*);
  586.  
  587. #endif    /* __E_GEM_LIB__ */
  588.