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