📄 o_display.c
字号:
MS_SetInvisible(MS_FindObjectFromDescriptor( (MSO_CONTAINER __NEAR*)pThis, (MS_DESCRIPTOR*)&oCurrentTimeTxtDescriptor));
MS_SetInvisible(MS_FindObjectFromDescriptor( (MSO_CONTAINER __NEAR*)pThis, (MS_DESCRIPTOR*)&oElapseTimeTitleDescriptor));
MS_SetInvisible(MS_FindObjectFromDescriptor( (MSO_CONTAINER __NEAR*)pThis, (MS_DESCRIPTOR*)&TEXT_OBJECT_DESCRIPTOR(1)));
MS_SetInvisible(MS_FindObjectFromDescriptor( (MSO_CONTAINER __NEAR*)pThis, (MS_DESCRIPTOR*)&VALUE_OBJECT_DESCRIPTOR(1)));
MS_SetInvisible(MS_FindObjectFromDescriptor( (MSO_CONTAINER __NEAR*)pThis, (MS_DESCRIPTOR*)&TEXT_OBJECT_DESCRIPTOR(2)));
MS_SetInvisible(MS_FindObjectFromDescriptor( (MSO_CONTAINER __NEAR*)pThis, (MS_DESCRIPTOR*)&VALUE_OBJECT_DESCRIPTOR(2)));
MS_SetInvisible(MS_FindObjectFromDescriptor( (MSO_CONTAINER __NEAR*)pThis, (MS_DESCRIPTOR*)&TEXT_OBJECT_DESCRIPTOR(3)));
MS_SetInvisible(MS_FindObjectFromDescriptor( (MSO_CONTAINER __NEAR*)pThis, (MS_DESCRIPTOR*)&VALUE_OBJECT_DESCRIPTOR(3)));
MS_SetInvisible(MS_FindObjectFromDescriptor( (MSO_CONTAINER __NEAR*)pThis, (MS_DESCRIPTOR*)&TEXT_OBJECT_DESCRIPTOR(4)));
MS_SetInvisible(MS_FindObjectFromDescriptor( (MSO_CONTAINER __NEAR*)pThis, (MS_DESCRIPTOR*)&VALUE_OBJECT_DESCRIPTOR(4)));
MS_ClearInvisible(MS_FindObjectFromDescriptor( (MSO_CONTAINER __NEAR*)pThis, (MS_DESCRIPTOR*)&TEXT_OBJECT_DESCRIPTOR(5)));
MS_ClearInvisible(MS_FindObjectFromDescriptor( (MSO_CONTAINER __NEAR*)pThis, (MS_DESCRIPTOR*)&VALUE_OBJECT_DESCRIPTOR(5)));
break;
}
default:
return FALSE;
}
return TRUE;
#else
return FALSE;
#endif //D_GUI_SINGLE_LINE_COMPONENT
}
/**************************************************************************
* Function : _IsAudioEmpty
* In :
* Out :
* Desc :
***************************************************************************/
#ifdef D_GUI_SINGLE_LINE_COMPONENT
BOOL _IsAudioEmpty(void)
{
if ((0 == CoreAPI_GetTotalAudioNum() || ERROR_AUDIO_NUM == CoreAPI_GetTotalAudioNum()) ||
( eClipType_JPEG == CoreAPI_GetCurrentClipType()))
return TRUE;
else
return FALSE;
}
#endif //D_GUI_SINGLE_LINE_COMPONENT
/**************************************************************************
* Function : _IsSubTitleEmpty
* In :
* Out :
* Desc :
***************************************************************************/
#ifdef D_GUI_SINGLE_LINE_COMPONENT
BOOL _IsSubTitleEmpty(void)
{
if ((0 == CoreAPI_GetTotalSubtitleNum() || ERROR_SUBTITLE_NUM == CoreAPI_GetTotalSubtitleNum())
||( eClipType_JPEG == CoreAPI_GetCurrentClipType()))
return TRUE;
else
return FALSE;
}
#endif //D_GUI_SINGLE_LINE_COMPONENT
/**************************************************************************
* Function : _IsAngleEmpty
* In :
* Out :
* Desc :
***************************************************************************/
#ifdef D_GUI_SINGLE_LINE_COMPONENT
BOOL _IsAngleEmpty(void)
{
if ((0 == CoreAPI_GetTotalAngleNum() ||ERROR_ANGLE_NUM == CoreAPI_GetTotalAngleNum()) ||
( eClipType_JPEG == CoreAPI_GetCurrentClipType()))
return TRUE;
else
return FALSE;
}
#endif //D_GUI_SINGLE_LINE_COMPONENT
/**************************************************************************
* Function :
* In :
* Out :
* Desc :
***************************************************************************/
static MS_OP _PPTextTickOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam)
{
switch(MsOp)
{
case MS_OP_TICK:
// Update the refresh count:
pThis->mwAttr = (pThis->mwAttr & ~MS_ATTR_TICK_MASK) |((pThis->mwAttr & MS_ATTR_TICK_MASK) << 1);
if((pThis->mwAttr & MS_ATTR_TICK_MASK) >= NUMBER_OF_TICKS_PER_UPDATE)
{
// Reset the refresh count:
pThis->mwAttr = ((pThis->mwAttr & ~MS_ATTR_TICK_MASK) | MS_ATTR_UPDATE_TICK_START_COUNT);
if ((!MS_IsInvisible(pThis->mpParent)) && _IsDisplayRefreshAllowed())
{
// Refresh:
MS_SendOperation(pThis, MS_OP_BUILD_TEXT_STRING, (UINT32)((MS_DESCRIPTOR_TEXT*)(pThis->mpDescriptor))->mText->mParam);
#if (defined( D_GUI_SINGLE_LINE_COMPONENT) &&defined ( D_GUI_OSD_2BPP))
if(!MS_IsInvisible(pThis) && pThis->moArea.msX > COL_A_LINE_X_POS)
{
FORMATED_UNICODE_STRING oFormUniStr;
// TODO: write func get the width of str
OSDR_GetFormUniStr_ScFormatted((FORMATED_UNICODE_STRING __NEAR*)&oFormUniStr, (UINT32)(((MSO_TEXT __NEAR*)pThis)->moParam.wScFormUniStr));
if(COL_B_WIDTH < oFormUniStr.mwPixelWidth)
{
MS_ObjectResize(((MSO_OBJECT __NEAR*) MS_GetParentPtr(pThis)), OSD_LAYOUT_AREA_POPUP_W_MAX, ((MSO_OBJECT __NEAR*) MS_GetParentPtr(pThis))->moArea.mwH);
MS_ObjectResize(pThis,oFormUniStr.mwPixelWidth,pThis->moArea.mwH);
MS_DisplayAddObject(((MSO_OBJECT __NEAR*) MS_GetParentPtr(pThis)));
}
else
{
MS_DisplayAddObject(((MSO_OBJECT __NEAR*) MS_GetParentPtr(pThis)));
MS_ObjectResize(((MSO_OBJECT __NEAR*) MS_GetParentPtr(pThis)), OSD_LAYOUT_AREA_POPUP_W, ((MSO_OBJECT __NEAR*) MS_GetParentPtr(pThis))->moArea.mwH);
MS_ObjectRestorePosition(pThis);
}
}
#endif//( D_GUI_SINGLE_LINE_COMPONENT && D_GUI_OSD_2BPP)
MS_SendOperation(pThis, MS_OP_REFRESH, lParam);
}
}
break;
}
// Now call the generic preproctext op handler:
return(OTEXT_Operation(pThis, MsOp, lParam));
}
/**************************************************************************
* Function :
* In :
* Out :
* Desc :
***************************************************************************/
#pragma argsused
static void _GetPos1Str(FORMATED_UNICODE_STRING __NEAR* pFormUniStr, UINT32 lParam)
{
// Determine the disc type:
switch(CoreAPI_GetCurrentMediaType())
{
#ifdef DVD_VR_SUPPORT
case MEDIA_TYPE_DVDVR:
#endif
case MEDIA_TYPE_DVD_VIDEO:
// Pos 1 is the title for a DVDV
OSDR_GetFormUniStr_OsdMessage(pFormUniStr, (UINT32)S_TITLE);
break;
#ifdef DVD_AUDIO_SUPPORT
case MEDIA_TYPE_DVD_AUDIO:
// Pos 1 is the group for a DVDA
OSDR_GetFormUniStr_OsdMessage(pFormUniStr, (UINT32)S_GROUP);
break;
#endif
case MEDIA_TYPE_VCD:
case MEDIA_TYPE_SVCD:
if(CoreAPI_IsPBCOn())
{
OSDR_GetFormUniStr_OsdMessage(pFormUniStr, (UINT32)S_PBC_ON);
}
else
{
OSDR_GetFormUniStr_OsdMessage(pFormUniStr, (UINT32)S_TRACK);
}
break;
case MEDIA_TYPE_CLIPS:
{
#ifdef D_DIVX6_SUPPORT
//for DivX and Avi , only DivX6 need Title
if (CoreAPI_IsCurrItemDivX6())
{
OSDR_GetFormUniStr_OsdMessage(pFormUniStr, (UINT32)S_TITLE);
break;
}
#endif//D_DIVX6_SUPPORT
#ifdef IS_ASF_CAPABLE
if ( eClipType_ASF == CoreAPI_GetCurrentClipType() )
{
OSDR_GetFormUniStr_OsdMessage(pFormUniStr, (UINT32)S_TITLE);
break;
}
#endif //#ifdef IS_ASF_CAPABLE
}
default:
OSDR_GetFormUniStr_OsdMessage(pFormUniStr, (UINT32)S_TRACK);
break;
}
return;
}
/**************************************************************************
* Function :
* In :
* Out :
* Desc :
***************************************************************************/
#pragma argsused
static void _GetPos1ValueStr(FORMATED_UNICODE_STRING __NEAR* pFormUniStr, UINT32 lParam)
{
// Determine the disc type:
switch(CoreAPI_GetCurrentMediaType())
{
#ifdef DVD_AUDIO_SUPPORT
case MEDIA_TYPE_DVD_AUDIO:
// FALL THRU
#endif
#ifdef DVD_VR_SUPPORT
case MEDIA_TYPE_DVDVR:
#endif
case MEDIA_TYPE_DVD_VIDEO:
// Display the current and total title values.
STR_GenerateNumericAndTotalNumeric( CoreAPI_GetCurrentTitleGroupNum(),
CoreAPI_GetTotalTitleGroupNum(),
(UINT16*)&(pFormUniStr->mszUniStr),
0,
UNISTR_LENGTH_MAX+1);
OSDR_FormatUniString(pFormUniStr);
break;
case MEDIA_TYPE_VCD:
case MEDIA_TYPE_SVCD:
if(CoreAPI_IsPBCOn())
{
OSDR_GetFormUniStr_OsdMessage(pFormUniStr, (UINT32)S_NULL);
}
else
{
STR_GenerateNumericAndTotalNumeric(CoreAPI_GetCurrentChapterTrackNum(),
CoreAPI_GetTotalChapterTrackNum(0),
(UINT16*)&(pFormUniStr->mszUniStr),
0,
UNISTR_LENGTH_MAX+1);
OSDR_FormatUniString(pFormUniStr);
}
break;
case MEDIA_TYPE_CLIPS:
{
#ifdef D_DIVX6_SUPPORT
//For all avi and DivX ,only DivX6 need Title
if (CoreAPI_IsCurrItemDivX6())
{
if (CoreAPI_IsMPEG4TitleAvailable())
{
STR_GenerateNumericAndTotalNumeric( CoreAPI_GetCurrentTitleGroupNum(),
CoreAPI_GetTotalTitleGroupNum(),
(UINT16*)&(pFormUniStr->mszUniStr),
0,
UNISTR_LENGTH_MAX+1);
OSDR_FormatUniString(pFormUniStr);
break;
}
else//if is Divx6 , be sure not reach default .
{
OSDR_GetFormUniStr_OsdMessage(pFormUniStr, S_NULL);
break;
}
}
#endif//D_DIVX6_SUPPORT
#ifdef IS_MP4_CAPABLE
if (eClipType_MP4 == CoreAPI_GetCurrentClipType() )
{
// TODO: this condition should be set after API update this func to support MP4
// if (CoreAPI_IsMPEG4TitleAvailable())
// {
STR_GenerateNumericAndTotalNumeric( CoreAPI_GetCurrentTitleGroupNum(),
CoreAPI_GetTotalTitleGroupNum(),
(UINT16*)&(pFormUniStr->mszUniStr),
0,
UNISTR_LENGTH_MAX+1);
OSDR_FormatUniString(pFormUniStr);
break;
// }
// else//be sure not reach default .
// {
// OSDR_GetFormUniStr_OsdMessage(pFormUniStr, S_NULL);
// break;
// }
}
#endif //IS_MP4_CAPABLE
#ifdef D_GUI_ITEM_ACCESS
{
UINT16 wCurrentItemNum = CoreAPI_GetUiItemIndexCurrent();
UINT16 wTotalItemNum = CoreAPI_GetUiItemIndexTotal();
if (NULL_INDEX == wCurrentItemNum)
wCurrentItemNum = 0;
if (NULL_INDEX == wTotalItemNum)
wTotalItemNum = 0;
STR_GenerateNumericAndTotalNumeric(wCurrentItemNum, wTotalItemNum, (UINT16*)&(pFormUniStr->mszUniStr), 0, UNISTR_LENGTH_MAX+1);
OSDR_FormatUniString(pFormUniStr);
break;
}
#endif //D_GUI_ITEM_ACCESS
}
default:
STR_GenerateNumericAndTotalNumeric(CoreAPI_GetCurrentChapterTrackNum(),
CoreAPI_GetTotalChapterTrackNum(0),
(UINT16*)&(pFormUniStr->mszUniStr),
0,
UNISTR_LENGTH_MAX+1);
OSDR_FormatUniString(pFormUniStr);
break;
}
return;
}
/**************************************************************************
* Function :
* In :
* Out :
* Desc :
***************************************************************************/
#pragma argsused
static void _GetPos2Str(FORMATED_UNICODE_STRING __NEAR* pFormUniStr, UINT32 lParam)
{
// Determine the disc type:
switch(CoreAPI_GetCurrentMediaType())
{
#ifdef DVD_VR_SUPPORT
case MEDIA_TYPE_DVDVR:
// FALL THRU
#endif
case MEDIA_TYPE_DVD_VIDEO:
OSDR_GetFormUniStr_OsdMessage(pFormUniStr, S_CHAPTER);
break;
#ifdef DVD_AUDIO_SUPPORT
case MEDIA_TYPE_DVD_AUDIO:
OSDR_GetFormUniStr_OsdMessage(pFormUniStr, S_TRACK);
break;
#endif
case MEDIA_TYPE_CLIPS:
#ifdef D_DIVX6_SUPPORT
//For all avi and DivX ,only DivX6 need Chapter
if( CoreAPI_IsCurrItemDivX6())
{
if (CoreAPI_IsMPEG4ChapterAvailable())
{
OSDR_GetFormUniStr_OsdMessage(pFormUniStr, S_CHAPTER);
break;
}
}
#endif//D_DIVX6_SUPPORT
#ifdef IS_MP4_CAPABLE
if( eClipType_MP4 == CoreAPI_GetCurrentClipType() )
{
if (CoreAPI_IsMPEG4ChapterAvailable())
{
OSDR_GetFormUniStr_OsdMessage(pFormUniStr, S_CHAPTER);
break;
}
}
#endif //IS_MP4_CAPABLE
default: // nothing to display in this position
OSDR_GetFormUniStr_OsdMessage(pFormUniStr, S_NULL);
break;
}
return;
}
/**************************************************************************
* Function :
* In :
* Out :
* Desc :
***************************************************************************/
#pragma argsused
static void _GetPos2ValueStr(FORMATED_UNICODE_STRING __NEAR* pFormUniStr, UINT32 lParam)
{
// Determine the disc type:
switch(CoreAPI_GetCurrentMediaType())
{
#ifdef DVD_AUDIO_SUPPORT
case MEDIA_TYPE_DVD_AUDIO:
// FALL THRU
#endif
#ifdef DVD_VR_SUPPORT
case MEDIA_TYPE_DVDVR:
#endif
case MEDIA_TYPE_DVD_VIDEO:
if (0 == CoreAPI_GetCurrentChapterTrackNum())
{
STR_GenerateOSDMESSAGEString(S_EMPTY_CHAPTER,
(UINT16*)&(pFormUniStr->mszUniStr),
0,
UNISTR_LENGTH_MAX+1);
}
else
{
// Display the current and total chapter values.
STR_GenerateNumericAndTotalNumeric(CoreAPI_GetCurrentChapterTrackNum(),
CoreAPI_GetTotalChapterTrackNum(CoreAPI_GetCurrentTitleGroupNum()),
(UINT16*)&(pFormUniStr->mszUniStr),
0,
UNISTR_LENGTH_MAX+1);
}
OSDR_FormatUniString(pFormUniStr);
break;
case MEDIA_TYPE_CLIPS:
#ifdef D_DIVX6_SUPPORT
if (eClipType_AVI == CoreAPI_GetCurrentClipType())
{
if (CoreAPI_IsMPEG4ChapterAvailable())
{
if (0 == CoreAPI_GetCurrentChapterTrackNum())
{
STR_GenerateOSDMESSAGEString(S_EMPTY_CHAPTER,
(UINT16*)&(pFormUniStr->mszUniStr),
0,
UNISTR_LENGTH_MAX+1);
}
else
{
STR_GenerateNumericAndTotalNumeric(CoreAPI_GetCurrentChapterTrackNum(),
CoreAPI_GetTotalChapterTrackNum(CoreAPI_GetCurrentChapterTrackNum()),
(UINT16*)&(pFormUniStr->mszUniStr),
0,
UNISTR_LENGTH_MAX+1);
}
OSDR_FormatUniString(pFormUniStr);
break;
}
}
#endif//D_DIVX6_SUPPORT
#ifdef IS_MP4_CAPABLE
if (eClipType_MP4 == CoreAPI_GetCurrentClipType() )
{
if (CoreAPI_IsMPEG4ChapterAvailable())
{
if (0 == CoreAPI_GetCurrentChapterTrackNum())
{
STR_GenerateOSDMESSAGEString(S_EMPTY_CHAPTER,
(UINT16*)&(pFormUniStr->mszUniStr),
0,
UNISTR_LENGTH_MAX+1);
}
else
{
STR_GenerateNumericAndTotalNumeric(CoreAPI_GetCurrentChapterTrackNum(),
CoreAPI_GetTotalChapterTrackNum(CoreAPI_GetCurrentChapterTrackNum()),
(UINT16*)&(pFormUniStr->mszUniStr),
0,
UNISTR_LENGTH_MAX+1);
}
OSDR_FormatUniString(pFormUniStr);
break;
}
}
#endif //IS_MP4_CAPABLE
default: // nothing to display in this position
OSDR_GetFormUniStr_OsdMessage(pFormUniStr, (UINT32)S_NULL);
break;
}
return;
}
/**************************************************************************
* Function :
* In :
* Out :
* Desc :
***************************************************************************/
#pragma argsused
static void _GetPos3Str(FORMATED_UNICODE_STRING __NEAR* pFormUniStr, UINT32 lParam)
{
// Determine the disc type:
switch(CoreAPI_GetCurrentMediaType())
{
case MEDIA_TYPE_CLIPS:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -