home *** CD-ROM | disk | FTP | other *** search
/ ST-Computer Leser-CD 1999 January / STC_CD_01_1999.iso / base / cflib_9.lzh / lib / cflib.h
C/C++ Source or Header  |  1998-11-03  |  17KB  |  441 lines

  1. #ifndef _cflib_h_
  2. #define _cflib_h_
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7.  
  8. #ifdef __MINT__                /* MiNT/GEM-Lib */
  9. #include <osbind.h>
  10. #include <mintbind.h>
  11. #include <gem.h>
  12. #else                                /* PureLIB/MT_AES */
  13. #include <tos.h>
  14. #include <mt_aes.h>
  15. #include <vdi.h>
  16. #endif
  17.  
  18. /*******************************************************************************
  19.  * Version
  20.  *******************************************************************************/
  21.  
  22. #ifdef __MINT__
  23. #define CFLIB_PATCHLEVEL    "9m"
  24. #else
  25. #define CFLIB_PATCHLEVEL    "9p"
  26. #endif
  27. extern char __Ident_cflib[];
  28.  
  29. /*******************************************************************************
  30.  * spezielle Typen der CF-Lib
  31.  *******************************************************************************/
  32.  
  33. typedef enum {null, Con, TCon, Datei, Terminal, 
  34.                   Modem1, Modem2, Seriell1, Seriell2, Prn} DEBUGDEV;
  35.  
  36. typedef struct _popup
  37. {
  38.     OBJECT    *tree;        /* der Objektbaum */
  39.     int        max_item;    /* maximal mögliche Anzahl */
  40.     int        akt_item;    /* aktuelle Anzahl */
  41.     int        item_len;    /* Länge eines Eintrages */
  42. } POPUP;
  43.  
  44. typedef int     (* KEY_CB)(OBJECT *tree, int edit_obj, int kstate, int *kreturn, int *next_obj);
  45.  
  46. typedef void (* MDIAL_WCB)(int *msg);
  47.  
  48. typedef struct _wdial
  49. {
  50.     struct _wdial    *next;
  51.  
  52.     OBJECT    *tree;                        /* Objektbaum */
  53.     OBJECT    *icon;                        /* Icon für Iconify */
  54.     int        mode;                            /* aktueller Status */
  55.     int        win_handle;                    /* Fensterhandle */
  56.     char        win_name[80];                /* Fenstertitel */
  57.     int        win_kind;                    /* Elemente */
  58.     GRECT        work;                            /* Fenstergrö₧e */
  59.     int        title_obj;                    /* Objektnummer des Titelobjektes */
  60.     int        cancel_obj;                    /*       "      des Abbruchbuttons */
  61.     int        delta_y;                        /* Offset bis zum Titelobjekt */
  62.     int        edit_idx,                    /* Objektnummern für die Editfelder */
  63.                 next_obj,
  64.                 edit_obj;
  65.  
  66.     void        (*open_cb) (struct _wdial *dial);    
  67.     int        (*exit_cb) (struct _wdial *dial, int exit_obj);    
  68. } WDIALOG;
  69.  
  70. typedef void     (* WDIAL_OCB)(WDIALOG *dial);
  71. typedef int        (* WDIAL_XCB)(WDIALOG *dial, int exit_obj);
  72.  
  73. #define WOCB_NULL    (WDIAL_OCB)NULL
  74. #define WXCB_NULL    (WDIAL_XCB)NULL
  75.  
  76. typedef int (* FSEL_CB)(char *path, char *name);
  77. #define FSCB_NULL    (FSEL_CB)NULL
  78.  
  79. /*******************************************************************************
  80.  * globals.c
  81.  *******************************************************************************/
  82.  
  83. extern int        gl_apid, gl_phys_handle;
  84. extern GRECT    gl_desk;    
  85.  
  86. extern int        sys_big_id, sys_big_height, sys_big_pts,
  87.                     sys_sml_id, sys_sml_height, sys_sml_pts;
  88. extern int        sys_wchar, sys_hchar, sys_wbox, sys_hbox;
  89.  
  90. extern int        gl_wchar, gl_hchar, gl_wbox, gl_hbox;
  91.  
  92. extern int        gl_gdos;
  93.  
  94. extern int        gl_gem;
  95. extern int        gl_mint;
  96. extern int        gl_naes;
  97. extern int        gl_magx;
  98. extern int        gl_nvdi;
  99.  
  100. extern char     gl_appdir[];
  101.  
  102. /*******************************************************************************
  103.  * alerts.c
  104.  *******************************************************************************/
  105.  
  106. extern int do_alert    (int def, int undo, char *str);
  107. extern int do_walert    (int def, int undo, char *str, char *win_title);
  108.  
  109. /*******************************************************************************
  110.  * app.c
  111.  *******************************************************************************/
  112.  
  113. extern void        init_app(char *rsc);
  114. extern void        exit_gem(void);
  115. extern void        exit_app(int ret);
  116. extern void        hide_mouse(void);
  117. extern int      hide_mouse_if_needed(GRECT *rect);
  118. extern void        show_mouse(void);
  119. extern int        appl_xgetinfo(int type, int *out1, int *out2, int *out3, int *out4);
  120.  
  121. /*******************************************************************************
  122.  * asciitab.c
  123.  *******************************************************************************/
  124.  
  125. extern int     ascii_table(int id, int pts);
  126. extern void set_asciitable_strings(char *title, char *button);
  127.  
  128. /*******************************************************************************
  129.  * comm.c
  130.  *******************************************************************************/
  131.  
  132. extern void send_m_special(int mode, int app);
  133. extern void send_vastart(int id, char *str);
  134. extern void send_scchanged(void);
  135.  
  136. /*******************************************************************************
  137.  * cookie.c
  138.  *******************************************************************************/
  139.  
  140. extern int    getcookie(char *cookie, long *value);
  141.  
  142. /*******************************************************************************
  143.  * debug.c
  144.  *******************************************************************************/
  145.  
  146. extern int    gl_debug;
  147.  
  148. extern void    debug_init(char *prgName, DEBUGDEV dev, char *file);
  149. extern void    debug_exit(void);
  150. extern void    debug(char *FormatString, ...);
  151.  
  152. /*******************************************************************************
  153.  * dragdrop.c
  154.  *******************************************************************************/
  155.  
  156. #ifndef DD_OK
  157. #define DD_OK            0
  158. #define DD_NAK            1
  159. #define DD_EXT            2
  160. #define DD_LEN            3
  161. #define DD_TIMEOUT    4000
  162. #define DD_NUMEXTS    8
  163. #define DD_EXTSIZE    32
  164. #define DD_NAMEMAX    128
  165. #define DD_HDRMAX        (8+DD_NAMEMAX)
  166. #endif
  167.  
  168. extern int        dd_create(int apid, int winid, int msx, int msy, int kstate, char *exts);
  169. extern int        dd_stry(int fd, char *ext, char *name, long size);
  170. extern void        dd_close(int fd);
  171. extern int        dd_open(int ddnam, char *ext);
  172. extern int        dd_rtry(int fd, char *name, char *ext, long *size);
  173. extern int        dd_reply(int fd, int ack);
  174.  
  175. /*******************************************************************************
  176.  * file.c
  177.  *******************************************************************************/
  178.  
  179. extern int    file_exists        (char *filename);
  180. extern int    path_exists        (char *pathname);
  181.  
  182. extern int    get_path            (char *path, char drive);
  183. extern int    set_path            (char *path);
  184.  
  185. extern void        split_filename    (char *fullname, char *path, char *name);
  186. extern void     set_extension    (char *filename, char *new_ext);
  187.  
  188. extern int         make_normalpath(char *path);
  189. extern void     make_shortpath    (char *path, char *shortpath, int maxlen);
  190.  
  191. #define NO_CASE    0        /* TOS-FS */
  192. #define HALF_CASE    1        /* VFAT/Mac */
  193. #define FULL_CASE    2        /* Minix */
  194. extern int        fs_long_name    (char *filename);
  195. extern int        fs_case_sens    (char *filename);
  196.  
  197. /*******************************************************************************
  198.  * filesel.c
  199.  *******************************************************************************/
  200.  
  201. extern int select_file(char *path, char *name, char *mask, char *title, FSEL_CB open_cb);
  202.  
  203. /*******************************************************************************
  204.  * fontsel.c
  205.  *******************************************************************************/
  206.  
  207. #define FS_M_XFSL        1        /* Cookie xFSL */
  208. #define FS_M_FPROT    2        /* Fontprotokoll */
  209. #define FS_M_MAGX        4        /* MagiC fnts_* */
  210. #define FS_M_ALL        (FS_M_XFSL|FS_M_FPROT|FS_M_MAGX)
  211.  
  212. #define FS_F_MONO        8        /* nur monospaced */
  213.  
  214. extern int do_fontsel(int flags, char *title, int *id, int *pts);
  215.  
  216. /*******************************************************************************
  217.  * form_do.c
  218.  *******************************************************************************/
  219.  
  220. extern int    cf_form_do(OBJECT *tree, int *ed_start);
  221. extern int     simple_dial(OBJECT *tree, int start_edit);
  222. extern KEY_CB set_formdo_keycb(KEY_CB keycb);
  223.  
  224. /*******************************************************************************
  225.  * magx.c
  226.  *******************************************************************************/
  227. extern int    get_magx_version(void);
  228.  
  229. #define MX_NOTXOBJ        0        /* kein MagiC-Objekt */
  230. #define MX_UNDERLINE        1        /* String als Überschrift */
  231. #define MX_SCRADIO        2        /* Radio mit Shortcut */
  232. #define MX_SCCHECK        3        /* Check mit Shortcut */
  233. #define MX_SCEXIT            4        /* EXIT mit Shortcut */
  234. #define MX_SCSTRING        5        /* String mit Shortcut */
  235. #define MX_GROUPBOX        6        /* Gruppenrahmen */
  236. #define MX_EDIT3D            7        /* 3D-Editfeld */
  237.  
  238. #define MX_UNDERLINE2    8        /* Überschrift, kleine Schrift */
  239. #define MX_GROUPBOX2        9        /* Gruppenrahmen, kleine Schrift */
  240.  
  241. #define MX_UNKNOWN        -1        /* Unbekanntes WHITEBACK-Obj */
  242.  
  243. extern int    get_magx_obj(OBJECT *tree, int obj);
  244. extern int    get_magx_shortcut(OBJECT *tree, int obj, char *c);
  245.  
  246. /*******************************************************************************
  247.  * mdial.c
  248.  *******************************************************************************/
  249.  
  250. extern void *open_mdial            (OBJECT *tree, int edit_start);
  251. extern void close_mdial            (void *mdial);
  252. extern int    do_mdial                (void *mdial);
  253.  
  254. extern int     simple_mdial        (OBJECT *tree, int edit_start);
  255.  
  256. extern void set_mdial_wincb    (MDIAL_WCB cb);
  257.  
  258. extern void    redraw_mdobj        (void *mdial, int obj);
  259.  
  260. /*******************************************************************************
  261.  * menu.c
  262.  *******************************************************************************/
  263.  
  264. extern int        create_menu(OBJECT *tree);
  265. extern void     delete_menu(void);
  266.  
  267. extern void     disable_menu(void);
  268. extern void     enable_menu(void);
  269.  
  270. extern int         is_menu_key(int kreturn, int kstate, int *title, int *item);
  271.  
  272. /*******************************************************************************
  273.  * misc.c
  274.  *******************************************************************************/
  275.  
  276. extern long        ts2ol(short i1, short i2);
  277. extern void     ol2ts(long l, short *i1, short *i2);
  278.  
  279. extern void     save_background(GRECT *box, MFDB *buffer);
  280. extern void     restore_background(GRECT *box, MFDB *buffer);
  281.  
  282. extern void     *malloc_global(long size);
  283.  
  284. extern int        get_patchlev(char *id_str, char *pl);
  285.  
  286. /*******************************************************************************
  287.  * nkcc.c
  288.  *******************************************************************************/
  289.  
  290.    /* NKCC key code flags */
  291. #define NKF_FUNC     0x8000         /* function          */
  292. #define NKF_RESVD    0x4000         /* resvd, ignore it! */
  293. #define NKF_NUM      0x2000         /* numeric pad       */
  294. #define NKF_CAPS     0x1000         /* CapsLock          */
  295. #define NKF_ALT      0x0800         /* Alternate         */
  296. #define NKF_CTRL     0x0400         /* Control           */
  297. #define NKF_SHIFT    0x0300         /* any Shift key     */
  298. #define NKF_LSH      0x0200         /* left Shift key    */
  299. #define NKF_RSH      0x0100         /* right Shift key   */
  300.  
  301.    /* special key codes for keys performing a function */
  302. #define NK_INVALID   0x00           /* invalid key code  */
  303. #define NK_UP        0x01           /* cursor up         */
  304. #define NK_DOWN      0x02           /* cursor down       */
  305. #define NK_RIGHT     0x03           /* cursor right      */
  306. #define NK_LEFT      0x04           /* cursor left       */
  307. #define NK_M_PGUP    0x05           /* Mac: page up      */
  308. #define NK_M_PGDOWN  0x06           /* Mac: page down    */
  309. #define NK_M_END     0x07           /* Mac: end          */
  310. #define NK_BS        0x08           /* Backspace         */
  311. #define NK_TAB       0x09           /* Tab               */
  312. #define NK_ENTER     0x0a           /* Enter             */
  313. #define NK_INS       0x0b           /* Insert            */
  314. #define NK_CLRHOME   0x0c           /* Clr/Home          */
  315. #define NK_RET       0x0d           /* Return            */
  316. #define NK_HELP      0x0e           /* Help              */
  317. #define NK_UNDO      0x0f           /* Undo              */
  318. #define NK_F1        0x10           /* function key #1   */
  319. #define NK_F2        0x11           /* function key #2   */
  320. #define NK_F3        0x12           /* function key #3   */
  321. #define NK_F4        0x13           /* function key #4   */
  322. #define NK_F5        0x14           /* function key #5   */
  323. #define NK_F6        0x15           /* function key #6   */
  324. #define NK_F7        0x16           /* function key #7   */
  325. #define NK_F8        0x17           /* function key #8   */
  326. #define NK_F9        0x18           /* function key #9   */
  327. #define NK_F10       0x19           /* function key #10  */
  328. #define NK_M_F11     0x1a           /* Mac: func key #11 */
  329. #define NK_ESC       0x1b           /* Esc               */
  330. #define NK_M_F12     0x1c           /* Mac: func key #12 */
  331. #define NK_M_F14     0x1d           /* Mac: func key #14 */
  332. #define NK_RVD1E     0x1e           /* reserved!         */
  333. #define NK_DEL       0x1f           /* Delete            */
  334.  
  335. extern int                    nkc_init        (void);
  336. extern unsigned short    nkc_tos2n    (long toskey);
  337. extern long                    nkc_n2tos    (unsigned short nkcode);
  338. extern unsigned char        nkc_toupper    (unsigned char chr);
  339. extern unsigned char        nkc_tolower    (unsigned char chr);
  340.  
  341. extern unsigned short    gem_to_norm    (int ks, int kr);
  342. extern void                 norm_to_gem    (unsigned int norm, int *ks, int *kr);
  343.  
  344. extern void                 str_toupper    (char *str);
  345. extern void                 str_tolower    (char *str);
  346.  
  347. /*******************************************************************************
  348.  * objc.c
  349.  *******************************************************************************/
  350.  
  351. extern void     set_obspec    (OBJECT *tree, int obj, long spec);
  352. extern long     get_obspec    (OBJECT *tree, int obj);
  353.     
  354. extern int         get_obtype    (OBJECT *tree, int obj, short *ud);
  355. extern void     get_objframe(OBJECT *tree, int obj, GRECT *r);
  356.  
  357. extern void     set_flag        (OBJECT *tree, int obj, int flag, int set);
  358. extern int         get_flag        (OBJECT *tree, int obj, int flag);
  359. extern int        find_flag    (OBJECT *tree, int flag);
  360.  
  361. extern void        set_state    (OBJECT *tree, int obj, int state, int set);
  362. extern int        get_state    (OBJECT *tree, int obj, int state);
  363. extern void        tree_state    (OBJECT *tree, int start_obj, int state, int set);
  364.  
  365. extern void        set_string    (OBJECT *tree, int obj, char *text);
  366. extern void     get_string    (OBJECT *tree, int obj, char *text);
  367.  
  368. extern void     set_int        (OBJECT *tree, int obj, int i);
  369. extern int      get_int        (OBJECT *tree, int obj);
  370.  
  371. extern void     set_long        (OBJECT *tree, int obj, long l);
  372. extern void     set_ulong    (OBJECT *tree, int obj, unsigned long l);
  373. extern long     get_long        (OBJECT *tree, int obj);
  374.  
  375. extern void     redraw_obj    (OBJECT *tree, int obj);
  376.  
  377. /*******************************************************************************
  378.  * popup.c
  379.  *******************************************************************************/
  380.  
  381. extern int    create_popup(POPUP *p, int anz, int maxlen, char *item);
  382. extern int    free_popup(POPUP *p);
  383. extern int    append_popup(POPUP *p, char *item);
  384.  
  385. extern int    do_popup(POPUP *p, int button);
  386. extern int    cf_menu_popup(MENU *m1, int x, int y, MENU *m2, int button, int offset);
  387.  
  388. #define POP_OPEN    1
  389. #define POP_CYCLE    2
  390. extern int    handle_popup(OBJECT *dial, int dial_obj, OBJECT *pop, int pop_obj, int mode);
  391.  
  392. /*******************************************************************************
  393.  * scrap.c
  394.  *******************************************************************************/
  395.  
  396. extern int    get_scrapdir(char *scrap);
  397. extern void scrap_clear(void);
  398. extern char *scrap_rtxt(char *buf, long *len, long maxlen);
  399. extern void scrap_wtxt(char *buf);
  400.  
  401. /*******************************************************************************
  402.  * userdef.c
  403.  *******************************************************************************/
  404.  
  405. extern void fix_dial(OBJECT *tree);
  406. extern void fix_menu(OBJECT *tree);
  407.  
  408. /*******************************************************************************
  409.  * vdi.c
  410.  *******************************************************************************/
  411.  
  412. extern int    open_vwork(int *w_out);
  413. extern void set_clipping(int handle, int x, int y, int w, int h, int on);
  414. extern int     height2pts(int handle, int f_id, int f_height);
  415.  
  416. /*******************************************************************************
  417.  * wdial.c
  418.  *******************************************************************************/
  419.  
  420. /* wd->mode */
  421. #define WD_OPEN   1
  422. #define WD_ICON   2
  423. #define WD_SHADE  4
  424.  
  425. #define WD_CLOSER    0xFF
  426.  
  427. extern WDIALOG    *create_wdial(OBJECT *tree, OBJECT *icon, int edit_obj, 
  428.                                         WDIAL_OCB open_cb, WDIAL_XCB exit_cb);
  429. extern void    delete_wdial(WDIALOG *wd);
  430. extern void    open_wdial(WDIALOG *wd, int pos_x, int pos_y);
  431. extern void    close_wdial(WDIALOG *wd);
  432.  
  433. extern void    redraw_wdobj(WDIALOG *wd, int obj);
  434. extern void    redraw_wdicon(WDIALOG *wd, int obj);
  435.  
  436. extern int    message_wdial(int *msg);
  437. extern int    click_wdial(int clicks, int x, int y, int kshift, int mbutton);
  438. extern int    key_wdial(int kreturn, int kstate);
  439.  
  440. #endif
  441.