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

📄 digest_m.c

📁 Zoran VP2K731 DVD源代码,极具参考价值!
💻 C
📖 第 1 页 / 共 3 页
字号:
/***********************************************************************/
/* File:															   */
/*	  Copyright (c) 2000 ZORAN Corporation, All Rights Reserved		   */
/*	  THIS IS PROPRIETARY SOURCE CODE OF ZORAN CORPORATION             */
/*																	   */
/* ===========                                                         */
/* Descripton:                                                         */
/* ===========                                                         */
/*                                                                     */
/* Log:                                                                */
/* ===                                                                 */
/* $Name: Milleno_QA1.3 $                                                            
/* $Header: v:/dsg/rcs/dsg/vp2k/customer/milleno/MENU/Digest_m.c 1.13 2001/09/14 02:46:07Z charlie Release $                                                          
/* $Log: Digest_m.c $										                       
/* Revision 1.13  2001/09/14 02:46:07Z  charlie										                       
/* Fix digest menu problem when using Track View in digest type menu;										                       
/* Add debug messages for mode_send_program										                       
/* Revision 1.12  2001/09/12 19:09:37Z  charlie										                       
/* Send IE_CORE_DIGEST before creating screen										                       
/* Revision 1.11  2001/09/11 00:50:00Z  charlie										                       
/* Added g_ms_bMustClose; Use menu system union										                       
/* Revision 1.10  2001/09/08 02:25:44Z  stephaneh										                       
/* Removed variable initialization										                       
/* Revision 1.9  2001/09/08 02:03:50Z  charlie										                       
/* Temporarily removed ie_core_digest_stop when closing menu										                       
/* Revision 1.8  2001/08/21 17:38:10Z  charlie										                       
/* Stop digest when menu closed										                       
/* Revision 1.7  2001/08/10 22:21:54  charlie										                       
/* Added Digest Menu title										                       
/* Revision 1.6  2001/08/10 03:59:38  charlie										                       
/* Final (?) tweak of number positions										                       
/* Revision 1.5  2001/08/10 03:38:35  charlie										                       
/* Revision 1.4  2001/08/10 01:17:10  charlie										                       
/* Fine-tuned hole positions										                       
/* Revision 1.3  2001/08/09 17:02:12  charlie										                       
/* Fixed hole problem; fixed "9" bug by eliminating scratchpad usage										                       
/* Revision 1.2  2001/08/02 23:53:19  charlie										                       
/* Added MS_adjust_layout										                       
/* Revision 1.1  2001/07/31 01:26:05  charlie										                       
/* Initial revision										                       
/***********************************************************************/
#define RELEASE_TRACE_MODULE	// Release trace only in Release Version
#ifdef RELEASE_TRACE_MODULE
#define _DEBUG
#endif

#ifdef _DEBUG
#ifdef RELEASE_TRACE_MODULE
#define IFTRACE if (trace_flags.ui)
#else
#define IFTRACE if (gTraceUI)
extern int gTraceUI;
#endif
#endif

#include <stdio.h>
#include <string.h>
#include "sysdefs.h"
#include "..\..\..\ui\menu_sys\ms_wdgt.h"
#include "..\..\..\ui\menu_sys\ms_lib.h"
#include "..\..\..\ui\menu_sys\osd_drv.h"
#include "..\..\..\decoder\osdrendr.h"
#include "..\..\..\decoder\osdlayou.h"
#ifdef FONT32X24
#include "..\..\..\customer\dragon\strings\strings.h"
#else
#include "..\..\..\ui\strings\strings.h"
#endif
#include "menu_var.h"
#include "..\..\..\playcore\ps\ps.h"
#include "..\..\..\playcore\coremain\coregdef.h"
#include "..\..\..\kernel\eventdef.h"
#include "..\..\..\playcore\PlayMode\playmode.h"
#include "mode.h"

#define USE_UNION
#ifdef USE_UNION
#define MEMBER(_member_)	gu_ms.m_dm._member_
#endif // USE_UNION


#ifdef ICON_IN_THUMBNAIL_MENU	//DZ1122 
extern int	DigestCounter;
extern int  DigestPage;
#endif


#ifdef ICON_IN_THUMBNAIL_MENU	//DM1115 for space of ICON

#define DIGEST_ICON_HEIGHT			  60
#define HEIGHT_AHEAD_ICON			  0//( MS_LINE_HEIGHT + 20/*12*/ )	//DM1116 start Y offset margin ahead
#else
#define DIGEST_ICON_HEIGHT			  0
#define HEIGHT_AHEAD_ICON			  0
#endif

#ifdef ICON_IN_THUMBNAIL_MENU	//DM1115 for space of ICON
#ifdef D_MENU_ICON
#define NUM_OF_ICON			4
#else
#define NUM_OF_ICON			3
#endif
#define WIDTH_OF_1STICON	4
#define WIDTH_OF_2STICON	4
#define WIDTH_OF_3STICON	2
#define WIDTH_OF_4STICON	2
#define MAX_WIDTH_OF_ICON	4*12	//in Pixel 
#define LABLE_X_OFFSET		16*12
//#define ICON_Y_OFFSET		(gPalMode)?(PAL_Digest_pos.size):(NTSC_Digest_pos.size) // 0x198//0x156 //DZ1121 
#define NTSC_ICON_Y_OFFSET 0x156+10
#define PAL_ICON_Y_OFFSET 0x198+13//0x18c//0x180

#define ICON1_X_OFFSET		0xC4
#define ICON2_X_OFFSET		0x120//160
#define ICON3_X_OFFSET		0x1C0//1fc
#define ICON4_X_OFFSET		0x232
#define ICON1_WIDTH			80
#define ICON2_WIDTH			152
#define ICON3_WIDTH			96
#define ICON4_WIDTH			96
#define  gPalMode DEC_IsVideoPal()
void icon_action(unsigned char icon_num);
#else
#define NUM_OF_ICON			0
#define LABLE_X_OFFSET		0
#endif

#ifdef DIGEST_WITH_12PCS	//DM1115 USed to play 12/9 images...
#define DIGEST_MAX_NUMBER	12
#define MIN_IMAGE_NUM_UP	4
#define MAX_IMAGE_NUM_DOWN	(9+NUM_OF_ICON)
#define NUM_IMAGE_EACHLINE	4
#else
#define DIGEST_MAX_NUMBER	9
#define MIN_IMAGE_NUM_UP	3
#define MAX_IMAGE_NUM_DOWN	7+NUM_OF_ICON
#define NUM_IMAGE_EACHLINE	3
#endif

#ifndef DIGEST_MEM_REDUCTION//ZORAN LX111701
extern int DigestNotify;
#endif

void digestdisplaynum( int number );

static const MS_COLOR screen_color = 0x0000;
#define COLOR_INDEX_TRANSPARENT		0x0
#define MS_INIT_COLOR			COLOR_INDEX_TRANSPARENT

// ZORAN CDE0324 : Fix setup screen background
#define SETUP_SCREEN_COLOR	  MAKE_MS_COLOR( COLOR_INDEX_TRANSPARENT, COLOR_INDEX_TRANSPARENT, COLOR_INDEX_TRANSPARENT)

#ifdef DISABLE
extern const MS_STATIC c_time_stat;
extern const MS_STATIC t_time_stat;

static OSD_MESSAGES g_ui_tmp_msg = -1;
#endif // DISABLE
extern int DigestDisplayNum;
// <<< ZORAN CDE0808 : Fix hole problem
#define DIGEST_FIRST_LABEL_COLUMN	  40

#ifdef DIGEST_WITH_12PCS	//DM1115 USed to play 12/9 images...
#define DIGEST_IMAGES_PER_ROW		  4
#define DIGEST_IMAGES_PER_COLUMN	  3
#define DIGEST_GRID_WIDTH			  156
#define DIGEST_FIRST_LABEL_LINE		  ((gPalMode)?(DIGEST_GRID_HEIGHT_PAL-36):78/*(DIGEST_GRID_HEIGHT_PAL):(DIGEST_GRID_HEIGHT_NTSC) - DIGEST_LABEL_HEIGHT*/) //128-36//78	//DM1115 only decide the first Hole size.
// REMINDER DIGEST_GRID_HEIGHT should be = DIGEST_FIRST_LABEL_LINE + DIGEST_LABEL_HEIGHT + DIGEST_GRID_Y_SPACING
#define DIGEST_GRID_HEIGHT			  ((gPalMode)?(DIGEST_GRID_HEIGHT_PAL):(DIGEST_GRID_HEIGHT_NTSC) )

#define DIGEST_GRID_HEIGHT_NTSC		  114
#define DIGEST_GRID_HEIGHT_PAL		  136//128//114
#else
#define DIGEST_IMAGES_PER_ROW		  3
#define DIGEST_IMAGES_PER_COLUMN	  3
#define DIGEST_GRID_WIDTH			  208
#define DIGEST_FIRST_LABEL_LINE		  104
// REMINDER DIGEST_GRID_HEIGHT should be = DIGEST_FIRST_LABEL_LINE + DIGEST_LABEL_HEIGHT + DIGEST_GRID_Y_SPACING
#define DIGEST_GRID_HEIGHT			  140
#endif

#define DIGEST_GRID_Y_SPACING		  0

// REMINDER This is CUSTOMER-SPECIFIC ( MS_LINE_HEIGHT is 30, and gives an odd number when divided by 2 for line-doubling )
#define DIGEST_LABEL_HEIGHT			  ( MS_LINE_HEIGHT + 6 )	//DM1115 this is the height of the osd bar

#ifdef DISABLE
#define DIGEST_ORIGIN_Y				  MS_W_ORIGIN_Y
#define DIGEST_SCREEN_HEIGHT  ( NBRLIN_NTSC - (MS_W_ORIGIN_Y * 2) )
#define DIGEST_HOLE_HEIGHT	  ( (DIGEST_SCREEN_HEIGHT / DIGEST_IMAGES_PER_COLUMN) - DIGEST_LABEL_HEIGHT )
#else // DISABLE

#define DIGEST_SCREEN_HEIGHT	((gPalMode)?( DIGEST_GRID_HEIGHT_PAL * DIGEST_IMAGES_PER_COLUMN ):( DIGEST_GRID_HEIGHT_NTSC * DIGEST_IMAGES_PER_COLUMN ))
#define DIGEST_ORIGIN_Y			((gPalMode)?(DIGEST_ORIGIN_Y_PAL):(DIGEST_ORIGIN_Y_NTSC))
#define DIGEST_ORIGIN_Y_NTSC		( ((NBRLIN_NTSC - DIGEST_GRID_HEIGHT_NTSC*DIGEST_IMAGES_PER_COLUMN ) / 2) & ~3 ) 
#define DIGEST_ORIGIN_Y_PAL			( ((NBRLIN_PAL - DIGEST_GRID_HEIGHT_PAL*DIGEST_IMAGES_PER_COLUMN ) / 2) & ~3 ) 

//#define DIGEST_ORIGIN_Y			( ((NBRLIN_PAL/*NBRLIN_NTSC*/ - DIGEST_SCREEN_HEIGHT ) / 2) & ~3 )
#define DIGEST_HOLE_HEIGHT		( DIGEST_GRID_HEIGHT - DIGEST_LABEL_HEIGHT )
#endif // DISABLE
// ZORAN CDE0808 >>>

#define DIGEST_SCREEN_X				  16
#define DIGEST_SCREEN_Y				 ( DIGEST_ORIGIN_Y - HEIGHT_AHEAD_ICON)
#define DIGEST_SCREEN_WIDTH			  600
static const MS_POS	digest_screen_pos = {DIGEST_SCREEN_X, DIGEST_ORIGIN_Y_NTSC -HEIGHT_AHEAD_ICON /*DIGEST_SCREEN_Y*/, DIGEST_SCREEN_WIDTH, DIGEST_GRID_HEIGHT_NTSC*DIGEST_IMAGES_PER_COLUMN};

static const MS_POS	digest_screen_pos_pal = {DIGEST_SCREEN_X, DIGEST_ORIGIN_Y_PAL -HEIGHT_AHEAD_ICON /*DIGEST_SCREEN_Y*/, DIGEST_SCREEN_WIDTH, DIGEST_GRID_HEIGHT_PAL*DIGEST_IMAGES_PER_COLUMN};
// Menu title position -- screen-relative
#define MSS_MENU_TITLE_X	  DIGEST_FIRST_LABEL_COLUMN
//#define MSS_MENU_TITLE_Y	  (MS_W_ORIGIN_Y - DIGEST_ORIGIN_Y)
#define MSS_MENU_TITLE_Y	  MS_LINE_0
#define MSS_MENU_TITLE_POS	  {MSS_MENU_TITLE_X, MSS_MENU_TITLE_Y, DIGEST_SCREEN_WIDTH - MSS_MENU_TITLE_X, MS_LINE_HEIGHT}

#ifdef ICON_IN_THUMBNAIL_MENU	//DM1115 for space of ICON
#define MSS_LABLE_TITLE_POS	  {MSS_MENU_TITLE_X + LABLE_X_OFFSET, MSS_MENU_TITLE_Y, DIGEST_SCREEN_WIDTH - MSS_MENU_TITLE_X, MS_LINE_HEIGHT}
#define MSS_MENU_ICON1_POS	  {ICON1_X_OFFSET, NTSC_ICON_Y_OFFSET+HEIGHT_AHEAD_ICON+ , ICON1_WIDTH, MS_LINE_HEIGHT}
#define MSS_MENU_ICON2_POS	  {ICON2_X_OFFSET, NTSC_ICON_Y_OFFSET+HEIGHT_AHEAD_ICON, ICON2_WIDTH, MS_LINE_HEIGHT}
#define MSS_MENU_ICON3_POS	  {ICON3_X_OFFSET, NTSC_ICON_Y_OFFSET+HEIGHT_AHEAD_ICON, ICON3_WIDTH, MS_LINE_HEIGHT}
#define MSS_MENU_ICON4_POS	  {ICON4_X_OFFSET, NTSC_ICON_Y_OFFSET+HEIGHT_AHEAD_ICON, ICON4_WIDTH, MS_LINE_HEIGHT}

// Position for PAL DZ1122
#define MSS_LABLE_TITLE_POS_PAL	  {MSS_MENU_TITLE_X + LABLE_X_OFFSET, MSS_MENU_TITLE_Y  , DIGEST_SCREEN_WIDTH - MSS_MENU_TITLE_X, MS_LINE_HEIGHT}
#define MSS_MENU_ICON1_POS_PAL	  {ICON1_X_OFFSET, PAL_ICON_Y_OFFSET+HEIGHT_AHEAD_ICON  , ICON1_WIDTH, MS_LINE_HEIGHT}
#define MSS_MENU_ICON2_POS_PAL	  {ICON2_X_OFFSET, PAL_ICON_Y_OFFSET+HEIGHT_AHEAD_ICON  , ICON2_WIDTH, MS_LINE_HEIGHT}
#define MSS_MENU_ICON3_POS_PAL	  {ICON3_X_OFFSET, PAL_ICON_Y_OFFSET+HEIGHT_AHEAD_ICON  , ICON3_WIDTH, MS_LINE_HEIGHT}
#define MSS_MENU_ICON4_POS_PAL	  {ICON4_X_OFFSET, PAL_ICON_Y_OFFSET+HEIGHT_AHEAD_ICON  , ICON4_WIDTH, MS_LINE_HEIGHT}

#endif

#ifdef DISABLE
static const MS_STATIC mssMenuTitle = {
	{
	0,
	ALIGN_LEFT,
	I_COLOR,
	MSS_MENU_TITLE_POS,
	NO_PARENT,
	static_user_op,
	},
	(void *)S_DIGEST,
};
#endif // DISABLE

#ifdef USE_SC_FOR_DIGEST_STRING
MS_STATIC digest_string = {
	{
	MS_ASCII | MS_STRING_ON_SC,
	ALIGN_LEFT,
	I_COLOR,
	{16, MS_LINE_0, 24, MS_LINE_HEIGHT},
	NO_PARENT,
	static_user_op,
	},
	(void *)SC_TMP_STR_ADDR
};
#else
#ifdef DISABLE
MS_STATIC digest_string = {
	{
	MS_ASCII,
	ALIGN_LEFT,
	I_COLOR,
	{16, MS_LINE_0, 24, MS_LINE_HEIGHT},
	NO_PARENT,
	static_user_op,
	},
	(void *)MEMBER(m_szFrameNumber),
};
#endif // DISABLE
#endif // USE_SC_FOR_DIGEST_STRING

#ifdef DISABLE
const MS_STATIC tmp_msg1 = {
	{
	MS_STRING_ON_SC,
	ALIGN_LEFT,
	I_COLOR,
	{16, MS_LINE_0, 280, MS_LINE_HEIGHT},
	NO_PARENT,
	static_user_op,
	},
	(void *)SC_TMP_MSG_ADDR
};
#endif // DISABLE

#ifdef DISABLE
const MS_STATIC tmp_string1 = {
	{
	MS_ASCII | MS_STRING_ON_SC,
	ALIGN_LEFT,
	I_COLOR,
	{16, MS_LINE_0, 280, MS_LINE_HEIGHT},
	NO_PARENT,
	static_user_op,
	},
	(void *)SC_TMP_STR_ADDR
};
#endif // DISABLE

#ifdef DISABLE
const MS_STATIC permanent_msg1 = {
	{
	MS_STRING_ON_SC,
	ALIGN_LEFT,
	I_COLOR,
	{16, 324, 160, MS_LINE_HEIGHT},
	NO_PARENT,
	static_user_op,
	},
	(void *)SC_PERMANENT_MSG_ADDR
};
#endif // DISABLE

#ifdef DISABLE
const MS_STATIC mute_msg1 = {
	{
	MS_STRING_ON_SC,
	ALIGN_LEFT,
	I_COLOR,
	{464,324,24,24},
	NO_PARENT,
	static_user_op,
	},
	(void *)SC_MUTE_MSG_ADDR
};
#endif // DISABLE

static void on_digest_close(void)
{

  #ifndef ICON_IN_THUMBNAIL_MENU	//DM1115 for space of ICON	
  	SAFELY_DELETE(MEMBER(m_pmssMenuTitle));
  #else
  #if 0
  	SAFELY_DELETE(MEMBER(m_pmssMenuLable));
  #endif
#ifdef D_MENU_ICON
  	SAFELY_DELETE(MEMBER(m_pmssMenuICON1));
#endif
  	SAFELY_DELETE(MEMBER(m_pmssMenuICON2));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -