home *** CD-ROM | disk | FTP | other *** search
- /*
- ┌──────────────────────────────────────────────────────────────────────────┐
- │ │
- │ CXLWIN.H - CXL is Copyright (c) 1987-1990 by Mike Smedley. │
- │ │
- │ This header file contains function prototypes and definitions for │
- │ windowing functions. │
- │ │
- └──────────────────────────────────────────────────────────────────────────┘
- */
-
- #if defined(__TURBOC__) /* Turbo C */
- #if __STDC__
- #define _Cdecl
- #else
- #define _Cdecl cdecl
- #endif
- #define _Near
- #elif defined(__ZTC__) /* Zortech C++ */
- #define _Cdecl
- #define _Near
- #elif defined(M_I86) && !defined(__ZTC__) /* Microsoft C/QuickC */
- #if !defined(NO_EXT_KEYS)
- #define _Cdecl cdecl
- #define _Near near
- #else
- #define _Cdecl
- #define _Near
- #endif
- #endif
-
-
- /*------------------------------[ WINDOW type ]------------------------------*/
-
- typedef int WINDOW;
-
- /*---------------------------[ function prototypes ]-------------------------*/
-
- int _Cdecl wactiv(WINDOW whandle);
- int _Cdecl wborder(int btype);
- int _Cdecl wbox(int wsrow,int wscol,int werow,int wecol,int btype
- ,int attr);
- int _Cdecl wbprintc(int bord,int offs,int attr,int ch);
- int _Cdecl wcclear(int attr);
- int _Cdecl wcenters(int wrow,int attr,char *str);
- int _Cdecl wchgattr(int battr,int wattr);
- int _Cdecl wchkbox(int wsrow,int wscol,int werow,int wecol);
- int _Cdecl wchkcol(int wcol);
- int _Cdecl wchkcoord(int wrow,int wcol);
- int _Cdecl wchkrow(int wrow);
- int _Cdecl wclose(void);
- int _Cdecl wcloseall(void);
- int _Cdecl wclreol(void);
- int _Cdecl wclreos(void);
- WINDOW _Cdecl wcopy(int nsrow,int nscol);
- int _Cdecl wdelline(int wrow,int direc);
- int _Cdecl wdrag(int direction);
- int _Cdecl wdump(void);
- int _Cdecl wdupc(int ch,int count);
- int _Cdecl wdups(char *str,int count);
- char *_Cdecl werrmsg(void);
- int _Cdecl wfill(int wsrow,int wscol,int werow,int wecol,int ch,int attr);
- struct _wrec_t *_Cdecl wfindrec(WINDOW whandle);
- int _Cdecl wgetc(void);
- int _Cdecl wgetchf(char *valid,int defchar);
- int _Cdecl wgetns(char *str,int maxchars);
- int _Cdecl wgets(char *str);
- int _Cdecl wgetyn(int cdefault);
- int _Cdecl wgotoxy(int wrow,int wcol);
- WINDOW _Cdecl whandle(void);
- int _Cdecl whelpcat(int cat);
- int _Cdecl whelpclr(void);
- int _Cdecl whelpdef(char *file,unsigned key,int winattr,int textattr,
- int selattr,int barattr,void (_Cdecl *open)(void));
- int _Cdecl whelpop(void);
- int _Cdecl whelpopc(void);
- int _Cdecl whelppcat(int cat);
- int _Cdecl whelpush(void);
- int _Cdecl whelpushc(int cat);
- int _Cdecl whelpwin(int srow,int scol,int erow,int ecol,int btype,
- int title);
- int _Cdecl whide(void);
- int _Cdecl whline(int wsrow,int wscol,int count,int btype,int attr);
- WINDOW _Cdecl windowat(int row,int col);
- int _Cdecl winpbeg(int fieldattr,int textattr);
- int _Cdecl winpdef(int wrow,int wcol,char *str,char *format,int fconv,
- int mode,int (_Cdecl *validate) (char *),int help);
- int _Cdecl winpfba(void (_Cdecl *before)(void),
- void (_Cdecl *after)(void));
- struct _field_t *_Cdecl winpffind(int wrow,int wcol);
- int _Cdecl winpkey(unsigned (_Cdecl *getkey)(int *),unsigned *termkey);
- int _Cdecl winpread(void);
- int _Cdecl winputsf(char *str,char *fmt);
- int _Cdecl winsline(int wrow,int direc);
- int _Cdecl wmenubeg(int srow,int scol,int erow,int ecol,int btype,
- int battr,int wattr,void (_Cdecl *open)(void));
- int _Cdecl wmenubegc(void);
- int _Cdecl wmenuend(int taginit,int menutype,int barwidth,int textpos,
- int textattr,int scharattr,int noselattr,int barattr);
- int _Cdecl wmenuget(void);
- int _Cdecl wmenuiba(void (_Cdecl *before)(void),
- void (_Cdecl *after)(void));
- int _Cdecl wmenuidsab(int tagid);
- int _Cdecl wmenuienab(int tagid);
- struct _item_t *_Cdecl wmenuifind(int tagid);
- int _Cdecl wmenuinext(int tagid);
- int _Cdecl wmenuitem(int wrow,int wcol,char *str,int schar,int tagid,
- int fmask,void (_Cdecl *select)(void),
- unsigned hotkey,int help);
- int _Cdecl wmenuitxt(int wrow,int wcol,int attr,char *str);
- int _Cdecl wmessage(char *str,int border,int leftofs,int attr);
- int _Cdecl wmove(int nsrow,int nscol);
- WINDOW _Cdecl wopen(int srow,int scol,int erow,int ecol,int btype,int battr,
- int wattr);
- int _Cdecl wperror(char *message);
- int _Cdecl wpgotoxy(int wrow,int wcol);
- char *_Cdecl wpickfile(int srow,int scol,int erow,int ecol,int btype,
- int bordattr,int winattr,int barattr,int title,
- char *filespec,void (_Cdecl *open)(void));
- int _Cdecl wpickstr(int srow,int scol,int erow,int ecol,int btype,
- int bordattr,int winattr,int barattr,char *strarr[],
- int initelem,void (_Cdecl *open)(void));
- int _Cdecl wprintc(int wrow,int wcol,int attr,int ch);
- int _Cdecl wprintf(const char *format,...);
- int _Cdecl wprints(int wrow,int wcol,int attr,char *str);
- int _Cdecl wprintsf(int wrow,int wcol,int attr,char *format,char *str);
- int _Cdecl wputc(int ch);
- int _Cdecl wputns(char *str,int width);
- int _Cdecl wputs(char *str);
- int _Cdecl wputsw(char *str);
- int _Cdecl wreadcur(int *wrow,int *wcol);
- void _Cdecl wrestore(int *wbuf);
- int _Cdecl wrjusts(int wrow,int wjcol,int attr,char *str);
- int *_Cdecl wsave(int srow,int scol,int erow,int ecol);
- int _Cdecl wscanf(const char *format,...);
- int _Cdecl wscroll(int count,int direc);
- int _Cdecl wscrollbox(int wsrow,int wscol,int werow,int wecol,int count,
- int direction);
- int _Cdecl wselstr(int wrow,int wcol,int attr,char *strarr[],
- int initelem);
- int _Cdecl wshadoff(void);
- int _Cdecl wshadow(int attr);
- int _Cdecl wsize(int nerow,int necol);
- int _Cdecl wslide(int nsrow,int nscol);
- int _Cdecl wtextattr(int attr);
- int _Cdecl wtitle(char *str,int tpos,int tattr);
- int _Cdecl wunhide(WINDOW whandle);
- int _Cdecl wunlink(WINDOW w);
- int _Cdecl wvline(int wsrow,int wscol,int count,int btype,int attr);
- int _Cdecl wwprints(WINDOW whandle,int wrow,int wcol,int attr,char *str);
-
- /*-------------[ error codes returned from windowing functions ]-------------*/
-
- #define W_NOERROR 0 /* no error */
- #define W_ESCPRESS 1 /* Escape key was pressed */
- #define W_ALLOCERR 2 /* memory allocation error */
- #define W_NOTFOUND 3 /* record not found */
- #define W_NOACTIVE 4 /* no active window */
- #define W_INVCOORD 5 /* invalid coordinates */
- #define W_INVFORMT 6 /* invalid format string */
- #define W_NOINPDEF 7 /* no input fields defined */
- #define W_STRLONG 8 /* string too long for window */
- #define W_INVBTYPE 9 /* invalid box type */
- #define W_NOBORDER 10 /* no window border */
- #define W_NOHIDDEN 11 /* no hidden windows */
- #define W_NOTHIDD 12 /* window is not hidden */
- #define W_NOSELECT 13 /* no selectable menu items */
- #define W_NOITMDEF 14 /* no menu items defined */
- #define W_NOMNUEND 15 /* no end of menu specified */
- #define W_NOMNUDEF 16 /* no menu defined */
- #define W_NOMNUBEG 17 /* no begin of menu specified */
- #define W_NOFRMDEF 18 /* no form defined */
- #define W_NOFRMBEG 19 /* no begin of form specified */
- #define W_NOHLPDEF 20 /* no help record defined */
- #define W_HLPSTKOV 21 /* help stack overflow */
- #define W_HLPSTKUN 22 /* help stack underflow */
- #define W_DOSERROR 23 /* DOS error */
- #define W_NOMATCH 24 /* no files matched input filespec */
- #define W_INVTAGID 25 /* invalid tag identifier */
-
- /*-----------------------[ window border identifiers ]----------------------*/
-
- #define TP_BORD 0 /* top border */
- #define BT_BORD 1 /* bottom border */
- #define LT_BORD 2 /* left border */
- #define RT_BORD 3 /* right border */
-
- /*--------------------------[ direction codes ]------------------------------*/
-
- #define D_DOWN 0
- #define D_UP 1
- #define D_LEFT 2
- #define D_RIGHT 3
- #define SDOWN D_DOWN /* scroll down */
- #define SUP D_UP /* scroll up */
-
- /*----------------------[ menu item record definition ]----------------------*/
-
- struct _item_t {
- struct _item_t *prev; /* pointer to previous record */
- struct _item_t *next; /* pointer to next record */
- void *child; /* pointer to submenu's record */
- char *str; /* address of selection string */
- char *desc; /* text description of menu option */
- void (*select) (void); /* address of selection function */
- void (*before) (void); /* address of "before" function */
- void (*after) (void); /* address of "after" function */
- unsigned hotkey; /* hot key to select function */
- int tagid; /* tag identifier */
- int help; /* help category number */
- int wrow; /* start of text - window row */
- unsigned char wcol; /* start of text - window column */
- unsigned char schar; /* quick selection character */
- unsigned char fmask; /* special feature mask */
- unsigned char dwrow; /* description window row */
- unsigned char dwcol; /* description window column */
- unsigned char dattr; /* description attribute */
- unsigned char redisp; /* redisplay flag */
- };
-
- /*--------------------[ window menu record definition ]----------------------*/
-
- struct _menu_t {
- struct _menu_t *prev; /* pointer to prev menu structure */
- struct _menu_t *next; /* pointer to next menu structure */
- struct _menu_t *parent; /* pointer to parent menu */
- struct _item_t *item; /* pointer to head menu item */
- struct _item_t *citem; /* pointer to current menu item */
- void (*open) (void); /* address of post-opening function */
- int tagcurr; /* tag ID of item selection bar on */
- unsigned char usecurr; /* will menu use current window? */
- unsigned char srow; /* starting row of menu window */
- unsigned char scol; /* starting column of menu window */
- unsigned char erow; /* ending row of menu window */
- unsigned char ecol; /* ending column of menu window */
- unsigned char btype; /* menu window border type */
- unsigned char battr; /* menu window border attribute */
- unsigned char wattr; /* menu window attribute */
- unsigned char menutype; /* menu type mask */
- unsigned char barwidth; /* width of menu bar or zero */
- unsigned char textpos; /* offset of text from start of bar */
- unsigned char textattr; /* attribute of menu text */
- unsigned char scharattr; /* attribute of selection character */
- unsigned char noselattr; /* non-selectable text attribute */
- unsigned char barattr; /* attribute of selection bar */
- };
-
- /*--------------------[ window help information record ]---------------------*/
-
- struct _help_t {
- int help[20]; /* help stack */
- char *file; /* help file name */
- int helpptr; /* help stack pointer */
- unsigned int key; /* help hot key */
- unsigned char winattr; /* help window attribute */
- unsigned char textattr; /* help window text attribute */
- unsigned char selattr; /* selection text attribute */
- unsigned char barattr; /* selection bar attribute */
- unsigned char srow; /* help window start row */
- unsigned char scol; /* help window start column */
- unsigned char erow; /* help window end row */
- unsigned char ecol; /* help window end column */
- unsigned char btype; /* help window box type */
- unsigned char title; /* display "Help" title? */
- void (*open) (void); /* pointer to open function */
- };
-
- /*-----------------------[ window information record ]-----------------------*/
-
- struct _winfo_t {
- struct _wrec_t *active; /* pointer to active window */
- struct _wrec_t *hidden; /* pointer to head hidden window */
- struct _menu_t *menu; /* pointer to head menu record */
- struct _menu_t *cmenu; /* pointer to current menu record */
- struct _help_t *helptr; /* pointer to help info record */
- WINDOW handle; /* last handle given to a window */
- int maxfiles; /* max files allowed in wpickfile() */
- int help; /* current help category */
- int errno; /* error num from last window func */
- int total; /* total number of open windows */
- int mlevel,ilevel; /* system variables used in menus */
- unsigned char esc; /* check for Esc in input funcions? */
- unsigned char tabwidth; /* window TTY output tab width */
- unsigned char fillch; /* character to fill windows with */
- };
-
- extern struct _winfo_t _Near _Cdecl _winfo;
-
- /*-------------------[ fmask definitions for wmenuitem() ]-------------------*/
-
- #define M_HASPD 1 /* has pull-down menu attached */
- #define M_NOSEL 2 /* is not selectable */
- #define M_CLOSE 4 /* close menu after select func */
- #define M_CLALL 8 /* close all menus when selected */
- #define M_CLOSB 16 /* close menu before select func */
-
- /*------------------[ menutype definitions for wmenuend() ]------------------*/
-
- #define M_HORZ 1 /* horizontal menu */
- #define M_VERT 2 /* vertical menu */
- #define M_OMNI 7 /* omnidirectional menu */
- #define M_PD 8 /* pull-down menu */
- #define M_NOQS 16 /* disable quick selection */
- #define M_SAVE 32 /* save last bar position */
-
- /*------------------[ special return codes from wmenuget() ]-----------------*/
-
- #define M_EXIT 32764 /* exit menu */
- #define M_EXITALL 32765 /* exit all menus */
- #define M_PREVPD 32766 /* previous pull-down menu */
- #define M_NEXTPD 32767 /* next pull-down menu */
-
- /*---------------------[ window input field definition ]---------------------*/
-
- struct _field_t {
- struct _field_t *prev; /* pointer to previous field */
- struct _field_t *next; /* pointer to next field */
- char *str; /* address of receiving string */
- char *buf; /* address of temp receive string */
- char *format; /* input field format string */
- int (*validate) (char *); /* address of validation function */
- void (*before) (void); /* address of "before" function */
- void (*after) (void); /* address of "after" function */
- int help; /* help category number */
- int lenbuf; /* length of buffer */
- int lenfld; /* length of screen input field */
- int lenfmt; /* length of format string */
- unsigned char wrow; /* start of input - window row */
- unsigned char wcol; /* start of input - window column */
- unsigned char mode; /* 0=init, 1=update, 2=cond update */
- unsigned char decpos; /* decimal position (numeric) */
- unsigned char redisp; /* redisplay flag */
- char fconv; /* field conversion character */
- };
-
- /*-------------------[ window data entry form definition ]-------------------*/
-
- struct _form_t {
- unsigned (*getkey) (int *); /* pointer to alternate get func */
- struct _form_t *prev; /* pointer to previous form record */
- struct _form_t *next; /* pointer to next form record */
- struct _field_t *field; /* pointer to head field record */
- struct _field_t *cfield; /* pointer to current field record */
- unsigned *termkey; /* addr of int for terminating key */
- char *pformat; /* format string pointer */
- char *pbuf; /* buffer string pointer */
- unsigned char cwrow; /* current window row */
- unsigned char cwcol; /* current window column */
- unsigned char decimal; /* decimal field flag */
- unsigned char insert; /* insert mode flag */
- unsigned char fieldattr; /* field attribute */
- unsigned char textattr; /* text attribute */
- };
-
- /*----------------------[ structure of window records ]----------------------*/
-
- struct _wrec_t {
- struct _wrec_t *prev; /* pointer to previous window record */
- struct _wrec_t *next; /* pointer to next window record */
- struct _form_t *form; /* pointer to head form record */
- int *wbuf; /* address of window's buffer */
- int *wsbuf; /* address of window shadow's buffer */
- char *title; /* address of window's title string */
- WINDOW whandle; /* window's handle */
- int help; /* help category number */
- unsigned char srow; /* start row of window */
- unsigned char scol; /* start column of window */
- unsigned char erow; /* end row of window */
- unsigned char ecol; /* end column of window */
- unsigned char btype; /* window's box type */
- unsigned char wattr; /* window's initial text attribute */
- unsigned char battr; /* atrribute of window's border */
- unsigned char border; /* has border? 0 = no, 1 = yes */
- unsigned char row; /* window's current cursor row */
- unsigned char column; /* window's current cursor column */
- unsigned char attr; /* window's current text attribute */
- unsigned char tpos; /* position of window's title */
- unsigned char tattr; /* attribute of window's title */
- unsigned char wsattr; /* attribute of window's shadow */
- };
-
- /*------------[ window title position definitions for wtitle() ]-------------*/
-
- #define TLEFT 1 /* left justified */
- #define TCENTER 2 /* centered */
- #define TRIGHT 3 /* right justified */
-
- /*------------------------[ definition of NULL ]-----------------------------*/
-
- #if !defined(NULL)
- #if defined(__TURBOC__) /* Turbo C */
- #if defined(__TINY__) || defined(__SMALL__) || defined(__MEDIUM__)
- #define NULL 0
- #else
- #define NULL 0L
- #endif
- #elif defined(__ZTC__) /* Zortech C++ */
- #ifdef LPTR
- #define NULL 0L
- #else
- #define NULL 0
- #endif
- #elif defined(M_I86) && !defined(__ZTC__) /* Microsoft C/QuickC */
- #if defined(M_I86SM) || defined(M_I86MM)
- #define NULL 0
- #else
- #define NULL 0L
- #endif
- #endif
- #endif
-
- /*--------------[ attribute codes for functions that use them ]--------------*/
-
- #if !defined(BLACK) /* foreground colors */
- #define BLACK 0
- #define BLUE 1
- #define GREEN 2
- #define CYAN 3
- #define RED 4
- #define MAGENTA 5
- #define BROWN 6
- #define YELLOW 14
- #define WHITE 15
- #endif
- #if !defined(LGREY)
- #define LGREY 7 /* CXL abbreviates LIGHT as L */
- #define DGREY 8 /* and DARK as D for ease of use */
- #define LBLUE 9
- #define LGREEN 10
- #define LCYAN 11
- #define LRED 12
- #define LMAGENTA 13
-
- #define _BLACK 0 /* background colors */
- #define _BLUE 16
- #define _GREEN 32
- #define _CYAN 48
- #define _RED 64
- #define _MAGENTA 80
- #define _BROWN 96
- #define _LGREY 112
- #endif
-
- #if !defined(BLINK)
- #define BLINK 128 /* blink attribute */
- #endif
-
- /*----------------------------[ macro functions ]----------------------------*/
-
- #if !defined(MK_FP)
- #define MK_FP(seg,ofs) ((void far *) (((unsigned long)(seg) << 16) | \
- (unsigned)(ofs)))
- #endif
- #define wclear() wcclear(_winfo.active->wattr)
- #define wfillch(a) (_winfo.fillch=a)
- #define whelpundef() whelpdef(NULL,0,0,0,0,0,NULL)
- #define winpfcurr() (_winfo.active->form->cfield)
- #define wisactiv(a) (a==_winfo.active->whandle)
- #define wmenumcurr() (_winfo.cmenu)
- #define wmenuicurr() (wmenumcurr()->citem)
- #define wsetesc(a) (_winfo.esc=a)
- #define wtabwidth(a) (_winfo.tabwidth=((a==0)?1:a))
-