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
};
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
{
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)
{
return;
}
- putstr (term, grub_terminfo_tparm (data->setcolor, fg, bg));
+ putstr (term, grub_terminfo_tparm (data->setcolor, colormap[fg & 7],
+ colormap[bg & 7]));
return;
}