⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vidputs.c

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 C
字号:
#ifdef lintstatic char *sccsid = "@(#)vidputs.c	4.1	(ULTRIX)	7/2/90";#endif lint#include "curses.ext"static int oldmode = 0;	/* This really should be in the struct term */char *tparm();/* nooff: modes that don't have an explicit "turn me off" capability */#define nooff	(A_PROTECT|A_INVIS|A_BOLD|A_DIM|A_BLINK|A_REVERSE)/* hilite: modes that could be faked with standout in a pinch. */#define hilite	(A_UNDERLINE|A_BOLD|A_DIM|A_BLINK|A_REVERSE)vidputs(newmode, outc)int newmode;int (*outc)();{	int curmode = oldmode;#ifdef DEBUG	if (outf) fprintf(outf, "vidputs oldmode=%o, newmode=%o\n", oldmode, newmode);#endif	if (newmode || !exit_attribute_mode) {		if (set_attributes) {			tputs(tparm(set_attributes,					newmode & A_STANDOUT,					newmode & A_UNDERLINE,					newmode & A_REVERSE,					newmode & A_BLINK,					newmode & A_DIM,					newmode & A_BOLD,					newmode & A_INVIS,					newmode & A_PROTECT,					newmode & A_ALTCHARSET),				1, outc);			curmode = newmode;		} else {			if ((oldmode&nooff) > (newmode&nooff)) {				if (exit_attribute_mode) {					tputs(exit_attribute_mode, 1, outc);				} else if (oldmode == A_UNDERLINE && exit_underline_mode) {					tputs(exit_underline_mode, 1, outc);				} else if (exit_standout_mode) {					tputs(exit_standout_mode, 1, outc);				}				curmode = oldmode = 0;			}			if ((newmode&A_ALTCHARSET) && !(oldmode&A_ALTCHARSET)) {				tputs(enter_alt_charset_mode, 1, outc);				curmode |= A_ALTCHARSET;			}			if (!(newmode&A_ALTCHARSET) && (oldmode&A_ALTCHARSET)) {				tputs(exit_alt_charset_mode, 1, outc);				curmode &= ~A_ALTCHARSET;			}			if ((newmode&A_PROTECT) && !(oldmode&A_PROTECT)) {				tputs(enter_protected_mode, 1, outc);				curmode |= A_PROTECT;			}			if ((newmode&A_INVIS) && !(oldmode&A_INVIS)) {				tputs(enter_secure_mode, 1, outc);				curmode |= A_INVIS;			}			if ((newmode&A_BOLD) && !(oldmode&A_BOLD))				if (enter_bold_mode) {					curmode |= A_BOLD;					tputs(enter_bold_mode, 1, outc);				}			if ((newmode&A_DIM) && !(oldmode&A_DIM)) 				if (enter_dim_mode) {					curmode |= A_DIM;					tputs(enter_dim_mode, 1, outc);				}			if ((newmode&A_BLINK) && !(oldmode&A_BLINK)) 				if (enter_blink_mode) {					curmode |= A_BLINK;					tputs(enter_blink_mode, 1, outc);				}			if ((newmode&A_REVERSE) && !(oldmode&A_REVERSE)) 				if (enter_reverse_mode) {					curmode |= A_REVERSE;					tputs(enter_reverse_mode, 1, outc);				}			if ((newmode&A_UNDERLINE) && !(oldmode&A_UNDERLINE)) 				if (enter_underline_mode) {					curmode |= A_UNDERLINE;					tputs(enter_underline_mode,1,outc);				}			if (!(newmode&A_UNDERLINE) && (oldmode&A_UNDERLINE)) {				tputs(exit_underline_mode, 1, outc);				curmode &= ~A_UNDERLINE;			}			if ((newmode&A_STANDOUT) && !(oldmode&A_STANDOUT)) 				if (enter_standout_mode) {					curmode |= A_STANDOUT;					tputs(enter_standout_mode,1,outc);				}			if (!(newmode&A_STANDOUT) && (oldmode&A_STANDOUT)) {				tputs(exit_standout_mode, 1, outc);				curmode &= ~A_STANDOUT;			}		}	} else {		if (exit_attribute_mode)			tputs(exit_attribute_mode, 1, outc);		else if (oldmode == A_UNDERLINE && exit_underline_mode)			tputs(exit_underline_mode, 1, outc);		else if (exit_standout_mode)			tputs(exit_standout_mode, 1, outc);		curmode = 0;	}	/*	 * If we asked for bold, say, on a terminal with only standout,	 * and we aren't already in standout, we settle for standout.	 */	if ((newmode&hilite) && curmode!=newmode && (curmode&A_STANDOUT)==0) {		tputs(enter_standout_mode, 1, outc);		curmode |= A_STANDOUT;	}	oldmode = curmode;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -