Exemple #1
0
/* interprets a 'set attribute' (SGR) CSI escape sequence */
static void interpret_csi_SGR(RoteTerm *rt, int param[], int pcount) {
    int i;

    if (pcount == 0) {
        /* special case: reset attributes */
        rt->curattr = 0x70;
        return;
    }

    for (i = 0; i < pcount; i++) {

// From http://vt100.net/docs/vt510-rm/SGR table 5-16
// 0 	All attributes off
// 1 	Bold
// 4 	Underline
// 5 	Blinking
// 7 	Negative image
// 8 	Invisible image
// 10 	The ASCII character set is the current 7-bit
//	display character set (default) - SCO Console only.
// 11 	Map Hex 00-7F of the PC character set codes
//	to the current 7-bit display character set
//	- SCO Console only.
// 12 	Map Hex 80-FF of the current character set to
//	the current 7-bit display character set - SCO
//	Console only.
// 22 	Bold off
// 24 	Underline off
// 25 	Blinking off
// 27 	Negative image off
// 28 	Invisible image off

        if (param[i] == 0) rt->curattr = 0x70;
        else if (param[i] == 1 || param[i] == 2 || param[i] == 4)  /* set bold */
            ROTE_ATTR_MOD_BOLD(rt->curattr,1);
        else if (param[i] == 5)  /* set blink */
            ROTE_ATTR_MOD_BLINK(rt->curattr,1);
        else if (param[i] == 7 || param[i] == 27) { /* reverse video */
            int fg = ROTE_ATTR_FG(rt->curattr);
            int bg = ROTE_ATTR_BG(rt->curattr);
            ROTE_ATTR_MOD_FG(rt->curattr, bg);
            ROTE_ATTR_MOD_BG(rt->curattr, fg);
        }
        else if (param[i] == 8) rt->curattr = 0x0;    /* invisible */
        else if (param[i] == 22 || param[i] == 24) /* bold off */
            ROTE_ATTR_MOD_BOLD(rt->curattr,0);
        else if (param[i] == 25) /* blink off */
            ROTE_ATTR_MOD_BLINK(rt->curattr,0);
        else if (param[i] == 28) /* invisible off */
            rt->curattr = 0x70;
        else if (param[i] >= 30 && param[i] <= 37)    /* set fg */
            ROTE_ATTR_MOD_FG(rt->curattr, param[i] - 30);
        else if (param[i] >= 40 && param[i] <= 47)    /* set bg */
            ROTE_ATTR_MOD_BG(rt->curattr, param[i] - 40);
        else if (param[i] == 39)  /* reset foreground to default */
            ROTE_ATTR_MOD_FG(rt->curattr, 7);
        else if (param[i] == 49)  /* reset background to default */
            ROTE_ATTR_MOD_BG(rt->curattr, 0);
    }
}
Exemple #2
0
static void default_cur_set_attr(WINDOW *win, unsigned char attr) {
   int cp = ROTE_ATTR_BG(attr) * 8 + 7 - ROTE_ATTR_FG(attr);
   if (!cp) wattrset(win, A_NORMAL);
   else     wattrset(win, COLOR_PAIR(cp));

   if (ROTE_ATTR_BOLD(attr))     wattron(win, A_BOLD);
   if (ROTE_ATTR_BLINK(attr))    wattron(win, A_BLINK);
}