svn commit: r187374 - head/sys/dev/syscons/teken
Ed Schouten
ed at FreeBSD.org
Sat Jan 17 15:01:41 PST 2009
Author: ed
Date: Sat Jan 17 23:01:40 2009
New Revision: 187374
URL: http://svn.freebsd.org/changeset/base/187374
Log:
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.
Modified:
head/sys/dev/syscons/teken/teken_subr_compat.h
Modified: head/sys/dev/syscons/teken/teken_subr_compat.h
==============================================================================
--- head/sys/dev/syscons/teken/teken_subr_compat.h Sat Jan 17 22:53:53 2009 (r187373)
+++ head/sys/dev/syscons/teken/teken_subr_compat.h Sat Jan 17 23:01:40 2009 (r187374)
@@ -33,20 +33,23 @@ teken_subr_cons25_set_cursor_type(teken_
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;
More information about the svn-src-all
mailing list