From ab5452e7390705d3b46ca29e900d2c5ec9faf555 Mon Sep 17 00:00:00 2001 From: james <> Date: Thu, 7 Feb 2008 12:16:04 +0000 Subject: *** empty log message *** --- src/vt102.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) (limited to 'src/vt102.c') diff --git a/src/vt102.c b/src/vt102.c index 399952a..869cca6 100644 --- a/src/vt102.c +++ b/src/vt102.c @@ -10,6 +10,9 @@ static char rcsid[] = "$Id$"; /* * $Log$ + * Revision 1.20 2008/02/07 12:16:04 james + * *** empty log message *** + * * Revision 1.19 2008/02/07 11:27:02 james * *** empty log message *** * @@ -463,6 +466,7 @@ vt102_insert_into_line (VT102 * v, CRT_Pos p) v->crt.screen[CRT_ADDR (p.y, v->bottom_margin.x)].chr = ' '; v->crt.screen[CRT_ADDR (p.y, v->bottom_margin.x)].attr = CRT_ATTR_NORMAL; + v->crt.screen[CRT_ADDR (p.y, v->bottom_margin.x)].color = CRT_COLOR_NORMAL; } @@ -582,6 +586,7 @@ vt102_change_attr (VT102 * v, char *na) { case 0: v->attr = CRT_ATTR_NORMAL; + v->color= CRT_COLOR_NORMAL; break; case 1: v->attr |= CRT_ATTR_BOLD; @@ -608,6 +613,61 @@ vt102_change_attr (VT102 * v, char *na) case 27: v->attr &= ~CRT_ATTR_REVERSE; break; + case 30: + case 31: + case 32: + case 33: + case 34: + case 35: + case 36: + case 37: + v->color &= CRT_COLOR_FG_MASK; + v->color |= ((a-30) << CRT_COLOR_FG_SHIFT) & CRT_COLOR_FG_MASK; + break; + case 90: + case 91: + case 92: + case 93: + case 94: + case 95: + case 96: + case 97: + v->color &= CRT_COLOR_FG_MASK; + v->color |= (((a-90)|CRT_COLOR_INTENSITY) << CRT_COLOR_FG_SHIFT) & CRT_COLOR_FG_MASK; + break; + case 39: + case 99: + v->color &= CRT_COLOR_FG_MASK; + v->color |= (CRT_FGCOLOR_NORMAL << CRT_COLOR_FG_SHIFT) & CRT_COLOR_FG_MASK; + break; + case 40: + case 41: + case 42: + case 43: + case 44: + case 45: + case 46: + case 47: + v->color &= CRT_COLOR_BG_MASK; + v->color |= ((a-40) << CRT_COLOR_BG_SHIFT) & CRT_COLOR_BG_MASK; + break; + case 100: + case 101: + case 102: + case 103: + case 104: + case 105: + case 106: + case 107: + v->color &= CRT_COLOR_BG_MASK; + v->color |= (((a-100)|CRT_COLOR_INTENSITY) << CRT_COLOR_BG_SHIFT) & CRT_COLOR_BG_MASK; + break; + case 49: + case 109: + v->color &= CRT_COLOR_BG_MASK; + v->color |= (CRT_BGCOLOR_NORMAL << CRT_COLOR_BG_SHIFT) & CRT_COLOR_BG_MASK; + break; + default: ; #if 0 @@ -662,6 +722,7 @@ vt102_save_state (VT102 * v) { v->saved.pos = v->pos; v->saved.attr = v->attr; + v->saved.color= v->color; v->saved.origin_mode = v->private_modes[VT102_PRIVATE_MODE_ORIGIN_MODE]; } @@ -670,6 +731,7 @@ vt102_restore_state (VT102 * v) { v->pos = v->saved.pos; v->attr = v->saved.attr; + v->color= v->saved.color; v->private_modes[VT102_PRIVATE_MODE_ORIGIN_MODE] = v->saved.origin_mode; vt102_cursor_normalize (v); v->pending_wrap = 0; @@ -933,6 +995,7 @@ vt102_status_line (VT102 * v, char *str) while (i--) { ca->attr = CRT_ATTR_REVERSE; + ca->color=CRT_COLOR_NORMAL; ca->chr = *str; if (*str) str++; @@ -1053,6 +1116,7 @@ vt102_parse_char (VT102 * v, int c,TTY *tty) v->crt.screen[CRT_ADDR_POS (&v->pos)].chr = c; v->crt.screen[CRT_ADDR_POS (&v->pos)].attr = v->attr; + v->crt.screen[CRT_ADDR_POS (&v->pos)].color = v->color; vt102_cursor_advance (v); } } @@ -1259,6 +1323,8 @@ vt102_reset (VT102 * v) vt102_parser_reset (p); crt_cls (&v->crt); + v->attr=CRT_ATTR_NORMAL; + v->color=CRT_COLOR_NORMAL; v->application_keypad_mode = 0; -- cgit v1.2.3