Minix1.5/commands/elvis/curses.h

Compare this file to the similar file:
Show the results in this format:

/* curses.h */

/* Author:
 *	Steve Kirkendall
 *	16820 SW Tallac Way
 *	Beaverton, OR 97006
 *	kirkenda@jove.cs.pdx.edu, or ...uunet!tektronix!psueea!jove!kirkenda
 */


/* This is the header file for a small, fast, fake curses package */

/* termcap stuff */
extern char	*tgoto();
extern char	*tgetstr();

/* faddch() is a function.  a pointer to it is passed to tputs() */
extern int	faddch();

/* data types */
#define ushort	unsigned short
#define WINDOW	char

/* CONSTANTS & SYMBOLS */
#define TRUE		1
#define FALSE		0
#define A_NORMAL	0
#define A_STANDOUT	1
#define A_BOLD		2
#define A_UNDERLINE	3
#define A_ALTCHARSET	4
#define KBSIZ		6144

/* extern variables, defined in curses.c */
extern short	ospeed;		/* tty speed, eg B2400 */
extern WINDOW	*stdscr;	/* pointer into kbuf[] */
extern WINDOW	kbuf[KBSIZ];	/* a very large output buffer */
extern int	LINES;		/* :li#: number of rows */
extern int	COLS;		/* :co#: number of columns */
extern int	AM;		/* :am:  boolean: auto margins? */
extern int	PT;		/* :pt:  boolean: physical tabs? */
extern char	*VB;		/* :vb=: visible bell */
extern char	*UP;		/* :up=: move cursor up */
extern char	*SC;		/* :sc=: save cursor posn & char attributes */
extern char	*RC;		/* :rc=: restore cursor posn & char attr */
extern char	*SO;		/* :so=: standout start */
extern char	*SE;		/* :se=: standout end */
extern char	*US;		/* :us=: underline start */
extern char	*UE;		/* :ue=: underline end */
extern char	*VB_s;		/* :VB=: bold start */
extern char	*VB_e;		/* :Vb=: bold end */
extern char	*AS;		/* :as=: alternate (italic) start */
extern char	*AE;		/* :ae=: alternate (italic) end */
extern char	*CM;		/* :cm=: cursor movement */
extern char	*CE;		/* :ce=: clear to end of line */
extern char	*CL;		/* :cl=: home cursor & clear screen */
extern char	*CD;		/* :cd=: clear to end of screen */
extern char	*AL;		/* :al=: add a line */
extern char	*DL;		/* :dl=: delete a line */
extern char	*SR;		/* :sr=: scroll reverse */
extern char	*KU;		/* :ku=: sequence sent by up key */
extern char	*KD;		/* :kd=: sequence sent by down key */
extern char	*KL;		/* :kl=: sequence sent by left key */
extern char	*KR;		/* :kr=: sequence sent by right key */
extern char	*PU;		/* :PU=: key sequence sent by PgUp key */
extern char	*PD;		/* :PD=: key sequence sent by PgDn key */
extern char	*HM;		/* :HM=: key sequence sent by Home key */
extern char	*EN;		/* :EN=: key sequence sent by End key */
extern char	*IM;		/* :im=: insert mode start */
extern char	*IC;		/* :ic=: insert following char */
extern char	*EI;		/* :ei=: insert mode end */
extern char	*DC;		/* :dc=: delete a character */
extern char	*aend;		/* end an attribute -- either UE or VB_e */
extern char	ERASEKEY;	/* taken from the ioctl structure */

#define _addCR		(stdscr[-1] == '\n' ? qaddch('\r') : 0)
#define qaddch(ch)	(*stdscr++ = (ch))
#define addch(ch)	if (qaddch(ch) == '\n') qaddch('\r'); else
#ifdef CRUNCH
extern void attrset();
extern void insch();
extern void qaddstr();
#else
# define attrset(a)	{tputs(aend, 1, faddch); if ((a) == A_BOLD)\
				{tputs(VB_s, 1, faddch); aend = VB_e;}\
			 else if ((a) == A_UNDERLINE)\
				{tputs(US, 1, faddch); aend = UE;}\
			 else if ((a) == A_ALTCHARSET)\
				{tputs(AS, 1, faddch); aend = AE;}\
			 else aend = "";}
# define insch(ch)	{if (IM) tputs(IM, 1, faddch);\
			 tputs(IC, 1, faddch);\
			 qaddch(ch);\
			 if (EI) tputs(EI, 1, faddch);\
			}
# define qaddstr(str)	{register char *s_, *d_;\
			 for (s_=(str), d_=stdscr; *d_++ = *s_++; ){}\
			 stdscr = d_ - 1;\
			}
#endif
#define addstr(str)	{qaddstr(str); _addCR;}
#define move(y,x)	tputs(tgoto(CM, x, y), 1, faddch);
#define wprintw		for (*stdscr = 1; *stdscr; stdscr += strlen(stdscr), _addCR, *stdscr = 0)\
				sprintf
#define mvaddch(y,x,ch)	{move(y,x); addch(ch);}
#define refresh()	wrefresh(stdscr)
#define wrefresh(w)	if ((w) != kbuf) {write(1, kbuf, (int)((w) - kbuf)); (w) = kbuf;}else;
#define wqrefresh(w)	if ((w) - kbuf > 2000)  {write(1, kbuf, (int)((w) - kbuf)); (w) = kbuf;}else;
#define standout()	tputs(SO, 1, faddch)
#define standend()	tputs(SE, 1, faddch)
#define clear()		tputs(CL, 1, faddch)
#define clrtoeol()	tputs(CE, 1, faddch)
#define clrtobot()	tputs(CD, 1, faddch)
#define insertln()	tputs(AL, LINES, faddch)
#define deleteln()	tputs(DL, LINES, faddch)
#define delch()		tputs(DC, COLS, faddch)
#define scrollok(w,b)
#define raw()
#define echo()
#define cbreak()
#define noraw()
#define noecho()
#define nocbreak()