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

📄 charproc.c

📁 源码,标准c++用力
💻 C
📖 第 1 页 / 共 5 页
字号:
			update_marginbell();			break;		case 45:		/* reverse wraparound	*/			(*func)(&termw->flags, REVERSEWRAP);			update_reversewrap();			break;#ifdef ALLOWLOGGING		case 46:		/* logging		*/#ifdef ALLOWLOGFILEONOFF			/*			 * if this feature is enabled, logging may be 			 * enabled and disabled via escape sequences.			 */			if(func == bitset)				StartLog(screen);			else				CloseLog(screen);#else			Bell();			Bell();#endif /* ALLOWLOGFILEONOFF */			break;#endif		case 47:		/* alternate buffer */			if (!termw->misc.titeInhibit) {			    if(func == bitset)				ToAlternate(screen);			    else				FromAlternate(screen);			}			break;		case 1000:		/* xterm bogus sequence		*/			if(func == bitset)				screen->send_mouse_pos = 2;			else				screen->send_mouse_pos = 0;			break;		case 1001:		/* xterm sequence w/hilite tracking */			if(func == bitset)				screen->send_mouse_pos = 3;			else				screen->send_mouse_pos = 0;			break;		}	}#ifdef DEBUGGING	fprintf(stderr, "Leaving dpmodes()\n");#endif}/* * process xterm private modes save */savemodes(termw)    XtermWidget termw;{	register TScreen	*screen	= &termw->screen;	register int i;#ifdef DEBUGGING	fprintf(stderr, "entering savemodes\n");#endif	for (i = 0; i < nparam; i++) {		switch (param[i]) {		case 1:			/* DECCKM			*/			screen->save_modes[0] = termw->keyboard.flags &			 CURSOR_APL;			break;		case 3:			/* DECCOLM			*/			if(screen->c132)			    screen->save_modes[1] = termw->flags & IN132COLUMNS;			break;		case 4:			/* DECSCLM (slow scroll)	*/			screen->save_modes[2] = termw->flags & SMOOTHSCROLL;			break;		case 5:			/* DECSCNM			*/			screen->save_modes[3] = termw->flags & REVERSE_VIDEO;			break;		case 6:			/* DECOM			*/			screen->save_modes[4] = termw->flags & ORIGIN;			break;		case 7:			/* DECAWM			*/			screen->save_modes[5] = termw->flags & WRAPAROUND;			break;		case 8:			/* DECARM			*/			/* ignore autorepeat */			break;		case 9:			/* mouse bogus sequence */			screen->save_modes[7] = screen->send_mouse_pos;			break;		case 40:		/* 132 column mode		*/			screen->save_modes[8] = screen->c132;			break;		case 41:		/* curses hack			*/			screen->save_modes[9] = screen->curses;			break;		case 44:		/* margin bell			*/			screen->save_modes[12] = screen->marginbell;			break;		case 45:		/* reverse wraparound	*/			screen->save_modes[13] = termw->flags & REVERSEWRAP;			break;#ifdef ALLOWLOGGING		case 46:		/* logging		*/			screen->save_modes[14] = screen->logging;			break;#endif		case 47:		/* alternate buffer		*/			screen->save_modes[15] = screen->alternate;			break;		case 1000:		/* mouse bogus sequence		*/		case 1001:			screen->save_modes[7] = screen->send_mouse_pos;			break;		}	}}/* * process xterm private modes restore */restoremodes(termw)    XtermWidget termw;{	register TScreen	*screen	= &termw->screen;	register int i, j;#ifdef DEBUGGING	fprintf(stderr, "entering restoremodes\n");#endif	for (i = 0; i < nparam; i++) {		switch (param[i]) {		case 1:			/* DECCKM			*/			termw->keyboard.flags &= ~CURSOR_APL;			termw->keyboard.flags |= screen->save_modes[0] &			 CURSOR_APL;			update_appcursor();			break;		case 3:			/* DECCOLM			*/			if(screen->c132) {				ClearScreen(screen);				CursorSet(screen, 0, 0, termw->flags);				if((j = (screen->save_modes[1] & IN132COLUMNS)				 ? 132 : 80) != ((termw->flags & IN132COLUMNS)				 ? 132 : 80) || j != screen->max_col + 1) {				        Dimension replyWidth, replyHeight;					XtGeometryResult status;					status = XtMakeResizeRequest (					    (Widget) termw,					    (Dimension) FontWidth(screen) * j 						+ 2*screen->border						+ screen->scrollbar,					    (Dimension) FontHeight(screen)						* (screen->max_row + 1)						+ 2*screen->border,					    &replyWidth, &replyHeight);					if (status == XtGeometryYes ||					    status == XtGeometryDone) {					    ScreenResize (&termw->screen,							  replyWidth,							  replyHeight,							  &termw->flags);					}				}				termw->flags &= ~IN132COLUMNS;				termw->flags |= screen->save_modes[1] &				 IN132COLUMNS;			}			break;		case 4:			/* DECSCLM (slow scroll)	*/			if (screen->save_modes[2] & SMOOTHSCROLL) {				screen->jumpscroll = 0;				if (screen->scroll_amt)					FlushScroll(screen);			} else				screen->jumpscroll = 1;			termw->flags &= ~SMOOTHSCROLL;			termw->flags |= screen->save_modes[2] & SMOOTHSCROLL;			update_jumpscroll();			break;		case 5:			/* DECSCNM			*/			if((screen->save_modes[3] ^ termw->flags) & REVERSE_VIDEO) {				termw->flags &= ~REVERSE_VIDEO;				termw->flags |= screen->save_modes[3] & REVERSE_VIDEO;				ReverseVideo(termw);				/* update_reversevideo done in RevVid */			}			break;		case 6:			/* DECOM			*/			termw->flags &= ~ORIGIN;			termw->flags |= screen->save_modes[4] & ORIGIN;			CursorSet(screen, 0, 0, termw->flags);			break;		case 7:			/* DECAWM			*/			termw->flags &= ~WRAPAROUND;			termw->flags |= screen->save_modes[5] & WRAPAROUND;			update_autowrap();			break;		case 8:			/* DECARM			*/			/* ignore autorepeat */			break;		case 9:			/* MIT bogus sequence		*/			screen->send_mouse_pos = screen->save_modes[7];			break;		case 40:		/* 132 column mode		*/			screen->c132 = screen->save_modes[8];			update_allow132();			break;		case 41:		/* curses hack			*/			screen->curses = screen->save_modes[9];			update_cursesemul();			break;		case 44:		/* margin bell			*/			if(!(screen->marginbell = screen->save_modes[12]))				screen->bellarmed = -1;			update_marginbell();			break;		case 45:		/* reverse wraparound	*/			termw->flags &= ~REVERSEWRAP;			termw->flags |= screen->save_modes[13] & REVERSEWRAP;			update_reversewrap();			break;#ifdef ALLOWLOGGING		case 46:		/* logging		*/#ifdef ALLOWLOGFILEONOFF			if(screen->save_modes[14])				StartLog(screen);			else				CloseLog(screen);#endif /* ALLOWLOGFILEONOFF */			/* update_logging done by StartLog and CloseLog */			break;#endif		case 47:		/* alternate buffer */			if (!termw->misc.titeInhibit) {			    if(screen->save_modes[15])				ToAlternate(screen);			    else				FromAlternate(screen);			    /* update_altscreen done by ToAlt and FromAlt */			}			break;		case 1000:		/* mouse bogus sequence		*/		case 1001:			screen->send_mouse_pos = screen->save_modes[7];			break;		}	}}/* * set a bit in a word given a pointer to the word and a mask. */static void bitset(p, mask)    unsigned *p;    int mask;{	*p |= mask;}/* * clear a bit in a word given a pointer to the word and a mask. */static void bitclr(p, mask)    unsigned *p;    int mask;{	*p &= ~mask;}unparseseq(ap, fd)    register ANSI *ap;    int fd;{	register int	c;	register int	i;	register int	inters;#ifdef DEBUGGING	fprintf(stderr, "entering unparseseq()\n");#endif	c = ap->a_type;	if (c>=0x80 && c<=0x9F) {		unparseputc(ESC, fd);		c -= 0x40;	}	unparseputc(c, fd);	c = ap->a_type;	if (c==ESC || c==DCS || c==CSI || c==OSC || c==PM || c==APC) {		if (ap->a_pintro != 0)			unparseputc((char) ap->a_pintro, fd);		for (i=0; i<ap->a_nparam; ++i) {			if (i != 0)				unparseputc(';', fd);			unparseputn((unsigned int) ap->a_param[i], fd);		}		inters = ap->a_inters;		for (i=3; i>=0; --i) {			c = (inters >> (8*i)) & 0xff;			if (c != 0)				unparseputc(c, fd);		}		unparseputc((char) ap->a_final, fd);	}}unparseputn(n, fd)unsigned int	n;int fd;{	unsigned int	q;#ifdef DEBUGGING	fprintf(stderr, "entering unparseputn()\n");#endif	q = n/10;	if (q != 0)		unparseputn(q, fd);	unparseputc((char) ('0' + (n%10)), fd);}unparseputc(c, fd)char c;int fd;{	char	buf[2];	register i = 1;	extern XtermWidget term;#ifdef DEBUGGING	fprintf(stderr, "entering unparseputc()\n");#endif	if((buf[0] = c) == '\r' && (term->flags & LINEFEED)) {		buf[1] = '\n';		i++;	}	v_write(fd, buf, i);}unparsefputs (s, fd)    register char *s;    int fd;{    if (s) {	while (*s) unparseputc (*s++, fd);    }}static void SwitchBufs();ToAlternate(screen)register TScreen *screen;{	extern ScrnBuf Allocate();#ifdef DEBUGGING	fprintf(stderr, "entering ToAlternate\n");#endif	if(screen->alternate)		return;	if(!screen->altbuf)		screen->altbuf = Allocate(screen->max_row + 1, screen->max_col		 + 1, &screen->abuf_address);	SwitchBufs(screen);	screen->alternate = TRUE;	update_altscreen();}FromAlternate(screen)register TScreen *screen;{	if(!screen->alternate)		return;	screen->alternate = FALSE;	SwitchBufs(screen);	update_altscreen();}static voidSwitchBufs(screen)    register TScreen *screen;{	register int rows, top;#ifdef DEBUGGING	fprintf(stderr, "entering SwitchBufs\n");#endif	if(screen->cursor_state)		HideCursor();	rows = screen->max_row + 1;	SwitchBufPtrs(screen);	TrackText(0, 0, 0, 0);	/* remove any highlighting */	if((top = -screen->topline) <= screen->max_row) {		if(screen->scroll_amt)			FlushScroll(screen);		if(top == 0)			XClearWindow(screen->display, TextWindow(screen));		else			XClearArea(			    screen->display,			    TextWindow(screen),			    (int) screen->border + screen->scrollbar,			    (int) top * FontHeight(screen) + screen->border,			    (unsigned) Width(screen),			    (unsigned) (screen->max_row - top + 1)				* FontHeight(screen),			    FALSE);	}	ScrnRefresh(screen, 0, 0, rows, screen->max_col + 1, False);}/* swap buffer line pointers between alt and regular screens */SwitchBufPtrs(screen)    register TScreen *screen;{    register int rows = screen->max_row + 1;    char *save [4 * MAX_ROWS];#ifdef DEBUGGING	fprintf(stderr, "entering SwitchBufPtrs\n");#endif    bcopy((char *)screen->buf, (char *)save, 4 * sizeof(char *) * rows);    bcopy((char *)screen->altbuf, (char *)screen->buf,	  4 * sizeof(char *) * rows);    bcopy((char *)save, (char *)screen->altbuf, 4 * sizeof(char *) * rows);}VTRun(){	register TScreen *screen = &term->screen;	register int i;	#ifdef DEBUGGING	fprintf(stderr, "entering VTRun()\n");#endif	if (!screen->Vshow) {	    set_vt_visibility (TRUE);	} 	update_vttekmode();	update_vtshow();	update_tekshow();	set_vthide_sensitivity();	if (screen->allbuf == NULL) VTallocbuf ();	screen->cursor_state = OFF;	screen->cursor_set = ON;	bcnt = 0;	bptr = buffer;	while(Tpushb > Tpushback) {		*bptr++ = *--Tpushb;		bcnt++;	}	bcnt += (i = Tbcnt);	for( ; i > 0 ; i--)		*bptr++ = *Tbptr++;	bptr = buffer;	if(!setjmp(VTend))		VTparse();	HideCursor();	screen->cursor_set = OFF;}/*ARGSUSED*/static void VTExpose(w, event, region)    Widget w;    XEvent *event;    Region region;{	register TScreen *screen = &term->screen;#ifdef DEBUG	if(debug)		fputs("Expose\n", stderr);#endif	/* DEBUG */	if (event->type == Expose)		HandleExposure (screen, event);}static void VTGraphicsOrNoExpose (event)    XEvent *event;{	register TScreen *screen = &term->screen;#ifdef DEBUGGING	fprintf(stderr, "entering VTGraphicsOrNoExpose\n");#endif	if (screen->incopy <= 0) {		screen->incopy = 1;		if (screen->scrolls > 0)			screen->scrolls--;	}	if (event->type == GraphicsExpose)	  if (Handle

⌨️ 快捷键说明

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