[9] | 1 | /* curses.h - defines macros and prototypes for curses */
|
---|
| 2 |
|
---|
| 3 | #ifndef _CURSES_H
|
---|
| 4 | #define _CURSES_H
|
---|
| 5 |
|
---|
| 6 | #include <termios.h>
|
---|
| 7 | #include <stdarg.h>
|
---|
| 8 | #include <stdio.h>
|
---|
| 9 |
|
---|
| 10 | typedef int bool;
|
---|
| 11 |
|
---|
| 12 | #ifndef TRUE
|
---|
| 13 | #define TRUE 1
|
---|
| 14 | #endif
|
---|
| 15 | #ifndef FALSE
|
---|
| 16 | #define FALSE 0
|
---|
| 17 | #endif
|
---|
| 18 | #ifndef ERR
|
---|
| 19 | #define ERR (-1) /* general error flag */
|
---|
| 20 | #endif
|
---|
| 21 | #ifndef OK
|
---|
| 22 | #define OK 0 /* general OK flag */
|
---|
| 23 | #endif
|
---|
| 24 |
|
---|
| 25 | /* Macros. */
|
---|
| 26 | #define box(win,vc,hc) wbox(win,0,0,0,0,vc,hc)
|
---|
| 27 | #define addch(ch) waddch(stdscr,ch)
|
---|
| 28 | #define mvaddch(y,x,ch) (wmove(stdscr,y,x)==ERR?ERR:waddch(stdscr,ch))
|
---|
| 29 | #define mvwaddch(win,y,x,ch) (wmove(win,y,x)==ERR?ERR:waddch(win,ch))
|
---|
| 30 | #define getch() wgetch(stdscr)
|
---|
| 31 | #define mvgetch(y,x) (wmove(stdscr,y,x)==ERR?ERR:wgetch(stdscr))
|
---|
| 32 | #define mvwgetch(win,y,x) (wmove(win,y,x)==ERR?ERR:wgetch(win))
|
---|
| 33 | #define addstr(str) waddstr(stdscr,str)
|
---|
| 34 | #define mvaddstr(y,x,str) (wmove(stdscr,y,x)==ERR?ERR:waddstr(stdscr,str))
|
---|
| 35 | #define mvwaddstr(win,y,x,str) (wmove(win,y,x)==ERR?ERR:waddstr(win,str))
|
---|
| 36 | #define getstr(str) wgetstr(stdscr,str)
|
---|
| 37 | #define mvgetstr(y,x,str) (wmove(stdscr,y,x)==ERR?ERR:wgetstr(stdscr,str))
|
---|
| 38 | #define mvwgetstr(win,y,x,str) (wmove(win,y,x)==ERR?ERR:wgetstr(win,str))
|
---|
| 39 | #define move(y,x) wmove(stdscr,y,x)
|
---|
| 40 | #define clear() wclear(stdscr)
|
---|
| 41 | #define erase() werase(stdscr)
|
---|
| 42 | #define clrtobot() wclrtobot(stdscr)
|
---|
| 43 | #define mvclrtobot(y,x) (wmove(stdscr,y,x)==ERR?ERR:wclrtobot(stdscr))
|
---|
| 44 | #define mvwclrtobot(win,y,x) (wmove(win,y,x)==ERR?ERR:wclrtobot(win))
|
---|
| 45 | #define clrtoeol() wclrtoeol(stdscr)
|
---|
| 46 | #define mvclrtoeol(y,x) (wmove(stdscr,y,x)==ERR?ERR:wclrtoeol(stdscr))
|
---|
| 47 | #define mvwclrtoeol(win,y,x) (wmove(win,y,x)==ERR?ERR:wclrtoeol(win))
|
---|
| 48 | #define insertln() winsertln(stdscr)
|
---|
| 49 | #define mvinsertln(y,x) (wmove(stdscr,y,x)==ERR?ERR:winsertln(stdscr))
|
---|
| 50 | #define mvwinsertln(win,y,x) (wmove(win,y,x)==ERR?ERR:winsertln(win))
|
---|
| 51 | #define deleteln() wdeleteln(stdscr)
|
---|
| 52 | #define mvdeleteln(y,x) (wmove(stdscr,y,x)==ERR?ERR:wdeleteln(stdscr))
|
---|
| 53 | #define mvwdeleteln(win,y,x) (wmove(win,y,x)==ERR?ERR:wdeleteln(win))
|
---|
| 54 | #define refresh() wrefresh(stdscr)
|
---|
| 55 | #define inch() winch(stdscr)
|
---|
| 56 | #define insch(ch) winsch(stdscr,ch)
|
---|
| 57 | #define mvinsch(y,x,ch) (wmove(stdscr,y,x)==ERR?ERR:winsch(stdscr,ch))
|
---|
| 58 | #define mvwinsch(win,y,x,ch) (wmove(win,y,x)==ERR?ERR:winsch(win,ch))
|
---|
| 59 | #define delch() wdelch(stdscr)
|
---|
| 60 | #define mvdelch(y,x) (wmove(stdscr,y,x)==ERR?ERR:wdelch(stdscr))
|
---|
| 61 | #define mvwdelch(win,y,x) (wmove(win,y,x)==ERR?ERR:wdelch(win))
|
---|
| 62 | #define standout() wstandout(stdscr)
|
---|
| 63 | #define wstandout(win) ((win)->_attrs |= A_STANDOUT)
|
---|
| 64 | #define standend() wstandend(stdscr)
|
---|
| 65 | #define wstandend(win) ((win)->_attrs &= ~A_STANDOUT)
|
---|
| 66 | #define attrset(attrs) wattrset(stdscr, attrs)
|
---|
| 67 | #define wattrset(win, attrs) ((win)->_attrs = (attrs))
|
---|
| 68 | #define attron(attrs) wattron(stdscr, attrs)
|
---|
| 69 | #define wattron(win, attrs) ((win)->_attrs |= (attrs))
|
---|
| 70 | #define attroff(attrs) wattroff(stdscr,attrs)
|
---|
| 71 | #define wattroff(win, attrs) ((win)->_attrs &= ~(attrs))
|
---|
| 72 | #define resetty() tcsetattr(1, TCSANOW, &_orig_tty)
|
---|
| 73 | #define getyx(win,y,x) (y = (win)->_cury, x = (win)->_curx)
|
---|
| 74 |
|
---|
| 75 | /* Video attribute definitions. */
|
---|
| 76 | #define A_BLINK 0x0100
|
---|
| 77 | #define A_BLANK 0
|
---|
| 78 | #define A_BOLD 0x0200
|
---|
| 79 | #define A_DIM 0
|
---|
| 80 | #define A_PROTECT 0
|
---|
| 81 | #define A_REVERSE 0x0400
|
---|
| 82 | #define A_STANDOUT 0x0800
|
---|
| 83 | #define A_UNDERLINE 0x1000
|
---|
| 84 | #define A_ALTCHARSET 0x2000
|
---|
| 85 |
|
---|
| 86 | /* Type declarations. */
|
---|
| 87 | typedef struct {
|
---|
| 88 | int _cury; /* current pseudo-cursor */
|
---|
| 89 | int _curx;
|
---|
| 90 | int _maxy; /* max coordinates */
|
---|
| 91 | int _maxx;
|
---|
| 92 | int _begy; /* origin on screen */
|
---|
| 93 | int _begx;
|
---|
| 94 | int _flags; /* window properties */
|
---|
| 95 | int _attrs; /* attributes of written characters */
|
---|
| 96 | int _tabsize; /* tab character size */
|
---|
| 97 | bool _clear; /* causes clear at next refresh */
|
---|
| 98 | bool _leave; /* leaves cursor as it happens */
|
---|
| 99 | bool _scroll; /* allows window scrolling */
|
---|
| 100 | bool _nodelay; /* input character wait flag */
|
---|
| 101 | bool _keypad; /* flags keypad key mode active */
|
---|
| 102 | int **_line; /* pointer to line pointer array */
|
---|
| 103 | int *_minchng; /* First changed character in line */
|
---|
| 104 | int *_maxchng; /* Last changed character in line */
|
---|
| 105 | int _regtop; /* Top/bottom of scrolling region */
|
---|
| 106 | int _regbottom;
|
---|
| 107 | } WINDOW;
|
---|
| 108 |
|
---|
| 109 | /* External variables */
|
---|
| 110 | extern int LINES; /* terminal height */
|
---|
| 111 | extern int COLS; /* terminal width */
|
---|
| 112 | extern bool NONL; /* \n causes CR too ? */
|
---|
| 113 | extern WINDOW *curscr; /* the current screen image */
|
---|
| 114 | extern WINDOW *stdscr; /* the default screen window */
|
---|
| 115 | extern struct termios _orig_tty, _tty;
|
---|
| 116 |
|
---|
| 117 | extern unsigned int ACS_ULCORNER; /* terminal dependent block grafic */
|
---|
| 118 | extern unsigned int ACS_LLCORNER; /* charcters. Forget IBM, we are */
|
---|
| 119 | extern unsigned int ACS_URCORNER; /* independent of their charset. :-) */
|
---|
| 120 | extern unsigned int ACS_LRCORNER;
|
---|
| 121 | extern unsigned int ACS_RTEE;
|
---|
| 122 | extern unsigned int ACS_LTEE;
|
---|
| 123 | extern unsigned int ACS_BTEE;
|
---|
| 124 | extern unsigned int ACS_TTEE;
|
---|
| 125 | extern unsigned int ACS_HLINE;
|
---|
| 126 | extern unsigned int ACS_VLINE;
|
---|
| 127 | extern unsigned int ACS_PLUS;
|
---|
| 128 | extern unsigned int ACS_S1;
|
---|
| 129 | extern unsigned int ACS_S9;
|
---|
| 130 | extern unsigned int ACS_DIAMOND;
|
---|
| 131 | extern unsigned int ACS_CKBOARD;
|
---|
| 132 | extern unsigned int ACS_DEGREE;
|
---|
| 133 | extern unsigned int ACS_PLMINUS;
|
---|
| 134 | extern unsigned int ACS_BULLET;
|
---|
| 135 | extern unsigned int ACS_LARROW;
|
---|
| 136 | extern unsigned int ACS_RARROW;
|
---|
| 137 | extern unsigned int ACS_DARROW;
|
---|
| 138 | extern unsigned int ACS_UARROW;
|
---|
| 139 | extern unsigned int ACS_BOARD;
|
---|
| 140 | extern unsigned int ACS_LANTERN;
|
---|
| 141 | extern unsigned int ACS_BLOCK;
|
---|
| 142 |
|
---|
| 143 | _PROTOTYPE( char *unctrl, (int _c) );
|
---|
| 144 | _PROTOTYPE( int baudrate, (void));
|
---|
| 145 | _PROTOTYPE( void beep, (void));
|
---|
| 146 | _PROTOTYPE( void cbreak, (void));
|
---|
| 147 | _PROTOTYPE( void clearok, (WINDOW *_win, bool _flag) );
|
---|
| 148 | _PROTOTYPE( void clrscr, (void));
|
---|
| 149 | _PROTOTYPE( void curs_set, (int _visibility) );
|
---|
| 150 | _PROTOTYPE( void delwin, (WINDOW *_win) );
|
---|
| 151 | _PROTOTYPE( void doupdate, (void));
|
---|
| 152 | _PROTOTYPE( void echo, (void));
|
---|
| 153 | _PROTOTYPE( int endwin, (void));
|
---|
| 154 | _PROTOTYPE( int erasechar, (void));
|
---|
| 155 | _PROTOTYPE( void fatal, (char *_s) );
|
---|
| 156 | _PROTOTYPE( int fixterm, (void));
|
---|
| 157 | _PROTOTYPE( void flash, (void));
|
---|
| 158 | _PROTOTYPE( void gettmode, (void));
|
---|
| 159 | _PROTOTYPE( void idlok, (WINDOW *_win, bool _flag) );
|
---|
| 160 | _PROTOTYPE( WINDOW *initscr, (void));
|
---|
| 161 | _PROTOTYPE( void keypad, (WINDOW *_win, bool _flag) );
|
---|
| 162 | _PROTOTYPE( int killchar, (void));
|
---|
| 163 | _PROTOTYPE( void leaveok, (WINDOW *_win, bool _flag) );
|
---|
| 164 | _PROTOTYPE( char *longname, (void));
|
---|
| 165 | _PROTOTYPE( void meta, (WINDOW *_win, bool _flag) );
|
---|
| 166 | _PROTOTYPE( int mvcur, (int _oldy, int _oldx, int _newy, int _newx) );
|
---|
| 167 | _PROTOTYPE( int mvinch, (int _y, int _x) );
|
---|
| 168 | _PROTOTYPE( int mvprintw, (int _y, int _x, const char *_fmt, ...) );
|
---|
| 169 | _PROTOTYPE( int mvscanw, (int _y, int _x, const char *_fmt, ...) );
|
---|
| 170 | _PROTOTYPE( int mvwin, (WINDOW *_win, int _begy, int _begx) );
|
---|
| 171 | _PROTOTYPE( int mvwinch, (WINDOW *_win, int _y, int _x) );
|
---|
| 172 | _PROTOTYPE( int mvwprintw, (WINDOW *_win, int _y, int _x, const char *_fmt,
|
---|
| 173 | ...) );
|
---|
| 174 | _PROTOTYPE( int mvwscanw, (WINDOW *_win, int _y, int _x, const char *_fmt,
|
---|
| 175 | ...) );
|
---|
| 176 | _PROTOTYPE( WINDOW *newwin, (int _num_lines, int _num_cols, int _y, int _x));
|
---|
| 177 | _PROTOTYPE( void nl, (void));
|
---|
| 178 | _PROTOTYPE( void nocbreak, (void));
|
---|
| 179 | _PROTOTYPE( void nodelay, (WINDOW *_win, bool _flag) );
|
---|
| 180 | _PROTOTYPE( void noecho, (void));
|
---|
| 181 | _PROTOTYPE( void nonl, (void));
|
---|
| 182 | _PROTOTYPE( void noraw, (void));
|
---|
| 183 | _PROTOTYPE( void outc, (int _c) );
|
---|
| 184 | _PROTOTYPE( void overlay, (WINDOW *_win1, WINDOW *_win2) );
|
---|
| 185 | _PROTOTYPE( void overwrite, (WINDOW *_win1, WINDOW *_win2) );
|
---|
| 186 | _PROTOTYPE( void poscur, (int _r, int _c) );
|
---|
| 187 | _PROTOTYPE( int printw, (const char *_fmt, ...) );
|
---|
| 188 | _PROTOTYPE( void raw, (void));
|
---|
| 189 | _PROTOTYPE( int resetterm, (void));
|
---|
| 190 | _PROTOTYPE( int saveoldterm, (void));
|
---|
| 191 | _PROTOTYPE( int saveterm, (void));
|
---|
| 192 | _PROTOTYPE( int savetty, (void));
|
---|
| 193 | _PROTOTYPE( int scanw, (const char *_fmt, ...) );
|
---|
| 194 | _PROTOTYPE( void scroll, (WINDOW *_win) );
|
---|
| 195 | _PROTOTYPE( void scrollok, (WINDOW *_win, bool _flag) );
|
---|
| 196 | _PROTOTYPE( int setscrreg, (int _top, int _bottom) );
|
---|
| 197 | _PROTOTYPE( int setterm, (char *_type) );
|
---|
| 198 | _PROTOTYPE( int setupterm, (void));
|
---|
| 199 | _PROTOTYPE( WINDOW *subwin, (WINDOW *_orig, int _nlines, int _ncols, int _y,
|
---|
| 200 | int _x));
|
---|
| 201 | _PROTOTYPE( int tabsize, (int _ts) );
|
---|
| 202 | _PROTOTYPE( void touchwin, (WINDOW *_win) );
|
---|
| 203 | _PROTOTYPE( int waddch, (WINDOW *_win, int _c) );
|
---|
| 204 | _PROTOTYPE( int waddstr, (WINDOW *_win, char *_str) );
|
---|
| 205 | _PROTOTYPE( int wbox, (WINDOW *_win, int _ymin, int _xmin, int _ymax,
|
---|
| 206 | int _xmax, unsigned int _v, unsigned int _h) );
|
---|
| 207 | _PROTOTYPE( void wclear, (WINDOW *_win) );
|
---|
| 208 | _PROTOTYPE( int wclrtobot, (WINDOW *_win) );
|
---|
| 209 | _PROTOTYPE( int wclrtoeol, (WINDOW *_win) );
|
---|
| 210 | _PROTOTYPE( int wdelch, (WINDOW *_win) );
|
---|
| 211 | _PROTOTYPE( int wdeleteln, (WINDOW *_win) );
|
---|
| 212 | _PROTOTYPE( void werase, (WINDOW *_win) );
|
---|
| 213 | _PROTOTYPE( int wgetch, (WINDOW *_win) );
|
---|
| 214 | _PROTOTYPE( int wgetstr, (WINDOW *_win, char *_str) );
|
---|
| 215 | _PROTOTYPE( int winch, (WINDOW *_win) );
|
---|
| 216 | _PROTOTYPE( int winsch, (WINDOW *_win, int _c) );
|
---|
| 217 | _PROTOTYPE( int winsertln, (WINDOW *_win) );
|
---|
| 218 | _PROTOTYPE( int wmove, (WINDOW *_win, int _y, int _x) );
|
---|
| 219 | _PROTOTYPE( void wnoutrefresh, (WINDOW *_win) );
|
---|
| 220 | _PROTOTYPE( int wprintw, (WINDOW *_win, const char *_fmt, ...));
|
---|
| 221 | _PROTOTYPE( void wrefresh, (WINDOW *_win) );
|
---|
| 222 | _PROTOTYPE( int wscanw, (WINDOW *_win, const char *_fmt, ...));
|
---|
| 223 | _PROTOTYPE( int wsetscrreg, (WINDOW *_win, int _top, int _bottom) );
|
---|
| 224 | _PROTOTYPE( int wtabsize, (WINDOW *_win, int _ts) );
|
---|
| 225 |
|
---|
| 226 | #endif /* _CURSES_H */
|
---|