📄 digest_m.c
字号:
#else
{
MS_POS mspos = MSS_MENU_TITLE_POS;
MEMBER(m_pmssMenuTitle) = MS_create_static(&mspos, I_COLOR, (void *) S_NULL, 0 );
MEMBER(m_pmssMenuTitle)->text = (void *) ( gcs.pstate == PST_STOP ? S_TRACK_VIEW : S_INDEX_VIEW );
}
MS_ADD_TO_CONTAINER(screen, MEMBER(m_pmssMenuTitle), !C_FOCUSED);
#endif // DISABLE
#endif //ICON_IN_THUMBNAIL_MENU
#ifdef ICON_IN_THUMBNAIL_MENU //DM1115 for space of ICON
#if 0
{
MS_POS mspos = MSS_LABLE_TITLE_POS;
MS_POS mspos_pal = MSS_LABLE_TITLE_POS;
if( gPalMode)
MEMBER(m_pmssMenuLable) = MS_create_static(&mspos_pal, I_COLOR, (void *) S_NULL, 0 );
else
MEMBER(m_pmssMenuLable) = MS_create_static(&mspos, I_COLOR, (void *) S_NULL, 0 );
MEMBER(m_pmssMenuLable)->text = (void *) S_DIGITAL_PHOTO_CD;
}
MS_ADD_TO_CONTAINER(screen, MEMBER(m_pmssMenuLable), !C_FOCUSED);
#endif
//ICON1
#ifdef D_MENU_ICON
{
MS_POS mspos = MSS_MENU_ICON1_POS;
iMS_POS mspos_pal = MSS_MENU_ICON1_POS_PAL;
if( gPALMode)
MEMBER(m_pmssMenuICON1) = MS_create_static(&mspos_pal, I_COLOR, (void *) S_NULL, 0 );
else
MEMBER(m_pmssMenuICON1) = MS_create_static(&mspos, I_COLOR, (void *) S_NULL, 0 );
MEMBER(m_pmssMenuICON1) = MS_create_static(&mspos, I_COLOR, (void *) S_NULL, 0 );
MEMBER(m_pmssMenuICON1)->text = (void *) S_MENU ;
}
MS_ADD_TO_CONTAINER(screen, MEMBER(m_pmssMenuICON1), !C_FOCUSED);
#endif
//ICON2
{
MS_POS mspos = MSS_MENU_ICON2_POS;
MS_POS mspos_pal = MSS_MENU_ICON2_POS_PAL;
if( gPALMode)
MEMBER(m_pmssMenuICON2) = MS_create_static(&mspos_pal, I_COLOR, (void *) S_NULL, 0 );
else
MEMBER(m_pmssMenuICON2) = MS_create_static(&mspos, I_COLOR, (void *) S_NULL, 0 );
MEMBER(m_pmssMenuICON2)->text = (void *) S_SLIDE_SHOW ;
}
MS_ADD_TO_CONTAINER(screen, MEMBER(m_pmssMenuICON2), !C_FOCUSED);
//ICON3
{
MS_POS mspos = MSS_MENU_ICON3_POS;
MS_POS mspos_pal = MSS_MENU_ICON3_POS_PAL;
if( gPALMode)
MEMBER(m_pmssMenuICON3) = MS_create_static(&mspos_pal, I_COLOR, (void *) S_NULL, 0 );
else
MEMBER(m_pmssMenuICON3) = MS_create_static(&mspos, I_COLOR, (void *) S_NULL, 0 );
MEMBER(m_pmssMenuICON3)->text = (void *) S_SKIPB ;
}
MS_ADD_TO_CONTAINER(screen, MEMBER(m_pmssMenuICON3), !C_FOCUSED);
//ICON4
{
MS_POS mspos = MSS_MENU_ICON4_POS;
MS_POS mspos_pal = MSS_MENU_ICON4_POS_PAL;
if(gPALMode)
MEMBER(m_pmssMenuICON4) = MS_create_static(&mspos_pal, I_COLOR, (void *) S_NULL, 0 );
else
MEMBER(m_pmssMenuICON4) = MS_create_static(&mspos, I_COLOR, (void *) S_NULL, 0 );
MEMBER(m_pmssMenuICON4)->text = (void *) S_SkipF_ICON ;
}
MS_ADD_TO_CONTAINER(screen, MEMBER(m_pmssMenuICON4), !C_FOCUSED);
#endif
{
MS_POS mspos = {16, MS_LINE_0, 24, MS_LINE_HEIGHT};
MEMBER(m_pmssFrameNumber) = MS_create_static(&mspos, /*I_COLOR*/ BAR_COLOR , (void *) MEMBER(m_szFrameNumber), MS_ASCII );
}
MS_dialog_display((MS_DIALOG*)screen);
//DM1105 move core event from the begining to avoid core start before init.
ie_send( IE_CORE_DIGEST );
}
#ifdef DISABLE
const digestaddr[9][2] =
{
0x30,0x28, 0x100,0x28, 0x1d0,0x28,
0x30,0xd0, 0x100,0xd0, 0x1d0,0xd0,
0x30,0x168, 0x100,0x168,0x1d0,0x168
};
#endif // DISABLE
#ifdef DISABLE
typedef struct o_xy
{
WORD wX;
WORD wY;
} O_XY;
const O_XY digest_label_pos[9] =
{
{48,40}, {256,40}, {464,40},
{48,192}, {256,192}, {464,192},
{48,360}, {256,360}, {464,360},
};
#endif // DISABLE
#ifdef ICON_IN_THUMBNAIL_MENU //DM1115 for space of ICON
#ifdef DISABLE
static const WORD icon_location[NUM_OF_ICON][2] =
{
#ifdef D_MENU_ICON
ICON1_X_OFFSET,ICON_Y_OFFSET,
#endif
ICON2_X_OFFSET,ICON_Y_OFFSET,
ICON3_X_OFFSET,ICON_Y_OFFSET,
ICON4_X_OFFSET,ICON_Y_OFFSET
};
#else
static const WORD icon_location[NUM_OF_ICON] =
{
#ifdef D_MENU_ICON
ICON1_X_OFFSET,
#endif
ICON2_X_OFFSET,
ICON3_X_OFFSET,
ICON4_X_OFFSET,
};
#endif
static const BYTE num_of_space[NUM_OF_ICON] =
{
#ifdef D_MENU_ICON
WIDTH_OF_1STICON,
#endif
WIDTH_OF_2STICON,WIDTH_OF_3STICON,WIDTH_OF_4STICON};
#endif //ICON_IN_THUMBNAIL_MENU
int digest_image_y( unsigned char ucImageIndex )
{
#ifdef ICON_IN_THUMBNAIL_MENU //DM1115 for space of ICON
if(ucImageIndex > DIGEST_MAX_NUMBER)
return (int)((gPalMode)?(PAL_ICON_Y_OFFSET):(NTSC_ICON_Y_OFFSET)) + HEIGHT_AHEAD_ICON;
#endif
return ( ((int) (ucImageIndex - 1) / DIGEST_IMAGES_PER_ROW ) * (DIGEST_GRID_HEIGHT) + (DIGEST_FIRST_LABEL_LINE) + HEIGHT_AHEAD_ICON);
}
int digest_image_x( unsigned char ucImageIndex )
{
#ifdef ICON_IN_THUMBNAIL_MENU //DM1115 for space of ICON
if(ucImageIndex > DIGEST_MAX_NUMBER)
return (int)icon_location[ucImageIndex - DIGEST_MAX_NUMBER -1];
#endif
return ( ((int) (ucImageIndex - 1) % DIGEST_IMAGES_PER_ROW ) * DIGEST_GRID_WIDTH + DIGEST_FIRST_LABEL_COLUMN );
}
void displayFrameNumber(int number, char cFocus)
{
// Forget the previous message
#ifdef USE_SC_FOR_DIGEST_STRING
char str[32];
num_to_str(number, str, 2);
#else
#ifdef ICON_IN_THUMBNAIL_MENU //DM1115 for space of ICON
if(number > DIGEST_MAX_NUMBER)
{
// BYTE i,i_max;
// i_max = num_of_space[number - DIGEST_MAX_NUMBER -1];
// for(i= 0;i<i_max;i++)
// MEMBER(m_szFrameNumber)[i] = ' ';
// MEMBER(m_szFrameNumber)[i] = 0;
MS_WIDGET *pmsw;
#ifdef D_MENU_ICON
switch(number - DIGEST_MAX_NUMBER){
#else
switch(number - DIGEST_MAX_NUMBER+1){
#endif
#ifdef D_MENU_ICON
case 1:
pmsw = MEMBER(m_pmssMenuICON1);
break;
#endif
case 2:
pmsw = MEMBER(m_pmssMenuICON2);
break;
case 3:
pmsw = MEMBER(m_pmssMenuICON3);
break;
case 4:
pmsw = MEMBER(m_pmssMenuICON4);
break;
}
OSD_SetOrigin( (MS_WIDGET *) screen );
MS_hide((MS_WIDGET*)pmsw,(MS_DIALOG *)screen);
static_user_op((MS_WIDGET*)pmsw, MS_UOP_DISPLAY, cFocus);
MEMBER(m_ucPrevFrameNumber) = number;
}
else
{
#endif
num_to_str( number, MEMBER(m_szFrameNumber), SZ_FRAME_NUMBER_DIGITS );
#endif // USE_SC_FOR_DIGEST_STRING
// <<< ZORAN CDE0808 : Fix hole positions
#ifdef DISABLE
digest_string.widget.pos.x = digestaddr[number-1][0];
digest_string.widget.pos.y = digestaddr[number-1][1];
#else
MEMBER(m_pmssFrameNumber)->widget.pos.x = digest_image_x( number );
MEMBER(m_pmssFrameNumber)->widget.pos.y = digest_image_y( number );
#endif // DISABLE
// ZORAN CDE0808 >>>
#ifdef USE_SC_FOR_DIGEST_STRING
#ifdef DISABLE
g_ui_tmp_msg = -1;
#endif // DISABLE
MS_hide((MS_WIDGET*)&digest_string,(MS_DIALOG *)screen);
sc_SetBytes(SC_TMP_STR_ADDR, 0, strlen(str)+1, (BYTE*)str );
#else
OSD_SetOrigin( (MS_WIDGET *) screen );
MS_hide((MS_WIDGET*)MEMBER(m_pmssFrameNumber),(MS_DIALOG *)screen);
#endif // USE_SC_FOR_DIGEST_STRING
static_user_op((MS_WIDGET*)MEMBER(m_pmssFrameNumber), MS_UOP_DISPLAY, cFocus);
MEMBER(m_ucPrevFrameNumber) = number;
#ifdef ICON_IN_THUMBNAIL_MENU //DM1115 for space of ICON
}
#endif
}
void digestdisplaynum( int number )
{
#ifdef NO_C_STDLIB
rtouts("\n digestdisplaynum("); rtouti(number); rtouts(")");
#endif
if ( MEMBER(m_ucPrevFrameNumber) )
displayFrameNumber( MEMBER(m_ucPrevFrameNumber), !C_FOCUSED );
displayFrameNumber( number, C_FOCUSED );
}
void cleardisplayednum()
{
BYTE i;
#ifdef ICON_IN_THUMBNAIL_MENU //DM1115 for space of ICON
if ( MEMBER(m_ucPrevFrameNumber) > DIGEST_MAX_NUMBER)
displayFrameNumber( MEMBER(m_ucPrevFrameNumber), !C_FOCUSED );
// MEMBER(m_pmssFrameNumber)->widget.pos.w = MAX_WIDTH_OF_ICON; //get the max widget width
#endif
for(i=1;i<(DIGEST_MAX_NUMBER+1);i++)
{
MEMBER(m_pmssFrameNumber)->widget.pos.x = digest_image_x( i );
MEMBER(m_pmssFrameNumber)->widget.pos.y = digest_image_y( i );
OSD_SetOrigin( (MS_WIDGET *) screen );
MS_hide((MS_WIDGET*)MEMBER(m_pmssFrameNumber),(MS_DIALOG *)screen);
}
MEMBER(m_ucPrevFrameNumber) = 0;
}
BOOL is_icon_action = FALSE;
#ifdef ICON_IN_THUMBNAIL_MENU //DM1115 for space of ICON
extern int DigestCounter;
extern int DigestPage;
void icon_action(unsigned char icon_num)
{
#ifdef NO_C_STDLIB
rtouts("\n icon action!!!");
// rtoutw(icon_num);
#endif
#ifdef D_MENU_ICON
switch(icon_num - DIGEST_MAX_NUMBER){
#else
switch(icon_num - DIGEST_MAX_NUMBER+1){
#endif
#ifdef D_MENU_ICON
case 1:
return; //Currently No Action
//break;
#endif
case 2:
OSD_TurnOff(); //DM1114 avoid display garbage
ie_send( IE_CORE_DIGEST_STOP ); //DM1121 stop digest first
user_close_menu();
#ifdef D_PICTURE_CD_ENABLED //DM1121
set_picture_open(TRUE);
#endif
is_icon_action = TRUE;
open_slideshow();
break;
case 3:
// DZ1122 Block the "Previous" action if on No. 1 pages.
if( DigestPage == 0 )
{
return;
}
// DZ1122 End
OSD_TurnOff(); //DM1114 avoid display garbage
ie_send(IE_CORE_DIGEST_PREVIOUS);
break;
case 4:
// DZ1122 Block the "Next" action if on No. 1 pages.
#if MP3_JPG_TOGETHER
if( DigestCounter >= file_list_get_max_jpg() )
{
return;
}
if( ((DigestPage+1) * DIGEST_MAX_NUMBER +1 ) > file_list_get_max_jpg())
{
return;
}
#else
if( DigestCounter >= file_list_get_max() )
{
return;
}
if( ((DigestPage+1) * DIGEST_MAX_NUMBER +1 ) > file_list_get_max())
{
return;
}
#endif
// DZ1122 End
OSD_TurnOff(); //DM1114 avoid display garbage
ie_send(IE_CORE_DIGEST_NEXT);
break;
}
}
void refresh_jpg_digestmenu() //DM1121 to refresh the osd screen
{
OSDSetLayout();
MS_refresh((MS_DIALOG *) screen);
OSD_TurnOn(); //DM1114 avoid display garbage
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -