Category : C++ Source Code
Archive   : CURSESP.ZIP
Filename : CURSES.H

 
Output of file : CURSES.H contained in archive : CURSESP.ZIP
/****************************************************************/
/* CURSES.H */
/* Header file for definitions and declarations for the */
/* PCcurses package. This should be #include'd in all user */
/* programs. */
/****************************************************************/
/* This version of curses is based on ncurses, a curses version */
/* originally written by Pavel Curtis at Cornell University. */
/* I have made substantial changes to make it run on IBM PC's, */
/* and therefore consider myself free to make it public domain. */
/* Bjorn Larsson (...mcvax!enea!infovax!bl) */
/****************************************************************/
/* 1.0: Release: 870515 */
/* 1.1: 'Raw' output routines, revision info in */
/* curses.h: 880306 */
/* 1.2: Rcsid[] string in all modules, for maintenance: 881002 */
/* 1.3: All modules lint-checked with MSC '-W3' and */
/* turbo'C' '-w -w-pro' switches. Support for */
/* border(), wborder() functions: 881005 */
/****************************************************************/

#include

// C++ compatible definition for external functions

#if defined(__BCPLUSPLUS__) || defined(TCPLUSPLUS) || defined(__CPLUSPLUS__)
#define _EXTERN extern "C"
#else
#define _EXTERN extern
#endif

// general definitions

#define TRUE 1 // booleans
#define FALSE 0
#define ERR 0 // general error flag
#define OK 1 // general OK flag

#define CURSES_RCS_ID "@(#)PCcurses v.1.3, 881005"

// functions defined as macros

#define getch() wgetch(stdscr) // using macroes allows you to use
#define ungetch(c) wungetch(c) // #undef getch/ungetch in your

// programs to use MSC getch() and
// ungetch() routines

#define getyx(win,y,x) (y = (win)->_cury, x = (win)->_curx)

#ifndef max
#define max(a,b) (((a) > (b)) ? (a) : (b))
#endif
#ifndef min
#define min(a,b) (((a) < (b)) ? (a) : (b))
#endif

// video attribute definitions. Colour definitions for
// CGA/EGA should also go here...

// We will have 2 leftmost bits for attributes. These attributes are
// not colour attributes. They are to be used with wattron(), wattroff()
// and wattrset() (do bit OR with colour attributes).

#define A_NORMAL 0x0000 // Binary 00
#define A_HIGH 0x4000 // 01 Do not go with BLINK
#define A_BLINK 0x8000 // 10 Do not go with HIGH
#define A_REVERSE 0xC000 // 11 Overide all others
#define A_STANDOUT A_REVERSE // 11 Same as REVERSE

// Just for the sake of UNIX Sys5 compatibility

#define A_UNDERLINE A_REVERSE
#define A_DIM A_NORMAL
#define A_BOLD A_HIGH
#define A_ALTCHARSET A_NORMAL
#define A_CHARTEXT 0x00ff
#define A_ATTRIBUTES 0xff00


// And we have the 3 bits for background colours + 3 bits for foreground
// colours. Altogether 8 bits for EGA/VGA colours. These are colour
// attributes (not characteristics). They cannot be used with wattron()
// until the previous colour attributes have been turned off by wattroff().
// However, wattrset() will always work.

#define F_BLACK 0x0000
#define F_BLUE 0x0100
#define F_GREEN 0x0200
#define F_CYAN 0x0300
#define F_RED 0x0400
#define F_MAGENTA 0x0500
#define F_BROWN 0x0600
#define F_GRAY 0x0700

#define B_BLACK 0x0000
#define B_BLUE 0x0800
#define B_GREEN 0x1000
#define B_CYAN 0x1800
#define B_RED 0x2000
#define B_MAGENTA 0x2800
#define B_BROWN 0x3000
#define B_GRAY 0x3800

// function and keypad key definitions. Many are just for compatibility

#define KEY_BREAK 0x101 // Not on PC
#define KEY_DOWN 0x102 // The four arrow keys
#define KEY_UP 0x103
#define KEY_LEFT 0x104
#define KEY_RIGHT 0x105
#define KEY_HOME 0x106 // Home key
#define KEY_BACKSPACE 0x107 // Not on PC
#define KEY_F0 0x108 // Function keys. Space for
#define KEY_F(n) (KEY_F0+(n)) // 64 keys is reserved.
#define KEY_DL 0x148 // Not on PC
#define KEY_IL 0x149 // Insert line
#define KEY_DC 0x14a // Delete character
#define KEY_IC 0x14b // Insert char or enter insert mode
#define KEY_EIC 0x14c // Exit insert char mode
#define KEY_CLEAR 0x14d // Clear screen
#define KEY_EOS 0x14e // Clear to end of screen
#define KEY_EOL 0x14f // Clear to end of line
#define KEY_SF 0x150 // Scroll 1 line forward
#define KEY_SR 0x151 // Scroll 1 line backwards (reverse)
#define KEY_NPAGE 0x152 // Next page
#define KEY_PPAGE 0x153 // Previous page
#define KEY_STAB 0x154 // Set tab
#define KEY_CTAB 0x155 // Clear tab
#define KEY_CATAB 0x156 // Clear all tabs
#define KEY_ENTER 0x157 // Enter or send (unreliable)
#define KEY_SRESET 0x158 // soft (partial) reset (unreliable)
#define KEY_RESET 0x159 // reset or hard reset (unreliable)
#define KEY_PRINT 0x15a // print or copy
#define KEY_LL 0x15b // home down or bottom (lower left)
#define KEY_ABORT 0x15c // Abort/Terminate key (any)
#define KEY_SHELP 0x15d // Short help
#define KEY_LHELP 0x15e // Long help

// type declarations

typedef char bool; // boolean type

typedef struct
{
int _cury; // Current pseudo-cursor
int _curx;
int _maxy; // Max coordinates
int _maxx;
int _begy; // Origin on screen
int _begx;
int _flags; // Window properties
int _attrs; // Attributes of written characters
int _tabsize; // Tab character size
bool _clear; // Causes clear at next refresh
bool _leave; // Leaves cursor as it happens
bool _scroll; // Allows window scrolling
bool _nodelay; // Input character wait flag
bool _keypad; // Flags keypad key mode active
int **_line; // Pointer to line pointer array
int *_minchng; // First changed character in line
int *_maxchng; // Last changed character in line
int _regtop; // Top of scrolling region
int _regbottom; // Bottom of scrolling region
char _borderchars[8]; // Non-std border chars
} WINDOW;

// For UNIX compatibility

#define COLS _COLS // These are expected in UNIX
#define LINES _LINES

// External variables

extern int _LINES; // terminal height
extern int _COLS; // terminal width
extern WINDOW *curscr; // the current screen image
extern WINDOW *stdscr; // the default screen window

// PCcurses function declarations

_EXTERN int addch(int); // put char in stdscr
_EXTERN int addrawch(int); // put char in stdscr, raw
_EXTERN int addstr(char*); // put string in stdscr
_EXTERN void attrset(int); // set stdscr char attributes
_EXTERN void attroff(int); // clear attribute(a) stdscr
_EXTERN void attron(int); // add attribute(s) stdscr
_EXTERN int baudrate(void); // compatibility dummy
_EXTERN void beep(void); // sound bell

// Set non-std box characters
_EXTERN void border(int,int,int,int,int,int,int,int);
_EXTERN void box(WINDOW*,int,int); // draw a box around a window
_EXTERN void cbreak(void); // set terminal cbreak mode
_EXTERN void clear(void); // clear stdscr
_EXTERN void clearok(WINDOW*,int); // marks a window for screen clear
_EXTERN int clrtobot(void); // clear end of stdscr
_EXTERN int clrtoeol(void); // clear end of line in stdscr
_EXTERN void crmode(void); // set terminal cbreak mode
_EXTERN void cursoff(void); // turns off hardware cursor
_EXTERN void curson(void); // turns on hardware cursor
_EXTERN void def_prog_mode(void); // save TTY modes
_EXTERN void def_shell_mode(void); // compatibility dummy
_EXTERN int delch(void); // delete a char in stdscr
_EXTERN int deleteln(void); // delete a line in stdscr
_EXTERN void delwin(WINDOW*); // delete a window or a subwindow
_EXTERN void doupdate(void); // update physical screen
_EXTERN void echo(void); // set terminal echo mode
_EXTERN int endwin(void); // cleanup and finitialization
_EXTERN void erase(void); // erase stdscr
_EXTERN int erasechar(void); // return char kill character
_EXTERN int fixterm(void); // compatibility dummy
_EXTERN void flash(void); // flash terminal screen
_EXTERN void flushinp(void); // kill pending keyboard input
_EXTERN int getstr(char*); // get string to stdscr and buffer
_EXTERN int gettmode(void); // compatibility dummy
_EXTERN void idlok(void); // use ins/del line (dummy)
_EXTERN int initscr(void); // curses initialization
_EXTERN int inch(void); // get char at stdscr cursor
_EXTERN int insch(int); // insert character in stdscr
_EXTERN int insrawch(int); // insert character in stdscr, raw
_EXTERN int insertln(void); // insert new line in stdscr
_EXTERN void keypad(WINDOW*,int ); // marks a window for keypad usage
_EXTERN int killchar(void); // return line kill character
_EXTERN char *longname(void); // terminal description
_EXTERN void leaveok(WINDOW*,int ); // marks window for cursor 'leave'
_EXTERN void meta(void); // marks window for meta (dummy)
_EXTERN int move(int,int); // move cursor in stdscr
_EXTERN int mvaddch(int,int,int); // move & put char in stdscr
_EXTERN int mvaddrawch(int,int,int); // move & put char in stdscr, raw
_EXTERN int mvaddstr(int,int,char*); // move & put string in stdscr
_EXTERN int mvclrtobot(int,int); // move & clear end of stdscr
_EXTERN int mvclrtoeol(int,int); // move & clear lineend in stdscr
_EXTERN int mvcur(int,int,int,int); // move terminal cursor
_EXTERN int mvdelch(int,int); // move & delete a char in stdscr
_EXTERN int mvdeleteln(int,int); // move & delete a line in stdscr
_EXTERN int mvgetch(int,int); // move & get char to stdscr
_EXTERN int mvgetstr(int,int,char*); // move & get string to stdscr
_EXTERN int mvinch(int,int); // move & get char at stdscr cursor
_EXTERN int mvinsch(int,int,int); // move & insert char in stdscr
_EXTERN int mvinsrawch(int,int,int); // move & insert raw char in stdscr
_EXTERN int mvinsertln(int,int); // move & insert new line in stdscr
_EXTERN int mvprintw(); // move & print string in stdscr
_EXTERN int mvscanw(); // move & get values via stdscr
_EXTERN int mvwaddch(WINDOW*,int,int,int); // move & put char in a window
_EXTERN int mvwaddrawch(WINDOW*,int,int,int); // move & put char in a window, raw
_EXTERN int mvwaddstr(WINDOW*,int,int,char*); // move & put string in a window
_EXTERN int mvwclrtobot(WINDOW*,int,int); // move & clear end of a window
_EXTERN int mvwclrtoeol(WINDOW*,int,int); // move & clear lineend in a window
_EXTERN int mvwdelch(WINDOW*,int,int); // move & delete a char in a window
_EXTERN int mvwdeleteln(WINDOW*,int,int); // move & delete a line in a window
_EXTERN int mvwgetch(WINDOW*,int,int); // move & get char to a window
_EXTERN int mvwgetstr(WINDOW*,int,int,char*); // move & get string to a window
_EXTERN int mvwinch(WINDOW*,int,int); // move & get char at window cursor
_EXTERN int mvwinsch(WINDOW*,int,int,int); // move & insert char in a window
_EXTERN int mvwinsrawch(WINDOW*,int,int,int); // move & insert raw char in window
_EXTERN int mvwinsertln(WINDOW*,int,int); // move & insert new line in window
_EXTERN int mvwin(WINDOW*,int,int); // move window
_EXTERN int mvwprintw(); // move & print string in a window
_EXTERN int mvwscanw(); // move & get values via a window
_EXTERN WINDOW *newwin(int ,int,int,int); // create a window
_EXTERN void nl(void); // set terminal cr-crlf map mode
_EXTERN void nocbreak(void); // unset terminal cbreak mode
_EXTERN void nocrmode(void); // unset terminal cbreak mode
_EXTERN void nodelay(WINDOW*,int ); // marks window for no input wait
_EXTERN void noecho(void); // unset terminal echo mode
_EXTERN void nonl(void); // unset terminal cr-crlf map mode
_EXTERN void noraw(void); // unset raw terminal mode
_EXTERN void overlay(WINDOW*,WINDOW*); // overlay one window on another
_EXTERN void overwrite(WINDOW*,WINDOW*); // overwrite one window on another
_EXTERN int printw(); // print string in stdscr
_EXTERN void raw(void); // set raw terminal mode
_EXTERN void refrbrk(int ); // set screen refresh break mode
_EXTERN void refresh(void); // refresh stdscr
_EXTERN int resetterm(void); // compatibility dummy
_EXTERN int resetty(void); // restore terminal I/O modes
_EXTERN void reset_prog_mode(void); // restore terminal I/O modes
_EXTERN void reset_shell_mode(void); // set terminal to default modes
_EXTERN int saveoldterm(void); // compatibility dummy
_EXTERN int saveterm(void); // compatibility dummy
_EXTERN int savetty(void); // save terminal I/O modes
_EXTERN int scanw(); // get values via stdscr
_EXTERN void scroll(WINDOW*); // scroll region in a window
_EXTERN void scrollok(WINDOW*,int ); // marks a window to allow scroll
_EXTERN int setsrcreg(void); // define stdscr's scroll region
_EXTERN int setterm(void); // compatibility dummy
_EXTERN int setupterm(void); // set up terminal (no-op)
_EXTERN void standend(void); // start normal chars in stdscr
_EXTERN void standout(void); // start standout chars in stdscr
_EXTERN WINDOW *subwin(WINDOW*,int ,int,int,int); // create a sub-window
_EXTERN int tabsize(int); // set/get tabsize of stdscr
_EXTERN void touchwin(WINDOW*); // mark a window as modified
_EXTERN char *unctrl(int ); // char-to-string converter
_EXTERN int waddch(WINDOW*,int); // put char in a window

_EXTERN int waddrawch(WINDOW*,int); // put char in a window, raw
_EXTERN int waddstr(WINDOW*,char*); // put string in a window
_EXTERN void wattroff(WINDOW*,int); // clear attribute(a) in window
_EXTERN void wattron(WINDOW*,int); // add attribute(s) in window
_EXTERN void wattrset(WINDOW*,int); // set window char attributes
_EXTERN void wborder(WINDOW*,int ,int,int,int,int,int,int,int); // Set non-std box characters
_EXTERN int wbox(WINDOW*,int,int,int,int,int,int); // draw a box inside a window
_EXTERN void wclear(WINDOW*); // clear a window
_EXTERN int wclrtobot(WINDOW*); // clear end of a window
_EXTERN int wclrtoeol(WINDOW*); // clear end of line in a window
_EXTERN int wdelch(WINDOW*); // delete a char in a window
_EXTERN int wdeleteln(WINDOW*); // delete a line in a window
_EXTERN void werase(WINDOW*); // erase a window
_EXTERN int wgetch(WINDOW*); // get char to a window
_EXTERN int wgetstr(WINDOW*,char*); // get string to window and buffer
_EXTERN int winch(WINDOW*); // get char at window cursor
_EXTERN int winsch(WINDOW*,int); // insert character in a window
_EXTERN int winsrawch(WINDOW*,int); // insert raw character in a window
_EXTERN int winsertln(WINDOW*); // insert new line in a window
_EXTERN int wmove(WINDOW*,int,int); // move cursor in a window
_EXTERN void wnoutrefresh(WINDOW*); // create screen image, w/o display
_EXTERN int wprintw(); // print string in a window
_EXTERN void wrefresh(WINDOW*); // refresh screen
_EXTERN int wscanw(); // get values via a window
_EXTERN int wsetsrcreg(WINDOW*,int,int); // define a window's scroll region
_EXTERN void wstandend(WINDOW*); // start normal chars in window
_EXTERN void wstandout(WINDOW*); // start standout chars in window
_EXTERN int wtabsize(WINDOW*,int); // set/get tabsize of a window
_EXTERN int wungetch(int); // character push-back
_EXTERN void wputatpos(WINDOW*,int ,int,int); // put a full character code back

#define wgetatpos(win, y, x) (*(win->_line[y] + x))
_EXTERN void wputatpos(WINDOW*,int,int,int);

// End curses.h


  3 Responses to “Category : C++ Source Code
Archive   : CURSESP.ZIP
Filename : CURSES.H

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/