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

📄 utilhandler.c

📁 神龙卡开发原代码
💻 C
📖 第 1 页 / 共 3 页
字号:
		GrText(wid,gc1,POPUP_HEADER_X,POPUP_HEADER_Y,"VCD Search",-1,GR_TFASCII);		GrText(wid,gc1,POPUP_TEXT_X,POPUP_CHAPTER_Y,"Track:",-1,GR_TFASCII);		break;				case TIME_SEARCH:		GrText(wid,gc1,POPUP_HEADER_X,POPUP_HEADER_Y,"Time Search",-1,GR_TFASCII);		break;	}		GrText(wid,gc1,POPUP_TEXT_X,POPUP_TIME_Y,"Time:",-1,GR_TFASCII);		GrText(wid,gc1,POPUP_DATA_X,POPUP_TIME_Y,HMSStr,-1,GR_TFASCII);	GrText(wid,gc_pal244,POPUP_DATA_X,POPUP_TIME_Y,&HMSStr[7],1,GR_TFASCII);		if (t == DVD_SEARCH)		GrText(wid,gc1,POPUP_DATA_X,POPUP_CHAPTER_Y,TitleChapterStr,-1,GR_TFASCII);		else if (t == VCD_SEARCH)		GrText(wid,gc1,POPUP_DATA_X,POPUP_CHAPTER_Y,TrackStr,-1,GR_TFASCII);	return;}//-------------------------// Special menu stuff//#define SPMENU_TEXT_X		(POPUP_TEXT_X)#define SPMENU_DATA_X		(POPUP_X+240)#define SPMENU_HEADER_Y		(POPUP_Y+30)#define SPMENU_LINE1_Y		(POPUP_Y+75)#define SPMENU_LINE2_Y		(POPUP_Y+100)#define SPMENU_LINE3_Y		(POPUP_Y+135)#define SPMENU_LINE4_Y		(POPUP_Y+160)#define SPMENU_LINE5_Y		(POPUP_Y+190)static char regionChar;int mcrovision, regionCode;voidSpecialMenuKeydownHandler(OSD_WINDOW *wPtr,DATA_POINTER ptr){		GR_EVENT *event = wPtr->lastevent;	GR_GC_ID gc_pal64 = GrNewGC();		// png background is index 64	GrSetGCForeground(gc_pal64, MWPALINDEX(64));	GrSetGCBackground(gc_pal64, MWPALINDEX(0));	GrSetGCFont(gc_pal64, OSD_DEFAULT_FONT_NO);	GrSetGCUseBackground(gc_pal64,GR_FALSE);		switch (event->keystroke.ch) {			case SHOW_LEFT_KEYDOWN:			if (curY == SPMENU_LINE2_Y) {				curX = POPUP_TEXT_X+(regionChar-'0')*30;				GrText(wid,gc1,curX,curY,&regionChar,1,GR_TFASCII);				GrText(wid,gc_pal64,POPUP_TEXT_X+240,SPMENU_LINE1_Y,&regionChar,1,GR_TFASCII);							if (regionChar == '0') regionChar = '6';				else regionChar--;									curX = POPUP_TEXT_X+(regionChar-'0')*30;				GrText(wid,gc_pal244,curX,curY,&regionChar,1,GR_TFASCII);								GrText(wid,gc1,POPUP_TEXT_X+240,SPMENU_LINE1_Y,&regionChar,1,GR_TFASCII);											}			else {								DrawMcvision:				if (mcrovision) {					mcrovision = GR_FALSE;					GrText(wid,gc1,POPUP_TEXT_X,curY,"Yes",3,GR_TFASCII);					GrText(wid,gc_pal244,POPUP_TEXT_X+60,curY,"No",2,GR_TFASCII);					GrText(wid,gc_pal64,POPUP_TEXT_X+240,SPMENU_LINE3_Y,"Yes",3,GR_TFASCII);					GrText(wid,gc1,POPUP_TEXT_X+240,SPMENU_LINE3_Y,"No",2,GR_TFASCII);				}				else {					mcrovision = GR_TRUE;					GrText(wid,gc1,POPUP_TEXT_X+60,curY,"No",2,GR_TFASCII);					GrText(wid,gc_pal244,POPUP_TEXT_X,curY,"Yes",3,GR_TFASCII);					GrText(wid,gc_pal64,POPUP_TEXT_X+240,SPMENU_LINE3_Y,"No",2,GR_TFASCII);					GrText(wid,gc1,POPUP_TEXT_X+240,SPMENU_LINE3_Y,"Yes",3,GR_TFASCII);				}			}			break;					case SHOW_RIGHT_KEYDOWN:			if (curY == SPMENU_LINE2_Y) {				curX = POPUP_TEXT_X+(regionChar-'0')*30;				GrText(wid,gc1,curX,curY,&regionChar,1,GR_TFASCII);				GrText(wid,gc_pal64,POPUP_TEXT_X+240,SPMENU_LINE1_Y,&regionChar,1,GR_TFASCII);							if (regionChar == '6') regionChar = '0';				else regionChar++;									curX = POPUP_TEXT_X+(regionChar-'0')*30;				GrText(wid,gc_pal244,curX,curY,&regionChar,1,GR_TFASCII);				GrText(wid,gc1,POPUP_TEXT_X+240,SPMENU_LINE1_Y,&regionChar,1,GR_TFASCII);			}			else 				goto DrawMcvision;			break;								case SHOW_UP_KEYDOWN:		case SHOW_DOWN_KEYDOWN:			if (curY == SPMENU_LINE2_Y) {				curX = POPUP_TEXT_X+(regionChar-'0')*30;				GrText(wid,gc1,curX,curY,&regionChar,1,GR_TFASCII);				curY = SPMENU_LINE4_Y;				if (mcrovision)					GrText(wid,gc_pal244,POPUP_TEXT_X,curY,"Yes",3,GR_TFASCII);								else 					GrText(wid,gc_pal244,POPUP_TEXT_X+60,curY,"No",2,GR_TFASCII);						}			else {				if (mcrovision)					GrText(wid,gc1,POPUP_TEXT_X,curY,"Yes",3,GR_TFASCII);								else 					GrText(wid,gc1,POPUP_TEXT_X+60,curY,"No",2,GR_TFASCII);								curY = SPMENU_LINE2_Y;				curX = POPUP_TEXT_X+(regionChar-'0')*30;				GrText(wid,gc_pal244,curX,curY,&regionChar,1,GR_TFASCII);			}			break;					case SHOW_ENTER_KEYDOWN:		case SHOW_RETURN_KEYDOWN:			regionCode = regionChar - 0x30;			SaveSettings(wPtr);			//printf("...region=%d, mcvision=%d\n",regionCode,mcrovision);			//break;				case SHOW_SPECIAL_MENU_KEYDOWN:		case SHOW_POWER_KEYDOWN:		case SHOW_OPEN_KEYDOWN:						RestorePopupRect(wPtr);			MapMainWindow(wPtr, (DATA_POINTER)GR_TRUE);			break;			}		GrDestroyGC(gc_pal64);	return;}void MapSpecialMenuHandler(OSD_WINDOW *wPtr, DATA_POINTER ptr){		gc1 = wPtr->gc;	gc_pal0 = wPtr->gc_pal0;	gc_pal6 = wPtr->gc_pal6;	gc_pal244 = wPtr->gc_pal244;	wid = wPtr->wid;		wPtr->KbdHandler = SpecialMenuKeydownHandler;	wPtr->KbdHandler_dptr = ptr;		// region and macrovision values set at boot time	regionChar = regionCode + 0x30;	curY = SPMENU_LINE2_Y;		SavePopupRect(wPtr);	OsdDrawPictureEx(wPtr, POPUP_X, POPUP_Y, POPUP_W, POPUP_H,"img/popup.png");	GrText(wid,gc1,POPUP_TEXT_X,SPMENU_HEADER_Y,"Special Menu",-1,GR_TFASCII);	GrText(wid,gc1,POPUP_TEXT_X,SPMENU_LINE1_Y,"Region Setting:",-1,GR_TFASCII);	GrText(wid,gc1,POPUP_TEXT_X,SPMENU_LINE3_Y,"Macrovision Enabled:",-1,GR_TFASCII);		GrText(wid,gc1,POPUP_TEXT_X,SPMENU_LINE5_Y,"~~ Press Enter to set",-1,GR_TFASCII);		GrText(wid,gc1,POPUP_TEXT_X,SPMENU_LINE2_Y,"0",1,GR_TFASCII);	GrText(wid,gc1,POPUP_TEXT_X+30,SPMENU_LINE2_Y,"1",1,GR_TFASCII);	GrText(wid,gc1,POPUP_TEXT_X+60,SPMENU_LINE2_Y,"2",1,GR_TFASCII);	GrText(wid,gc1,POPUP_TEXT_X+90,SPMENU_LINE2_Y,"3",1,GR_TFASCII);	GrText(wid,gc1,POPUP_TEXT_X+120,SPMENU_LINE2_Y,"4",1,GR_TFASCII);	GrText(wid,gc1,POPUP_TEXT_X+150,SPMENU_LINE2_Y,"5",1,GR_TFASCII);	GrText(wid,gc1,POPUP_TEXT_X+180,SPMENU_LINE2_Y,"6",1,GR_TFASCII);	GrText(wid,gc1,POPUP_TEXT_X,SPMENU_LINE4_Y,"Yes",3,GR_TFASCII);	GrText(wid,gc1,POPUP_TEXT_X+60,SPMENU_LINE4_Y,"No",2,GR_TFASCII);		GrText(wid,gc_pal244,POPUP_TEXT_X+(regionCode*30),SPMENU_LINE2_Y,&regionChar,1,GR_TFASCII);	GrText(wid,gc1,POPUP_TEXT_X+240,SPMENU_LINE1_Y,&regionChar,1,GR_TFASCII);	if (mcrovision)		GrText(wid,gc1,POPUP_TEXT_X+240,SPMENU_LINE3_Y,"Yes",3,GR_TFASCII);	else		GrText(wid,gc1,POPUP_TEXT_X+240,SPMENU_LINE3_Y,"No",2,GR_TFASCII);}//-------------------// Password stuff//#define PSWD_INDEX			3		// see iniSub1[]#define POPUP_DATA_X_PWD	(POPUP_DATA_X+20)voidOkCancelKeydownHandler(OSD_WINDOW *wPtr,DATA_POINTER ptr){	GR_EVENT *event;	int scrn = (int)ptr;	//GrSetFontSize(OSD_DEFAULT_FONT_NO, 18);    event = wPtr->lastevent;	switch (event->keystroke.ch) {		case SHOW_POWER_KEYDOWN:		case SHOW_OPEN_KEYDOWN:		case SHOW_RETURN_KEYDOWN:		case SHOW_ENTER_KEYDOWN:			if (scrn == 1) {		// In Player Setup screen?				RestorePopupRect(wPtr);				MapSub1Handler(wPtr, NULL, 0);			}			else {				MapMainWindow(wPtr, (DATA_POINTER) GR_TRUE);				CheckPassword(0);			}			break;				case SHOW_SETUP_KEYDOWN:			if (scrn == 1) {				SaveSettings(wPtr);				RestorePopupRect(wPtr);				MapMainWindow(wPtr, (DATA_POINTER) GR_TRUE);			}			//else {			//	MapMainWindow(wPtr, (DATA_POINTER) GR_TRUE);			//}			break;	}	return;}static void DrawPwdMasks(char key){	GR_GC_ID gc_pal64 = GrNewGC();		// png background is index 64	GrSetGCForeground(gc_pal64, MWPALINDEX(64));	GrSetGCBackground(gc_pal64, MWPALINDEX(0));	GrSetGCFont(gc_pal64, OSD_DEFAULT_FONT_NO);	GrSetGCUseBackground(gc_pal64,GR_FALSE);		GrText(wid,gc_pal64,POPUP_DATA_X_PWD+(curId*PWD_DIGIT_WIDTH),curY,&pwdStr.mask[curRow][curId],1,GR_TFASCII);	pwdStr.mask[curRow][curId] = '*';	pwdStr.pwd[curRow][curId] = key;		GrText(wid,gc1,POPUP_DATA_X_PWD+(curId*PWD_DIGIT_WIDTH),curY,&pwdStr.mask[curRow][curId],1,GR_TFASCII);		if (curId < curIdMax)  curId++;	GrText(wid,gc_pal244,POPUP_DATA_X_PWD+(curId*PWD_DIGIT_WIDTH),curY,&pwdStr.mask[curRow][curId],1,GR_TFASCII);		GrDestroyGC(gc_pal64);	return;}voidPwdChkKeydownHandler(OSD_WINDOW *wPtr,DATA_POINTER ptr){	GR_EVENT *event;	int pwdEnter;	    event=wPtr->lastevent;	switch (event->keystroke.ch) {		case SHOW_CANCEL_KEYDOWN:			{				int i;			GR_GC_ID gc_pal64 = GrNewGC();			GrSetGCForeground(gc_pal64, MWPALINDEX(64));			GrSetGCBackground(gc_pal64, MWPALINDEX(0));			GrSetGCFont(gc_pal64, OSD_DEFAULT_FONT_NO);			GrSetGCUseBackground(gc_pal64,GR_FALSE);						//Clear current text string to background			for (i=0; i<4; i++)				GrText(wid,gc_pal64,POPUP_DATA_X_PWD+(i*PWD_DIGIT_WIDTH),curY,&pwdStr.mask[0][i],1,GR_TFASCII);					curId = 0;	curIdMax = 3;							pwdStr.mask[0][0] = pwdStr.mask[0][1] = pwdStr.mask[0][2] = pwdStr.mask[0][3] = '#';			GrText(wid,gc_pal244,POPUP_DATA_X_PWD,curY,&pwdStr.mask[0][0],1,GR_TFASCII);			for (i=1; i<4; i++)				GrText(wid,gc1,POPUP_DATA_X_PWD+(i*PWD_DIGIT_WIDTH),curY,&pwdStr.mask[0][i],1,GR_TFASCII);						GrDestroyGC(gc_pal64);			}			break;				case SHOW_RETURN_KEYDOWN:					RestorePopupRect(wPtr);			if (ptr) {				MapSub1Handler(wPtr, NULL, 0);				}			break;						case SHOW_ZERO_KEYDOWN:	DrawPwdMasks(0x30); break;		case SHOW_ONE_KEYDOWN: DrawPwdMasks(0x31); break;		case SHOW_TWO_KEYDOWN: DrawPwdMasks(0x32); break;		case SHOW_THREE_KEYDOWN: DrawPwdMasks(0x33); break;		case SHOW_FOUR_KEYDOWN: DrawPwdMasks(0x34); break;		case SHOW_FIVE_KEYDOWN: DrawPwdMasks(0x35); break;		case SHOW_SIX_KEYDOWN: DrawPwdMasks(0x36); break;		case SHOW_SEVEN_KEYDOWN: DrawPwdMasks(0x37); break;		case SHOW_EIGHT_KEYDOWN: DrawPwdMasks(0x38); break;		case SHOW_NINE_KEYDOWN: DrawPwdMasks(0x39); break;		case SHOW_ENTER_KEYDOWN:				//GrSetFontSize(OSD_DEFAULT_FONT_NO, 18);							if (pwdStr.pwd[0][0] == '@' || pwdStr.pwd[0][1] == '@' || pwdStr.pwd[0][2] == '@' || pwdStr.pwd[0][3] == '@')				goto PwdChk_Incorrect;												pwdEnter = (pwdStr.pwd[0][0] - 0x30)*1000 + (pwdStr.pwd[0][1] - 0x30)*100 + (pwdStr.pwd[0][2] - 0x30)*10 + (pwdStr.pwd[0][3] - 0x30);						//printf("Password entered:%d, Stored pwd=%d\n", pwdEnter,pwd);						if (ptr == NULL) {				if (pwdEnter == pwd) {					//GrSetFontSize(OSD_DEFAULT_FONT_NO, 18);					MapMainWindow(wPtr, (DATA_POINTER)GR_TRUE);					CheckPassword(1);					return;				}								}			else {				selTagPtr pa = ptr;				if (pwdEnter == pwd) {					*pa->selected = pa->sub2Sel;					RestorePopupRect(wPtr);					MapSub1Handler(wPtr, NULL, 0);					return;				}								}						PwdChk_Incorrect:			OsdDrawPictureEx(wPtr, POPUP_X, POPUP_Y, POPUP_W, POPUP_H, "img/popup.png");			GrText(wid,gc1,POPUP_HEADER_X,POPUP_HEADER_Y,"Password Entry",-1,GR_TFASCII);			GrText(wid,gc1,POPUP_TEXT_X,POPUP_LINE3_Y,"Password is incorrect!",-1,GR_TFASCII);			wPtr->KbdHandler = OkCancelKeydownHandler;			if (ptr == NULL)				wPtr->KbdHandler_dptr = (DATA_POINTER) 2;			else 				wPtr->KbdHandler_dptr = (DATA_POINTER) 1;						break;					case SHOW_POWER_KEYDOWN:		case SHOW_OPEN_KEYDOWN:		case SHOW_SETUP_KEYDOWN:			RestorePopupRect(wPtr);			if (ptr) {				//Save all parameters				SaveSettings(wPtr);								//GrSetFontSize(OSD_DEFAULT_FONT_NO, 18);				MapMainWindow(wPtr, (DATA_POINTER)GR_TRUE);			}			break;				}	return;}//-----------------------------------------------// Check password during setup and DVD playback//void MapPwdChkHandler(OSD_WINDOW *wPtr, DATA_POINTER ptr){	int i;	static selTag a; 	selTagPtr pa;		gc1 = wPtr->gc;	gc_pal0 = wPtr->gc_pal0;	gc_pal6 = wPtr->gc_pal6;	gc_pal244 = wPtr->gc_pal244;	wid = wPtr->wid;		wPtr->KbdHandler = PwdChkKeydownHandler;	wPtr->KbdHandler_dptr = ptr;		//Retrieve pswd	pwd = iniSub1[PSWD_INDEX].selected;		//Init strings	pwdStr.mask[0][0] = pwdStr.mask[0][1] = pwdStr.mask[0][2] = pwdStr.mask[0][3] = '#';	pwdStr.pwd[0][0] = pwdStr.pwd[0][1] = pwdStr.pwd[0][2] = pwdStr.pwd[0][3] = '@';		curId = curRow = 0; 	curIdMax = 3;  curY = POPUP_LINE2_Y;	SavePopupRect(wPtr);	wPtr->KbdHandler_dptr = ptr;		if (ptr) {		pa = (selTagPtr) ptr;		a.selected = pa->selected;		a.sub2Sel = pa->sub2Sel;		wPtr->KbdHandler_dptr = (DATA_POINTER) &a;	}			OsdDrawPictureEx(wPtr, POPUP_X, POPUP_Y, POPUP_W, POPUP_H, "img/popup.png");	GrText(wid,gc1,POPUP_HEADER_X,POPUP_HEADER_Y,"Password Entry",-1,GR_TFASCII);	GrText(wid,gc1,POPUP_TEXT_X,POPUP_LINE2_Y,"Password:",-1,GR_TFASCII);	GrText(wid,gc1,POPUP_TEXT_X,POPUP_LINE4_Y+10,"Press Enter to set, Return to quit",-1,GR_TFASCII);	GrText(wid,gc1,POPUP_TEXT_X,POPUP_LINE5_Y+10,"or Cancel to re-enter.",-1,GR_TFASCII);		//GrSetFontSize(OSD_DEFAULT_FONT_NO, 25);	GrText(wid,gc_pal244,POPUP_DATA_X_PWD,curY,&pwdStr.mask[0][0],1,GR_TFASCII);	for (i=1; i<4; i++)		GrText(wid,gc1,POPUP_DATA_X_PWD+(i*PWD_DIGIT_WIDTH),POPUP_LINE2_Y,&pwdStr.mask[0][i],1,GR_TFASCII);	return;}voidPwdSetKeydownHandler(OSD_WINDOW *wPtr,DATA_POINTER ptr){	GR_EVENT *event;		event=wPtr->lastevent;	switch (event->keystroke.ch) {						case SHOW_UP_KEYDOWN:			if (curY != POPUP_LINE1_Y) {				GrText(wid,gc1,POPUP_DATA_X_PWD+(curId*PWD_DIGIT_WIDTH),curY,&pwdStr.mask[curRow][curId],1,GR_TFASCII);				curY -= POPUP_LINE_Y_INC;				curId = 0; curRow--;				GrText(wid,gc_pal244,POPUP_DATA_X_PWD,curY,&pwdStr.mask[curRow][0],1,GR_TFASCII);			}			break;				case SHOW_DOWN_KEYDOWN:			if (curY != curYMax) {				GrText(wid,gc1,POPUP_DATA_X_PWD+(curId*PWD_DIGIT_WIDTH),curY,&pwdStr.mask[curRow][curId],1,GR_TFASCII);				curY += POPUP_LINE_Y_INC;				curId = 0; curRow++;				GrText(wid,gc_pal244,POPUP_DATA_X_PWD,curY,&pwdStr.mask[curRow][0],1,GR_TFASCII);			}			break;					case SHOW_CANCEL_KEYDOWN:						{				int i;			GR_GC_ID gc_pal64 = GrNewGC();			GrSetGCForeground(gc_pal64, MWPALINDEX(64));			GrSetGCBackground(gc_pal64, MWPALINDEX(0));			GrSetGCFont(gc_pal64, OSD_DEFAULT_FONT_NO);			GrSetGCUseBackground(gc_pal64,GR_FALSE);						//Clear current text string to background			for (i=0; i<4; i++)				GrText(wid,gc_pal64,POPUP_DATA_X_PWD+(i*PWD_DIGIT_WIDTH),curY,&pwdStr.mask[curRow][i],1,GR_TFASCII);					curId = 0;	curIdMax = 3;							pwdStr.mask[curRow][0] = pwdStr.mask[curRow][1] = pwdStr.mask[curRow][2] = pwdStr.mask[curRow][3] = '#';			GrText(wid,gc_pal244,POPUP_DATA_X_PWD,curY,&pwdStr.mask[curRow][0],1,GR_TFASCII);			for (i=1; i<4; i++)				GrText(wid,gc1,POPUP_DATA_X_PWD+(i*PWD_DIGIT_WIDTH),curY,&pwdStr.mask[curRow][i],1,GR_TFASCII);

⌨️ 快捷键说明

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