Date: Sat, 17 Jan 2009 23:01:40 +0000 (UTC) From: Ed Schouten <ed@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r187374 - head/sys/dev/syscons/teken Message-ID: <200901172301.n0HN1ePm054707@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200901172301.n0HN1ePm054707>