📄 osddsply.c
字号:
//Clear Display mode UI.
_OSDDSPLY_ClearDisplayModeUI();
_bOSDDSPLYMode = OSDDSPLY_MODE_NONE;
//Tell OSD that the Display mode UI exits.
OSD_ChangeUI(OSD_UI_DISPLAY, OSD_EXIT_UI);
}
else if (wParam == OSD_CHANGE_UI)
{
_OSDDSPLY_SwitchDisplayModeUI();
}
}
else if (bMessage == MSG_INITIAL_PALETTE)
{
_OSDDSPLY_InitializeGDI();
}
else //Call each Display mode UI's entry to show the message.
{
if (_bOSDDSPLYEnterTimeMode)
return _OSDDSPLY_LD_SpecialTimeModeUpdate(bMessage);
switch (pOSDDSPTypeMode[_bOSDDSPLYMode].bDisplayModeID)
{
#ifndef NO_DVD_DISPLAY_UI //++CoCo2.37p
case OSDDSPLY_MODE_DVD_TITLE_ELAPSED:
case OSDDSPLY_MODE_DVD_TITLE_REMAIN:
case OSDDSPLY_MODE_DVD_CHAPTER_ELAPSED:
case OSDDSPLY_MODE_DVD_CHAPTER_REMAIN:
#endif //NO_DVD_DISPLAY_UI
#ifndef NO_VCD_DISPLAY_UI //++CoCo2.37p
case OSDDSPLY_MODE_VCD_SINGLE_ELAPSED:
case OSDDSPLY_MODE_VCD_SINGLE_REMAIN:
case OSDDSPLY_MODE_VCD_TOTAL_ELAPSED:
case OSDDSPLY_MODE_VCD_TOTAL_REMAIN:
#endif //NO_VCD_DISPLAY_UI
case OSDDSPLY_MODE_JPEG_LD:
case OSDDSPLY_MODE_CDROM_MOTION_ELAPSED:
#ifdef OSDDSPLY_SUPPORT_SHOW_REMAIN_TIME_FOR_DIVX
case OSDDSPLY_MODE_CDROM_MOTION_REMAIN:
#endif //OSDDSPLY_SUPPORT_SHOW_REMAIN_TIME_FOR_DIVX
case OSDDSPLY_MODE_CDROM_AUDIO:
//Update the message in one-line Display mode.
return _OSDDSPLY_LD_Update(bMessage);
#ifndef NO_DVD_DISPLAY_UI //++CoCo2.37p
case OSDDSPLY_MODE_DVD_VIRTUAL_PANEL:
#endif //NO_DVD_DISPLAY_UI
case OSDDSPLY_MODE_JPEG_VIRTUAL_PANEL:
case OSDDSPLY_MODE_DIVX_VIRTUAL_PANEL:
//Update the message in the virtual panel.
return _OSDDSPLY_VP_Update(bMessage);
#ifdef SUPPORT_NAVIGATOR //++CoCo2.37p
case OSDDSPLY_MODE_DVD_NAVIGATOR:
//Navigator doesn't receive the message to show information. It just process key.
//But when Navgator receives MSG_TITLE/MSG_CHAPTER, it needs to clear some menu for navigation.
OSDDSPLY_NAVIGATOR_ClearMenuForNVChange(bMessage);
return FALSE;
#endif //#ifdef SUPPORT_NAVIGATOR //++CoCo2.37p
default:
return FALSE;
}
}
return TRUE;
}
//***************************************************************************
// Function : _OSDDSPLY_InitializeGDI
// Abstract :
// Arguments : none.
// Return : none.
// Side Effect : none.
// Notes :
//***************************************************************************
void _OSDDSPLY_InitializeGDI(void)
{
_bOSDDSPLYTemp = __SetupInfo.bUIStyle-SETUP_CUSTOM_UI_STYLE_BEGIN;
//Initialize the palette for Line Display.
GDI_ChangePALEntry(OSDDSPLY_LD_PALETTE_ENTRY_GENERAL_BACKGROUND, OSDDSPLYLDBackground[_bOSDDSPLYTemp], TRUE);
GDI_ChangePALEntry(OSDDSPLY_LD_PALETTE_ENTRY_REGION_TITLE_ITEM, OSDDSPLYLDTitleItem[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_LD_PALETTE_ENTRY_REGION_CHAPTER_ITEM, OSDDSPLYLDChapterItem[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_LD_PALETTE_ENTRY_REGION_PROGRAM_STATUS, OSDDSPLYLDProgramStatus[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_LD_PALETTE_ENTRY_REGION_FILE_NAME_ITEM_TEXT, OSDDSPLYLDFileNameItem[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_LD_PALETTE_ENTRY_REGION_FILE_NUM_ITEM_TEXT, OSDDSPLYLDFileNumItem[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_LD_PALETTE_ENTRY_REGION_TITLE_INFO, OSDDSPLYLDTitleInfo[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_LD_PALETTE_ENTRY_REGION_CHAPTER_INFO, OSDDSPLYLDChapterInfo[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_LD_PALETTE_ENTRY_REGION_TIME_INFO, OSDDSPLYLDTimeInfo[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_LD_PALETTE_ENTRY_REGION_FILE_NAME_INFO, OSDDSPLYLDFileNameInfo[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_LD_PALETTE_ENTRY_REGION_FILE_NUM_INFO, OSDDSPLYLDFileNumInfo[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_LD_PALETTE_ENTRY_REGION_MENU, OSDDSPLYLDMenu[_bOSDDSPLYTemp], FALSE);
#ifndef SUPPORT_SIMPLE_DISPLAY_MODE
GDI_ChangePALEntry(OSDDSPLY_LD_PALETTE_ENTRY_GENERAL_BACKGROUND_FRAME, OSDDSPLYLDBackgroundFrame[_bOSDDSPLYTemp], TRUE);
#endif //SUPPORT_SIMPLE_DISPLAY_MODE
//Initialize the palette for virtual panel.
GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_GENERAL_BACKGROUND, OSDDSPLYVPBackground[_bOSDDSPLYTemp], TRUE);
GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTTRY_REGION_TITLE_ITEM, OSDDSPLYVPTitleItem[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_CHAPTER_ITEM, OSDDSPLYVPChapterItem[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_SUBTITLE_ITEM, OSDDSPLYVPSubtitleItem[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_AST_ITEM, OSDDSPLYVPASTItem[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_TV_ITEM, OSDDSPLYVPTVItem[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_ANGLE_ITEM, OSDDSPLYVPAngleItem[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_FILE_NAME_ITEM, OSDDSPLYVPFileNameItem[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_FILE_NUM_ITEM, OSDDSPLYVPFileNumItem[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_RESOLUTION_ITEM, OSDDSPLYVPResolutionItem[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_DATE_ITEM, OSDDSPLYVPDateItem[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_PROGRAM_STATUS, OSDDSPLYVPProgramStatus[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_PLAY_STATUS, OSDDSPLYVPPlayStatus[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_REPEAT_STATUS, OSDDSPLYVPRepeatStatus[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_TITLE_INFO, OSDDSPLYVPTitleInfo[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_CHAPTER_INFO, OSDDSPLYVPChapterInfo[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_TIME, OSDDSPLYVPTime[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_SUBTITLE_INFO, OSDDSPLYVPSubtitleInfo[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_AST_INFO, OSDDSPLYVPASTInfo[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_TV_INFO, OSDDSPLYVPTVInfo[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_ANGLE_INFO, OSDDSPLYVPAngleInfo[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_MENU, OSDDSPLYVPMenu[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_FILE_NAME_INFO, OSDDSPLYVPFileNameInfo[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_FILE_NUM_INFO, OSDDSPLYVPFileNumInfo[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_RESOLUTION_INFO, OSDDSPLYVPResolutionInfo[_bOSDDSPLYTemp], FALSE);
GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_DATE_INFO, OSDDSPLYVPDateInfo[_bOSDDSPLYTemp], FALSE);
GDI_WaitPaletteComplete();
}
//***************************************************************************
// Function : OSDDSPLY_Trigger
// Abstract : This function will be called by OSD_Trigger() to update UI.
// Arguments : none.
// Return : none.
// Side Effect : none.
// Notes :
//***************************************************************************
// LLY2.53, expand time value unit from WORD to DWORD
// Since, we will use [23:16]:hour, [15:8]: min, [7:0]: sec
//void OSDDSPLY_Trigger(BYTE bType, WORD wTime)
void OSDDSPLY_Trigger(BYTE bType, DWORD dwTime)
{
if (_bOSDDSPLYEnterTimeMode)
{
if (bType == OSD_TRIGGER_TIME)
{
_OSDDSPLY_LD_ShowSpecialTimeMode();
}
return;
}
switch (pOSDDSPTypeMode[_bOSDDSPLYMode].bDisplayModeID)
{
case OSDDSPLY_MODE_DVD_TITLE_ELAPSED:
case OSDDSPLY_MODE_DVD_TITLE_REMAIN:
case OSDDSPLY_MODE_DVD_CHAPTER_ELAPSED:
case OSDDSPLY_MODE_DVD_CHAPTER_REMAIN:
case OSDDSPLY_MODE_VCD_SINGLE_ELAPSED:
case OSDDSPLY_MODE_VCD_SINGLE_REMAIN:
case OSDDSPLY_MODE_VCD_TOTAL_ELAPSED:
case OSDDSPLY_MODE_VCD_TOTAL_REMAIN:
case OSDDSPLY_MODE_CDROM_AUDIO:
case OSDDSPLY_MODE_CDROM_MOTION_ELAPSED:
#ifdef OSDDSPLY_SUPPORT_SHOW_REMAIN_TIME_FOR_DIVX
case OSDDSPLY_MODE_CDROM_MOTION_REMAIN:
#endif //OSDDSPLY_SUPPORT_SHOW_REMAIN_TIME_FOR_DIVX
if (bType == OSD_TRIGGER_CONTROL)
{
#ifdef OSDDSPLY_SUPPORT_ENTER_TIME_MODE
if ((OS_GetSysTimer()-_dwOSDDSPLYDisplayStartTime) > OSDDSPLY_LD_ENTER_SPECIAL_TIME_MODE)
{
#ifndef NO_DISC_MODE //CoCo2.37
if ((__wDiscType & BOOK_DVD ) && ((__bDomain==VTSM_DOM) || (__bDomain==VMGM_DOM))) // Root Menu
{
_dwOSDDSPLYDisplayStartTime = OS_GetSysTimer();
return;
}
#endif //#ifndef NO_DISC_MODE //CoCo2.37
_bOSDDSPLYEnterTimeMode = TRUE;
//clear the line display region.
_OSDDSPLY_ClearBackground(pOSDDSPTypeMode[_bOSDDSPLYMode].bBackgroundType);
//Draw the background of special time mode
_OSDDSPLY_DrawBackground(OSDDSPLY_BACKGROUND_LD_TIME);
//Show time.
_OSDDSPLY_LD_ShowSpecialTimeMode();
}
#endif
}
else if (bType == OSD_TRIGGER_TIME)
{
_OSDDSPLY_LD_ShowTime(OSDDSPLY_UPDATE_INFO);
}
break;
case OSDDSPLY_MODE_DVD_VIRTUAL_PANEL:
#ifndef SUPPORT_SIMPLE_DISPLAY_MODE
if (bType == OSD_TRIGGER_TIME)
_OSDDSPLY_VP_ShowTime();
#endif //SUPPORT_SIMPLE_DISPLAY_MODE
break;
case OSDDSPLY_MODE_DIVX_VIRTUAL_PANEL:
#ifndef SUPPORT_SIMPLE_DISPLAY_MODE
if (bType == OSD_TRIGGER_TIME)
_OSDDSPLY_VP_MOTION_ShowTime();
#endif //SUPPORT_SIMPLE_DISPLAY_MODE
break;
#ifdef SUPPORT_NAVIGATOR //++CoCo2.37p
case OSDDSPLY_MODE_DVD_NAVIGATOR:
//Clear the "hint"?
if (bType == OSD_TRIGGER_CONTROL)
{
if (_bOSDDSPLYTipDisplayed)
{
if ((OS_GetSysTimer()-_dwOSDDSPLYDisplayStartTime) > OSDDSPLY_NAVIGATOR_SHOW_TIP_TIME)
_OSDDSPLY_NAVIGATOR_ClearTip();
}
}
break;
#endif //#ifdef SUPPORT_NAVIGATOR //++CoCo2.37p
default:
break;
}
}
//***************************************************************************
// Function : OSDDSPLY_Recover
// Abstract : This function will be called by OSD kernel to recover Display mode UI.
// Arguments : bRecoverRegion: OSD_RECOVER_UPPER_REGION/OSD_RECOVER_BOTTOM_REGION/OSD_RECOVER_ALL.
// Return : none.
// Side Effect : none.
// Notes :
//***************************************************************************
BYTE OSDDSPLY_Recover(BYTE bRecoverRegion)
{
if (bRecoverRegion == OSD_RECOVER_ALL)
{
//Initialize GDI
_OSDDSPLY_InitializeGDI();
if (_bOSDDSPLYEnterTimeMode)
{
//Draw the background of special time mode
_OSDDSPLY_DrawBackground(OSDDSPLY_BACKGROUND_LD_TIME);
_OSDDSPLY_LD_ShowSpecialTimeMode();
}
else
{
//Draw current Display mode background.
_OSDDSPLY_DrawBackground(pOSDDSPTypeMode[_bOSDDSPLYMode].bBackgroundType);
_OSDDSPLY_ShowDisplayModeUI(TRUE);
}
return TRUE;
}
else
return FALSE;
}
//***************************************************************************
// Function : _OSDDSPLY_LD_SpecialTimeModeUpdate
// Abstract :
// Arguments : bMessage: the message.
// Return : TRUE: the message has been processed by one-line display.
// : FALSE: the message doesn't be processed by one-line display.
// Side Effect :
// Notes :
//***************************************************************************
BYTE _OSDDSPLY_LD_SpecialTimeModeUpdate(BYTE bMessage)
{
switch (bMessage)
{
case MSG_ABSTIME:
case MSG_RELTIME:
case MSG_TITLE_TIME:
case MSG_CHAPTER_TIME:
case MSG_REMAIN_ABSTIME:
case MSG_REMAIN_RELTIME:
case MSG_REMAIN_TITLE_TIME:
case MSG_REMAIN_CHAPTER_TIME:
_OSDDSPLY_LD_ShowSpecialTimeMode();
return TRUE;
default:
return FALSE;
}
}
//***************************************************************************
// Function : _OSDDSPLY_LD_Update
// Abstract : This is the entry to update the message to one-line display.
// Arguments : bMessage: the message.
// Return : TRUE: the message has been processed by one-line display.
// : FALSE: the message doesn't be processed by one-line display.
// Side Effect :
// Notes :
//***************************************************************************
BYTE _OSDDSPLY_LD_Update(BYTE bMessage)
{
switch (bMessage)
{
case MSG_TITLE:
case MSG_CHAPTER:
case MSG_PROGRAM:
_OSDDSPLY_LD_ShowInfo(bMessage);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -