📄 o_display_config.c
字号:
/* **************************************************************************************
* Copyright (c) 2004 ZORAN Corporation, All Rights Reserved
* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF ZORAN CORPORATION
*
* File: o_aux_subtitle_config.c
*
* Description:
* ========
*
****************************************************************************************/
/***************************************************************************************
* Descriptor :
*
* Purpose :
****************************************************************************************/
static CONST MS_X_Y_ALIGN oDisplayTextAlign =
{
0,
0,
ALIGN_H_LEFT_TO_CONTAINER,
ALIGN_V_CENTER_TO_CONTAINER
};
//
// OBJECT DEFINITIONS
//
// This is the object descriptor identifier for each label object:
#define TEXT_OBJECT_DESCRIPTOR(_num_) oPos##_num_##TxtDescriptor
// This is the object descriptor definition for each label object:
#define TEXT_OBJECT(_num_, _col_, _line_) \
\
static void _GetPos##_num_##Str(FORMATED_UNICODE_STRING __NEAR* pFormUniStr, UINT32 lParam); \
\
extern CONST MS_DESCRIPTOR_TEXT TEXT_OBJECT_DESCRIPTOR(_num_); \
\
static CONST OSD_TEXT oPos##_num_##OSDText = { \
_GetPos##_num_##Str, \
(UINT32)&TEXT_OBJECT_DESCRIPTOR(_num_) \
}; \
\
static CONST MS_DESCRIPTOR_TEXT TEXT_OBJECT_DESCRIPTOR(_num_) = \
{ \
{ \
sizeof(MSO_TEXT), \
MS_NAV_NULL, \
MS_ATTR_OSD_LAYER_0, \
{ \
COL_##_col_##_LINE_X_POS, \
LINE_##_line_##_Y, \
COL_##_col_##_WIDTH, \
LINE_HEIGHT \
}, \
_PPTextTickOperation, \
OTEXT_FillOSDSeg, \
(UINT8*)NULL \
}, \
(MS_X_Y_ALIGN *)&oDisplayTextAlign, \
(MS_COLOR_SET *)&oDefaultTextColorSet, \
NULL, \
(OSD_TEXT*)&oPos##_num_##OSDText ,\
FONT_0, \
NULL, \
NULL \
};
// This is the object descriptor identifier for each value object:
#define VALUE_OBJECT_DESCRIPTOR(_num_) oPos##_num_##ValueTxtDescriptor
// This is the object descriptor definition for each value object:
#define VALUE_OBJECT(_num_, _col_, _line_) \
\
static void _GetPos##_num_##ValueStr(FORMATED_UNICODE_STRING __NEAR* pFormUniStr, UINT32 lParam); \
\
extern CONST MS_DESCRIPTOR_TEXT VALUE_OBJECT_DESCRIPTOR(_num_); \
\
static CONST OSD_TEXT oPos##_num_##ValueOSDText = { \
_GetPos##_num_##ValueStr, \
(UINT32)&VALUE_OBJECT_DESCRIPTOR(_num_) \
}; \
\
static CONST MS_DESCRIPTOR_TEXT VALUE_OBJECT_DESCRIPTOR(_num_) = \
{ \
{ \
sizeof(MSO_TEXT), \
MS_NAV_NULL, \
MS_ATTR_OSD_LAYER_0, \
{ \
COL_##_col_##_LINE_X_POS, \
LINE_##_line_##_Y, \
COL_##_col_##_WIDTH, \
LINE_HEIGHT \
}, \
_PPTextTickOperation, \
OTEXT_FillOSDSeg, \
(UINT8*)NULL \
}, \
(MS_X_Y_ALIGN *)&oDisplayTextAlign, \
(MS_COLOR_SET *)&oDefaultTextColorSet, \
NULL, \
(OSD_TEXT*)&oPos##_num_##ValueOSDText, \
FONT_0, \
NULL, \
NULL \
};
//
// PARAMETER DECLARATIONS
//
/**************************************************************************
* DESCRIPTORS
***************************************************************************/
//
// This is the object used to display the disc type.
//
enum
{
GET_PLAYBACK_TIME_REMAINING,
GET_PLAYBACK_TIME_ELAPSED
} GET_PLAYBACK_TIME_TYPE;
extern CONST MS_DESCRIPTOR_TEXT oDiscTypeDescriptor;
static CONST OSD_TEXT oDiscTypeOSDText = {
_GetDiscTypeStr,
(UINT32)&oDiscTypeDescriptor
};
static CONST MS_DESCRIPTOR_TEXT oDiscTypeDescriptor =
{ // MS_DESCRIPTOR_MESSAGE_DEVICE
{// MS_DESCRIPTOR
sizeof(MSO_TEXT),
MS_NAV_NULL,
MS_ATTR_OSD_LAYER_0,
{
COL_1_LINE_X_POS,
TITLE_LINE_Y,
COL_1_WIDTH + 40, // The disc type label is wider than the other values in this column.
LINE_HEIGHT
},
_PPTextTickOperation,
OTEXT_FillOSDSeg,
mpParamNull
},
(MS_X_Y_ALIGN *)&oDisplayTextAlign,
(MS_COLOR_SET *)&oDefaultTextColorSet,
NULL,
(OSD_TEXT*)&oDiscTypeOSDText,
FONT_0,
NULL,
NULL
};
/***************************************************************************************
* DESCRIPTORS
****************************************************************************************/
#ifdef DVD_VR_SUPPORT
static CONST OSD_TEXT oDiscNameValueOSDText = {
_GetDiscNameStr,
NULL
};
static CONST MS_DESCRIPTOR_TEXT oDiscNameValueDescriptor =
{ // MS_DESCRIPTOR_MESSAGE_DEVICE
{// MS_DESCRIPTOR
sizeof(MSO_TEXT),
MS_NAV_NULL,
MS_ATTR_OSD_LAYER_0,
{
COL_2_LINE_X_POS,
TITLE_LINE_Y,
COL_2_WIDTH +28,
LINE_HEIGHT
},
_PPTextTickOperation,
OTEXT_FillOSDSeg,
mpParamNull
},
(MS_X_Y_ALIGN *)&oDisplayTextAlign,
(MS_COLOR_SET *)&oDefaultTextColorSet,
NULL,
(OSD_TEXT*)&oDiscNameValueOSDText,
FONT_0,
NULL,
NULL
};
static CONST OSD_TEXT oORGTitleOSDText = {
_GetORGTitleStr,
NULL
};
static CONST MS_DESCRIPTOR_TEXT oORGTitleDescriptor =
{// MS_DESCRIPTOR_TEXT
{// MS_DESCRIPTOR
sizeof(MSO_TEXT),
MS_NAV_NULL,
MS_ATTR_OSD_LAYER_0 ,
{
COL_2_LINE_X_POS+ 84,
LINE_1_Y,
COL_1_WIDTH,
LINE_HEIGHT
},
_PPTextTickOperation,
OTEXT_FillOSDSeg,
(UINT8*)NULL
},
(MS_X_Y_ALIGN *)&oTopLeftAlignToContainer,
(MS_COLOR_SET *)&oDefaultTextColorSet,
NULL,
(OSD_TEXT*)&oORGTitleOSDText,
FONT_0,
NULL,
NULL
};
static CONST OSD_TEXT oORGTitleValueOSDText = {
_GetORGTitleValueStr,
NULL
};
static CONST MS_DESCRIPTOR_TEXT oORGTitleValueDescriptor =
{// MS_DESCRIPTOR_TEXT
{// MS_DESCRIPTOR
sizeof(MSO_TEXT),
MS_NAV_NULL,
MS_ATTR_OSD_LAYER_0 ,
{
292,
LINE_1_Y,
COL_1_WIDTH,
LINE_HEIGHT
},
_PPTextTickOperation,
OTEXT_FillOSDSeg,
(UINT8*)NULL
},
(MS_X_Y_ALIGN *)&oTopLeftAlignToContainer,
(MS_COLOR_SET *)&oDefaultTextColorSet,
NULL,
(OSD_TEXT*)&oORGTitleValueOSDText,
FONT_0,
NULL,
NULL
};
#endif //DVD_VR_SUPPORT
//
// These are the objects used to display the labels:
//
TEXT_OBJECT(1, 1, 1);
TEXT_OBJECT(2, 3, 1);
#ifdef D_GUI_SINGLE_LINE_COMPONENT
TEXT_OBJECT(3, A, 2);
TEXT_OBJECT(4, A, 2);
TEXT_OBJECT(5, A, 2);
TEXT_OBJECT(8, 3, 3);
#else
TEXT_OBJECT(3, 1, 2);
TEXT_OBJECT(4, 1, 3);
TEXT_OBJECT(5, 1, 4);
TEXT_OBJECT(8, 3, 4);
//TEXT_OBJECT(9, 1, 5);
//TEXT_OBJECT(10, 3, 5);
#ifdef DVD_AUDIO_SUPPORT
TEXT_OBJECT(9, 3, 3);
TEXT_OBJECT(10, 3, 2);
#endif//DVD_AUDIO_SUPPORT
#endif //D_GUI_SINGLE_LINE_COMPONENT
//
// These are the objects used to display the values:
//
VALUE_OBJECT(1, 2, 1);
VALUE_OBJECT(2, 4, 1);
#ifdef D_GUI_SINGLE_LINE_COMPONENT
VALUE_OBJECT(3, B, 2);
VALUE_OBJECT(4, B, 2);
VALUE_OBJECT(5, B, 2);
VALUE_OBJECT(8, 4, 3);
#else
//VALUE_OBJECT(3, 2, 2);
VALUE_OBJECT(3, L, 2);
VALUE_OBJECT(4, L, 3);
VALUE_OBJECT(5, 2, 4);
VALUE_OBJECT(8, 4, 4);
//VALUE_OBJECT(9, 2, 5);
//VALUE_OBJECT(10, 4, 5);
#ifdef DVD_AUDIO_SUPPORT
VALUE_OBJECT(9, 4, 3);
VALUE_OBJECT(10, 4, 2);
#endif//DVD_AUDIO_SUPPORT
#endif//D_GUI_SINGLE_LINE_COMPONENT
//
// This is the object used to display the current playback time.
//
extern CONST MS_DESCRIPTOR_TEXT oCurrentTimeTxtDescriptor;
static CONST OSD_TEXT oCurrentTimeOSDText = {
_GetTimeStr,
(UINT32)GET_PLAYBACK_TIME_ELAPSED
};
static CONST MS_DESCRIPTOR_TEXT oCurrentTimeTxtDescriptor =
{// MS_DESCRIPTOR_TEXT
{// MS_DESCRIPTOR
sizeof(MSO_TEXT),
MS_NAV_NULL,
MS_ATTR_OSD_LAYER_0 | MS_ATTR_GET_ELAPSED_TIME,
{
#ifdef D_GUI_SINGLE_LINE_COMPONENT
180,
#else
380,
#endif //D_GUI_SINGLE_LINE_COMPONENT
TITLE_LINE_Y,
TIME_WIDTH,
LINE_HEIGHT
},
_PPTextTickOperation,
OTEXT_FillOSDSeg,
(UINT8*)NULL
},
(MS_X_Y_ALIGN *)&oCenterAlignToContainer,
(MS_COLOR_SET *)&oDefaultTextColorSet,
NULL,
(OSD_TEXT*)&oCurrentTimeOSDText,
FONT_0,
NULL,
NULL
};
#ifndef D_GUI_SINGLE_LINE_COMPONENT
//
// This is the object used to display the remaining playback time.
//
extern CONST MS_DESCRIPTOR_TEXT oRemainTimeTxtDescriptor;
static CONST OSD_TEXT oRemainTimeOSDText = {
_GetTimeStr,
(UINT32)GET_PLAYBACK_TIME_REMAINING
};
// Note that this object is the only one to be focusable.
static CONST MS_DESCRIPTOR_TEXT oRemainTimeTxtDescriptor =
{// MS_DESCRIPTOR_TEXT
{// MS_DESCRIPTOR
sizeof(MSO_TEXT),
MS_NAV_NULL,
MS_ATTR_OSD_LAYER_0 | MS_ATTR_GET_REMAINING_TIME,
{
380 + TIME_WIDTH + 10,
TITLE_LINE_Y,
TIME_WIDTH,
LINE_HEIGHT
},
_PPTextTickOperation,
OTEXT_FillOSDSeg,
(UINT8*)NULL
},
(MS_X_Y_ALIGN *)&oTopLeftAlignToContainer,
(MS_COLOR_SET *)&oDefaultTextColorSet,
NULL,
(OSD_TEXT*)&oRemainTimeOSDText,
FONT_0,
NULL,
NULL
};
#endif //D_GUI_SINGLE_LINE_COMPONENT
/************************************************************************************
*
* First single line display
*
************************************************************************************/
#ifdef D_GUI_SINGLE_LINE_COMPONENT
typedef enum {
DIS_ELAPSED_TIME,
DIS_TITLE_CHAPTER,
DIS_AUDIO_DISPLAY,
DIS_SUBTITLE_DISPLAY,
DIS_ANGLE_DISPLAY
}DIS_CURRENT_ITEM;
/***************************************************************************************
* Descriptor : oMainVolumeTitleDescriptor
*
* Purpose : Descriptor of main volumn control compont title.
****************************************************************************************/
static CONST OSD_TEXT oElapsedTimeText = // Main volume label
#ifdef D_GINGER_I86
{ OSDR_GetFormUniStr_OsdMessage, S_ELAPSED_TIME };
#endif //D_GINGER_I86
#ifdef D_GINGER_I96
{ OSDR_GetFormUniStr_OsdMessage, S_TIME };
#endif //D_GINGER_I96
static CONST MS_DESCRIPTOR_TEXT oElapseTimeTitleDescriptor =
{ // MS_DESCRIPTOR_TEXT
{ // MS_DESCRIPTOR
sizeof(MSO_TEXT),
MS_NAV_NULL,
MS_ATTR_OSD_LAYER_0,
{
COL_1_LINE_X_POS,
LINE_1_Y + 4,
COL_1_WIDTH + COL_1_WIDTH,
LINE_HEIGHT
},
OTEXT_Operation,
OTEXT_FillOSDSeg,
(UINT8*)NULL
},
(MS_X_Y_ALIGN *)&oTopLeftAlignToContainer,
(MS_COLOR_SET *)&oDefaultTextColorSet,
NULL,
(OSD_TEXT*)&oElapsedTimeText,
FONT_0,
NULL,
NULL
};
#endif //D_GUI_SINGLE_LINE_COMPONENT
/**************************************************************************
* The component display descriptor
***************************************************************************/
enum
{
COUNT_PB_INFO_CONTENTS_1,
COUNT_PB_INFO_CONTENTS_VALUE_1,
COUNT_PB_INFO_CONTENTS_2,
COUNT_PB_INFO_CONTENTS_VALUE_2,
COUNT_PB_INFO_CONTENTS_3,
COUNT_PB_INFO_CONTENTS_VALUE_3,
COUNT_PB_INFO_CONTENTS_4,
COUNT_PB_INFO_CONTENTS_VALUE_4,
COUNT_PB_INFO_CONTENTS_5,
COUNT_PB_INFO_CONTENTS_VALUE_5,
#ifdef D_GUI_SINGLE_LINE_COMPONENT
COUNT_PB_INFO_CONTENTS_ELAPSED_TIME,
#else
COUNT_PB_INFO_CONTENTS_DISC_TYPE,
#ifdef DVD_VR_SUPPORT
COUNT_PB_INFO_CONTENTS_DISC_NAME,
COUNT_PB_INFO_CONTENTS_ORG_TITLE,
COUNT_PB_INFO_CONTENTS_ORG_TITLE_VALUE,
#endif//DVD_VR_SUPPORT
COUNT_PB_INFO_CONTENTS_REMAIN_TIME,
COUNT_PB_INFO_CONTENTS_8,
COUNT_PB_INFO_CONTENTS_VALUE_8,
#ifdef DVD_AUDIO_SUPPORT
COUNT_PB_INFO_CONTENTS_9,
COUNT_PB_INFO_CONTENTS_VALUE_9,
COUNT_PB_INFO_CONTENTS_10,
COUNT_PB_INFO_CONTENTS_VALUE_10,
#endif//DVD_AUDIO_SUPPORT
#endif //D_GUI_SINGLE_LINE_COMPONENT
COUNT_PB_INFO_CONTENTS_CURRENT_TIME,
NBR_PB_INFO_CONTENTS
};
static CONST MS_DESCRIPTOR* CONST apContainerContents[NBR_PB_INFO_CONTENTS] = {
(MS_DESCRIPTOR*)&TEXT_OBJECT_DESCRIPTOR(1),
(MS_DESCRIPTOR*)&VALUE_OBJECT_DESCRIPTOR(1),
(MS_DESCRIPTOR*)&TEXT_OBJECT_DESCRIPTOR(2),
(MS_DESCRIPTOR*)&VALUE_OBJECT_DESCRIPTOR(2),
(MS_DESCRIPTOR*)&TEXT_OBJECT_DESCRIPTOR(3),
(MS_DESCRIPTOR*)&VALUE_OBJECT_DESCRIPTOR(3),
(MS_DESCRIPTOR*)&TEXT_OBJECT_DESCRIPTOR(4),
(MS_DESCRIPTOR*)&VALUE_OBJECT_DESCRIPTOR(4),
(MS_DESCRIPTOR*)&TEXT_OBJECT_DESCRIPTOR(5),
(MS_DESCRIPTOR*)&VALUE_OBJECT_DESCRIPTOR(5),
#ifdef D_GUI_SINGLE_LINE_COMPONENT
(MS_DESCRIPTOR*)&oElapseTimeTitleDescriptor,
#else
(MS_DESCRIPTOR*)&oDiscTypeDescriptor,
#ifdef DVD_VR_SUPPORT
(MS_DESCRIPTOR*)&oDiscNameValueDescriptor,
(MS_DESCRIPTOR*)&oORGTitleDescriptor,
(MS_DESCRIPTOR*)&oORGTitleValueDescriptor,
#endif//DVD_VR_SUPPORT
(MS_DESCRIPTOR*)&oRemainTimeTxtDescriptor,
(MS_DESCRIPTOR*)&TEXT_OBJECT_DESCRIPTOR(8),
(MS_DESCRIPTOR*)&VALUE_OBJECT_DESCRIPTOR(8),
#ifdef DVD_AUDIO_SUPPORT
(MS_DESCRIPTOR*)&TEXT_OBJECT_DESCRIPTOR(9),
(MS_DESCRIPTOR*)&VALUE_OBJECT_DESCRIPTOR(9),
(MS_DESCRIPTOR*)&TEXT_OBJECT_DESCRIPTOR(10),
(MS_DESCRIPTOR*)&VALUE_OBJECT_DESCRIPTOR(10),
#endif//DVD_AUDIO_SUPPORT
#endif //D_GUI_SINGLE_LINE_COMPONENT
(MS_DESCRIPTOR*)&oCurrentTimeTxtDescriptor
};
CONST MS_DESCRIPTOR_DISPLAY oComponentDisplay =
{// MS_DESCRIPTOR_COMPONENT
{// MS_DESCRIPTOR_CONTAINER
{// MS_DESCRIPTOR
sizeof(MSO_DISPLAY),
MS_NAV_NULL,
MS_ATTR_CONTAINER | MS_ATTR_OSD_LAYER_0 | MS_ATTR_UPDATE_TICK_START_COUNT,
{
AREA_COMPONENT_X,
AREA_COMPONENT_Y,
AREA_COMPONENT_W,
AREA_COMPONENT_H
},
_ComponentOperation, // mpfOperation
_ComponentFillOsdSeg, // mpfFillOsdSeg
mpParamNull, // mpParam
},
(CONST MS_DESCRIPTOR**)apContainerContents,
NBR_PB_INFO_CONTENTS,
},
NULL //mpFocusObject
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -