diff options
author | ed <ed@FreeBSD.org> | 2009-01-17 23:01:40 +0000 |
---|---|---|
committer | ed <ed@FreeBSD.org> | 2009-01-17 23:01:40 +0000 |
commit | 57e1b2ae2fb151d3492499e3d96ad296905b0284 (patch) | |
tree | b69876a2d2935b3ccf03558cc6aa364688b3b2d6 /sys/dev | |
parent | 7bd93f5fdba0b7c3e3ccdf0397b393a6c18ffbdd (diff) | |
download | FreeBSD-src-57e1b2ae2fb151d3492499e3d96ad296905b0284.zip FreeBSD-src-57e1b2ae2fb151d3492499e3d96ad296905b0284.tar.gz |
Fix for my previous commit: color mapping is not 1:1.
Cons25 doesn't seem to use a straight 1:1 mapping to the ANSI colors,
but uses the same color numbers as at least used by syscons on i386. I
suspect if you change the definitions on a different architecture,
things may break? Not sure.
Add a small array to convert syscons-style color codes to ANSI
equivalents, which are used by libteken internally. I didn't notice this
bug, because I only tested my code with black, white and green, all of
them shared the same numbers.
Diffstat (limited to 'sys/dev')
-rw-r--r-- | sys/dev/syscons/teken/teken_subr_compat.h | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/dev/syscons/teken/teken_subr_compat.h b/sys/dev/syscons/teken/teken_subr_compat.h index dea30d3..d524301 100644 --- a/sys/dev/syscons/teken/teken_subr_compat.h +++ b/sys/dev/syscons/teken/teken_subr_compat.h @@ -33,20 +33,23 @@ teken_subr_cons25_set_cursor_type(teken_t *t, unsigned int type) teken_funcs_param(t, TP_SHOWCURSOR, type != 1); } +static teken_color_t cons25_colors[8] = { TC_BLACK, TC_BLUE, TC_GREEN, + TC_CYAN, TC_RED, TC_MAGENTA, TC_BROWN, TC_WHITE }; + static void teken_subr_cons25_set_adapter_background(teken_t *t, unsigned int c) { - t->t_defattr.ta_bgcolor = c % 8; - t->t_curattr.ta_bgcolor = c % 8; + t->t_defattr.ta_bgcolor = cons25_colors[c % 8]; + t->t_curattr.ta_bgcolor = cons25_colors[c % 8]; } static void teken_subr_cons25_set_adapter_foreground(teken_t *t, unsigned int c) { - t->t_defattr.ta_fgcolor = c % 8; - t->t_curattr.ta_fgcolor = c % 8; + t->t_defattr.ta_fgcolor = cons25_colors[c % 8]; + t->t_curattr.ta_fgcolor = cons25_colors[c % 8]; if (c >= 8) { t->t_defattr.ta_format |= TF_BOLD; t->t_curattr.ta_format |= TF_BOLD; |