mst705Ȧ

来自「MST705源代码」· 代码 · 共 1,087 行 · 第 1/3 页

TXT
1,087
字号
            DrawOsdMenuItem(tempValue, &CurrentMenuItems[tempValue]);
            DrawOsdMenuItem(g_ucMenuItemIndex, &CurrentMenuItem);
            //Delay1ms(300);
            break;
          case MIA_GotoNext:
          case MIA_GotoPrev:
            tempValue=g_ucMenuPageIndex;
            g_ucMenuPageIndex=(menuAction==MIA_GotoNext)?(NextMenuPage):(PrevMenuPage);
            g_ucMenuItemIndex=GetMenuItemIndex(tempValue);
            if(g_ucMenuPageIndex==RootMenu)
	   	SaveUserPref();
            //Delay1ms(150);
/********************************zwtan for ********************************************/
#if TV_ENABLE
            if (g_ucMenuPageIndex==PresetMenu&&!IsTVInUse())
				g_ucMenuPageIndex=ClockMenu;

            if(g_ucMenuPageIndex==AudioMenu||g_ucMenuPageIndex==FunctionMenu||g_ucMenuPageIndex==SystemMenu
			||g_ucMenuPageIndex==PresetMenu||g_ucMenuPageIndex==ClockMenu)
#else
            if(g_ucMenuPageIndex==AudioMenu||g_ucMenuPageIndex==FunctionMenu||g_ucMenuPageIndex==SystemMenu
			||g_ucMenuPageIndex==ClockMenu)
#endif
			  {
			  BYTE kk;
			  Osd_SetTextColor(CP_GrayColor, CP_GrayColor);
			  for (kk=3;kk<=9;kk++)
	 		  	Osd_DrawStr(0, kk, "                       ");
			  }
/********************************zwtan for end********************************************/
          case MIA_RedrawMenu:
            DrawOsdMenu();
            if (CurrentMenu.ExecFunction)
              { tempValue=CurrentMenu.ExecFunction();
              }
            if (!(CurrentMenu.Flags&mpbStay))
              { processEvent=TRUE;
                menuAction=MIA_GotoPrev;
              }
            break;
	    case MIA_ExecFunc:
            if (CurrentMenuItemFunc.ExecFunction)
              {
			tempValue=0;
			tempValue=CurrentMenuItemFunc.ExecFunction();
			if(tempValue)
			{
			}
			processEvent=FALSE;

			#if(VGA_ENABLE||YPBPR_ENABLE)
                    if(CurrentMenuItemFunc.ExecFunction==AutoColor)
                    {
                        if (tempValue)
                        {
                            Osd_SetTextColor(CP_YellowColor, CP_GrayColor);
                            Osd_DrawStr(24, 5, PassText());
                        }
                        else
                        {
                            Osd_SetTextColor(CP_RedColor, CP_GrayColor);
                            Osd_DrawStr(24, 5, FailText());
                        }
                        menuAction=MIA_RedrawMenu;
                        processEvent=TRUE;
                    }
			 #endif
              }
            break;

          case MIA_Power:
            if (PowerOnFlag)
              g_ucMenuPageIndex=PowerOffMenu;
	    	else
              g_ucMenuPageIndex=PowerOnMenu;
            g_ucMenuItemIndex=0;
            menuAction=MIA_RedrawMenu;
            processEvent=TRUE;
            break;

//=============================IR Event======================================

	   case MIA_Source:
	   case MIA_IR_SourceSwitch:
            AdjustSource();
            break;
	   case MIA_IncVolume:
	   case MIA_DecVolume:

	   case MIA_IR_IncVolume:
	   case MIA_IR_DecVolume:
	   	if(g_ucMenuPageIndex!=VolumeMenu)
	   	{
               menuAction=MIA_RedrawMenu;
               g_ucMenuPageIndex=VolumeMenu;
               g_ucMenuItemIndex=0;
	        processEvent=TRUE;
	   	}
		else
		{
		 if(menuAction==MIA_IR_IncVolume)
		 	menuAction=MIA_IncValue;
		 if(menuAction==MIA_IR_DecVolume)
		 	menuAction=MIA_DecValue;
		processEvent=TRUE;
		}
            break;

          case MIA_IR_ShowINFO:
	     if(IsSVideoInUse()||IsAVInUse())
	     	{
		 	if(g_ucMenuPageIndex!=ShowSourceMenu)
  	        		g_ucMenuPageIndex=ShowSourceMenu;
			else
				g_ucMenuPageIndex=RootMenu;
	     	}

	#if TV_ENABLE
	     else
	     	{
		 	if(g_ucMenuPageIndex!=ShowTVChannelMenu)
  	        		g_ucMenuPageIndex=ShowTVChannelMenu;
			else
				g_ucMenuPageIndex=RootMenu;
	     	}
	#endif
            menuAction=MIA_RedrawMenu;
            g_ucMenuItemIndex=0;
	     processEvent=TRUE;
            break;

	   case MIA_IR_Mute:
            AdjustMuteStatusValue(MIA_IncValue);
	     menuAction=MIA_RedrawMenu;
            g_ucMenuPageIndex=MuteMenu;
            g_ucMenuItemIndex=0;
            processEvent=TRUE;
      	    break;

	#if CALENDAR_ENABLE
	  case MIA_IR_Calendar:
	  	if (g_ucMenuPageIndex==CalendarMenu)
			break;
	     menuAction=MIA_RedrawMenu;
            g_ucMenuPageIndex=CalendarMenu;
            g_ucMenuItemIndex=0;
            processEvent=TRUE;
	    break;
	#endif

	#if GAME_ENABLE
	  case MIA_IR_Game:
	  	if (g_ucMenuPageIndex==GameMenu)
			break;
	        SetAudioMute();
	        msSetBlueScreen( _ENABLE, FR_BLUE);
	        menuAction=MIA_RedrawMenu;
            g_ucMenuPageIndex=GameMenu;
            g_ucMenuItemIndex=0;
            processEvent=TRUE;
    	    break;
	  case MIA_BlockTurn:
            g_ucGameKeyControlStatus=GK_GameKeyTurn;
    	    break;
	  case MIA_BlockDown:
            g_ucGameKeyControlStatus=GK_GameKeyDown;
    	    break;
	  case MIA_BlockExit:
	     g_ucGameStatus=GS_GameExit;
    	    break;
	  case MIA_GameRestart:
	     g_ucGameStatus=GS_GameReStart;
    	    break;
	  case MIA_BlockLeft:
            g_ucGameKeyControlStatus=GK_GameKeyLeft;
    	    break;
	  case MIA_BlockRight:
            g_ucGameKeyControlStatus=GK_GameKeyRight;
    	    break;
	#endif

	#if TV_ENABLE
	   	case MIA_ChannelUp:
	   	case MIA_ChannelDown:
		   	Set_ShowSourceFlag();
		   	if(!IsTVInUse())
			 	break;
			SetAudioMute();
			Power_TurnOffPanel();
			if(menuAction==MIA_ChannelUp)
				ChannelUp();
			else
				ChannelDown();
				processEvent=FALSE;
	       break;
        case MIA_IR_QuickBack:
	   	    if(!IsTVInUse())
		 	    break;

		    TV_SelectPreChannel();
                g_ucMenuPageIndex=ShowTVChannelMenu;
                g_ucMenuItemIndex=0;
                menuAction=MIA_RedrawMenu;
                processEvent=TRUE;
		    break;
	    case MIA_IR_Sound_MODE:
	        if(!IsTVInUse())
		 	    break;

            AdjustSoundMode(MIA_IncValue);
	        menuAction=MIA_RedrawMenu;
            g_ucMenuPageIndex=ShowTVChannelMenu;
            g_ucMenuItemIndex=0;
            processEvent=TRUE;
            break;
#if TV_SYSTEM!=TV_NTSC
	   case MIA_Searchup:
	   		g_bManualScanDirection=1;
			TV_ChannelManualScanInit();
			return FALSE;// DISABLE OSD TIME RESET

	   case MIA_Searchdown:
	   		g_bManualScanDirection=0;
			TV_ChannelManualScanInit();
			return FALSE;// DISABLE OSD TIME RESET
#endif
	   case MIA_IR_ChromaSwitch:
	        if(!IsTVInUse())
		 	    break;
            AdjustChromaMode(MIA_IncValue);
	        menuAction=MIA_RedrawMenu;
            g_ucMenuPageIndex=ShowTVChannelMenu;
            g_ucMenuItemIndex=0;
            processEvent=TRUE;
            break;

	  case MIA_AutoSerach:
	        TV_ChannelAutoScanInit();
	        return FALSE;// DISABLE OSD TIME RESET

	  case MIA_IRKEY_0:
	  case MIA_IRKEY_1:
	  case MIA_IRKEY_2:
	  case MIA_IRKEY_3:
	  case MIA_IRKEY_4:
	  case MIA_IRKEY_5:
	  case MIA_IRKEY_6:
	  case MIA_IRKEY_7:
	  case MIA_IRKEY_8:
	  case MIA_IRKEY_9:
	        irAdjustNumKey(IRKeyToNumber(menuAction));
	        menuAction=MIA_RedrawMenu;
		    processEvent=TRUE;
	        break;

	  case MIA_IRKEY_100:
	  	    irNumInputMode();
	        menuAction=MIA_RedrawMenu;
		    processEvent=TRUE;
            break;
	  #endif

        #if VGA_ENABLE
        case MIA_Auto:
            if (FreeRunModeFlag )
              break;
            menuAction=MIA_RedrawMenu;
            g_ucMenuPageIndex=AutoMenu;
            g_ucMenuItemIndex=0;
            processEvent=TRUE;
            break;
        #endif
  	    default:
            return FALSE;
      	    break;
        }
    }
  return TRUE;
}


//=========================================================================
void DrawOsdMenu(void)
{ BOOL redrawFlags;
    BYTE ucBank;
    ucBank = msReadByte( BK0_00_REGBK);

  msWriteByte(BK0_00_REGBK, REG_BANK_SCALER);
  Clr_DynamiccaptionFlag();
  if (CurrentMenu.Flags&mpbInvisible)
    Osd_Hide();
  else
    {
    	BYTE i;
      // setup osd window & position
      	redrawFlags=FALSE;
      	if (CurrentMenu.XSize!=OsdWindowWidth || CurrentMenu.YSize!=OsdWindowHeight ||
      	  !(msReadOSDByte(OSD_0C_IOSDC1)&MWIN_B))
      		redrawFlags=TRUE;
      	if (redrawFlags)
	        {
	          Osd_Hide();
	          Osd_SetWindowSize(CurrentMenu.XSize, CurrentMenu.YSize);
	          //Clr_ReverseYFlag();
	          //Clr_ReverseXFlag();
	          //g_VideoSetting.OsdHStart=98;
	          //g_VideoSetting.OsdVStart=95;

	       if (FactoryModeFlag)
	            Osd_SetPosition(10, 10);

		   else if (CurrentMenu.Flags&mpbSetItemTop)
		   	{
		   	Osd_SetPosition((90-g_VideoSetting.Scaling*15), 5);
	              msWriteByte(BK0_63_OSD_CTL, 0x0F);
		   	}
		   else if(CurrentMenu.Flags&mpbGame)
             		{
              	 Osd_SetPosition(50, 60);
		 	 msWriteByte(BK0_63_OSD_CTL, 0x00);
             		}
	          else
	            { Osd_SetPosition(50, 50);
			 msWriteByte(BK0_63_OSD_CTL, 0x03);
	            }
			if (g_ucMenuPageIndex==MuteMenu)
				Osd_SetPosition((2+g_VideoSetting.Scaling*15), 5);

			#if CALENDAR_ENABLE
			if (g_ucMenuPageIndex==CalendarMenu)
				msWriteByte(BK0_63_OSD_CTL, 0x0F);
			#endif

			if (g_ucMenuPageIndex==VolumeMenu)
				Osd_SetPosition(50, 98);
	        for (i=0; i<MenuItemCount; i++)
	            DrawOsdMenuItem(i, &CurrentMenu.MenuItems[i]);

			DrawOsdMenuItem(g_ucMenuItemIndex, &CurrentMenu.MenuItems[g_ucMenuItemIndex]);//ZWTAN 20050711

	        if (FactoryModeFlag)
	            Osd_DrawChar(0, 0, 'F');

	         Osd_Show();
	      	}
      	else
      	{
      		for (i=0; i<MenuItemCount; i++)
            	DrawOsdMenuItem(i, &CurrentMenu.MenuItems[i]);
      		DrawOsdMenuItem(g_ucMenuItemIndex, &CurrentMenu.MenuItems[g_ucMenuItemIndex]);

			Osd_Show();
      	}
    }

    msWriteByte(BK0_00_REGBK, ucBank);

}

//=========================================================================
// draw menu item
void DrawOsdMenuItem(BYTE itemIndex, MenuItemType *menuItem)
{

⌨️ 快捷键说明

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