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 + -
显示快捷键?