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