📄 menu.c
字号:
CurrentMenuItemFunc.AdjustFunction == AdjustOSDPosition ||
CurrentMenuItemFunc.AdjustFunction==AdjustBurnin ||
CurrentMenuItemFunc.AdjustFunction==AdjustColorTemp
)
{
Delay1ms(150);
TurboKeyCounter=0;
}
}
}
break;
case MIA_NextItem:
case MIA_PrevItem:
tempValue=MenuItemIndex;
if (menuAction==MIA_NextItem)
MenuItemIndex=GetNextItem(CurrentMenuItems);
else
MenuItemIndex=GetPrevItem(CurrentMenuItems);
if (MenuPageIndex==FactoryMainMenu && FreeRunModeFlag)
{ if (MenuItemIndex!=6)
MenuItemIndex=6;
}
else if (MenuPageIndex==Factory2Menu && FreeRunModeFlag)
MenuItemIndex=0;
else if (MenuPageIndex==MainMenu || MenuPageIndex==FactoryMainMenu)
MenuItemPrevIndex=MenuItemIndex;
if (tempValue!=MenuItemIndex)
{ DrawOsdMenuItem(tempValue, &CurrentMenuItems[tempValue]);
if (MenuPageIndex==MainMenu || MenuPageIndex==FactoryMainMenu)
{ // Clear content
Osd_SetTextColor(CP_GrayColor, CP_GrayColor);
for (tempValue=OSDStartPos+2; tempValue<OsdWindowHeight-OSDStartPos; tempValue++)
Osd_DrawStr(OSDStartPos+2, tempValue, tSpace27);
if (MenuItemIndex==4)
DrawTimingInfo();
}
else
{ if (MenuPageIndex==ColorMenu)
{ if (tempValue)
{ Osd_SetTextColor(CP_GrayColor, CP_GrayColor);
// Osd_DrawStr(OSDStartPos+25, OSDStartPos+4+tempValue, tSpace3);
if (MenuItemIndex==0)
{ UserPrefColorTemp=UserPrefColorTemp1;
mStar_AdjustContrast(UserPrefContrast);
}
}
else // from 9300K or 6500K
{ UserPrefColorTemp=CTEMP_USER;
mStar_AdjustContrast(UserPrefContrast);
}
Set_SaveSettingFlag();
}
else if (MenuPageIndex==TrackingMenu)
{ Osd_SetTextColor(CP_GrayColor, CP_GrayColor);
// Osd_DrawStr(OSDStartPos+25, OSDStartPos+3+tempValue*3, tSpace3);
}
}
DrawOsdMenuItem(MenuItemIndex, &CurrentMenuItem);
Delay1ms(200);
}
break;
case MIA_JumpAdjustItem:
case MIA_JumpNaviItem:
tempValue=MenuItemIndex;
MenuItemIndex+=((menuAction==MIA_JumpAdjustItem)?(1):(-1));
DrawOsdMenuItem(tempValue, &CurrentMenuItems[tempValue]);
DrawOsdMenuItem(MenuItemIndex, &CurrentMenuItem);
Delay1ms(300);
break;
case MIA_GotoNext:
case MIA_GotoPrev:
tempValue=MenuPageIndex;
MenuPageIndex=(menuAction==MIA_GotoNext)?(NextMenuPage):(PrevMenuPage);
if (MenuPageIndex==MainMenu && FactoryModeFlag)
MenuPageIndex=FactoryMainMenu;
MenuItemIndex=GetMenuItemIndex(tempValue);
case MIA_RedrawMenu:
DrawOsdMenu();
if (((MenuPageIndex==MainMenu)||(MenuPageIndex==FactoryMainMenu)) && (MenuItemIndex==4))
DrawTimingInfo();
if (CurrentMenu.ExecFunction)
{ tempValue=CurrentMenu.ExecFunction();
}
if (menuAction==MIA_GotoNext || menuAction==MIA_GotoPrev)
Delay1ms(150);
if (!(CurrentMenu.Flags&mpbStay))
{ processEvent=TRUE;
menuAction=MIA_GotoPrev;
}
if (SaveSettingFlag)
SaveUserPrefSetting(tempValue);
break;
case MIA_ExecFunc:
if (CurrentMenuItemFunc.ExecFunction)
{ if (MenuPageIndex==Factory2Menu)
Osd_DrawStr(OSDStartPos+18, CurrentMenuItem.YPos, ProcessText());
CurrentMenuItemFunc.ExecFunction();
if (MenuPageIndex==Factory2Menu)
Osd_DrawStr(OSDStartPos+18, CurrentMenuItem.YPos, RunText());
}
break;
case MIA_Exit:
if (SaveSettingFlag)
{ Clr_SaveSettingFlag();
SaveUserPref();
}
if (SyncLossState()) // from burnin
{
if (MenuPageIndex==Factory2Menu || MenuPageIndex==FactoryMainMenu)
{ if (!HVSyncLoss)//(CableNotConnectedFlag)
MenuPageIndex=CableNotConnectedMenu;
else
MenuPageIndex=StandbyMenu;
if (BurninModeFlag)
Osd_Hide();
else
{
Set_ForcePowerSavingFlag();
}
}
}
else
{ menuAction=MIA_RedrawMenu;
MenuPageIndex=RootMenu;
processEvent=TRUE;
}
MenuItemIndex=0;
break;
case MIA_Auto:
if (FreeRunModeFlag)
break;
//if (TurboKeyCounter>25)
{ menuAction=MIA_RedrawMenu;
MenuPageIndex=AutoMenu;
MenuItemIndex=0;
processEvent=TRUE;
}
break;
case MIA_Brite:
case MIA_Cont:
if (FreeRunModeFlag)
break;
MenuPageIndex=BriteMenu;
menuAction=MIA_RedrawMenu;
MenuItemIndex=0;
processEvent=TRUE;
break;
case MIA_Volume:
if (FreeRunModeFlag)
break;
MenuPageIndex=(AudioMuteOnFlag)?(MuteMenu):(VolumeMenu);
menuAction=MIA_RedrawMenu;
MenuItemIndex=0;
processEvent=TRUE;
break;
case MIA_Burnin:
if (FactoryModeFlag && !PowerSavingFlag)
{ PowerDownCounter=0;
MenuPageIndex=FactoryMainMenu;
menuAction=MIA_RedrawMenu;
MenuItemIndex=6;
processEvent=TRUE;
}
break;
case MIA_Power:
if (MenuPageIndex==PowerOffMenu)
menuAction=MIA_GotoNext;
else
{
menuAction=MIA_RedrawMenu;
MenuPageIndex=PowerOffMenu;
}
MenuItemIndex=0;
processEvent=TRUE;
break;
default:
return FALSE;
break;
}
}
return TRUE;
}
//=========================================================================
void DrawOsdMenu(void)
{
BYTE redrawFlags;
Out_i("draw menu %d", MenuPageIndex);
if (CurrentMenu.Flags&mpbInvisible)
Osd_Hide();
else
{
BYTE i;
// setup osd window & position
redrawFlags=0;
if (CurrentMenu.XSize!=OsdWindowWidth || CurrentMenu.YSize!=OsdWindowHeight ||
!(mStar_ReadOSDByte(IOSDC1)&MWIN_B) )
redrawFlags=1;
if (redrawFlags)
{
mStar_WriteOSDByte(SUBW2C, 0);
mStar_WriteOSDByte(SUBW3C, 0);
Osd_SetWindowSize(CurrentMenu.XSize, CurrentMenu.YSize);
if (CurrentMenu.Flags&mpbCenter)
{
Osd_SetPosition(50, 50);
Clr_ReverseYFlag();
UserPrefOsdVStart=50;
}
else
Osd_SetPosition(UserPrefOsdHStart, UserPrefOsdVStart);
if((MenuPageIndex>=MainMenu&&MenuPageIndex<=Factory2Menu)
||((MenuPageIndex==BriteMenu)||(MenuPageIndex==VolumeMenu)||(MenuPageIndex==MuteMenu)))
{
Osd_SetTextColor(CP_BlackColor, CP_GrayColor);
Osd_DrawStr(0, 0, frame_up_left);
Osd_DrawStr(0, OsdWindowHeight-1, frame_down_left);
Osd_DrawStr(OsdWindowWidth-1, OsdWindowHeight-1, frame_down_right);
Osd_DrawStr(OsdWindowWidth-1, 0, frame_up_right);
for (i=1; i<OsdWindowWidth-1; i++)
{
Osd_DrawStr(i, 0, frame_up);
Osd_DrawStr( i,OsdWindowHeight-1, frame_down);
}
for (i=1; i<OsdWindowHeight-1; i++)
{
Osd_DrawStr(0, i, frame_left);
Osd_DrawStr(OsdWindowWidth-1, i, frame_right);
}
}
if (MenuPageIndex<UnsupportedModeMenu || MenuPageIndex>=AutoMenu)
{
if(MenuPageIndex<UnsupportedModeMenu)
{
Osd_SetTextColor(CP_BlueColor, CP_BlueColor);
Osd_DrawStr(0, 0, tSpace27);
Osd_DrawStr(0, OsdWindowHeight-1, tSpace27);
}
else
{
Osd_SetTextColor(CP_BlueColor, CP_BlueColor);
Osd_DrawStr(0, 0, tSpace28);
Osd_DrawStr(0, OsdWindowHeight-1, tSpace28);
}
if (MenuPageIndex==AutoMenu)
{
for (i=1; i<OsdWindowHeight-1; i++)
{
Osd_DrawStr(0, i, tSpace2);
Osd_DrawStr(OsdWindowWidth-1, i, tSpace2);
}
}
else
{
if(MenuPageIndex==ModeInfoMenu)
{
DrawModeInfo();
}
else if (MenuPageIndex==BurninMenu)
{ //set burnin initail color
Osd_SetTextColor(CP_WhiteColor, CP_BlueColor);
for (i=0; i<OsdWindowHeight; i++)
Osd_DrawStr(0, i, tSpace28);
}
else
{
Osd_SetTextColor(CP_GreenColor, CP_GreenColor);
if (CurrentMenuItems==StandbyMenuItems)
{
for (i=3; i<6; i++)
Osd_DrawStr(4, i, tSpace19);
}
Osd_SetTextColor(CP_RedColor, CP_RedColor);
Osd_DrawStr(2, 2, tSpace1);
Osd_DrawStr(24, 2, tSpace1);
Osd_SetTextColor(CP_GreenColor, CP_GreenColor);
Osd_DrawStr(2, 4, tSpace1);
Osd_DrawStr(24, 4, tSpace1);
Osd_SetTextColor(CP_BlueColor, CP_BlueColor);
Osd_DrawStr(2, 6, tSpace1);
Osd_DrawStr(24, 6, tSpace1);
}
}
}
else if(MenuPageIndex==UnsupportedModeMenu)
{
Osd_SetTextColor(CP_WhiteColor, CP_RedColor);
Osd_DrawStr(0, 0, tSpace30);
Osd_DrawStr(0, OsdWindowHeight-1, tSpace30);
DrawOutOfRangeInfo();
}
else if (MenuPageIndex==MainMenu)
{
Osd_SetTextColor(CP_BlueColor, CP_BlueColor);
for (i=OSDStartPos+7; i<OsdWindowHeight-OSDStartPos; i++)
Osd_DrawStr(OSDStartPos+0, i, tSpace2);
}
Osd_Show();
}
else if (MenuPageIndex==MainMenu || MenuPageIndex==FactoryMainMenu)
{
mStar_WriteOSDByte(SUBW1C, 0);
mStar_WriteOSDByte(SUBW2C, 0);
mStar_WriteOSDByte(SUBW3C, 0);
redrawFlags=BIT7;
}
// draw osd menu item
if (redrawFlags&BIT7)
DrawOsdMenuItem(MenuItemIndex|BIT7, &CurrentMenuItem);
else
for (i=0; i<MenuItemCount; i++)
DrawOsdMenuItem(i, &CurrentMenu.MenuItems[i]);
}
}
//=========================================================================
// draw menu item
void DrawOsdMenuItem(BYTE itemIndex, MenuItemType *menuItem)
{ if (menuItem->Flags&mibInvisible)
return;
if (menuItem->Flags&mibFactoryItem && !FactoryModeFlag)
return;
if (menuItem->Flags&mibSelectable && &CurrentMenuItem==menuItem)
Osd_SetTextColor(menuItem->SelForeColor, menuItem->SelBackColor);
else
Osd_SetTextColor(menuItem->ForeColor, menuItem->BackColor);
if (menuItem->Flags&mibDVIDisable && SrcInputType == Input_Digital)
Osd_SetTextColor(CP_GrayColor, CP_BlueColor);
if (&CurrentMenuItem==menuItem)
{ if (menuItem->Flags&mibUseSubW1) // for gauge
{ mStar_WriteOSDByte(SUBW1C, 0x00);
if (MenuPageIndex==TrackingMenu)
{ mStar_WriteOSDByte(SW1HST, OSDStartPos+4); // for Gauge
mStar_WriteOSDByte(SW1HEND, OSDStartPos+24); // for Gauge
}
else if (MenuPageIndex>=Factory1Menu)
{ mStar_WriteOSDByte(SW1HST, OSDStartPos+4); // for Gauge
mStar_WriteOSDByte(SW1HEND, OSDStartPos+28); // for Gauge
}
else
{ mStar_WriteOSDByte(SW1HST, OSDStartPos+4); // for Gauge
mStar_WriteOSDByte(SW1HEND, OSDStartPos+23); // for Gauge
}
mStar_WriteOSDByte(SW1VST, menuItem->YPos);
mStar_WriteOSDByte(SW1VEND, menuItem->YPos);
mStar_WriteOSDByte(SUBW1C, 0x01);
}
else if (menuItem->Flags&mibUseSubW2) // for gauge
{ mStar_WriteOSDByte(SUBW2C, 0x00);
mStar_WriteOSDByte(SW2VST, menuItem->YPos);
mStar_WriteOSDByte(SW2VEND, menuItem->YPos);
mStar_WriteOSDByte(SUBW2C, 0x01);
}
else
{ mStar_WriteOSDByte(SUBW1C, 0x00);
mStar_WriteOSDByte(SUBW2C, 0x00);
}
}
if (!(itemIndex&BIT7))
DrawOsdMenuItemText(itemIndex, menuItem);
itemIndex&=0x7F;
if (&CurrentMenuItem==menuItem || menuItem->Flags&mibDrawValue)
{ if (&(menuItem->DisplayValue))
DrawOsdMenuItemValue(itemIndex, &(menuItem->DisplayValue));//->DisplayValue);
}
}
//=========================================================================
// draw menu item display text
void Draw2x2Icon(MenuItemType *menuItem)
{ BYTE *icon=menuItem->DisplayText();
Osd_DrawChar(menuItem->XPos, menuItem->YPos, *icon);
Osd_DrawChar(menuItem->XPos+1, menuItem->YPos, *(icon+1));
Osd_DrawStr(menuItem->XPos, menuItem->YPos+1, (icon+2));
}
void DrawOsdMenuItemText(BYTE itemIndex, MenuItemType *menuItem)
{ if (menuItem->DisplayText==NULL)
return;
if (menuItem->DrawItemMethod==DWI_Icon || menuItem->DrawItemMethod==DWI_Text)
Osd_DrawStr(menuItem->XPos, menuItem->YPos, menuItem->DisplayText());
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -