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

📄 charproc.c

📁 源码,标准c++用力
💻 C
📖 第 1 页 / 共 5 页
字号:
	XtRBoolean, (caddr_t) &defaultFALSE},{"font1", "Font1", XtRString, sizeof(String),	XtOffsetOf(XtermWidgetRec, screen.menu_font_names[fontMenu_font1]),	XtRString, (caddr_t) NULL},{"font2", "Font2", XtRString, sizeof(String),	XtOffsetOf(XtermWidgetRec, screen.menu_font_names[fontMenu_font2]),	XtRString, (caddr_t) NULL},{"font3", "Font3", XtRString, sizeof(String),	XtOffsetOf(XtermWidgetRec, screen.menu_font_names[fontMenu_font3]),	XtRString, (caddr_t) NULL},{"font4", "Font4", XtRString, sizeof(String),	XtOffsetOf(XtermWidgetRec, screen.menu_font_names[fontMenu_font4]),	XtRString, (caddr_t) NULL},{"font5", "Font5", XtRString, sizeof(String),	XtOffsetOf(XtermWidgetRec, screen.menu_font_names[fontMenu_font5]),	XtRString, (caddr_t) NULL},{"font6", "Font6", XtRString, sizeof(String),	XtOffsetOf(XtermWidgetRec, screen.menu_font_names[fontMenu_font6]),	XtRString, (caddr_t) NULL},{XtNcolor0, XtCcolor0, XtRPixel, sizeof(Pixel),	XtOffset(XtermWidget, screen.colors[COLOR_0]),	XtRString, "black" },{XtNcolor1, XtCcolor1, XtRPixel, sizeof(Pixel),	XtOffset(XtermWidget, screen.colors[COLOR_1]),	XtRString, "red"},{XtNcolor2, XtCcolor2, XtRPixel, sizeof(Pixel),	XtOffset(XtermWidget, screen.colors[COLOR_2]),	XtRString, "green"},{XtNcolor3, XtCcolor3, XtRPixel, sizeof(Pixel),	XtOffset(XtermWidget, screen.colors[COLOR_3]),	XtRString, "yellow"},{XtNcolor4, XtCcolor4, XtRPixel, sizeof(Pixel),	XtOffset(XtermWidget, screen.colors[COLOR_4]),	XtRString, "blue"},{XtNcolor5, XtCcolor5, XtRPixel, sizeof(Pixel),	XtOffset(XtermWidget, screen.colors[COLOR_5]),	XtRString, "magenta"},{XtNcolor6, XtCcolor6, XtRPixel, sizeof(Pixel),	XtOffset(XtermWidget, screen.colors[COLOR_6]),	XtRString, "cyan"},{XtNcolor7, XtCcolor7, XtRPixel, sizeof(Pixel),	XtOffset(XtermWidget, screen.colors[COLOR_7]),	XtRString, "white"},{"font7", "Font7", XtRString, sizeof(String),	XtOffset(XtermWidget, screen.menu_font_names[fontMenu_font7]),	XtRString, (caddr_t) NULL},{"dynamicColors", "DynamicColors", XtRBoolean, sizeof(Boolean),	XtOffset(XtermWidget, misc.dynamicColors),	XtRBoolean, (caddr_t) &defaultTRUE},{"cursorWarpTranslation", "CursorWarpTranslation", XtRString,	sizeof(String), XtOffset(XtermWidget, misc.cb_translation),	XtRString, (caddr_t) NULL},};static void VTClassInit();static void VTInitialize();static void VTRealize();static void VTExpose();static void VTResize();static void VTDestroy();static Boolean VTSetValues();static WidgetClassRec xtermClassRec = {  {/* core_class fields */	    /* superclass	  */	(WidgetClass) &widgetClassRec,    /* class_name	  */	"VT100",    /* widget_size	  */	sizeof(XtermWidgetRec),    /* class_initialize   */    VTClassInit,    /* class_part_initialize */ NULL,    /* class_inited       */	FALSE,    /* initialize	  */	VTInitialize,    /* initialize_hook    */    NULL,				    /* realize		  */	VTRealize,    /* actions		  */	actionsList,    /* num_actions	  */	XtNumber(actionsList),    /* resources	  */	resources,    /* num_resources	  */	XtNumber(resources),    /* xrm_class	  */	NULLQUARK,    /* compress_motion	  */	TRUE,    /* compress_exposure  */	FALSE,    /* compress_enterleave */   TRUE,    /* visible_interest	  */	FALSE,    /* destroy		  */	VTDestroy,    /* resize		  */	VTResize,    /* expose		  */	VTExpose,    /* set_values	  */	VTSetValues,    /* set_values_hook    */    NULL,    /* set_values_almost  */    NULL,    /* get_values_hook    */    NULL,    /* accept_focus	  */	NULL,    /* version            */    XtVersion,    /* callback_offsets   */    NULL,    /* tm_table           */    defaultTranslations,    /* query_geometry     */    XtInheritQueryGeometry,    /* display_accelerator*/    XtInheritDisplayAccelerator,    /* extension          */    NULL  }};WidgetClass xtermWidgetClass = (WidgetClass)&xtermClassRec;static void VTparse(){	register TScreen *screen = &term->screen;	register int *parsestate = groundtable;	register unsigned int c;	register unsigned char *cp;	register int row, col, top, bot, scstype;	extern int TrackMouse();#ifdef DEBUGGING	fprintf(stderr, "entering VTparse\n");#endif	if(setjmp(vtjmpbuf))		parsestate = groundtable;	for( ; ; ) {	        switch (parsestate[c = doinput()]) {		 case CASE_PRINT:#ifdef DEBUGGING			fprintf(stderr, "Case Print\n");#endif			/* printable characters */			top = bcnt > TEXT_BUF_SIZE ? TEXT_BUF_SIZE : bcnt;			cp = bptr;			*--bptr = c;			while(top > 0 && isprint(*cp & 0x7f)) {				top--;				bcnt--;				cp++;			}			if(screen->curss) {				dotext(screen, term->flags,				 screen->gsets[screen->curss], bptr, bptr + 1,					term->cur_foreground,					term->cur_background );				screen->curss = 0;				bptr++;			}			if(bptr < cp)				dotext(screen, term->flags,				 screen->gsets[screen->curgl], bptr, cp,						term->cur_foreground,						term->cur_background );			bptr = cp;			break;		 case CASE_GROUND_STATE:#ifdef DEBUGGING			fprintf(stderr, "Case Ground State.\n");#endif			/* exit ignore mode */			parsestate = groundtable;			break;		 case CASE_IGNORE_STATE:#ifdef DEBUGGING			fprintf(stderr, "case Ignore state.\n");#endif			/* Ies: ignore anything else */			parsestate = igntable;			break;		 case CASE_IGNORE_ESC:			/* Ign: escape */#ifdef DEBUGGING			fprintf(stderr, "case Ignore ESC\n");#endif			parsestate = iestable;			break;		 case CASE_IGNORE:			/* Ignore character */#ifdef DEBUGGING			fprintf(stderr, "case Ignore char\n");#endif			break;		 case CASE_BELL:			/* bell */#ifdef DEBUGGING			fprintf(stderr, "case bell\n");#endif			Bell();			break;		 case CASE_BS:			/* backspace */#ifdef DEBUGGING			fprintf(stderr, "case backspace\n");#endif			CursorBack(screen, 1);			break;		 case CASE_CR:			/* carriage return */#ifdef DEBUGGING			fprintf(stderr, "case carriage return\n");#endif			CarriageReturn(screen);			parsestate = groundtable;			break;		 case CASE_ESC:			/* escape */#ifdef DEBUGGING			fprintf(stderr, "case escape\n");#endif			parsestate = esctable;			break;		 case CASE_VMOT:			/*			 * form feed, line feed, vertical tab			 */#ifdef DEBUGGING			fprintf(stderr, "case form feed, line feed, vert tab\n");#endif			Index(screen, 1);			if (term->flags & LINEFEED)				CarriageReturn(screen);			if (XtAppPending(app_con) ||			    GetBytesAvailable (ConnectionNumber(screen->display)) > 0)			  xevents();			parsestate = groundtable;			break;		 case CASE_TAB:			/* tab */#ifdef DEBUGGING			fprintf(stderr, "case tab\n");#endif			screen->cur_col = TabNext(term->tabs, screen->cur_col);			if (screen->cur_col > screen->max_col)				screen->cur_col = screen->max_col;			break;		 case CASE_SI:#ifdef DEBUGGING			fprintf(stderr, "case SI\n");#endif			screen->curgl = 0;			break;		 case CASE_SO:#ifdef DEBUGGING			fprintf(stderr, "case SO\n");#endif			screen->curgl = 1;			break;		 case CASE_SCR_STATE:			/* enter scr state */#ifdef DEBUGGING			fprintf(stderr, "case scr state\n");#endif			parsestate = scrtable;			break;		 case CASE_SCS0_STATE:#ifdef DEBUGGING			fprintf(stderr, "case SCS0 state\n");#endif			/* enter scs state 0 */			scstype = 0;			parsestate = scstable;			break;		 case CASE_SCS1_STATE:#ifdef DEBUGGING			fprintf(stderr, "case SCS1 state\n");#endif			/* enter scs state 1 */			scstype = 1;			parsestate = scstable;			break;		 case CASE_SCS2_STATE:#ifdef DEBUGGING			fprintf(stderr, "case SCS2 state\n");#endif			/* enter scs state 2 */			scstype = 2;			parsestate = scstable;			break;		 case CASE_SCS3_STATE:#ifdef DEBUGGING			fprintf(stderr, "case scs3 state\n");#endif			/* enter scs state 3 */			scstype = 3;			parsestate = scstable;			break;		 case CASE_ESC_IGNORE:#ifdef DEBUGGING			fprintf(stderr, "case unknown esc sequence\n");#endif			/* unknown escape sequence */			parsestate = eigtable;			break;		 case CASE_ESC_DIGIT:#ifdef DEBUGGING			fprintf(stderr, "case esc digit\n");#endif			/* digit in csi or dec mode */			if((row = param[nparam - 1]) == DEFAULT)				row = 0;			param[nparam - 1] = 10 * row + (c - '0');			break;		 case CASE_ESC_SEMI:#ifdef DEBUGGING			fprintf(stderr, "case esc semicolon\n");#endif			/* semicolon in csi or dec mode */			param[nparam++] = DEFAULT;			break;		 case CASE_DEC_STATE:#ifdef DEBUGGING			fprintf(stderr, "case DEC mode\n");#endif			/* enter dec mode */			parsestate = dectable;			break;		 case CASE_ICH:			/* ICH */#ifdef DEBUGGING			fprintf(stderr, "case ICH\n");#endif			if((row = param[0]) < 1)				row = 1;			InsertChar(screen, row);			parsestate = groundtable;			break;		 case CASE_CUU:#ifdef DEBUGGING			fprintf(stderr, "case CUU\n");#endif			/* CUU */			if((row = param[0]) < 1)				row = 1;			CursorUp(screen, row);			parsestate = groundtable;			break;		 case CASE_CUD:#ifdef DEBUGGING			fprintf(stderr, "case CUD\n");#endif			/* CUD */			if((row = param[0]) < 1)				row = 1;			CursorDown(screen, row);			parsestate = groundtable;			break;		 case CASE_CUF:#ifdef DEBUGGING			fprintf(stderr, "case CUF\n");#endif			/* CUF */			if((row = param[0]) < 1)				row = 1;			CursorForward(screen, row);			parsestate = groundtable;			break;		 case CASE_CUB:#ifdef DEBUGGING			fprintf(stderr, "case CUB\n");#endif			/* CUB */			if((row = param[0]) < 1)				row = 1;			CursorBack(screen, row);			parsestate = groundtable;			break;		 case CASE_CUP:#ifdef DEBUGGING			fprintf(stderr, "case CUP / HVP\n");#endif			/* CUP | HVP */			if((row = param[0]) < 1)				row = 1;			if(nparam < 2 || (col = param[1]) < 1)				col = 1;			CursorSet(screen, row-1, col-1, term->flags);			parsestate = groundtable;			break;		 case CASE_ED:#ifdef DEBUGGING			fprintf(stderr, "case ED\n");#endif			/* ED */			switch (param[0]) {			 case DEFAULT:			 case 0:				ClearBelow(screen);				break;			 case 1:				ClearAbove(screen);				break;			 case 2:				ClearScreen(screen);				break;			}			parsestate = groundtable;			break;		 case CASE_EL:#ifdef DEBUGGING			fprintf(stderr, "case EL\n");#endif			/* EL */			switch (param[0]) {			 case DEFAULT:			 case 0:				ClearRight(screen);				break;			 case 1:				ClearLeft(screen);				break;			 case 2:				ClearLine(screen);				break;			}			parsestate = groundtable;			break;		 case CASE_IL:#ifdef DEBUGGING			fprintf(stderr, "case IL\n");#endif			/* IL */			if((row = param[0]) < 1)				row = 1;			InsertLine(screen, row);			parsestate = groundtable;			break;		 case CASE_DL:#ifdef DEBUGGING			fprintf(stderr, "case DL\n");#endif			/* DL */			if((row = param[0]) < 1)				row = 1;			DeleteLine(screen, row);			parsestate = groundtable;			break;		 case CASE_DCH:#ifdef DEBUGGING			fprintf(stderr, "case DCH\n");#endif			/* DCH */			if((row = param[0]) < 1)				row = 1;			DeleteChar(screen, row);			parsestate = groundtable;			break;		 case CASE_TRACK_MOUSE:#ifdef DEBUGGING			fprintf(stderr, "case track mouse\n");#endif		 	/* Track mouse as long as in window and between			   specified rows */			TrackMouse(param[0], param[2]-1, param[1]-1,			 param[3]-1, param[4]-2);			break;		 case CASE_DECID:#ifdef DEBUGGING			fprintf(stderr, "case default DEC ID\n");#endif			param[0] = -1;		/* Default ID parameter */			/* Fall through into ... */		 case CASE_DA1:#ifdef DEBUGGING			fprintf(stderr, "case DA1\n");#endif			/* DA1 */			if (param[0] <= 0) {	/* less than means DEFAULT */				reply.a_type   = CSI;				reply.a_pintro = '?';				reply.a_nparam = 2;				reply.a_param[0] = 1;		/* VT102 */				reply.a_param[1] = 2;		/* VT102 */				reply.a_inters = 0;

⌨️ 快捷键说明

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