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;
|
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[] =
|
static struct color colors[] =
|
||||||
{
|
{
|
||||||
// {R, G, B}
|
// {R, G, B}
|
||||||
{0x00, 0x00, 0x00},
|
{0x00, 0x00, 0x00}, // 0 = black
|
||||||
{0x00, 0x00, 0xA8}, // 1 = blue
|
{0xA8, 0x00, 0x00}, // 1 = red
|
||||||
{0x00, 0xA8, 0x00}, // 2 = green
|
{0x00, 0xA8, 0x00}, // 2 = green
|
||||||
{0x00, 0xA8, 0xA8}, // 3 = cyan
|
{0xFE, 0xFE, 0x54}, // 3 = yellow
|
||||||
{0xA8, 0x00, 0x00}, // 4 = red
|
{0x00, 0x00, 0xA8}, // 4 = blue
|
||||||
{0xA8, 0x00, 0xA8}, // 5 = magenta
|
{0xA8, 0x00, 0xA8}, // 5 = magenta
|
||||||
{0xFE, 0xFE, 0x54}, // 6 = yellow
|
{0x00, 0xA8, 0xA8}, // 6 = cyan
|
||||||
{0xFE, 0xFE, 0xFE} // 7 = white
|
{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 *data
|
||||||
= (struct grub_terminfo_output_state *) term->data;
|
= (struct grub_terminfo_output_state *) term->data;
|
||||||
|
|
||||||
/* Discard bright bit. */
|
data->normal_color = normal_color;
|
||||||
data->normal_color = normal_color & 0x77;
|
data->highlight_color = highlight_color;
|
||||||
data->highlight_color = highlight_color & 0x77;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -283,6 +282,17 @@ grub_terminfo_setcolorstate (struct grub_term_output *term,
|
||||||
{
|
{
|
||||||
int fg;
|
int fg;
|
||||||
int bg;
|
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)
|
switch (state)
|
||||||
{
|
{
|
||||||
|
@ -299,7 +309,8 @@ grub_terminfo_setcolorstate (struct grub_term_output *term,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
putstr (term, grub_terminfo_tparm (data->setcolor, fg, bg));
|
putstr (term, grub_terminfo_tparm (data->setcolor, colormap[fg & 7],
|
||||||
|
colormap[bg & 7]));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue