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