Annotation of researchv10no/ncurses/screen/vidputs.c, revision 1.1.1.1

1.1       root        1: /*     @(#) vidputs.c: 1.1 10/15/83    (1.8    10/27/82)       */
                      2: #include "curses.ext"
                      3: 
                      4: static int oldmode = 0;        /* This really should be in the struct term */
                      5: char *tparm();
                      6: 
                      7: /* nooff: modes that don't have an explicit "turn me off" capability */
                      8: #define nooff  (A_PROTECT|A_INVIS|A_BOLD|A_DIM|A_BLINK|A_REVERSE)
                      9: /* hilite: modes that could be faked with standout in a pinch. */
                     10: #define hilite (A_UNDERLINE|A_BOLD|A_DIM|A_BLINK|A_REVERSE)
                     11: 
                     12: vidputs(newmode, outc)
                     13: int newmode;
                     14: int (*outc)();
                     15: {
                     16:        int curmode = oldmode;
                     17: 
                     18: #ifdef DEBUG
                     19:        if (outf) fprintf(outf, "vidputs oldmode=%o, newmode=%o\n", oldmode, newmode);
                     20: #endif
                     21:        if (newmode || !exit_attribute_mode) {
                     22:                if (set_attributes) {
                     23:                        tputs(tparm(set_attributes,
                     24:                                        newmode & A_STANDOUT,
                     25:                                        newmode & A_UNDERLINE,
                     26:                                        newmode & A_REVERSE,
                     27:                                        newmode & A_BLINK,
                     28:                                        newmode & A_DIM,
                     29:                                        newmode & A_BOLD,
                     30:                                        newmode & A_INVIS,
                     31:                                        newmode & A_PROTECT,
                     32:                                        newmode & A_ALTCHARSET),
                     33:                                1, outc);
                     34:                        curmode = newmode;
                     35:                } else {
                     36:                        if ((oldmode&nooff) > (newmode&nooff)) {
                     37:                                if (exit_attribute_mode) {
                     38:                                        tputs(exit_attribute_mode, 1, outc);
                     39:                                } else if (oldmode == A_UNDERLINE && exit_underline_mode) {
                     40:                                        tputs(exit_underline_mode, 1, outc);
                     41:                                } else if (exit_standout_mode) {
                     42:                                        tputs(exit_standout_mode, 1, outc);
                     43:                                }
                     44:                                curmode = oldmode = 0;
                     45:                        }
                     46:                        if ((newmode&A_ALTCHARSET) && !(oldmode&A_ALTCHARSET)) {
                     47:                                tputs(enter_alt_charset_mode, 1, outc);
                     48:                                curmode |= A_ALTCHARSET;
                     49:                        }
                     50:                        if (!(newmode&A_ALTCHARSET) && (oldmode&A_ALTCHARSET)) {
                     51:                                tputs(exit_alt_charset_mode, 1, outc);
                     52:                                curmode &= ~A_ALTCHARSET;
                     53:                        }
                     54:                        if ((newmode&A_PROTECT) && !(oldmode&A_PROTECT)) {
                     55:                                tputs(enter_protected_mode, 1, outc);
                     56:                                curmode |= A_PROTECT;
                     57:                        }
                     58:                        if ((newmode&A_INVIS) && !(oldmode&A_INVIS)) {
                     59:                                tputs(enter_secure_mode, 1, outc);
                     60:                                curmode |= A_INVIS;
                     61:                        }
                     62:                        if ((newmode&A_BOLD) && !(oldmode&A_BOLD))
                     63:                                if (enter_bold_mode) {
                     64:                                        curmode |= A_BOLD;
                     65:                                        tputs(enter_bold_mode, 1, outc);
                     66:                                }
                     67:                        if ((newmode&A_DIM) && !(oldmode&A_DIM)) 
                     68:                                if (enter_dim_mode) {
                     69:                                        curmode |= A_DIM;
                     70:                                        tputs(enter_dim_mode, 1, outc);
                     71:                                }
                     72:                        if ((newmode&A_BLINK) && !(oldmode&A_BLINK)) 
                     73:                                if (enter_blink_mode) {
                     74:                                        curmode |= A_BLINK;
                     75:                                        tputs(enter_blink_mode, 1, outc);
                     76:                                }
                     77:                        if ((newmode&A_REVERSE) && !(oldmode&A_REVERSE)) 
                     78:                                if (enter_reverse_mode) {
                     79:                                        curmode |= A_REVERSE;
                     80:                                        tputs(enter_reverse_mode, 1, outc);
                     81:                                }
                     82:                        if ((newmode&A_UNDERLINE) && !(oldmode&A_UNDERLINE)) 
                     83:                                if (enter_underline_mode) {
                     84:                                        curmode |= A_UNDERLINE;
                     85:                                        tputs(enter_underline_mode,1,outc);
                     86:                                }
                     87:                        if (!(newmode&A_UNDERLINE) && (oldmode&A_UNDERLINE)) {
                     88:                                tputs(exit_underline_mode, 1, outc);
                     89:                                curmode &= ~A_UNDERLINE;
                     90:                        }
                     91:                        if ((newmode&A_STANDOUT) && !(oldmode&A_STANDOUT)) 
                     92:                                if (enter_standout_mode) {
                     93:                                        curmode |= A_STANDOUT;
                     94:                                        tputs(enter_standout_mode,1,outc);
                     95:                                }
                     96:                        if (!(newmode&A_STANDOUT) && (oldmode&A_STANDOUT)) {
                     97:                                tputs(exit_standout_mode, 1, outc);
                     98:                                curmode &= ~A_STANDOUT;
                     99:                        }
                    100:                }
                    101:        } else {
                    102:                if (exit_attribute_mode)
                    103:                        tputs(exit_attribute_mode, 1, outc);
                    104:                else if (oldmode == A_UNDERLINE && exit_underline_mode)
                    105:                        tputs(exit_underline_mode, 1, outc);
                    106:                else if (exit_standout_mode)
                    107:                        tputs(exit_standout_mode, 1, outc);
                    108:                curmode = 0;
                    109:        }
                    110:        /*
                    111:         * If we asked for bold, say, on a terminal with only standout,
                    112:         * and we aren't already in standout, we settle for standout.
                    113:         */
                    114:        if ((newmode&hilite) && curmode!=newmode && (curmode&A_STANDOUT)==0) {
                    115:                tputs(enter_standout_mode, 1, outc);
                    116:                curmode |= A_STANDOUT;
                    117:        }
                    118:        oldmode = curmode;
                    119: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.