home *** CD-ROM | disk | FTP | other *** search
/ ST-Computer Leser 1998 October / STC_CD_10_1998.iso / BASE / CFLIB / LIB / CFLIB.H
Encoding:
C/C++ Source or Header  |  1998-09-26  |  15.9 KB  |  436 lines

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