📄 osdld.c
字号:
break;
case MSG_TITLE:
case MSG_CHAPTER:
case MSG_TRACK:
case MSG_PROGRAM:
_OSDLD_ShowInfo(bMessage);
if (__wDiscType & CDROM_M1)
{
_OSDLD_ShowInfo(MSG_FOLDER);
//CoCo1.07, clear time region. If playing from MP3 to JPEG, need to clear the "time" region.
_OSDLD_ClearRegion(OSDLD_REGION_TIME, 0);
}
break;
case MSG_CLEAR_ALL:
SET_RECT(__GDIParm.u.RectParm.rect, OSDLD_START_H, OSDLD_START_V, (OSDLD_START_H+OSDLD_WIDTH), (OSDLD_START_V+OSDLD_HEIGHT-1));
_OSD_FillTransparentRegion();
break;
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:
//CoCo1.24a, add the judgement by LJY's comment.
//To avoid showing transient OSD time for gototime.
if (__bSearchMode == SEARCH_MODE_OFF)
_OSDLD_ShowTime();
break;
case MSG_STOP:
_wOSDInfo = gcShowStatus.wCurrentTrack;
#ifdef PRESTOP_BEFORE_SETUP_AND_PROGRAM //xuli2.37, when setup/program stop, do not show -:--:--
if((!__bSetupMode) && (__bProgramStop==0))
#endif
_OSDLD_UpdateUnknownRegions();
_wOSDVPShowTime = 0xFFFF; //CoCo2.38, reset the time when MSG_STOP.
_bOSDVPShowAllTime = TRUE;
default:
GDI_LinkPseudoRegion(FALSE);
return FALSE;
}
GDI_LinkPseudoRegion(FALSE);
return TRUE;
}
//***************************************************************************
// Function : _OSDLD_UpdateUnknownRegions
// Abstract : This function will update the unknown status for all regions.
// Arguments : none.
// Return : none.
// Side Effect : none.
// Notes :
//***************************************************************************
void _OSDLD_UpdateUnknownRegions(void)
{
//show unknown status
if (__wDiscType & BOOK_DVD)
{
#ifdef SHOW_UNKNOWN_STATE_WHEN_STOP
//Update the title/chapter item again because we may stop from Title Menu or Root Menu.
_OSDLD_ShowItem(MSG_TITLE);
_OSDLD_ShowItem(MSG_CHAPTER);
_OSDLD_ShowUnknownTitle();
_OSDLD_ShowUnknownChapter();
#else
_OSDLD_ShowInfo(MSG_TITLE);
_OSDLD_ShowInfo(MSG_CHAPTER);
#endif
}
else
{
#ifdef SHOW_UNKNOWN_STATE_WHEN_STOP
_OSDLD_ShowUnknownTrack();
#else
if ((__bCountStop == 2) && (!(__wDiscType & BOOK_CDROM)))
_OSDLD_ShowUnknownTrack();
else
_OSDLD_ShowInfo(MSG_TRACK);
#endif
}
_OSDLD_ShowUnknownTime();
//CoCo1.07, Update the program status in stop mode.
_OSDLD_ShowInfo(MSG_PROGRAM);
}
//***************************************************************************
// Function : _OSDLD_OutputString
// Abstract : This function will output the string of the item according to bMessage.
// Arguments : bMessage: The message.
// Return : none.
// Side Effect : none.
// Notes :
//***************************************************************************
void _OSDLD_OutputString(BYTE bMessage)
{
switch (bMessage)
{
case MSG_TITLE: //update title region
GDI_CopyCodeString(aLDTitle[_bOSDLang]);
break;
case MSG_CHAPTER:
GDI_CopyCodeString(aLDChapter[_bOSDLang]);
break;
case MSG_TRACK:
GDI_CopyCodeString(aLDTrack[_bOSDLang]);
break;
case MSG_FOLDER:
GDI_SetTextColor(TEXT_FG_COLOR, OSDLD_PALETTE_ENTRY_GENERAL_BACKGROUND);
GDI_SetTextColor(TEXT_SHADOW_COLOR_1, GDI_ENTRY_4B_COLOR_BLACK);
GDI_SetTextColor(TEXT_SHADOW_COLOR_2, GDI_ENTRY_4B_COLOR_WHITE);
GDI_CopyCodeString(aLDOpenFolderIcon);
_OSDLD_DrawRegion(OSDLD_REGION_FOLDER, OSDLD_UPDATE_ICON, 0);
//No shadow
GDI_SetTextColor(TEXT_SHADOW_COLOR_1, OSDLD_PALETTE_ENTRY_GENERAL_BACKGROUND);
GDI_SetTextColor(TEXT_SHADOW_COLOR_2, OSDLD_PALETTE_ENTRY_GENERAL_BACKGROUND);
_wOSDVPHPos += GDI_GetStringWidth();
GDI_CopyCodeString(aLDFolderItem);
break;
default:
break;
}
}
//***************************************************************************
// Function : _OSDLD_ShowTitleInfo
// Abstract : This function will show the info. of the title.
// Arguments : none.
// Return : none.
// Side Effect : none.
// Notes :
//***************************************************************************
void _OSDLD_ShowTitleInfo(void)
{
_bOSDIndex = 1;
//_bDispTitle or __bTitle for current value?
OSD_OutputNumFromIndex(__bTitle, OSDLD_REGION_TITLE_NUMBER_INDEX);
__wGDIString[_bOSDIndex++] = aLDSlash[OSDLD_REGION_TITLE_NUMBER_INDEX][1]; //to be modified to "/"
OSD_OutputNumFromIndex(__bTitle_Ns, OSDLD_REGION_TITLE_NUMBER_INDEX);
_OSDLD_DrawRegion(OSDLD_REGION_TITLE, OSDLD_UPDATE_INFO, (BYTE)_wOSDVPHPos);
}
//CoCo2.37
//***************************************************************************
// Function : _OSDLD_ShowTitleMenu
// Abstract :
// Arguments : none.
// Return : none.
// Side Effect : none.
// Notes :
//***************************************************************************
void _OSDLD_ShowTitleMenu(void)
{
if (__bDomain == VTSM_DOM) // Root Menu
{
GDI_CopyCodeString(aVPRootMenu[_bOSDLang]);
}
else if (__bDomain == VMGM_DOM) // Title Menu
{
GDI_CopyCodeString(aVPTitleMenu[_bOSDLang]);
}
_OSDLD_DrawRegion(OSDLD_REGION_TITLE_MENU, OSDLD_UPDATE_ITEM, 0);
}
//***************************************************************************
// Function : _OSDLD_ShowChapterInfo
// Abstract : This function will show the info. of the chapter.
// Arguments : none.
// Return : none.
// Side Effect : none.
// Notes :
//***************************************************************************
void _OSDLD_ShowChapterInfo(void)
{
_bOSDIndex = 1;
//_wDispChapter or __wChapter?
OSD_OutputNumFromIndex(__wChapter, OSDLD_REGION_CHAPTER_NUMBER_INDEX);
__wGDIString[_bOSDIndex++] = aLDSlash[OSDLD_REGION_CHAPTER_NUMBER_INDEX][1]; //to be modified to "/"
//_wDispChapter_Ns_Title or __wChapter_Ns_Title?
OSD_OutputNumFromIndex(__wChapter_Ns_Title, OSDLD_REGION_CHAPTER_NUMBER_INDEX);
_OSDLD_DrawRegion(OSDLD_REGION_CHAPTER, OSDLD_UPDATE_INFO, (BYTE)_wOSDVPHPos);
}
//***************************************************************************
// Function : _OSDLD_ShowTrackInfo
// Abstract : This function will show the info. of track.
// Arguments : none.
// Return : none.
// Side Effect : none.
// Notes :
//***************************************************************************
void _OSDLD_ShowTrackInfo(void)
{
if (_wOSDInfo != 0)
{
OSD_OutputNum(_wOSDInfo, OSDLD_REGION_TITLE_NUMBER_INDEX);
}
else
GDI_CopyCodeString(aLDUnknownTrack);
_OSDLD_DrawRegion(OSDLD_REGION_TRACK, OSDLD_UPDATE_INFO, (BYTE)_wOSDVPHPos);
_wOSDVPHPos += GDI_GetStringWidth();
GDI_CopyCodeString(aLDSlash[OSDLD_REGION_TRACK_NUMBER_INDEX]);
_OSDLD_DrawRegion(OSDLD_REGION_TRACK, OSDLD_UPDATE_INFO, (BYTE)_wOSDVPHPos);
_wOSDVPHPos += GDI_GetStringWidth();
if (__wDiscType & CDROM_M1)
OSD_OutputNum(__pwFMFilesOfDir[__bFMPlayingDir], OSDLD_REGION_TRACK_NUMBER_INDEX);
else //VCD
{
if (_wOSDInfo != 0)
OSD_OutputNum(gcShowStatus.wTotalTracks, OSDLD_REGION_TRACK_NUMBER_INDEX);
else
GDI_CopyCodeString(aLDUnknownTrack);
}
_OSDLD_DrawRegion(OSDLD_REGION_TRACK, OSDLD_UPDATE_INFO, (BYTE)_wOSDVPHPos);
}
//***************************************************************************
// Function : _OSDLD_ShowFolderInfo
// Abstract : This function will show current playing folder.
// Arguments : none.
// Return : none.
// Side Effect : none.
// Notes :
//***************************************************************************
void _OSDLD_ShowFolderInfo(void)
{
//dir name
__bTemp = 0;
GDI_CopyCodeString(aLDOpenFolderIcon);
__wTemp = OSDLD_REGION_FOLDER_WIDTH - GDI_GetStringWidth();
GDI_CopyCodeString(aLDFolderItem);
__wTemp -= GDI_GetStringWidth();
#ifdef SUPPORT_UNICODE //CoCo2.36, support UNICODE string.
_wOSDFMMaxStringSpace = __wTemp;
while (__bTemp < FM_MAX_DIRNAME_LENGTH)
{
if (__bJolietTitle) //UNICODE
{
if ((__pFMDirNameList[__bFMPlayingDir].cName[__bTemp] == '\0') && (__pFMDirNameList[__bFMPlayingDir].cName[__bTemp+1] == '\0'))
break;
__wGDIString[__bTemp/2+1] = MAKEWORD(__pFMDirNameList[__bFMPlayingDir].cName[__bTemp+1], __pFMDirNameList[__bFMPlayingDir].cName[__bTemp]);
__bTemp += 2;
}
else //ASCII
{
if (__pFMDirNameList[__bFMPlayingDir].cName[__bTemp] == '\0')
break;
__wGDIString[__bTemp+1] = __pFMDirNameList[__bFMPlayingDir].cName[__bTemp];
__bTemp++;
}
}
if (__bJolietTitle)
__wGDIString[0] = (__bTemp >> 1);
else
__wGDIString[0] = __bTemp;
#else
while (__pFMDirNameList[__bFMPlayingDir].cName[__bTemp] != '\0')
{
__wGDIString[__bTemp+1] = OSD_TransformChar(__pFMDirNameList[__bFMPlayingDir].cName[__bTemp], OSDLD_REGION_FOLDER_FONT_INDEX);
if (__wTemp > ((__wGDIString[__bTemp+1] & 0xF000) >> 10))
{
__wTemp -= ((__wGDIString[__bTemp+1] & 0xF000) >> 10);
__bTemp++;
}
else
break;
if (__bTemp > OSDLD_MAX_DIRNAME_LENGTH)
{
__bTemp = OSDLD_MAX_DIRNAME_LENGTH;
break;
}
}
#endif
__wGDIString[0] = __bTemp;
_OSDLD_DrawRegion(OSDLD_REGION_FOLDER, OSDLD_UPDATE_INFO, (BYTE)_wOSDVPHPos);
/*
_wOSDVPHPos += GDI_GetStringWidth();
GDI_CopyCodeString(aLDFolderPath);
_OSDLD_DrawRegion(OSDLD_REGION_FOLDER, OSDLD_UPDATE_INFO, (BYTE)_wOSDVPHPos);
//file name
_wOSDVPHPos += GDI_GetStringWidth();
_OSDFM_CopyFileString((WORD)(__wPlayItem-1), OSDLD_REGION_FOLDER_FONT_INDEX);
_OSDLD_DrawRegion(OSDLD_REGION_FOLDER, OSDLD_UPDATE_INFO, (BYTE)_wOSDVPHPos);
*/
}
//***************************************************************************
// Function : _OSDLD_DrawRegion
// Abstract : This function will draw the region.
// Arguments : bRegion: The region you want to draw.
// : bType: OSDLD_UPDATE_ITEM: You want to draw the item.
// : OSDLD_UPDATE_INFO: You want to draw the info.
// : bPos: The relative position of the region.
// Return : none.
// Side Effect : none.
// Notes :
//***************************************************************************
// Brian1.21,
// limit color usage in Display mode
// for Item ==> use WHITE color
// for Info ==> use YELLOW color
// for Status icons ==> use ORANGE color
#ifndef SUPPORT_COLORFUL_DISPLAY_MODE
void _OSDLD_DrawRegion(BYTE bRegion, BYTE bType, BYTE bPos)
{
//clear all region except time region.
if (bRegion != OSDLD_REGION_TIME)
_OSDLD_ClearRegion(bRegion, bPos);
GDI_SetTextColor(TEXT_BG_COLOR, OSDLD_PALETTE_ENTRY_GENERAL_BACKGROUND);
_wOSDVPTemp = OSDLD_START_V + ((OSDLD_HEIGHT - GDI_GetStringHeight()) >> 1);
// Brian1.21, assign Foreground color
if (bRegion == OSDLD_REGION_PROGRAM)
GDI_SetTextColor(TEXT_FG_COLOR, OSDLD_REGION_PROGRAM_COLOR); // Organg
else
if (bType == OSDLD_UPDATE_INFO)
{
GDI_SetTextColor(TEXT_FG_COLOR, OSDLD_REGION_TITLE_INFO_COLOR); // Yellow
}
else
{
GDI_SetTextColor(TEXT_FG_COLOR, OSDLD_REGION_TITLE_ITEM_COLOR); // White
}
switch (bRegion)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -