Now basically functioning on ANSI-supporting consoles.

This commit is contained in:
Michael Brown
2006-12-19 00:27:25 +00:00
parent 09f9142cbf
commit edbdce6e3d
8 changed files with 215 additions and 95 deletions

View File

@@ -1,14 +1,13 @@
#include <curses.h>
/**
* Indicates whether the underlying terminal device is capable of
* having colours redefined
*
* @ret bool returns boolean
*/
bool can_change_colour ( void ) {
return (bool)TRUE;
}
struct colour_pair {
short fcol;
short bcol;
};
static struct colour_pair cpairs[COLOUR_PAIRS] = {
[0] = { COLOUR_WHITE, COLOUR_BLACK },
};
/**
* Identify the RGB components of a given colour value
@@ -20,31 +19,46 @@ bool can_change_colour ( void ) {
* @ret rc return status code
*/
int colour_content ( short colour, short *red, short *green, short *blue ) {
/* we do not have a particularly large range of colours (3
primary, 3 secondary and black), so let's just put in a
basic switch... */
switch(colour) {
case COLOUR_BLACK:
*red = 0; *green = 0; *blue = 0;
break;
case COLOUR_BLUE:
*red = 0; *green = 0; *blue = 1000;
break;
case COLOUR_GREEN:
*red = 0; *green = 1000; *blue = 0;
break;
case COLOUR_CYAN:
*red = 0; *green = 1000; *blue = 1000;
break;
case COLOUR_RED:
*red = 1000; *green = 0; *blue = 0;
break;
case COLOUR_MAGENTA:
*red = 1000; *green = 0; *blue = 1000;
break;
case COLOUR_YELLOW:
*red = 1000; *green = 1000; *blue = 0;
break;
}
*red = ( ( colour & COLOUR_RED ) ? 1 : 0 );
*green = ( ( colour & COLOUR_GREEN ) ? 1 : 0 );
*blue = ( ( colour & COLOUR_BLUE ) ? 1 : 0 );
return OK;
}
/**
* Initialise colour pair
*
* @v pair colour pair number
* @v fcol foreground colour
* @v bcol background colour
*/
int init_pair ( short pair, short fcol, short bcol ) {
struct colour_pair *cpair;
if ( ( pair < 1 ) || ( pair >= COLOUR_PAIRS ) )
return ERR;
cpair = &cpairs[pair];
cpair->fcol = fcol;
cpair->bcol = bcol;
return OK;
}
/**
* Get colours of colour pair
*
* @v pair colour pair number
* @ret fcol foreground colour
* @ret bcol background colour
*/
int pair_content ( short pair, short *fcol, short *bcol ) {
struct colour_pair *cpair;
if ( ( pair < 0 ) || ( pair >= COLOUR_PAIRS ) )
return ERR;
cpair = &cpairs[pair];
*fcol = cpair->fcol;
*bcol = cpair->bcol;
return OK;
}