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

📄 wrdt_wcon.c

📁 MIDI解码程序(用VC编写)
💻 C
📖 第 1 页 / 共 2 页
字号:
				putstringn(str,p-str);					str = p;				break;			}		}		if(n_max == 2 && (*p == 'H' || *p == 'f')){			esc_directcursoraddressing(n[1],n[2]);			p++;			str = p;			break;		}		if((n_max == 1 && *p == 'A') || (n_max == 0 && *p == 'A')){			if(n_max == 0)				n[1] = 1;			esc_cursorup(n[1]);			p++;			str = p;			break;		}		if((n_max == 1 && *p == 'B') || (n_max == 0 && *p == 'B')){			if(n_max == 0)				n[1] = 1;			esc_cursordown(n[1]);			p++;			str = p;			break;		}		if((n_max == 1 && *p == 'C') || (n_max == 0 && *p == 'C')){			if(n_max == 0)				n[1] = 1;			esc_cursorforward(n[1]);			p++;			str = p;			break;		}		if((n_max == 1 && *p == 'D') || (n_max == 0 && *p == 'D')){			if(n_max == 0)				n[1] = 1;			esc_cursorbackward(n[1]);			p++;			str = p;			break;		}		if((n_max == 1 && *p == 'J') || (n_max == 0 && *p == 'J')){			if(n_max == 0 || n[1] == 0)				esc_clearfromcursortoendofscreen();			else if(n[1] == 1)				esc_clearfrombeginningofscreentocursor();			else if(n[1] == 2)				esc_clearscreen();			p++;			str = p;			break;		}		if((n_max == 1 && *p == 'K') || (n_max == 0 && *p == 'K')){			if(n_max == 0 || n[1] == 0)				esc_clearfromcursortoendofline();			else if(n[1] == 1)				esc_clearfrombeginningoflinetocursor();			else if(n[1] == 2)				esc_clearentirelinecontainingcursor();			p++;			str = p;			break;		}		if((n_max == 1 && *p == 'M') || (n_max == 0 && *p == 'M')){			if(n_max == 0)				n[1] = 1;			esc_deleteline(n[1]);			p++;			str = p;			break;		}		if((n_max == 1 && *p == 'L') || (n_max == 0 && *p == 'L')){			if(n_max == 0)				n[1] = 1;			esc_insertline(n[1]);			p++;			str = p;			break;		}		if(n_max == 0 && *p == 's'){			esc_savecursorposition();			p++;			str = p;			break;		}		if(n_max == 0 && *p == 'u'){			esc_setcursorposition();			p++;			str = p;			break;		}		if(!strncmp(p,">5l",3)){			esc_enablecursordisplay();			p += 3;			str = p;			break;		}		if(!strncmp(p,">5h",3)){			esc_disablecursordisplay();			p += 3;			str = p;			break;		}		if(!strncmp(p,">1h",3)){		/* Enabel bottom line */			p += 3;			str = p;			break;		}		if(!strncmp(p,">1l",3)){		/* Disabel bottom line */			p += 3;			str = p;			break;		}		if(!strncmp(p,">3h",3)){		/* Select 31 line mode */			p += 3;			str = p;			break;		}		if(!strncmp(p,">3l",3)){		/* Select 25 line mode */			p += 3;			str = p;			break;		}		if(*p == 'm'){			int i;			for(i=1;i<=n_max;i++)				esc_characterattribute(n[i]);			p++;			str = p;			break;		}		p = oldp;		putstringn(p,1);		p++;		str = p;		break;	  }	}  }}/*static void borlandc_esc(char *str){	if(!strncmp(str,"0J",2)){		int oldx = wherex(), oldy = wherey();		int y;		clreol();		for(y=oldy+1;y<=text_info.winbottom;y++){			gotoxy(1,y);			clreol();		}		gotoxy(oldx,oldy);		return;	}	if(!strncmp(str,"1J",2)){		int oldx = wherex(), oldy = wherey();		int y;		for(y=oldy;y<=text_info.winbottom;y++){			gotoxy(1,y);			clreol();		}		gotoxy(oldx,oldy);		return;	}	if(!strncmp(str,"2J",2)){		clrscr();		return;	}}*/#ifdef __OLD_BORLANDC__static void borlandc_esc(char *str){	char local[201];	local[0] = '\033';	local[1] = '[';	strncpy(local+2,str,sizeof(local)-3);	local[200] = '\0';	putstring_with_esc(local);}#endif /* __OLD_BORLANDC__ */static int wrdt_open(char *dummy){      wrdt.opened = 1;    inkey_flag = 0;#ifdef __OLD_BORLANDC__//	highvideo();	borlandc_con_init();	esc_disablecursordisplay();#endif    return 0;}static void wrdt_update_events(void){}static void wrdt_end(void){#ifdef USE_ESC    printf("\033[0m\n");/*Restore Attributes*/#else	borlandc_con_reset();	esc_enablecursordisplay();#endif#ifdef DEBUG1	printf("[wrdt_end]");#endif    inkey_flag = 0;}static void wrdt_close(void){    wrdt.opened = 0;    inkey_flag = 0;}static char *wrd_event2string(int id){    char *name;    name = event2string(id);    if(name != NULL)	return name + 1;    return "";}static void wrdt_apply(int cmd, int wrd_argc, int wrd_args[]){    char *p;    char *text;    int i, len;    static txtclr_preserve=0;    switch(cmd)    {      case WRD_LYRIC:	p = wrd_event2string(wrd_args[0]);	len = strlen(p);	text = (char *)new_segment(&tmpbuffer, SAFE_CONVERT_LENGTH(len));	/*This must be not good thing,but as far as I know no wrd file 	  written in EUC-JP code found*///	code_convert(p, text, SAFE_CONVERT_LENGTH(len), "SJIS", "JISK");//	code_convert(p, text, SAFE_CONVERT_LENGTH(len), "SJIS", "NOCV");	strcpy(text,p);//	printf("%s",text);//	cprintf("%s",text);	putstring_with_esc(text);	fflush(stdout);	reuse_mblock(&tmpbuffer);	break;      case WRD_NL: /* Newline (Ignored) */	putchar('\n');	break;      case WRD_COLOR:/*Compatibility Hack,This remaps color(17-29 color seems to be ignored in kterm)*/#ifdef USE_ESC	txtclr_preserve=COLOR_REMAP(wrd_args[0]);	printf("\033[%dm", txtclr_preserve);#else	esc_characterattribute(wrd_args[0]);#endif#ifdef DEBUG1	printf("[wrd_color]");#endif	break;      case WRD_END: /* Never call */	break;      case WRD_ESC:#ifdef USE_ESC	printf("\033[%s", wrd_event2string(wrd_args[0]));#else	borlandc_esc(wrd_event2string(wrd_args[0]));#endif#ifdef DEBUG1	printf("[wrd_esc]");#endif	break;      case WRD_EXEC:	/*I don't spaun another program*/	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,		  "@EXEC(%s)", wrd_event2string(wrd_args[0]));	break;      case WRD_FADE:	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,		  "@FADE(%d,%d,%d)", wrd_args[0], wrd_args[1], wrd_args[2]);	break;      case WRD_FADESTEP:	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,		  "@FADESTEP(%d/%d)", wrd_args[0], WRD_MAXFADESTEP);	break;      case WRD_GCIRCLE:	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,		  "@GCIRCLE(%d,%d,%d,%d,%d,%d)",		  wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3],		  wrd_args[4], wrd_args[5]);	break;      case WRD_GCLS:	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,		  "@GCLS(%d)", wrd_args[0]);	break;      case WRD_GINIT:	ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@GINIT()");	break;      case WRD_GLINE:	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,		  "@GLINE(%d,%d,%d,%d,%d,%d,%d)",	       wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4],	       wrd_args[5], wrd_args[6]);	fflush(stdout);	break;      case WRD_GMODE:	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,		  "@GMODE(%d)", wrd_args[0]);	break;      case WRD_GMOVE:	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,		  "@GMOVE(%d,%d,%d,%d,%d,%d,%d)",	       wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4],	       wrd_args[5], wrd_args[6], wrd_args[7], wrd_args[8]);	break;      case WRD_GON:	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,		  "@GON(%d)", wrd_args[0]);	break;      case WRD_GSCREEN:	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,		  "@GSCREEN(%d,%d)", wrd_args[0], wrd_args[1]);	break;      case WRD_INKEY:	inkey_flag = 1;	ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@INKEY - begin");	break;      case WRD_OUTKEY:	inkey_flag = 0;	ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@INKEY - end");	break;      case WRD_LOCATE:#ifdef USE_ESC	printf("\033[%d;%dH", wrd_args[1], wrd_args[0]);#else	{	int x = wrd_args[0], y = wrd_args[1];	if(x<1) x = 1;	if(y<1) y = 1;	gotoxy(x, y);	}#endif#ifdef DEBUG1	printf("[wrd_locate]");#endif	break;      case WRD_LOOP: /* Never call */	break;      case WRD_MAG:	p = (char *)new_segment(&tmpbuffer, MIN_MBLOCK_SIZE);	strcpy(p, "@MAG(");	strcat(p, wrd_event2string(wrd_args[0]));	strcat(p, ",");	for(i = 1; i < 3; i++)	{	    if(wrd_args[i] == WRD_NOARG)		strcat(p, "*,");	    else		sprintf(p + strlen(p), "%d,", wrd_args[i]);	}	sprintf(p + strlen(p), "%d,%d)", wrd_args[3], wrd_args[4]);	ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "%s", p);	reuse_mblock(&tmpbuffer);	break;      case WRD_MIDI: /* Never call */	break;      case WRD_OFFSET: /* Never call */	break;      case WRD_PAL:	p = (char *)new_segment(&tmpbuffer, MIN_MBLOCK_SIZE);	sprintf(p, "@PAL(%03x", wrd_args[0]);	for(i = 1; i < 17; i++)	    sprintf(p + strlen(p), ",%03x", wrd_args[i]);	strcat(p, ")");	ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "%s", p);	reuse_mblock(&tmpbuffer);	break;      case WRD_PALCHG:	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,		  "@PALCHG(%s)", wrd_event2string(wrd_args[0]));	break;      case WRD_PALREV:	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,		  "@PALREV(%d)", wrd_args[0]);	break;      case WRD_PATH:	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,		  "@PATH(%s)", wrd_event2string(wrd_args[0]));	break;      case WRD_PLOAD:	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,		  "@PLOAD(%s)", wrd_event2string(wrd_args[0]));	break;      case WRD_REM:	p = wrd_event2string(wrd_args[0]);	len = strlen(p);	text = (char *)new_segment(&tmpbuffer, SAFE_CONVERT_LENGTH(len));	code_convert(p, text, SAFE_CONVERT_LENGTH(len), NULL, NULL);	ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@REM %s", text);	reuse_mblock(&tmpbuffer);	break;      case WRD_REMARK:	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,		  "@REMARK(%s)", wrd_event2string(wrd_args[0]));	break;      case WRD_REST: /* Never call */	break;      case WRD_SCREEN: /* Not supported */	break;      case WRD_SCROLL:	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,		  "@SCROLL(%d,%d,%d,%d,%d,%d,%d)",		  wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3],		  wrd_args[4], wrd_args[5], wrd_args[6]);	break;      case WRD_STARTUP:	inkey_flag = 0;	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,		  "@STARTUP(%d)", wrd_args[0]);#ifdef USE_ESC	printf("\033[0m\033[H\033[J");#else	esc_clearscreen();#endif#ifdef DEBUG1	printf("[wrd_startup]");#endif	fflush(stdout);	break;      case WRD_STOP: /* Never call */	break;      case WRD_TCLS:	{	  char fillbuf[1024];#ifdef USE_ESC	  fillbuf[0]=0x1b;	  fillbuf[1]='7';	  fillbuf[2]=0;	  printf(fillbuf);	  i=COLOR_REMAP(wrd_args[4]);	  printf("\033[%dm",i);#ifdef DEBUG1	printf("[wrd_tcls_1]");#endif	  memset(fillbuf,wrd_args[5],wrd_args[2]-wrd_args[0]);/*X2-X1*/	  fillbuf[wrd_args[2]-wrd_args[0]]=0;	  for(i=wrd_args[1];i<=wrd_args[3];i++)/*Y1 to Y2*/	    printf("\033[%d;%dH%s",i,wrd_args[0],fillbuf);/*X1to....*/#ifdef DEBUG1	printf("[wrd_tcls_2]");#endif	  fillbuf[0]=0x1b;	  fillbuf[1]='8';	  fillbuf[2]=0;	  printf(fillbuf);	  printf("\033[%dm",txtclr_preserve);#ifdef DEBUG1	printf("[wrd_tcls_3]");#endif#else	{	int left = wrd_args[0], right = wrd_args[2];	int top = wrd_args[1], bottom = wrd_args[3];	CANNOC_X(left);	CANNOC_X(right);	CANNOC_Y(top);	CANNOC_Y(bottom);	if(left>right) right = left;	if(top>bottom) bottom = top;	memset(fillbuf,wrd_args[5],right-left);/*X2-X1*/	fillbuf[right-left]=0;	borlandc_con_save_attr();	esc_characterattribute(wrd_args[4]);	for(i=top;i<=bottom;i++)/*Y1 to Y2*/ {	  gotoxy(left,i);	  putstring(fillbuf);	}	borlandc_con_restore_attr();	}#ifdef DEBUG1	printf("[wrd_tcls]");#endif#endif	  fflush(stdout);	}#if 0	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,		  "@TCLS(%d,%d,%d,%d,%d,%d,%d)",		  wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3],		  wrd_args[4], wrd_args[5]);#endif	break;      case WRD_TON:	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,		  "@TON(%d)", wrd_args[0]);	break;      case WRD_WAIT: /* Never call */	break;      case WRD_WMODE: /* Never call */	break;	/* Ensyutsukun */      case WRD_eFONTM:	print_ecmd("FONTM", wrd_args, 1);	break;      case WRD_eFONTP:	print_ecmd("FONTP", wrd_args, 4);	break;      case WRD_eFONTR:	print_ecmd("FONTR", wrd_args, 17);	break;      case WRD_eGSC:	print_ecmd("GSC", wrd_args, 1);	break;      case WRD_eLINE:	print_ecmd("LINE", wrd_args, 1);	break;      case WRD_ePAL:	print_ecmd("PAL", wrd_args, 2);	break;      case WRD_eREGSAVE:	print_ecmd("REGSAVE", wrd_args, 17);	break;      case WRD_eSCROLL:	print_ecmd("SCROLL",wrd_args, 2);	break;      case WRD_eTEXTDOT:	print_ecmd("TEXTDOT", wrd_args, 1);	break;      case WRD_eTMODE:	print_ecmd("TMODE", wrd_args, 1);	break;      case WRD_eTSCRL:	print_ecmd("TSCRL", wrd_args, 0);	break;      case WRD_eVCOPY:	print_ecmd("VCOPY", wrd_args, 9);	break;      case WRD_eVSGET:	print_ecmd("VSGE", wrd_args, 4);	break;      case WRD_eVSRES:	print_ecmd("VSRES", wrd_args, 0);	break;      case WRD_eXCOPY:	print_ecmd("XCOPY", wrd_args, 14);	break;	/* Extensionals */    }}

⌨️ 快捷键说明

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