aboutsummaryrefslogtreecommitdiffstats
path: root/src/vt102.c
diff options
context:
space:
mode:
authorjames <>2008-02-07 12:16:04 +0000
committerjames <>2008-02-07 12:16:04 +0000
commitab5452e7390705d3b46ca29e900d2c5ec9faf555 (patch)
treef1dfb6e48f4d180866420bae638368772d49fca9 /src/vt102.c
parentb7dab6019f661c3ef5d19f8faeacfec3a927f727 (diff)
downloadsympathy-ab5452e7390705d3b46ca29e900d2c5ec9faf555.tar.gz
sympathy-ab5452e7390705d3b46ca29e900d2c5ec9faf555.tar.bz2
sympathy-ab5452e7390705d3b46ca29e900d2c5ec9faf555.zip
*** empty log message ***
Diffstat (limited to 'src/vt102.c')
-rw-r--r--src/vt102.c66
1 files changed, 66 insertions, 0 deletions
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;