home *** CD-ROM | disk | FTP | other *** search
/ Computer Club Elmshorn Atari PD / CCE_PD.iso / pc / 0600 / CCE_0678.ZIP / CCE_0678.PD / E_GEM135 / E_GEM.H next >
C/C++ Source or Header  |  1994-03-29  |  13KB  |  551 lines

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