/* * * Author : Simon J Raybould. (sie@fulcrum.bt.co.uk). * * Date : 8th April 1990. * * Desc : Header file for my AMIGA CURSES package. * This should be included instead of stdio.h, this will * stdio.h for you. * This file is Public Domain but please leave the name * of the author intact. * */ #ifndef stdin /* May be a better way to do this !! */ #include #endif /* stdin */ #define LINES (24) #define COLS (80) #ifndef TRUE #define TRUE (1) #define FALSE (0) #endif /* TRUE */ #define ERR (-1) #define OK (0) /* * Macros */ #define addch(c) waddch(stdscr, (c)) #define addstr(str) waddstr(stdscr, (str)) #define attrset(attr) wattrset(stdscr, (attr)) #define attron(attr) wattron(stdscr, (attr)) #define attroff(attr) wattroff(stdscr, (attr)) #define clear() wclear(stdscr) #define clrtoeol() wclrtoeol(stdscr) #define clrtobot() wclrtobot(stdscr) #define delch() wdelch(stdscr) #define deleteln() wdeleteln(stdscr) #define erase() werase(stdscr) #define inch() winch(stdscr) #define insch(c) winsch(stdscr, (c)) #define insertln() winsertln(stdscr) #define getch() wgetch(stdscr) #define getstr(ptr) wgetstr(stdscr, (ptr)) #define getyx(window, y, x) ((y) = window->_cury+window->_begy, \ (x) = window->_curx + window->_begx) #define move(line, col) wmove(stdscr, (line), (col)) #define mvdelch(y, x) (move((y), (x)), delch()) #define mvwdelch(win, y, x) (wmove((win),(y),(x)),wdelch((win))) #define mvgetch(y, x) (move((y), (x)), getch()) #define mvwgetch(win, y, x) (wmove((win),(y),(x)),wgetch((win))) #define mvgetstr(y, x, ptr) (move((y), (x)), getstr((ptr))) #define mvwgetstr(win, y, x, ptr) (wmove((win), (y), (x)), \ wgetstr((win), (ptr))) #define mvinsch(y, x, c) (move((y), (x)), insch((c))) #define mvwinsch(win, y, x, c) (wmove((win), (y), (x)), \ winsch((win), (c))) #define mvinch(y, x) (move((y), (x)), inch()) #define mvwinch(win, y, x) (wmove((win), (y), (x)),winch((win))) #define mvaddch(y, x, c) (move((y), (x)), addch((c))) #define mvwaddch(win, y, x, c) (wmove((win), (y), (x)), \ waddch((win), (c))) #define mvaddstr(y, x, str) (move((y), (x)), addstr((str))) #define mvwaddstr(win, y, x, str) (wmove((win), (y), (x)), \ waddstr((win), (str))) #define refresh() wrefresh(stdscr) #define setscrreg(top, bottom) wsetscrreg(stdscr, (top), (bottom)) #define standend() wstandend(stdscr) #define standout() wstandout(stdscr) /* * NON STANDARD MACROS */ #define pencolour(n) wpencolour(stdscr, (n)) /* * Colours */ #define COLOR_BLACK 0 /* Black */ #define COLOR_WHITE 1 /* White */ #define COLOR_YELLOW 2 /* Background Blue */ #define COLOR_ORANGE 3 /* Orange */ #define COLOR_BLUE 4 /* Blue */ #define COLOR_MAGENTA 5 /* Magenta */ #define COLOR_CYAN 6 /* Cyan */ #define COLOR_PWHITE 7 /* Paper White */ #define COLOR_BROWN 8 /* Brown */ #define COLOR_RED 9 /* Red */ #define COLOR_LGREEN 10 /* Light Green */ #define COLOR_TAN 11 /* Well err Tan really */ #define COLOR_BBLUE 12 /* Different to BLUE */ #define COLOR_PURPLE 13 /* Pomegranate colour */ #define COLOR_GREEN 14 /* The Bla Bla Bla of home e.t.c. */ #define COLOR_GREY 15 /* Dead giveaway that one */ /* * Video Attributes. */ #define A_NORMAL 0000000 #define A_STANDOUT 0000200 #define _STANDOUT A_STANDOUT /* for compatibility with old curses */ #define A_UNDERLINE 0000400 #define A_REVERSE 0001000 #define A_BLINK 0002000 #define A_DIM 0004000 #define A_BOLD 0010000 #define A_ATTRIBUTES 0377600 #define A_CHARTEXT 0000177 # define bool char # define reg register /* * chtype is the type used to store a character together with attributes. * It can be set to "char" to save space, or "long" to get more attributes. */ typedef unsigned short chtype; struct _win_st { short _cury, _curx; short _maxy, _maxx; short _begy, _begx; short _flags; chtype _attrs; bool _clear; /* T=clear on every refresh set by clearok() */ bool _cls; /* T=clear on next refresh set by clear() */ bool _leave; bool _scroll; bool _use_idl; bool _use_keypad; /* 0=no, 1=yes, 2=yes/timeout */ bool _use_meta; /* T=use the meta key */ bool _nodelay; /* T=don't wait for tty input */ chtype **_y; short *_firstch; short *_lastch; short _tmarg,_bmarg; }; typedef struct _win_st WINDOW; extern WINDOW *stdscr, *curscr; /* Funny "characters" enabled for various special function keys for input */ #define KEY_BREAK 0401 /* break key (unreliable) */ #define KEY_DOWN 0402 /* The four arrow keys ... */ #define KEY_UP 0403 #define KEY_LEFT 0404 #define KEY_RIGHT 0405 /* ... */ #define KEY_HOME 0406 /* Home key (upward+left arrow) */ #define KEY_BACKSPACE 0407 /* backspace (unreliable) */ #define KEY_F0 0410 /* Function keys. Space for 64 */ #define KEY_F(n) (KEY_F0+(n)) /* keys is reserved. */ #define KEY_DL 0510 /* Delete line */ #define KEY_IL 0511 /* Insert line */ #define KEY_DC 0512 /* Delete character */ #define KEY_IC 0513 /* Insert char or enter insert mode */ #define KEY_EIC 0514 /* Exit insert char mode */ #define KEY_CLEAR 0515 /* Clear screen */ #define KEY_EOS 0516 /* Clear to end of screen */ #define KEY_EOL 0517 /* Clear to end of line */ #define KEY_SF 0520 /* Scroll 1 line forward */ #define KEY_SR 0521 /* Scroll 1 line backwards (reverse) */ #define KEY_NPAGE 0522 /* Next page */ #define KEY_PPAGE 0523 /* Previous page */ #define KEY_STAB 0524 /* Set tab */ #define KEY_CTAB 0525 /* Clear tab */ #define KEY_CATAB 0526 /* Clear all tabs */ #define KEY_ENTER 0527 /* Enter or send (unreliable) */ #define KEY_SRESET 0530 /* soft (partial) reset (unreliable) */ #define KEY_RESET 0531 /* reset or hard reset (unreliable) */ #define KEY_PRINT 0532 /* print or copy */ #define KEY_LL 0533 /* home down or bottom (lower left) */ /* The keypad is arranged like this: */ /* a1 up a3 */ /* left b2 right */ /* c1 down c3 */ #define KEY_A1 0534 /* upper left of keypad */ #define KEY_A3 0535 /* upper right of keypad */ #define KEY_B2 0536 /* center of keypad */ #define KEY_C1 0537 /* lower left of keypad */ #define KEY_C3 0540 /* lower right of keypad */ #define KEY_HELP 0553 /* Help Key */ WINDOW *newwin(), *subwin(), *newpad();