summaryrefslogtreecommitdiffstats
path: root/src/hci/mucurses/colour.c
blob: c1359c868368f4f3d98df7e47ca90105c5d46ae0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <curses.h>

FILE_LICENCE ( GPL2_OR_LATER );

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
 *
 * @v colour	colour value
 * @v *red	address to store red component
 * @v *green	address to store green component
 * @v *blue	address to store blue component
 * @ret rc	return status code
 */
int colour_content ( short colour, short *red, short *green, short *blue ) {
	*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;
}