📄 digest_m.c
字号:
/***********************************************************************/
/* 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 + -