Support serial colors
This commit is contained in:
parent
bf8733749b
commit
710d05aa8c
2 changed files with 22 additions and 9 deletions
|
@ -39,16 +39,18 @@ struct color
|
|||
int blue;
|
||||
};
|
||||
|
||||
/* Use serial colors as they are default on most firmwares and some firmwares
|
||||
ignore set-color!. Additionally output may be redirected to serial. */
|
||||
static struct color colors[] =
|
||||
{
|
||||
// {R, G, B}
|
||||
{0x00, 0x00, 0x00},
|
||||
{0x00, 0x00, 0xA8}, // 1 = blue
|
||||
{0x00, 0x00, 0x00}, // 0 = black
|
||||
{0xA8, 0x00, 0x00}, // 1 = red
|
||||
{0x00, 0xA8, 0x00}, // 2 = green
|
||||
{0x00, 0xA8, 0xA8}, // 3 = cyan
|
||||
{0xA8, 0x00, 0x00}, // 4 = red
|
||||
{0xFE, 0xFE, 0x54}, // 3 = yellow
|
||||
{0x00, 0x00, 0xA8}, // 4 = blue
|
||||
{0xA8, 0x00, 0xA8}, // 5 = magenta
|
||||
{0xFE, 0xFE, 0x54}, // 6 = yellow
|
||||
{0x00, 0xA8, 0xA8}, // 6 = cyan
|
||||
{0xFE, 0xFE, 0xFE} // 7 = white
|
||||
};
|
||||
|
||||
|
|
|
@ -255,9 +255,8 @@ grub_terminfo_setcolor (struct grub_term_output *term,
|
|||
struct grub_terminfo_output_state *data
|
||||
= (struct grub_terminfo_output_state *) term->data;
|
||||
|
||||
/* Discard bright bit. */
|
||||
data->normal_color = normal_color & 0x77;
|
||||
data->highlight_color = highlight_color & 0x77;
|
||||
data->normal_color = normal_color;
|
||||
data->highlight_color = highlight_color;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -283,6 +282,17 @@ grub_terminfo_setcolorstate (struct grub_term_output *term,
|
|||
{
|
||||
int fg;
|
||||
int bg;
|
||||
/* Map from VGA to terminal colors. */
|
||||
const int colormap[8]
|
||||
= { 0, /* Black. */
|
||||
4, /* Blue. */
|
||||
2, /* Green. */
|
||||
6, /* Cyan. */
|
||||
1, /* Red. */
|
||||
5, /* Magenta. */
|
||||
3, /* Yellow. */
|
||||
7, /* White. */
|
||||
};
|
||||
|
||||
switch (state)
|
||||
{
|
||||
|
@ -299,7 +309,8 @@ grub_terminfo_setcolorstate (struct grub_term_output *term,
|
|||
return;
|
||||
}
|
||||
|
||||
putstr (term, grub_terminfo_tparm (data->setcolor, fg, bg));
|
||||
putstr (term, grub_terminfo_tparm (data->setcolor, colormap[fg & 7],
|
||||
colormap[bg & 7]));
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue