home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 2 / goldfish_vol2_cd1.bin / files / dev / c / curses / curses.h < prev    next >
C/C++ Source or Header  |  1994-02-21  |  10KB  |  314 lines

  1. /*
  2.  *
  3.  *    Author  : Simon J Raybould.    (sie@fulcrum.bt.co.uk).
  4.  *
  5.  *    Date    : 16th Feb 1990
  6.  *
  7.  *    Desc    : Header file for my AMIGA CURSES package.
  8.  *              This should be included instead of stdio.h, this will
  9.  *              include stdio.h for you.
  10.  *
  11.  *
  12.  *
  13.  * THIS CODE IS COPYRIGHT S.J.R 1991, ALL RIGHTS ARE RESERVED.
  14.  *
  15.  * THIS SOURCE IS NOT PUBLIC DOMAIN, BUT IS FREELY DISTRIBUTABLE AS
  16.  *                LONG AS IT REMAINS UNALTERED.
  17.  *
  18.  * NO IMPLICATION IS MADE AS TO IT BEING FIT FOR ANY PURPOSE AT ALL
  19.  * I SHALL NOT BE HELD RESPONSIBLE FOR ANY LOSS OF PROPERTY OR DAMAGE
  20.  * THAT MAY RESULT FROM ITS USE.
  21.  *
  22.  *
  23.  * $Log: curses.h,v $
  24.  * Revision 1.13  1993/05/17  23:33:10  sie
  25.  * Underscores added to names.
  26.  * Changes for version 2.10
  27.  *
  28.  * Revision 1.12  1992/12/25  22:18:08  sie
  29.  * GNU port
  30.  *
  31.  * Revision 1.11  92/06/20  10:58:39  sie
  32.  * Removed CreatWindow prototype.
  33.  * 
  34.  * Revision 1.10  92/06/20  10:55:57  sie
  35.  * removed prototype for _setcursestype()
  36.  * 
  37.  * Revision 1.9  92/06/10  23:44:32  sie
  38.  * Added serial support.
  39.  * 
  40.  * Revision 1.8  92/01/25  23:52:19  sie
  41.  * defines for some more unsupported keys.
  42.  * 
  43.  * Revision 1.7  91/12/30  10:31:27  sie
  44.  * Removed LRLine and LRATTRS.
  45.  * The speed increase caused by them was too insignificant.
  46.  * 
  47.  * Revision 1.6  91/12/28  22:43:40  sie
  48.  * changed attrs to UBYTE from short + some tidying up.
  49.  * 
  50.  * Revision 1.5  91/12/28  14:03:02  sie
  51.  * Removed WinStat.
  52.  * Renamed LineElement as lnel.
  53.  * 
  54.  * Revision 1.4  91/12/27  10:01:32  sie
  55.  * Added some more key defines.
  56.  * 
  57.  * Revision 1.3  91/09/07  11:54:52  sie
  58.  * V2.00 curses library.
  59.  * 
  60.  * Revision 1.2  91/08/23  21:38:21  sie
  61.  * Port to GNU C.
  62.  * 
  63.  * Revision 1.1  91/02/05  21:19:07  sie
  64.  * Initial revision
  65.  * 
  66.  *
  67.  */
  68.  
  69. #ifndef CURSES_H
  70. #define CURSES_H
  71.  
  72. #ifndef stdin            /* May be a better way to do this !! */
  73. #include <stdio.h>
  74. #endif
  75.  
  76. #include <exec/types.h>        /* for prototypes & TRUE&FALSE */
  77.  
  78. #define ERR      -1
  79. #define OK        0
  80.  
  81.  
  82. /*
  83.  *    Macros
  84.  */
  85.  
  86. #define addch(c)                   waddch(stdscr, (c))
  87. #define addstr(str)                waddstr(stdscr, (str))
  88. #define attrset(attr)              wattrset(stdscr, (attr))
  89. #define attron(attr)               wattron(stdscr, (attr))
  90. #define attroff(attr)              wattroff(stdscr, (attr))
  91. #define clear()                    wclear(stdscr)
  92. #define clrtoeol()                 wclrtoeol(stdscr)
  93. #define clrtobot()                 wclrtobot(stdscr)
  94. #define crmode()                   cbreak()
  95. #define delch()                    wdelch(stdscr)
  96. #define deleteln()                 wdeleteln(stdscr)
  97. #define erase()                    werase(stdscr)
  98. #define inch()                     winch(stdscr)
  99. #define insch(c)                   winsch(stdscr, (c))
  100. #define insertln()                 winsertln(stdscr)
  101. #define getch()                    wgetch(stdscr)
  102. #define getstr(ptr)                wgetstr(stdscr, (ptr))
  103. #define getyx(win,y,x)             ((y) = (win)->_cury, (x) = (win)->_curx)
  104. #define move(line, col)            wmove(stdscr, (line), (col))
  105. #define mvdelch(y, x)              (move((y), (x)), delch())
  106. #define mvwdelch(win, y, x)        (wmove((win),(y),(x)),wdelch((win)))
  107. #define mvgetch(y, x)              (move((y), (x)), getch())
  108. #define mvwgetch(win, y, x)        (wmove((win),(y),(x)),wgetch((win)))
  109. #define mvgetstr(y, x, ptr)        (move((y), (x)), getstr((ptr)))
  110. #define mvwgetstr(win, y, x, ptr)  (wmove((win), (y), (x)), \
  111.                                      wgetstr((win), (ptr)))
  112. #define mvinsch(y, x, c)           (move((y), (x)), insch((c)))
  113. #define mvwinsch(win, y, x, c)     (wmove((win), (y), (x)), \
  114.                                      winsch((win), (c)))
  115. #define mvinch(y, x)               (move((y), (x)), inch())
  116. #define mvwinch(win, y, x)         (wmove((win), (y), (x)),winch((win)))
  117. #define mvaddch(y, x, c)           (move((y), (x)), addch((c)))
  118. #define mvwaddch(win, y, x, c)     (wmove((win), (y), (x)), \
  119.                                      waddch((win), (c)))
  120. #define mvaddstr(y, x, str)        (move((y), (x)), addstr((str)))
  121. #define mvwaddstr(win, y, x, str)  (wmove((win), (y), (x)), \
  122.                                      waddstr((win), (str)))
  123.  
  124. #define nocrmode()                 nocbreak()
  125. #define noraw()                    nocbreak()
  126. #define raw()                      cbreak()
  127. #define refresh()                  wrefresh(stdscr)
  128. #define noutrefresh()              wnoutrefresh(stdscr)
  129. #define setscrreg(top, bottom)     wsetscrreg(stdscr, (top), (bottom))
  130. #define standend()                 wstandend(stdscr)
  131. #define standout()                 wstandout(stdscr)
  132.  
  133. /*
  134.  *    NON STANDARD MACROS
  135.  */
  136.  
  137. #define pencolour(n)    wpencolour(stdscr, (n))
  138.  
  139. /*
  140.  *    Colours
  141.  */
  142.  
  143. #define COLOR_BLACK     0
  144. #define COLOR_WHITE     1
  145. #define COLOR_YELLOW    2
  146. #define COLOR_BLUE      3
  147. #define COLOR_MAGENTA   4
  148. #define COLOR_CYAN      5
  149. #define COLOR_RED       6
  150. #define COLOR_GREEN     7
  151.  
  152.  
  153. /*
  154.  *    Video Attributes.
  155.  */
  156.  
  157. #define A_NORMAL      0000
  158. #define A_STANDOUT    0010
  159. #define A_UNDERLINE   0020
  160. #define A_BOLD        0040
  161.  
  162. #define A_REVERSE     A_STANDOUT
  163. #define A_BLINK       A_NORMAL    /* NOT SUPPORTED */
  164. #define A_DIM         A_NORMAL    /* NOT SUPPORTED */
  165. #define _STANDOUT     A_STANDOUT /* for compatibility with old curses */
  166.  
  167. #define A_CLRPART     0007
  168. #define A_ATRPART     0770
  169.  
  170. #define bool    char
  171. #define reg     register
  172.  
  173. struct _win_st {
  174.   UBYTE _cury, _curx;
  175.   UBYTE _maxy, _maxx;
  176.   UBYTE _begy, _begx;
  177.   UBYTE _flags;
  178.   UBYTE _attrs;
  179.   bool _clear;            /* T=clear on next refresh */
  180.   bool _scroll;
  181.   bool _nodelay;        /* T=don't wait for tty input */
  182.   struct _win_st *ParentWin;
  183.   UBYTE ScrollTop;
  184.   UBYTE ScrollBot;
  185.   struct lnel {
  186.     bool Touched;        /* This line needs refreshing */
  187.     char *Line;            /* Actual text */
  188.     UBYTE *ATTRS;        /* Attributes */
  189.     UBYTE StartCol;
  190.     UBYTE EndCol;
  191.   } *LnArry;
  192.   UBYTE NLines;
  193. };
  194.  
  195. typedef struct _win_st  WINDOW;
  196. extern WINDOW *stdscr, *curscr;
  197. extern int LINES, COLS, DEPTH;
  198.  
  199.  
  200. /*
  201.  * Special keys.
  202.  */
  203.  
  204. #define KEY_BACKSPACE   0010    /* backspace */
  205. #define KEY_DC          0177    /* Delete character */
  206. #define KEY_DOWN        0400    /* The down arrow key */
  207. #define KEY_UP          0401    /* The up arrow key */
  208. #define KEY_LEFT        0402    /* The left arrow key */
  209. #define KEY_RIGHT       0403    /* The right arrow key */
  210. #define KEY_HELP        0404    /* Help Key */
  211. #define KEY_F0          0405    /* Function keys */
  212. #define KEY_F(n)        (KEY_F0+(n))
  213.  
  214. /*
  215.  * Keys not on Amiga keyboard
  216.  */
  217. #define KEY_IL        0501    /* Not supported */
  218. #define KEY_DL        0502    /* Not supported */
  219. #define KEY_CLEAR    0503    /* Not supported */
  220. #define KEY_IC        0504    /* Not supported */
  221. #define KEY_EIC        0505    /* Not supported */
  222. #define KEY_HOME    0506    /* Not supported */
  223. #define KEY_B2        0507    /* Not supported */
  224. #define KEY_NPAGE    0510    /* Not supported */
  225. #define KEY_PPAGE    0511    /* Not supported */
  226. #define KEY_UNDO    0512    /* Not supported */
  227.  
  228. /*
  229.  * Prototypes.
  230.  */
  231.  
  232. int initscr(void);
  233. int endwin(void);
  234. int init_color(WORD n, UWORD r, UWORD g, UWORD b);
  235. int start_color(void);
  236. int has_colors(void);
  237. int waddstr(WINDOW *WinPtr, char *Str);
  238. int waddch(WINDOW *WinPtr, char c);
  239. int winsch(WINDOW *WinPtr, char c);
  240. int wdelch(WINDOW *WinPtr);
  241. int wclear(WINDOW *WinPtr);
  242. int werase(WINDOW *WinPtr);
  243. int clearok(WINDOW *WinPtr, int flag);
  244. int wclrtoeol(WINDOW *WinPtr);
  245. int wclrtobot(WINDOW *WinPtr);
  246. int flushinp(void);
  247. int wgetch(WINDOW *WinPtr);
  248. int wgetstr(WINDOW *WinPtr, char *ptr);
  249. int winch(WINDOW *WinPtr);
  250. int wmove(WINDOW *WinPtr, short Line, short Col);
  251. int mvcur(int CurLine, int CurCol, int NewLine, int NewCol);
  252. int printw(char *fmt, ...);
  253. int wprintw(WINDOW *WinPtr, char *fmt, ...);
  254. int mvprintw(short Line, short Col, char *fmt, ...);
  255. int mvwprintw(WINDOW *WinPtr, short Line, short Col, char *fmt, ...);
  256. int wrefresh(WINDOW *WinPtr);
  257. #ifndef NO_SCAN_PROTOS
  258. int scanw(char *fmt, ...);
  259. int wscanw(WINDOW *WinPtr, char *fmt, ...);
  260. int mvscanw(short Line, short Col, char *fmt, ...);
  261. int mvwscanw(WINDOW *WinPtr, short Line, short Col, char *fmt, ...);
  262. #endif /* ndef NO_SCAN_PROTOS */
  263. int wstandout(WINDOW *WinPtr);
  264. int wstandend(WINDOW *WinPtr);
  265. int wattrset(WINDOW *WinPtr, UBYTE attr);
  266. int wattron(WINDOW *WinPtr, UBYTE attr);
  267. int wattroff(WINDOW *WinPtr, UBYTE attr);
  268. int cbreak(void);
  269. int nocbreak(void);
  270. int idlok(WINDOW *WinPtr, int flag);
  271. int winsertln(WINDOW *WinPtr);
  272. int wdeleteln(WINDOW *WinPtr);
  273. int nodelay(WINDOW *WinPtr, int flag);
  274. int echo(void);
  275. int noecho(void);
  276. int keypad(WINDOW *WinPtr, char flag);
  277. int beep(void);
  278. int flash(void);
  279. int leaveok(WINDOW *WinPtr, int flag);
  280. int resetty(void);
  281. int savetty(void);
  282. int resetterm(void);
  283. int fixterm(void);
  284. int saveterm(void);
  285. int baudrate(void);
  286. int nl(void);
  287. int nonl(void);
  288. int box(WINDOW *WinPtr, char vert, char hor);
  289. WINDOW *subwin(WINDOW *Orig,
  290.            unsigned int NLines,
  291.            unsigned int NCols,
  292.                unsigned int StartLine,
  293.                unsigned int StartCol);
  294. WINDOW *newwin(unsigned int NLines,
  295.                unsigned int NCols,
  296.                unsigned int StartLine,
  297.                unsigned int StartCol);
  298. int touchwin(WINDOW *WinPtr);
  299. int delwin(WINDOW *WinPtr);
  300. int mvwin(WINDOW *WinPtr, short NewLine, short NewCol);
  301. int scroll(WINDOW *WinPtr);
  302. int wsetscrreg(WINDOW *WinPtr, short top, short bottom);
  303. int scrollok(WINDOW *WinPtr, int flag);
  304. int wnoutrefresh(WINDOW *WinPtr);
  305. int doupdate(void);
  306. int tgetent(char * , char * );
  307. char * tgetstr(char * , char ** );
  308. int tputs(char * , int , int (* )(char ));
  309. char * tgoto(char * , int , int );
  310. int tgetnum(char * );
  311. int tgetflag(char * );
  312.  
  313. #endif /* CURSES_H */
  314.