📄 osdnd.c
字号:
// Arguments : bMessage: the message.
// Return : none.
// Side Effect : none.
// Notes :
//***************************************************************************
void _OSDND_ShowBottomMessage(void)
{
switch (_bOSDMsg)
{
case MSG_AUDIO:
_OSDND_ShowAudio();
break;
case MSG_VOLUME:
_OSDND_ShowVolume();
break;
case MSG_MUTE:
if (_wOSDInfo)
GDI_CopyCodeString(aNDMuteOn[_bOSDLang]);
else
GDI_CopyCodeString(aNDMuteOff[_bOSDLang]);
break;
case MSG_AUDIO_OUTPUT_CTL:
_OSDND_ShowAudioOutput();
break;
case MSG_KEY: //CoCo1.00, OSD module just define one message for KEY_UP, KEY_DOWN and KEY_NORMAL
_OSDND_ShowAudioKeyControl();
break;
case MSG_ECHO:
_OSDND_ShowEcho();
break;
case MSG_SURROUND:
_OSDND_ShowSurround();
break;
#ifdef KARAOKE
case MSG_3D:
_OSDND_Show3D();
break;
#endif
case MSG_ANGLE_CTL:
_OSDND_ShowAngle();
break;
case MSG_AST_CTL:
GDI_CopyCodeString(aNDLanguage[_bOSDLang]);
_OSDND_OutputBottomString();
_OSD_OutputAudioType();
_OSDND_OutputBottomString();
if (__wDiscType & BOOK_DVD)
{
GDI_CopyCodeString(aNDAudioDistance);
_OSDND_OutputBottomString();
_OSD_OutputAudioChannel();
_OSDND_OutputBottomString();
}
GDI_CopyCodeString(aNDAudioDistance);
_OSDND_OutputBottomString();
if (__bASTNs) // AST exist
{
_OSDND_CodeToLanguage(__wA_LCD);
_OSDND_OutputBottomString();
GDI_CopyCodeString(aNDAudioDistance);
_OSDND_OutputBottomString();
_bOSDIndex = 1;
OSD_OutputNumFromIndex((WORD)(__bASTNO+1), OSDND_FONT_INDEX);
__wGDIString[_bOSDIndex++] = aNDSlash[1];
OSD_OutputNumFromIndex(__bASTNs, OSDND_FONT_INDEX);
}
else
GDI_CopyCodeString(aNDPUnknownLanguage);
break;
case MSG_SPST_CTL:
if (__bSPSTNs) // exist SP
{
GDI_CopyCodeString(aNDSubtitle[_bOSDLang]);
_OSDND_OutputBottomString();
// spst is on, ie. __bSP_Disp_OFF is 0 or 128 ~255
if ((__bSP_Disp_OFF==0) || (__bSP_Disp_OFF&0x80))
{
_OSDND_CodeToLanguage(__wSP_LCD);
_OSDND_OutputBottomString();
GDI_CopyCodeString(aNDAudioDistance);
_OSDND_OutputBottomString();
_bOSDIndex = 1;
OSD_OutputNumFromIndex((WORD)(__bSPSTNO+1), OSDND_FONT_INDEX);
__wGDIString[_bOSDIndex++] = aNDSlash[1];
OSD_OutputNumFromIndex(__bSPSTNs, OSDND_FONT_INDEX);
}
else // spst is off
GDI_CopyCodeString(aNDOff[_bOSDLang]);
}
else
return;
break;
default:
break;
}
GDI_DRAW_STRING(_wOSDVPHPos, __wOSDBottomVPos);
}
//***************************************************************************
// Function : _OSDND_ClearRegion
// Abstract : This function will clear the region.
// Arguments : bRegion: The region you want to clear.
// Return : none.
// Side Effect : none.
// Notes :
//***************************************************************************
void _OSDND_ClearRegion(BYTE bRegion)
{
switch (bRegion)
{
case OSDND_UPPER_RIGHT_REGION:
if (_bCurrentUI == OSD_UI_FM)
{
//SET_RECT(__GDIParm.u.RectParm.rect, (OSDFM_DISPLAY_TITLE_START_H+OSDFM_DISPLAY_TITLE_WIDTH), __wOSDUpVPos, OSDFM_DISPLAY_BACKGROUND_RIGHT, (OSDFM_DISPLAY_BIG_FRAME_V-1));
_OSDFM_ClearRegion(OSDFM_CLEAR_RECOVER_UPPER_REGION);
}
#ifdef SUPPORT_FM_BUTTONS
else if (_bCurrentUI == OSD_UI_PROGRAM_LIST)
{
_OSDPL_ClearRegion(OSDPL_CLEAR_RECOVER_UPPER_REGION);
}
#endif
else if (_bCurrentUI == OSD_UI_THUMBNAIL)
{
_THUMBNAIL_ClearRegion(THUMBNAIL_CLEAR_RECOVER_UPPER_REGION);
}
else
{
SET_RECT(__GDIParm.u.RectParm.rect, OSDND_UPPER_BACKGROUND_START_H, OSDND_UPPER_BACKGROUND_START_V, OSDND_UPPER_BACKGROUND_RIGHT, OSDND_UPPER_BACKGROUND_BOTTOM);
}
break;
case OSDND_BOTTOM_REGION:
if (_bCurrentUI == OSD_UI_FM)
{
_OSDFM_ClearRegion(OSDFM_CLEAR_RECOVER_BOTTOM_REGION);
}
#ifdef SUPPORT_FM_BUTTONS
else if (_bCurrentUI == OSD_UI_PROGRAM_LIST)
{
_OSDPL_ClearRegion(OSDPL_CLEAR_RECOVER_BOTTOM_REGION);
}
#endif
else
{
SET_RECT(__GDIParm.u.RectParm.rect, OSDND_BOTTOM_BACKGROUND_START_H, __wOSDBottomVPos, OSDND_BOTTOM_BACKGROUND_START_RIGHT, OSDND_BOTTOM_BACKGROUND_START_BOTTOM);
}
break;
default:
return;
}
#ifdef SUPPORT_FM_BUTTONS
if ((_bCurrentUI == OSD_UI_FM) || (_bCurrentUI == OSD_UI_PROGRAM_LIST))
#else
if (_bCurrentUI == OSD_UI_FM)
#endif
__GDIParm.u.RectParm.bColor = __bOSDBg;
else
__GDIParm.u.RectParm.bColor = PAL_ENTRY_COLOR_TRANSPARENT;
GDI_FillRect((PPARM_RECT)&__GDIParm);
}
//***************************************************************************
// Function : _OSDND_ShowSlideTransitionTime
// Abstract : Show the time of slide transition.
// Arguments : none.
// Return : none.
// Side Effect : none.
// Notes :
//***************************************************************************
void _OSDND_ShowSlideTransitionTime(void)
{
if (_bOSDMsg == MSG_SLOW)
return;
OSD_OutputNum(_wOSDInfo, OSDND_FONT_INDEX); //time
_OSDND_OutputUpString();
_OSDND_OutputTextEx(aNDSlideTransitionTime);
}
//***************************************************************************
// Function : _OSDND_ShowPlayAction
// Abstract : none.
// Arguments : none.
// Return : none.
// Side Effect : none.
// Notes :
//***************************************************************************
void _OSDND_ShowPlayAction(void)
{
OSD_OutputNum(_bSpeedFactor, OSDND_FONT_INDEX);
_OSDND_OutputUpString();
if (_bOSDMsg == MSG_SLOW)
{
GDI_CopyCodeString(aNDSlash);
_OSDND_OutputUpString();
OSD_OutputNum(1, OSDND_FONT_INDEX);
_OSDND_OutputUpString();
}
GDI_CopyCodeString(aNDSpeed);
_OSDND_OutputUpString();
switch (_bOSDMsg)
{
case MSG_SCANFORWARD:
_OSDND_OutputTextEx(aNDScanF[_bOSDLang]);
break;
case MSG_SCANBACKWARD:
_OSDND_OutputTextEx(aNDScanB[_bOSDLang]);
break;
case MSG_SLOW:
_OSDND_OutputTextEx(aNDSlow[_bOSDLang]);
break;
default:
break;
}
}
//***************************************************************************
// Function : _OSDND_ShowTime
// Abstract : This function will show the time.
// Arguments : none.
// Return : none.
// Side Effect : none.
// Notes :
//***************************************************************************
void _OSDND_ShowTime(void)
{
OSD_ShowHourMinSec(OSDND_FONT_INDEX);
_OSDND_OutputUpString();
switch (_bOSDMsg)
{
case MSG_REMAIN_ABSTIME:
case MSG_REMAIN_RELTIME:
case MSG_REMAIN_TITLE_TIME:
case MSG_REMAIN_CHAPTER_TIME:
GDI_CopyCodeString(aRemain[OSDND_FONT_INDEX]);
break;
case MSG_ABSTIME:
case MSG_RELTIME:
case MSG_TITLE_TIME:
case MSG_CHAPTER_TIME:
GDI_CopyCodeString(aNDPlus);
break;
default:
break;
}
_OSDND_OutputUpString();
switch (_bOSDMsg)
{
// absolute time/ absolute remain time, ie disc unit
case MSG_ABSTIME:
case MSG_REMAIN_ABSTIME:
GDI_CopyCodeString(aNDDisc[_bOSDLang]);
break;
// relative playing time/ relative remain time, ie. track unit
case MSG_RELTIME:
case MSG_REMAIN_RELTIME:
GDI_CopyCodeString(aNDTrack[_bOSDLang]);
break;
// title playing time/ title remain time
case MSG_TITLE_TIME:
case MSG_REMAIN_TITLE_TIME:
GDI_CopyCodeString(aNDTitle[_bOSDLang]);
break;
// chapter playing time/ chapter remain time
case MSG_CHAPTER_TIME:
case MSG_REMAIN_CHAPTER_TIME:
GDI_CopyCodeString(aNDChapter[_bOSDLang]);
break;
}
}
//***************************************************************************
// Function : _OSDND_ShowAudio
// Abstract : Call this funciton to show audio info.
// Arguments : none.
// Return : none.
// Side Effect : none.
// Notes :
//***************************************************************************
void _OSDND_ShowAudio(void)
{
//switch (gcShowStatus.bAudioChannel)
switch (__bModeChannel) //CoCo1.21
{
case AUDIO_STEREO:
GDI_CopyCodeString(aNDLR[_bOSDLang]);
break;
case AUDIO_LL:
GDI_CopyCodeString(aNDLL[_bOSDLang]);
break;
case AUDIO_RR:
GDI_CopyCodeString(aNDRR[_bOSDLang]);
break;
/* --CoCo2.31, no one set __bModeChannel to AUDIO_3D.
case AUDIO_3D:
GDI_CopyCodeString(aND3DAudio);
break;
*/
}
}
//***************************************************************************
// Function : _OSDND_SetBarAttribute
// Abstract : Set the common attribute for the horizontal bar.
// Arguments : none.
// Return : none.
// Side Effect : none.
// Notes :
//***************************************************************************
void _OSDND_SetBarAttribute(void)
{
__GDIParm.u.VolumeBar.bBarColor = OSDND_PALETTE_ENTRY_BAR_FG;
__GDIParm.u.VolumeBar.bBgColor = __bOSDBg;
__GDIParm.u.VolumeBar.bOriention = ORIENTION_HORIZONTAL;
}
//***************************************************************************
// Function : _OSDND_ShowVolume
// Abstract : Call this function to show volume bar.
// Arguments : none.
// Return : none.
// Side Effect : none.
// Notes :
//***************************************************************************
void _OSDND_ShowVolume(void)
{
GDI_CopyCodeString(aNDVolume[_bOSDLang]);
_OSDND_OutputBottomString();
//show volume bar
if (!(_bVolDisplayed & VOL_DISPLAYED)) // brian0.95
GDI_FILL_RECT(_wOSDVPHPos, __wOSDBottomVPos, (_wOSDVPHPos+OSDND_DISPLAY_VOLUME_BAR_WIDTH+OSDND_DISTANCE_FONT_VOLUME_BAR*2), (__wOSDBottomVPos+OSDND_FONT_HEIGHT-1), __bOSDBg);
_wOSDVPHPos += OSDND_DISTANCE_FONT_VOLUME_BAR;
_bOSDVPTemp = LOBYTE(_wOSDInfo);
_OSDND_SetBarAttribute();
__GDIParm.u.VolumeBar.wVolume = (WORD)_bOSDVPTemp*100/OSDND_DISPLAY_VOLUME_BAR_RANGE; // percent
SET_RECT(__GDIParm.u.VolumeBar.rect, _wOSDVPHPos, (__wOSDBottomVPos+(OSDND_FONT_HEIGHT-OSDND_DISPLAY_VOLUME_BAR_HEIGHT)/2), (_wOSDVPHPos+OSDND_DISPLAY_VOLUME_BAR_WIDTH), (__wOSDBottomVPos+OSDND_DISPLAY_VOLUME_BAR_HEIGHT));
GDI_DrawVolumeBar((PPARM_VOLUME_BAR)&__GDIParm);
_bOSDIndex = 1; //put from the index 1 of __wGDIString[]
if (_bOSDVPTemp < 10)
{
OSD_OutputNumFromIndex(0, OSDND_FONT_INDEX);
}
OSD_OutputNumFromIndex(_bOSDVPTemp, OSDND_FONT_INDEX);
_wOSDVPHPos += OSDND_DISPLAY_VOLUME_BAR_WIDTH+OSDND_DISTANCE_FONT_VOLUME_BAR;
#ifdef SUPPORT_TUNE_DRAM_CLOCK_PHASE //CoCo2.32, add the code to support tuning the DRAM clock phase.
GDI_DRAW_STRING(_wOSDVPHPos, __wOSDBottomVPos);
_wOSDVPHPos += GDI_GetStringWidth()+16;
_bOSDIndex = 1; //put from the index 1 of __wGDIString[]
if (__dwDRAMClockPhaseValue < 10)
{
OSD_OutputNumFromIndex(0, OSDND_FONT_INDEX);
}
OSD_OutputNumFromIndex((WORD)__dwDRAMClockPhaseValue, OSDND_FONT_INDEX);
#endif
}
//***************************************************************************
// Function : _OSDND_ShowAudioKeyControl
// Abstract : Call this function to show audio key bar.
// Arguments : none.
// Return : none.
// Side Effect : none.
// Notes :
//***************************************************************************
void _OSDND_ShowAudioKeyControl(void)
{
GDI_CopyCodeString(aNDTone[_bOSDLang]);
_OSDND_OutputBottomString();
//show key bar
if (!(_bVolDisplayed & KEY_DISPLAYED)) // brian0.95
GDI_FILL_RECT(_wOSDVPHPos, __wOSDBottomVPos, (_wOSDVPHPos+OSDND_DISPLAY_AUDIO_KEY_BAR_WIDTH+OSDND_DISTANCE_FONT_AUDIO_KEY_BAR*2), (__wOSDBottomVPos+OSDND_FONT_HEIGHT-1), __bOSDBg);
_wOSDVPHPos += OSDND_DISTANCE_FONT_AUDIO_KEY_BAR;
_OSDND_SetBarAttribute();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -