2
0
mirror of https://github.com/xcat2/xNBA.git synced 2024-12-24 12:11:33 +00:00

- made some of the bit shifting attribute access simpler (in my mind)

- added extern declarations for global vars
- removed comments from static inlines (too time consuming to do them
  all, considering all so far have been due to the ridiculous amount of
  redundancy within the API spec)
- removed a few more extern func decls for funcs that cannot be
  implemented at this time
This commit is contained in:
Dan Lynch 2006-05-19 16:22:10 +00:00
parent d166dc57ab
commit acf572905c

View File

@ -68,21 +68,33 @@ typedef struct _curses_window {
} WINDOW;
extern WINDOW _stdscr;
#define stdscr ( &_stdscr )
extern SCREEN _curscr;
extern unsigned short _COLS;
extern unsigned short _LINES;
extern unsigned short _COLOURS;
extern unsigned int *_COLOUR_PAIRS;
#define MUCURSES_ATTR_SHIFT 16
#define MUCURSES_BITS( mask, shift ) (( mask ) << (( shift ) + MUCURSES_ATTR_SHIFT ))
#define stdscr ( &_stdscr )
#define curscr ( &_curscr )
#define COLS _COLS
#define LINES _LINES
#define COLORS _COLOURS
#define COLOR_PAIRS COLOUR_PAIRS
#define MUCURSES_BITS( mask, shift ) (( mask ) << (shift))
#define CPAIR_SHIFT 8
#define ATTRS_SHIFT 16
#define A_DEFAULT ( 1UL - 1UL )
#define A_ALTCHARSET MUCURSES_BITS( 1UL, 0 )
#define A_BLINK MUCURSES_BITS( 1UL, 1 )
#define A_BOLD MUCURSES_BITS( 1UL, 2 )
#define A_DIM MUCURSES_BITS( 1UL, 3 )
#define A_INVIS MUCURSES_BITS( 1UL, 4 )
#define A_PROTECT MUCURSES_BITS( 1UL, 5 )
#define A_REVERSE MUCURSES_BITS( 1UL, 6 )
#define A_STANDOUT MUCURSES_BITS( 1UL, 7 )
#define A_UNDERLINE MUCURSES_BITS( 1UL, 8 )
#define A_ALTCHARSET MUCURSES_BITS( 1UL, ATTRS_SHIFT + 0 )
#define A_BLINK MUCURSES_BITS( 1UL, ATTRS_SHIFT + 1 )
#define A_BOLD MUCURSES_BITS( 1UL, ATTRS_SHIFT + 2 )
#define A_DIM MUCURSES_BITS( 1UL, ATTRS_SHIFT + 3 )
#define A_INVIS MUCURSES_BITS( 1UL, ATTRS_SHIFT + 4 )
#define A_PROTECT MUCURSES_BITS( 1UL, ATTRS_SHIFT + 5 )
#define A_REVERSE MUCURSES_BITS( 1UL, ATTRS_SHIFT + 6 )
#define A_STANDOUT MUCURSES_BITS( 1UL, ATTRS_SHIFT + 7 )
#define A_UNDERLINE MUCURSES_BITS( 1UL, ATTRS_SHIFT + 8 )
#define WA_ALTCHARSET A_ALTCHARSET
#define WA_BLINK A_BLINK
@ -93,16 +105,16 @@ extern WINDOW _stdscr;
#define WA_REVERSE A_REVERSE
#define WA_STANDOUT A_STANDOUT
#define WA_UNDERLINE A_UNDERLINE
#define WA_HORIZONTAL MUCURSES_BITS( 1UL, 9 )
#define WA_VERTICAL MUCURSES_BITS( 1UL, 10 )
#define WA_LEFT MUCURSES_BITS( 1UL, 11 )
#define WA_RIGHT MUCURSES_BITS( 1UL, 12 )
#define WA_LOW MUCURSES_BITS( 1UL, 13 )
#define WA_TOP MUCURSES_BITS( 1UL, 14 )
#define WA_HORIZONTAL MUCURSES_BITS( 1UL, ATTRS_SHIFT + 9 )
#define WA_VERTICAL MUCURSES_BITS( 1UL, ATTRS_SHIFT + 10 )
#define WA_LEFT MUCURSES_BITS( 1UL, ATTRS_SHIFT + 11 )
#define WA_RIGHT MUCURSES_BITS( 1UL, ATTRS_SHIFT + 12 )
#define WA_LOW MUCURSES_BITS( 1UL, ATTRS_SHIFT + 13 )
#define WA_TOP MUCURSES_BITS( 1UL, ATTRS_SHIFT + 14 )
#define A_ATTRIBUTES MUCURSES_BITS( ~( 1UL - 1UL ), 0 )
#define A_ATTRIBUTES ( MUCURSES_BITS( 1UL, ATTRS_SHIFT ) - 1UL )
#define A_CHARTEXT ( MUCURSES_BITS( 1UL, 0 ) - 1UL )
#define A_COLOR MUCURSES_BITS( ( 1UL << 8 ) - 1UL, 0 )
#define A_COLOR MUCURSES_BITS( ( 1UL << 8 ) - 1UL, CPAIR_SHIFT )
#define ACS_ULCORNER '+'
#define ACS_LLCORNER '+'
@ -258,7 +270,6 @@ extern int attr_on ( attr_t, void * );
extern int attr_set ( attr_t, short, void * );
extern int baudrate ( void );
extern int beep ( void );
/*extern int bkgd ( chtype );*/
/*extern void bkgdset ( chtype );*/
/*extern int border ( chtype, chtype, chtype, chtype, chtype, chtype, chtype,
chtype );*/
@ -266,15 +277,12 @@ extern int box ( WINDOW *, chtype, chtype );
extern bool can_change_colour ( void );
#define can_change_color() can_change_colour()
extern int cbreak ( void );
extern int chgat ( int, attr_t, short, const void * );
extern int clearok ( WINDOW *, bool );
extern int clear ( void );
extern int clrtobot ( void );
extern int clrtoeol ( void );
/*extern int clrtobot ( void );*/
/*extern int clrtoeol ( void );*/
extern int colour_content ( short, short *, short *, short * );
#define color_content( col, r, g, b ) colour_content( (col), (r), (g), (b) )
extern int colour_set ( short, void * );
#define color_set( cpno, opts ) colour_set( (cpno), (opts) )
/*extern int colour_set ( short, void * );*/
/*#define color_set( cpno, opts ) colour_set( (cpno), (opts) )*/
extern int copywin ( const WINDOW *, WINDOW *, int, int, int,
int, int, int, int );
extern int curs_set ( int );
@ -337,7 +345,6 @@ extern int meta ( WINDOW *, bool );
/*extern int mvaddchstr ( int, int, const chtype * );*/
/*extern int mvaddnstr ( int, int, const char *, int );*/
/*extern int mvaddstr ( int, int, const char * );*/
extern int mvchgat ( int, int, int, attr_t, short, const void * );
extern int mvcur ( int, int, int, int );
extern int mvdelch ( int, int );
extern int mvderwin ( WINDOW *, int, int );
@ -361,7 +368,6 @@ extern int mvvline ( int, int, chtype, int );
/*extern int mvwaddchstr ( WINDOW *, int, int, const chtype * );*/
/*extern int mvwaddnstr ( WINDOW *, int, int, const char *, int );*/
/*extern int mvwaddstr ( WINDOW *, int, int, const char * );*/
extern int mvwchgat ( WINDOW *, int, int, int, attr_t, short, const void * );
extern int mvwdelch ( WINDOW *, int, int );
extern int mvwgetch ( WINDOW *, int, int );
extern int mvwgetnstr ( WINDOW *, int, int, char *, int );
@ -476,16 +482,14 @@ extern int wattr_get ( WINDOW *, attr_t *, short *, void * );
extern int wattr_off ( WINDOW *, attr_t, void * );
extern int wattr_on ( WINDOW *, attr_t, void * );
extern int wattr_set ( WINDOW *, attr_t, short, void * );
extern int wbkgd ( WINDOW *, chtype );
/*extern void wbkgdset ( WINDOW *, chtype );*/
extern int wborder ( WINDOW *, chtype, chtype, chtype, chtype, chtype, chtype,
chtype, chtype );
extern int wchgat ( WINDOW *, int, attr_t, short, const void * );
extern int wclear ( WINDOW * );
extern int wclrtobot ( WINDOW * );
extern int wclrtoeol ( WINDOW * );
extern void wcursyncup ( WINDOW * );
extern int wcolor_set ( WINDOW *, short, void * );
/*extern int wcolor_set ( WINDOW *, short, void * );*/
#define wcolor_set(w,s,v) wcolour_set((w),(s),(v))
extern int wdelch ( WINDOW * );
extern int wdeleteln ( WINDOW * );
extern int wechochar ( WINDOW *, const chtype );
@ -520,326 +524,124 @@ extern void wtimeout ( WINDOW *, int );
extern int wtouchln ( WINDOW *, int, int, int );
extern int wvline ( WINDOW *, chtype, int );
#define COLOUR_PAIR(n) MUCURSES_BITS( (n), -8 )
#define COLOR_PAIR(n) COLOUR_PAIR(n)
/*
* static inlines
* There is frankly a ridiculous amount of redundancy within the
* curses API - ncurses decided to get around this by using #define
* macros, but I've decided to be type-safe and implement them all as
* static inlines instead...
*/
/**
* Add a single-byte character and rendition to stdscr and advance the
* cursor
*
* @v ch character to be added at cursor
* @ret rc return status code
*/
static inline int addch ( const chtype ch ) {
return waddch( stdscr, ch );
}
/**
* Add string of single-byte characters and renditions to stdscr
*
* @v *chstr pointer to first chtype in "string"
* @v n number of chars from chstr to render
* @ret rc return status code
*/
static inline int addchnstr ( const chtype *chstr, int n ) {
return waddchnstr ( stdscr, chstr, n );
}
/**
* Add string of single-byte characters and renditions to stdscr
*
* @v *chstr pointer to first chtype in "string"
* @ret rc return status code
*/
static inline int addchstr ( const chtype *chstr ) {
return waddchnstr ( stdscr, chstr, -1 );
}
/**
* Add string of single-byte characters to stdscr
*
* @v *str standard c-style string
* @v n max number of chars from string to render
* @ret rc return status code
*/
static inline int addnstr ( const char *str, int n ) {
return waddnstr ( stdscr, str, n );
}
/**
* Add string of single-byte characters to stdscr
*
* @v *str standard c-style string
* @ret rc return status code
*/
static inline int addstr ( const char *str ) {
return waddnstr ( stdscr, str, -1 );
}
/**
* Turn off attributes
*
* @v win subject window
* @v attrs attributes to enable
* @ret rc return status code
*/
static inline int attroff ( int attrs ) {
return wattroff ( stdscr, attrs );
}
/**
* Turn on attributes
*
* @v win subject window
* @v attrs attributes to enable
* @ret rc return status code
*/
static inline int attron ( int attrs ) {
return wattron ( stdscr, attrs );
}
/**
* Set attributes
*
* @v win subject window
* @v attrs attributes to enable
* @ret rc return status code
*/
static inline int attrset ( int attrs ) {
return wattrset ( stdscr, attrs );
}
/**
* Set background rendition attributes for stdscr and apply to
* contents
*
* @v ch chtype containing rendition attributes
* @ret rc return status code
*/
static inline int bkgd ( chtype ch ) {
return wbkgd ( stdscr, ch );
}
/**
* Set background rendition attributes for stdscr
*/
static inline void bkgdset ( chtype ch ) {
wattrset ( stdscr, ch );
}
/**
* Draw borders from single-byte characters and renditions around
* stdscr
*
* @v ls left side
* @v rs right side
* @v ts top
* @v bs bottom
* @v tl top left corner
* @v tr top right corner
* @v bl bottom left corner
* @v br bottom right corner
* @ret rc return status code
*/
static inline int border ( chtype ls, chtype rs, chtype ts, chtype bs,
chtype tl, chtype tr, chtype bl, chtype br ) {
return wborder ( stdscr, ls, rs, ts, bs, tl, tr, bl, br );
}
/**
* Move stdscr cursor to the specified position
*
* @v y Y position
* @v x X position
* @ret rc return status code
*/
static inline int clrtobot ( void ) {
return wclrtobot( stdscr );
}
static inline int clrtoeol ( void ) {
return wclrtoeol( stdscr );
}
static inline int move ( int y, int x ) {
return wmove ( stdscr, y, x );
}
/**
* Add a single-byte character and rendition to stdscr at the
* specified position and advance the cursor
*
* @v y Y position
* @v x X position
* @v ch character to be added at cursor
* @ret rc return status code
*/
static inline int mvaddch ( int y, int x, const chtype ch ) {
return ( wmove ( stdscr, y, x ) == ERR
? ERR : waddch( stdscr, ch ) );
}
/**
* Add string of single-byte characters and renditions to stdscr at
* the specified position
*
* @v y Y position
* @v x X position
* @v *chstr pointer to first chtype in "string"
* @v n max number of chars from chstr to render
* @ret rc return status code
*/
static inline int mvaddchnstr ( int y, int x, const chtype *chstr, int n ) {
return ( wmove ( stdscr, y, x ) == ERR
? ERR : waddchnstr ( stdscr, chstr, n ) );
}
/**
* Add string of single-byte characters and renditions to stdscr at
* the specified position
*
* @v y Y position
* @v x X position
* @v *chstr pointer to first chtype in "string"
* @ret rc return status code
*/
static inline int mvaddchstr ( int y, int x, const chtype *chstr ) {
return ( wmove ( stdscr, y, x ) == ERR
? ERR : waddchnstr ( stdscr, chstr, -1 ) );
}
/**
* Add string of single-byte characters to stdscr at the specified
* position
*
* @v y Y position
* @v x X position
* @v *str standard c-style string
* @v n max number of chars from string to render
* @ret rc return status code
*/
static inline int mvaddnstr ( int y, int x, const char *str, int n ) {
return ( wmove ( stdscr, y, x ) == ERR
? ERR : waddnstr ( stdscr, str, n ) );
}
/**
* Add string of single-byte characters to stdscr at the specified
* position
*
* @v y Y position
* @v x X position
* @v *str standard c-style string
* @ret rc return status code
*/
static inline int mvaddstr ( int y, int x, const char *str ) {
return ( wmove ( stdscr, y, x ) == ERR
? ERR : waddnstr ( stdscr, str, -1 ) );
}
/**
* Add a single-byte character and rendition to a window at the
* specified position and advance the cursor
*
* @v *win subject window
* @v y Y position
* @v x X position
* @v ch character to be added at cursor
* @ret rc return status code
*/
static inline int mvwaddch ( WINDOW *win, int y, int x, const chtype ch ) {
return ( wmove( win, y, x ) == ERR
? ERR : waddch ( win, ch ) );
}
/**
* Add string of single-byte characters and renditions to a window at
* the specified position
*
* @v *win subject window
* @v y Y position
* @v x X position
* @v *chstr pointer to first chtype in "string"
* @v n max number of chars from chstr to render
* @ret rc return status code
*/
static inline int mvwaddchnstr ( WINDOW *win, int y, int x, const chtype *chstr, int n ) {
return ( wmove ( win, y, x ) == ERR
? ERR : waddchnstr ( win, chstr, n ) );
}
/**
* Add string of single-byte characters and renditions to a window at
* the specified position
*
* @v *win subject window
* @v y Y position
* @v x X position
* @v *chstr pointer to first chtype in "string"
* @ret rc return status code
*/
static inline int mvwaddchstr ( WINDOW *win, int y, int x, const chtype *chstr ) {
return ( wmove ( win, y, x ) == ERR
? ERR : waddchnstr ( win, chstr, -1 ) );
}
/**
* Add string of single-byte characters to a window at the specified
* position
*
* @v *win window to be rendered in
* @v y Y position
* @v x X position
* @v *str standard c-style string
* @v n max number of chars from string to render
* @ret rc return status code
*/
static inline int mvwaddnstr ( WINDOW *win, int y, int x, const char *str, int n ) {
return ( wmove ( win, y, x ) == ERR
? ERR : waddnstr ( win, str, n ) );
}
/**
* Add string of single-byte characters to a window at the specified
* position
*
* @v *win window to be rendered in
* @v y Y position
* @v x X position
* @v *str standard c-style string
* @ret rc return status code
*/
static inline int mvwaddstr ( WINDOW *win, int y, int x, const char *str ) {
return ( wmove ( win, y, x ) == ERR
? ERR : waddnstr ( win, str, -1 ) );
}
/**
* Add string of single-byte characters and renditions to a window
*
* @v *win subject window
* @v *chstr pointer to first chtype in "string"
* @ret rc return status code
*/
static inline int waddchstr ( WINDOW *win, const chtype *chstr ) {
return waddchnstr ( win, chstr, -1 );
}
/**
* Add string of single-byte characters to a window
*
* @v *win window to be rendered in
* @v *str standard c-style string
* @ret rc return status code
*/
static inline int waddstr ( WINDOW *win, const char *str ) {
return waddnstr ( win, str, -1 );
}
/**
* Set background rendition attributes for a window and apply to
* contents
*
* @v *win window to be operated on
* @v ch chtype containing rendition attributes
* @ret rc return status code
*/
static inline int wbkgdset ( WINDOW *win, chtype ch ) {
return wattrset( win, ch );
}