📄 osdvp.c
字号:
if ((bMessage == MSG_REPEAT) || (bMessage == MSG_PROGRAM) || (bMessage == MSG_VIDEO_OUTPUT)) //CoCo1.00, let OSD module process the message again.
return FALSE;
else
return TRUE;
}
//***************************************************************************
// Function : _OSDVP_ShowItem
// Abstract : This function will show the item according to the message.
// Arguments : bMessage: The message.
// Return : none.
// Side Effect : none.
// Notes :
//***************************************************************************
void _OSDVP_ShowItem(BYTE bMessage)
{
_OSDVP_OutputString(bMessage, OSDVP_UPDATE_ITEM);
switch (bMessage)
{
case MSG_TITLE:
case MSG_TRACK:
_bOSDVPTemp = OSDVP_REGION_TITLE;
break;
case MSG_CHAPTER:
if ((__bDomain == VTSM_DOM) || (__bDomain == VMGM_DOM))// Root Menu/Title Menu
return;
else
_bOSDVPTemp = OSDVP_REGION_CHAPTER;
break;
case MSG_SPST_CTL:
_bOSDVPTemp = OSDVP_REGION_SUBTITLE;
break;
case MSG_AST_CTL:
_bOSDVPTemp = OSDVP_REGION_AST;
break;
case MSG_ANGLE_CTL:
_bOSDVPTemp = OSDVP_REGION_ANGLE;
break;
case MSG_TVMODE:
_bOSDVPTemp = OSDVP_REGION_TVMODE;
break;
default:
break;
}
_OSDVP_DrawRegion(_bOSDVPTemp, OSDVP_UPDATE_ITEM, 0);
}
//***************************************************************************
// Function : _OSDVP_ShowDVDItems
// Abstract : This function will show the items for DVD.
// Arguments : none.
// Return : none.
// Side Effect : none.
// Notes :
//***************************************************************************
void _OSDVP_ShowDVDItems(void)
{
#ifdef SAMLL_DISPLAY_MODE_2 //CoCo.230, show small display mode.
#ifdef SHOW_UNKNOWN_STATE_WHEN_STOP
if (__bCountStop != 0)
{
_OSDVP_UpdateUnknownRegions();
return;
}
#endif
_OSDVP_ShowItem(MSG_SPST_CTL);
_OSDVP_ShowInfo(MSG_SPST_CTL);
_OSDVP_ShowItem(MSG_AST_CTL);
_OSDVP_ShowInfo(MSG_AST_CTL);
_OSDVP_ShowItem(MSG_ANGLE_CTL);
_OSDVP_ShowInfo(MSG_ANGLE_CTL);
#else
//CoCo0.95, The stage and flow are defined and modified by Brain.
switch(_bOSDVPStage)
{
case 1:
//Update "Title" item
_OSDVP_ShowItem(MSG_TITLE);
//Update "Title" info.
_OSDVP_ShowInfo(MSG_TITLE);
//update "Chapter" item
_OSDVP_ShowItem(MSG_CHAPTER);
//update "Chapter" info.
_OSDVP_ShowInfo(MSG_CHAPTER);
_bOSDVPStage++;
break;
case 2:
//CoCo.110, Fix the problem about the time will flash in pre-stop/stop mode.
if (__bCountStop != 0)
{
_OSDVP_ShowUnknownTime();
}
else
{
_bOSDMsg = __bShowTimeType;
_OSDVP_ShowTime();
}
//Show playing status.
_OSDVP_ShowInfo(MSG_STATUS);
//update "Subtitle" item
_OSDVP_ShowItem(MSG_SPST_CTL);
_OSDVP_ShowInfo(MSG_SPST_CTL);
_bOSDVPStage++;
break;
case 3:
//update "Language" item
_OSDVP_ShowItem(MSG_AST_CTL);
_OSDVP_ShowInfo(MSG_AST_CTL);
_bOSDVPStage++;
break;
case 4:
//update "audio" info
_OSDVP_ShowInfo(MSG_AUDIO_OUTPUT_CTL);
//show P-SCAN/Interlace
_OSDVP_ShowInfo(MSG_PSCAN);
_bOSDVPStage++;
break;
case 5:
//update "equalizer" info
//_OSDVP_ShowInfo(MSG_SOUND_EFFECT);
_OSDVP_ShowItem(MSG_TVMODE);
_OSDVP_ShowInfo(MSG_TVMODE);
//update "angle" item
_OSDVP_ShowItem(MSG_ANGLE_CTL);
_OSDVP_ShowInfo(MSG_ANGLE_CTL);
_bOSDVPStage++;
break;
case 6:
_OSDVP_ShowInfo(MSG_REPEAT);
_OSDVP_ShowInfo(MSG_PROGRAM);
_bOSDVPStage = 0;
break;
default:
_bOSDVPStage = 0;
}
#endif
}
//***************************************************************************
// Function : _OSDVP_Initial
// Abstract : This function will do initializations for the virtual panel.
// Arguments : none.
// Return : none.
// Side Effect : none.
// Notes :
//***************************************************************************
void _OSDVP_Initial(void)
{
_bSpecialMode = FALSE;
_wOSDVPShowTime = 0xFFFF;
_bOSDVPShowAllTime = TRUE;
GDI_SetMixRatio(OSDVP_MIX_RATIO_BACKGROUND); //The mix ration just effects the background
GDI_SetCurrentRegion(0); //use region 0
_OSDVP_ClearRegion(OSDVP_REGION_ALL, 0);
GDI_ActivateRegion(); //open GDI
//No shadow
GDI_SetTextColor(TEXT_SHADOW_COLOR_1, OSDVP_PALETTE_ENTRY_GENERAL_BACKGROUND);
GDI_SetTextColor(TEXT_SHADOW_COLOR_2, OSDVP_PALETTE_ENTRY_GENERAL_BACKGROUND);
}
#ifndef GDI_4_BIT_OSD
//***************************************************************************
// Function : _OSDVP_InitializeGDI
// Abstract : This function will initialize the palettes and draw the background of
// : the virtual panel.
// Arguments : none.
// Return : none.
// Side Effect : none.
// Notes :
//***************************************************************************
void _OSDVP_InitializeGDI(void)
{
//Set the palette entry.
GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_GENERAL_BACKGROUND, OSDVP_PALETTE_COLOR_GENERAL_BACKGROUND, TRUE);
GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_DISCTYPE, OSDVP_PALETTE_COLOR_REGION_DISCTYPE, FALSE);
GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_TITLE_ITEM, OSDVP_PALETTE_COLOR_REGION_TITLE_ITEM, FALSE);
GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_CHAPTER_ITEM, OSDVP_PALETTE_COLOR_REGION_CHAPTER_ITEM, FALSE);
GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_SUBTITLE_ITEM, OSDVP_PALETTE_COLOR_REGION_SUBTITLE_ITEM, FALSE);
GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_SUBTITLE_INFO, OSDVP_PALETTE_COLOR_REGION_SUBTITLE_INFO, FALSE);
GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_AST_ITEM, OSDVP_PALETTE_COLOR_REGION_AST_ITEM, FALSE);
GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_AST_INFO, OSDVP_PALETTE_COLOR_REGION_AST_INFO, FALSE);
GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_PLAY, OSDVP_PALETTE_COLOR_REGION_PLAY, FALSE);
GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_TITLE_INFO, OSDVP_PALETTE_COLOR_REGION_TITLE_INFO, FALSE);
GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_CHAPTER_INFO, OSDVP_PALETTE_COLOR_REGION_CHAPTER_INFO, FALSE);
GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_TIME, OSDVP_PALETTE_COLOR_REGION_TIME, FALSE);
GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_KEY, OSDVP_PALETTE_COLOR_REGION_KEY, FALSE);
GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_AUDIO, OSDVP_PALETTE_COLOR_REGION_AUDIO, FALSE);
GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_EQUALIZER, OSDVP_PALETTE_COLOR_REGION_EQUALIZER, FALSE);
GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_TV, OSDVP_PALETTE_COLOR_REGION_TV, FALSE);
GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_ANGLE_ITEM, OSDVP_PALETTE_COLOR_REGION_ANGLE_ITEM, FALSE);
GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_ANGLE_INFO, OSDVP_PALETTE_COLOR_REGION_ANGLE_INFO, FALSE);
}
#endif
//***************************************************************************
// Function : _OSDVP_ClearRegion
// Abstract : This function will clear the region from (the starting of the region + bPos).
// Arguments : bClearRegion: The region you want to clear.
// : bPos: The relative position of the region.
// Return : none.
// Side Effect : none.
// Notes :
//***************************************************************************
void _OSDVP_ClearRegion(BYTE bClearRegion, BYTE bPos)
{
switch (bClearRegion)
{
case OSDVP_REGION_ALL:
#ifdef SAMLL_DISPLAY_MODE_2
SET_RECT(__GDIParm.u.RectParm.rect, OSDVP_START_H, OSDVP_START_V, (OSDVP_START_H+OSDVP_WIDTH), (OSDVP_START_V+OSDVP_HEIGHT-1));
#else
SET_RECT(__GDIParm.u.RectParm.rect, OSDVP_START_H, OSDVP_START_V, (OSDVP_START_H+OSDVP_WIDTH), (OSDVP_START_V+OSDVP_HEIGHT));
#endif
break;
case OSDVP_REGION_TITLE:
SET_RECT(__GDIParm.u.RectParm.rect,
(OSDVP_REGION_TITLE_START_H+bPos),
OSDVP_REGION_TITLE_START_V,
(OSDVP_REGION_TITLE_START_H+OSDVP_REGION_TITLE_WIDTH),
(OSDVP_REGION_TITLE_START_V+OSDVP_REGION_TITLE_HEIGHT));
break;
case OSDVP_REGION_CHAPTER:
SET_RECT(__GDIParm.u.RectParm.rect,
(OSDVP_REGION_CHAPTER_START_H+bPos),
OSDVP_REGION_CHAPTER_START_V,
(OSDVP_REGION_CHAPTER_START_H+OSDVP_REGION_CHAPTER_WIDTH),
(OSDVP_REGION_CHAPTER_START_V+OSDVP_REGION_CHAPTER_HEIGHT));
break;
case OSDVP_REGION_SUBTITLE:
#ifdef SAMLL_DISPLAY_MODE_2
SET_RECT(__GDIParm.u.RectParm.rect,
(OSDVP_REGION_SUBTITLE_START_H+bPos),
OSDVP_REGION_SUBTITLE_START_V,
(OSDVP_REGION_SUBTITLE_START_H+OSDVP_REGION_SUBTITLE_WIDTH),
(OSDVP_REGION_SUBTITLE_START_V+OSDVP_REGION_SUBTITLE_HEIGHT-1));
#else
SET_RECT(__GDIParm.u.RectParm.rect,
(OSDVP_REGION_SUBTITLE_START_H+bPos),
OSDVP_REGION_SUBTITLE_START_V,
(OSDVP_REGION_SUBTITLE_START_H+OSDVP_REGION_SUBTITLE_WIDTH),
(OSDVP_REGION_SUBTITLE_START_V+OSDVP_REGION_SUBTITLE_HEIGHT));
#endif
break;
case OSDVP_REGION_AST:
#ifdef SAMLL_DISPLAY_MODE_2
SET_RECT(__GDIParm.u.RectParm.rect,
(OSDVP_REGION_AST_START_H+bPos),
OSDVP_REGION_AST_START_V,
(OSDVP_REGION_AST_START_H+OSDVP_REGION_AST_WIDTH),
(OSDVP_REGION_AST_START_V+OSDVP_REGION_AST_HEIGHT-1));
#else
SET_RECT(__GDIParm.u.RectParm.rect,
(OSDVP_REGION_AST_START_H+bPos),
OSDVP_REGION_AST_START_V,
(OSDVP_REGION_AST_START_H+OSDVP_REGION_AST_WIDTH),
(OSDVP_REGION_AST_START_V+OSDVP_REGION_AST_HEIGHT));
#endif
break;
case OSDVP_REGION_TIME:
SET_RECT(__GDIParm.u.RectParm.rect,
(OSDVP_REGION_TIME_START_H+bPos),
OSDVP_REGION_TIME_START_V,
(OSDVP_REGION_TIME_START_H+OSDVP_REGION_TIME_WIDTH),
(OSDVP_REGION_TIME_START_V+OSDVP_REGION_TIME_HEIGHT));
break;
case OSDVP_REGION_AUDIO:
#ifdef SAMLL_DISPLAY_MODE_2
SET_RECT(__GDIParm.u.RectParm.rect,
(OSDVP_REGION_AUDIO_START_H+bPos),
OSDVP_REGION_AUDIO_START_V,
(OSDVP_REGION_AUDIO_START_H+OSDVP_REGION_AUDIO_WIDTH),
(OSDVP_REGION_AUDIO_START_V+OSDVP_REGION_AUDIO_HEIGHT-1));
#else
SET_RECT(__GDIParm.u.RectParm.rect,
(OSDVP_REGION_AUDIO_START_H+bPos),
OSDVP_REGION_AUDIO_START_V,
(OSDVP_REGION_AUDIO_START_H+OSDVP_REGION_AUDIO_WIDTH),
(OSDVP_REGION_AUDIO_START_V+OSDVP_REGION_AUDIO_HEIGHT));
#endif
break;
case OSDVP_REGION_TVMODE:
SET_RECT(__GDIParm.u.RectParm.rect,
(OSDVP_REGION_TVMODE_START_H+bPos),
OSDVP_REGION_TVMODE_START_V,
(OSDVP_REGION_TVMODE_START_H+OSDVP_REGION_TVMODE_WIDTH),
(OSDVP_REGION_TVMODE_START_V+OSDVP_REGION_TVMODE_HEIGHT));
break;
case OSDVP_REGION_TV:
SET_RECT(__GDIParm.u.RectParm.rect,
(OSDVP_REGION_TV_START_H+bPos),
OSDVP_REGION_TV_START_V,
(OSDVP_REGION_TV_START_H+OSDVP_REGION_TV_WIDTH),
(OSDVP_REGION_TV_START_V+OSDVP_REGION_TV_HEIGHT));
break;
case OSDVP_REGION_ANGLE:
#ifdef SAMLL_DISPLAY_MODE_2
SET_RECT(__GDIParm.u.RectParm.rect,
(OSDVP_REGION_ANGLE_START_H+bPos),
OSDVP_REGION_ANGLE_START_V,
(OSDVP_REGION_ANGLE_START_H+OSDVP_REGION_ANGLE_WIDTH),
(OSDVP_REGION_ANGLE_START_V+OSDVP_REGION_ANGLE_HEIGHT-1));
#else
SET_RECT(__GDIParm.u.RectParm.rect,
(OSDVP_REGION_ANGLE_START_H+bPos),
OSDVP_REGION_ANGLE_START_V,
(OSDVP_REGION_ANGLE_START_H+OSDVP_REGION_ANGLE_WIDTH),
(OSDVP_REGION_ANGLE_START_V+OSDVP_REGION_ANGLE_HEIGHT));
#endif
break;
case OSDVP_REGION_STATUS:
SET_RECT(__GDIParm.u.RectParm.rect,
(OSDVP_REGION_STATUS_START_H+bPos),
OSDVP_REGION_STATUS_START_V,
(OSDVP_REGION_STATUS_START_H+OSDVP_REGION_STATUS_WIDTH),
(OSDVP_REGION_STATUS_START_V+OSDVP_REGION_STATUS_HEIGHT));
break;
case OSDVP_REGION_REPEAT:
SET_RECT(__GDIParm.u.RectParm.rect,
(OSDVP_REGION_REPEAT_START_H+bPos),
OSDVP_REGION_REPEAT_START_V,
(OSDVP_REGION_REPEAT_START_H+OSDVP_REGION_REPEAT_WIDTH),
(OSDVP_REGION_REPEAT_START_V+OSDVP_REGION_REPEAT_HEIGHT));
break;
case OSDVP_REGION_PROGRAM:
SET_RECT(__GDIParm.u.RectParm.rect,
(OSDVP_REGION_PROGRAM_START_H+bPos),
OSDVP_REGION_PROGRAM_START_V,
(OSDVP_REGION_PROGRAM_START_H+OSDVP_REGION_PROGRAM_WIDTH),
(OSDVP_REGION_PROGRAM_START_V+OSDVP_REGION_PROGRAM_HEIGHT));
break;
case OSDVP_REGION_MENU:
SET_RECT(__GDIParm.u.RectParm.rect,
(OSDVP_REGION_MENU_START_H+bPos),
OSDVP_REGION_MENU_START_V,
(OSDVP_REGION_MENU_START_H+OSDVP_REGION_MENU_WIDTH),
(OSDVP_REGION_MENU_START_V+OSDVP_REGION_MENU_HEIGHT));
break;
default:
return;
}
__GDIParm.u.RectParm.bColor = OSDVP_PALETTE_ENTRY_GENERAL_BACKGROUND;
GDI_FillRect((PPARM_RECT)&__GDIParm);
}
//***************************************************************************
// Function : _OSDVP_OutputString
// Abstract : This function will output the strings for the fixed items.
// Arguments : bMessage: the message.
// : bType: OSDVP_UPDATE_ITEM: Ouput the string of the item.
// : OSDVP_UPDATE_INFO: Output the info for the item.
// Return : none.
// Side Effect : none.
// Notes :
//***************************************************************************
void _OSDVP_OutputString(BYTE bMessage, BYTE bType)
{
switch (bMessage)
{
case MSG_TITLE: //update title region
_OSDVP_ShowTitle(bType);
break;
case MSG_CHAPTER:
_OSDVP_ShowChapter(bType);
break;
case MSG_SPST_CTL:
_OSDVP_ShowSPST(bType);
break;
case MSG_AST_CTL:
_OSDVP_ShowAST(bType);
break;
case MSG_TVMODE:
_OSDVP_ShowTVMode(bType);
break;
case MSG_PSCAN:
case MSG_VIDEO_OUTPUT:
_OSDVP_ShowPSCAN();
break;
case MSG_ANGLE_CTL:
_OSDVP_ShowAngle(bType);
break;
case MSG_STATUS:
_OSDVP_ShowPlayingStatus();
break;
case MSG_REPEAT:
if (__bRepeat == REPEAT_NONE)
{
__wGDIString[0] = 0;
}
else
{
GDI_CopyCodeString(aVPRepeatSymbol);
}
break;
case MSG_PROGRAM:
if (__btPlayingProgram)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -