⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 o_display_config.c

📁 Zoran V966 DVD 解码 Soc芯片的源程序
💻 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 + -