home *** CD-ROM | disk | FTP | other *** search
/ Computer Club Elmshorn Atari PD / CCE_PD.iso / pc / 0600 / CCE_0636.ZIP / CCE_0636 / CURSES / CRSSRC12.ZOO / src / curses.h < prev    next >
C/C++ Source or Header  |  1991-09-27  |  9KB  |  295 lines

  1. /*
  2.  * Copyright (c) 1981 Regents of the University of California.
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms are permitted
  6.  * provided that the above copyright notice and this paragraph are
  7.  * duplicated in all such forms and that any documentation,
  8.  * advertising materials, and other materials related to such
  9.  * distribution and use acknowledge that the software was developed
  10.  * by the University of California, Berkeley.  The name of the
  11.  * University may not be used to endorse or promote products derived
  12.  * from this software without specific prior written permission.
  13.  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  14.  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  15.  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  16.  *
  17.  *    @(#)curses.h    5.4 (Berkeley) 6/30/88
  18.  */
  19.  
  20. # ifndef WINDOW
  21.  
  22. # include    <stdio.h>
  23. # include    <sgtty.h>
  24. # include    <string.h>
  25.  
  26. #ifdef atarist
  27. #  include <memory.h>
  28. #endif
  29.  
  30. #ifndef _COMPILER_H
  31. #  include <compiler.h>
  32. #endif
  33.  
  34. #ifdef __STDC__
  35. #include <stddef.h>
  36. #endif
  37.  
  38. #include <termcap.h>
  39.  
  40. #if defined(__cplusplus)
  41. extern "C" {
  42. #endif
  43.  
  44.  
  45. # define    bool    char
  46. # define    reg    register
  47.  
  48. # define    TRUE    (1)
  49. # define    FALSE    (0)
  50. # define    ERR    (0)
  51. # define    OK    (1)
  52.  
  53. # define    _ENDLINE    001
  54. # define    _FULLWIN    002
  55. # define    _SCROLLWIN    004
  56. # define    _FLUSH        010
  57. # define    _FULLLINE    020
  58. # define    _IDLINE        040
  59. # define    _STANDOUT    0200
  60. # define    _NOCHANGE    -1
  61.  
  62. #ifndef DEBUG
  63. #define _putchar    fputc
  64. #else
  65. #define _fputchar    _putchar
  66. #endif
  67.  
  68. # define    _puts(s)    tputs(s, 0, _fputchar)
  69.  
  70. typedef    struct sgttyb    SGTTY;
  71.  
  72. /*
  73.  * Capabilities from termcap
  74.  */
  75.  
  76. #ifdef HZ
  77. #  undef HZ    /* in case they included sys/param.h */
  78. #endif
  79.  
  80. extern bool     AM, BS, CA, DA, DB, EO, HC, HZ, IN, MI, MS, NC, NS, OS, UL,
  81.         XB, XN, XT, XS, XX;
  82. extern char    *AL, *BC, *BT, *CD, *CE, *CL, *CM, *CR, *CS, *DC, *DL,
  83.         *DM, *DO, *ED, *EI, *K0, *K1, *K2, *K3, *K4, *K5, *K6,
  84.         *K7, *K8, *K9, *HO, *IC, *IM, *IP, *KD, *KE, *KH, *KL,
  85.         *KR, *KS, *KU, *LL, *MA, *ND, *NL, *RC, *SC, *SE, *SF,
  86.         *SO, *SR, *TA, *TE, *TI, *UC, *UE, *UP, *US, *VB, *VS,
  87.         *VE, *AL_PARM, *DL_PARM, *UP_PARM, *DOWN_PARM,
  88.         *LEFT_PARM, *RIGHT_PARM;
  89. extern char    PC;
  90.  
  91. /*
  92.  * From the tty modes...
  93.  */
  94.  
  95. extern bool    GT, NONL, UPPERCASE, normtty, _pfast;
  96.  
  97. struct _win_st {
  98.     short        _cury, _curx;
  99.     short        _maxy, _maxx;
  100.     short        _begy, _begx;
  101.     short        _flags;
  102.     short        _ch_off;
  103.     bool        _clear;
  104.     bool        _leave;
  105.     bool        _scroll;
  106.     char        **_y;
  107.     short        *_firstch;
  108.     short        *_lastch;
  109.     struct _win_st    *_nextp, *_orig;
  110. };
  111.  
  112. # define    WINDOW    struct _win_st
  113.  
  114. extern bool    My_term, _echoit, _rawmode, _endwin;
  115.  
  116. extern char    *Def_term, ttytype[];
  117.  
  118. extern int    LINES, COLS, _tty_ch, _res_flg;
  119.  
  120. extern SGTTY    _tty;
  121.  
  122. extern WINDOW    *stdscr, *curscr;
  123.  
  124. /*
  125.  *    Define VOID to stop lint from generating "null effect"
  126.  * comments.
  127.  */
  128. # ifdef lint
  129. int    __void__;
  130. # define    VOID(x)    (__void__ = (int) (x))
  131. # else
  132. # define    VOID(x)    (x)
  133. # endif
  134.  
  135. /*
  136.  * psuedo functions for standard screen
  137.  */
  138. # define    addch(ch)    VOID(waddch(stdscr, ch))
  139. # define    getch()        VOID(wgetch(stdscr))
  140. # define    addbytes(da,co)    VOID(waddbytes(stdscr, da,co))
  141. # define    addstr(str)    VOID(waddbytes(stdscr, str, (int)strlen(str)))
  142. # define    getstr(str)    VOID(wgetstr(stdscr, str))
  143. # define    move(y, x)    VOID(wmove(stdscr, y, x))
  144. # define    clear()        VOID(wclear(stdscr))
  145. # define    erase()        VOID(werase(stdscr))
  146. # define    clrtobot()    VOID(wclrtobot(stdscr))
  147. # define    clrtoeol()    VOID(wclrtoeol(stdscr))
  148. # define    insertln()    VOID(winsertln(stdscr))
  149. # define    deleteln()    VOID(wdeleteln(stdscr))
  150. # define    refresh()    VOID(wrefresh(stdscr))
  151. # define    inch()        VOID(winch(stdscr))
  152. # define    insch(c)    VOID(winsch(stdscr,c))
  153. # define    delch()        VOID(wdelch(stdscr))
  154. # define    standout()    VOID(wstandout(stdscr))
  155. # define    standend()    VOID(wstandend(stdscr))
  156.  
  157. /*
  158.  * mv functions
  159.  */
  160. #define    mvwaddch(win,y,x,ch)    VOID(wmove(win,y,x)==ERR?ERR:waddch(win,ch))
  161. #define    mvwgetch(win,y,x)    VOID(wmove(win,y,x)==ERR?ERR:wgetch(win))
  162. #define    mvwaddbytes(win,y,x,da,co) \
  163.         VOID(wmove(win,y,x)==ERR?ERR:waddbytes(win,da,co))
  164. #define    mvwaddstr(win,y,x,str) \
  165.         VOID(wmove(win,y,x)==ERR?ERR:waddbytes(win,str,(int)strlen(str)))
  166. #define mvwgetstr(win,y,x,str)  VOID(wmove(win,y,x)==ERR?ERR:wgetstr(win,str))
  167. #define    mvwinch(win,y,x)    VOID(wmove(win,y,x) == ERR ? ERR : winch(win))
  168. #define    mvwdelch(win,y,x)    VOID(wmove(win,y,x) == ERR ? ERR : wdelch(win))
  169. #define    mvwinsch(win,y,x,c)    VOID(wmove(win,y,x) == ERR ? ERR:winsch(win,c))
  170. #define    mvaddch(y,x,ch)        mvwaddch(stdscr,y,x,ch)
  171. #define    mvgetch(y,x)        mvwgetch(stdscr,y,x)
  172. #define    mvaddbytes(y,x,da,co)    mvwaddbytes(stdscr,y,x,da,co)
  173. #define    mvaddstr(y,x,str)    mvwaddstr(stdscr,y,x,str)
  174. #define mvgetstr(y,x,str)       mvwgetstr(stdscr,y,x,str)
  175. #define    mvinch(y,x)        mvwinch(stdscr,y,x)
  176. #define    mvdelch(y,x)        mvwdelch(stdscr,y,x)
  177. #define    mvinsch(y,x,c)        mvwinsch(stdscr,y,x,c)
  178.  
  179. /*
  180.  * psuedo functions
  181.  */
  182.  
  183. #define    clearok(win,bf)     (win->_clear = bf)
  184. #define    leaveok(win,bf)     (win->_leave = bf)
  185. #define    scrollok(win,bf) (win->_scroll = bf)
  186. #define flushok(win,bf)     (bf ? (win->_flags |= _FLUSH):(win->_flags &= ~_FLUSH))
  187. #define    getyx(win,y,x)     y = win->_cury, x = win->_curx
  188. #define    winch(win)     (win->_y[win->_cury][win->_curx] & 0177)
  189.  
  190. #define raw()     (_tty.sg_flags|=RAW, _pfast=_rawmode=TRUE, stty(_tty_ch,&_tty))
  191. #define noraw()     (_tty.sg_flags&=~RAW,_rawmode=FALSE,_pfast=!(_tty.sg_flags&CRMOD),stty(_tty_ch,&_tty))
  192. #define cbreak() (_tty.sg_flags |= CBREAK, _rawmode = TRUE, stty(_tty_ch,&_tty))
  193. #define nocbreak() (_tty.sg_flags &= ~CBREAK,_rawmode=FALSE,stty(_tty_ch,&_tty))
  194. #define crmode() cbreak()    /* backwards compatability */
  195. #define nocrmode() nocbreak()    /* backwards compatability */
  196. #define echo()     (_tty.sg_flags |= ECHO, _echoit = TRUE, stty(_tty_ch, &_tty))
  197. #define noecho() (_tty.sg_flags &= ~ECHO, _echoit = FALSE, stty(_tty_ch, &_tty))
  198. #define nl()     (_tty.sg_flags |= CRMOD,_pfast = _rawmode,stty(_tty_ch, &_tty))
  199. #define nonl()     (_tty.sg_flags &= ~CRMOD, _pfast = TRUE, stty(_tty_ch, &_tty))
  200. #define    savetty() ((void) gtty(_tty_ch, &_tty), _res_flg = _tty.sg_flags)
  201. #define    resetty() (_tty.sg_flags = _res_flg, (void) stty(_tty_ch, &_tty))
  202.  
  203. #define    erasechar()    (_tty.sg_erase)
  204. #define    killchar()    (_tty.sg_kill)
  205. #define baudrate()    (_tty.sg_ospeed)
  206.  
  207. __EXTERN int        waddbytes __PROTO((WINDOW *, char *, int));
  208. __EXTERN void        _id_subwins __PROTO((WINDOW *));
  209. __EXTERN void        _set_subwin_ __PROTO((WINDOW *, WINDOW *));
  210. __EXTERN int         _sprintw __PROTO((WINDOW *, char *, char *));
  211. __EXTERN int         _sscans __PROTO((WINDOW *, char *, ...));
  212. __EXTERN void        _swflags_ __PROTO((WINDOW *));
  213.  
  214. __EXTERN void        box __PROTO((WINDOW *, int, int));
  215.  
  216. __EXTERN void        delwin __PROTO((WINDOW *));
  217.  
  218. __EXTERN void        endwin __PROTO((void));
  219.  
  220. __EXTERN void        fgoto __PROTO((void));
  221. __EXTERN char *        fullname __PROTO((char *, char *));
  222.  
  223. __EXTERN char *        getcap __PROTO((char *));
  224. __EXTERN void        gettmode __PROTO((void));
  225.  
  226. __EXTERN void        idlok __PROTO((WINDOW *, int));
  227. __EXTERN WINDOW *    initscr __PROTO((void));
  228.  
  229. __EXTERN char *        longname __PROTO((char *, char *));
  230.  
  231. __EXTERN void        mvcur __PROTO((int, int, int, int));
  232.  
  233. __EXTERN int        mvprintw __PROTO((int, int, char *, ...));
  234. __EXTERN int         mvwprintw __PROTO((WINDOW *, int, int, char *, ...));
  235. __EXTERN int        mvscanw __PROTO((int, int, char *, ...));
  236. __EXTERN int        mvwscanw __PROTO((WINDOW *, int, int, char *, ...));
  237.  
  238. __EXTERN int        mvwin __PROTO((WINDOW *, int, int));
  239.  
  240. __EXTERN WINDOW *    newwin __PROTO((int, int, int, int));
  241.  
  242. __EXTERN void        overlay __PROTO((WINDOW *, WINDOW *));
  243. __EXTERN void        overwrite __PROTO((WINDOW *, WINDOW *));
  244.  
  245. __EXTERN int        printw __PROTO((char *, ...));
  246.  
  247. __EXTERN int        scanw __PROTO((char *, ...));
  248. __EXTERN int        scroll __PROTO((WINDOW *));
  249. __EXTERN int        setterm __PROTO((char *));
  250. __EXTERN WINDOW *    subwin __PROTO((WINDOW *, int, int, int, int));
  251.  
  252. __EXTERN int        tabcol __PROTO((int, int));
  253. __EXTERN void        touchline __PROTO((WINDOW *, int, int, int));
  254. __EXTERN void        touchoverlap __PROTO((WINDOW *, WINDOW *));
  255. __EXTERN void        touchwin __PROTO((WINDOW *));
  256. __EXTERN void        tstp __PROTO((void));
  257.  
  258. __EXTERN int        waddch __PROTO((WINDOW *, int));
  259. __EXTERN int        waddstr __PROTO((WINDOW *, char *));
  260. __EXTERN int        wclear __PROTO((WINDOW *));
  261. __EXTERN void        wclrtobot __PROTO((WINDOW *));
  262. __EXTERN void        wclrtoeol __PROTO((WINDOW *));
  263. __EXTERN int        wdelch __PROTO((WINDOW *));
  264. __EXTERN int        wdeleteln __PROTO((WINDOW *));
  265. __EXTERN void        werase __PROTO((WINDOW *));
  266. __EXTERN int        wgetch __PROTO((WINDOW *));
  267. __EXTERN int        wgetstr __PROTO((WINDOW *, char *));
  268. __EXTERN int        winsch __PROTO((WINDOW *, int));
  269. __EXTERN void        winsertln __PROTO((WINDOW *));
  270. __EXTERN int        wmove __PROTO((WINDOW *, int, int));
  271.  
  272. __EXTERN int        wprintw __PROTO((WINDOW *, char *, ...));
  273. __EXTERN int        wrefresh __PROTO((WINDOW *));
  274. __EXTERN int        wscanw __PROTO((WINDOW *, char *, ...));
  275. __EXTERN char *        wstandend __PROTO((WINDOW *));
  276. __EXTERN char *        wstandout __PROTO((WINDOW *));
  277.  
  278. __EXTERN void        zap __PROTO((void));
  279.  
  280. /*
  281.  * Used to be in unctrl.h.
  282.  */
  283. #if 0
  284. #define    unctrl(c)    _unctrl[(c) & 0177]
  285. extern char *_unctrl[];
  286. #else
  287. __EXTERN char *unctrl __PROTO((int c));
  288. #endif
  289.  
  290. #if defined(__cplusplus)
  291. }
  292. #endif
  293.  
  294. # endif
  295.