Remove ATTR_GFX and tselcs

ATTR_GFX was used long time ago to detect when terminal was in
graphic mode. Today graphic mode is implemented using a charset
pointer, so ATTR_GFX is not needed anymore because graphic
condition can be detected directly checking if current charset
is GRAPHICS C0.
master
Roberto E. Vargas Caballero 11 years ago
parent 6b315558f8
commit 1629363f2d
  1. 30
      st.c

30
st.c

@ -94,12 +94,11 @@ enum glyph_attribute {
ATTR_REVERSE = 1, ATTR_REVERSE = 1,
ATTR_UNDERLINE = 2, ATTR_UNDERLINE = 2,
ATTR_BOLD = 4, ATTR_BOLD = 4,
ATTR_GFX = 8, ATTR_ITALIC = 8,
ATTR_ITALIC = 16, ATTR_BLINK = 16,
ATTR_BLINK = 32, ATTR_WRAP = 32,
ATTR_WRAP = 64, ATTR_WIDE = 64,
ATTR_WIDE = 128, ATTR_WDUMMY = 128,
ATTR_WDUMMY = 256,
}; };
enum cursor_movement { enum cursor_movement {
@ -396,7 +395,6 @@ static void techo(char *, int);
static bool tcontrolcode(uchar ); static bool tcontrolcode(uchar );
static void tdectest(char ); static void tdectest(char );
static int32_t tdefcolor(int *, int *, int); static int32_t tdefcolor(int *, int *, int);
static void tselcs(void);
static void tdeftran(char); static void tdeftran(char);
static inline bool match(uint, uint); static inline bool match(uint, uint);
static void ttynew(void); static void ttynew(void);
@ -1535,7 +1533,7 @@ tsetchar(char *c, Glyph *attr, int x, int y) {
/* /*
* The table is proudly stolen from rxvt. * The table is proudly stolen from rxvt.
*/ */
if(attr->mode & ATTR_GFX) { if(term.trantbl[term.charset] == CS_GRAPHIC0) {
if(BETWEEN(c[0], 0x41, 0x7e) && vt100_0[c[0] - 0x41]) { if(BETWEEN(c[0], 0x41, 0x7e) && vt100_0[c[0] - 0x41]) {
c = vt100_0[c[0] - 0x41]; c = vt100_0[c[0] - 0x41];
} }
@ -2317,9 +2315,7 @@ void
tdeftran(char ascii) { tdeftran(char ascii) {
char c, (*bp)[2]; char c, (*bp)[2];
static char tbl[][2] = { static char tbl[][2] = {
{'0', CS_GRAPHIC0}, {'1', CS_GRAPHIC1}, {'A', CS_UK}, {'0', CS_GRAPHIC0}, {'B', CS_USA},
{'B', CS_USA}, {'<', CS_MULTI}, {'K', CS_GER},
{'5', CS_FIN}, {'C', CS_FIN},
{0, 0} {0, 0}
}; };
@ -2332,13 +2328,6 @@ tdeftran(char ascii) {
term.trantbl[term.icharset] = (*bp)[1]; term.trantbl[term.icharset] = (*bp)[1];
} }
void
tselcs(void) {
MODBIT(term.c.attr.mode,
term.trantbl[term.charset] == CS_GRAPHIC0,
ATTR_GFX);
}
bool bool
tcontrolcode(uchar ascii) { tcontrolcode(uchar ascii) {
static char question[UTF_SIZ] = "?"; static char question[UTF_SIZ] = "?";
@ -2377,11 +2366,9 @@ tcontrolcode(uchar ascii) {
return 1; return 1;
case '\016': /* SO */ case '\016': /* SO */
term.charset = 0; term.charset = 0;
tselcs();
break; break;
case '\017': /* SI */ case '\017': /* SI */
term.charset = 1; term.charset = 1;
tselcs();
break; break;
case '\032': /* SUB */ case '\032': /* SUB */
tsetchar(question, &term.c.attr, term.c.x, term.c.y); tsetchar(question, &term.c.attr, term.c.x, term.c.y);
@ -2506,7 +2493,6 @@ tputc(char *c, int len) {
return; return;
} else if(term.esc & ESC_ALTCHARSET) { } else if(term.esc & ESC_ALTCHARSET) {
tdeftran(ascii); tdeftran(ascii);
tselcs();
} else if(term.esc & ESC_TEST) { } else if(term.esc & ESC_TEST) {
tdectest(ascii); tdectest(ascii);
} else { } else {
@ -2593,7 +2579,7 @@ tputc(char *c, int len) {
/* /*
* Display control codes only if we are in graphic mode * Display control codes only if we are in graphic mode
*/ */
if(control && !(term.c.attr.mode & ATTR_GFX)) if(control && term.trantbl[term.charset] != CS_GRAPHIC0)
return; return;
if(sel.ob.x != -1 && BETWEEN(term.c.y, sel.ob.y, sel.oe.y)) if(sel.ob.x != -1 && BETWEEN(term.c.y, sel.ob.y, sel.oe.y))
selclear(NULL); selclear(NULL);

Loading…
Cancel
Save