Now basically functioning on ANSI-supporting consoles.
[gpxe.git] / src / hci / mucurses / colour.c
1 #include <curses.h>
2
3 struct colour_pair {
4         short fcol;
5         short bcol;
6 };
7
8 static struct colour_pair cpairs[COLOUR_PAIRS] = {
9         [0] = { COLOUR_WHITE, COLOUR_BLACK },
10 };
11
12 /**
13  * Identify the RGB components of a given colour value
14  *
15  * @v colour    colour value
16  * @v *red      address to store red component
17  * @v *green    address to store green component
18  * @v *blue     address to store blue component
19  * @ret rc      return status code
20  */
21 int colour_content ( short colour, short *red, short *green, short *blue ) {
22         *red = ( ( colour & COLOUR_RED ) ? 1 : 0 );
23         *green = ( ( colour & COLOUR_GREEN ) ? 1 : 0 );
24         *blue = ( ( colour & COLOUR_BLUE ) ? 1 : 0 );
25         return OK;
26 }
27
28 /**
29  * Initialise colour pair
30  *
31  * @v pair      colour pair number
32  * @v fcol      foreground colour
33  * @v bcol      background colour
34  */
35 int init_pair ( short pair, short fcol, short bcol ) {
36         struct colour_pair *cpair;
37
38         if ( ( pair < 1 ) || ( pair >= COLOUR_PAIRS ) )
39                 return ERR;
40         
41         cpair = &cpairs[pair];
42         cpair->fcol = fcol;
43         cpair->bcol = bcol;
44         return OK;
45 }
46
47 /**
48  * Get colours of colour pair
49  *
50  * @v pair      colour pair number
51  * @ret fcol    foreground colour
52  * @ret bcol    background colour
53  */
54 int pair_content ( short pair, short *fcol, short *bcol ) {
55         struct colour_pair *cpair;
56
57         if ( ( pair < 0 ) || ( pair >= COLOUR_PAIRS ) )
58                 return ERR;
59         
60         cpair = &cpairs[pair];
61         *fcol = cpair->fcol;
62         *bcol = cpair->bcol;
63         return OK;
64 }