📄 pcd_m.c
字号:
}
break;
case MS_UOP_RETURN:
// case MS_UOP_STOP:
#ifdef ICON_IN_THUMBNAIL_MENU
uop = MS_UOP_NOP;
#else
if ( IS_STATE(MP3M_STATE_IMAGE_OPEN) )
{
ui_tmp_msg( S_STOP );
close_image();
uop = MS_UOP_NOP;
}
#endif
break;
case MS_UOP_UP:
case MS_UOP_DOWN:
case MS_UOP_LEFT:
case MS_UOP_RIGHT:
if ( !IS_STATE(MP3M_STATE_IMAGE_OPEN) ) //DM1015 making Panning work during jpeg Zoom.
uop = dialog_user_op( pmsw, uop, param );
break;
//ZORAN DM1018 implement PICTRUE CD Browser
case MS_UOP_ANGLE:
if ( IS_STATE(MP3M_STATE_IMAGE_OPEN)&&IS_STATE( MP3M_STATE_STATUS_ACTIVE ))
{
close_image_status();
}
if ( IS_STATE(MP3M_STATE_IMAGE_OPEN) )
rotate_image();
uop = MS_UOP_NOP;
break;
case MS_UOP_MODE:
if ( IS_STATE(MP3M_STATE_IMAGE_OPEN)&&IS_STATE( MP3M_STATE_STATUS_ACTIVE ))
{
close_image_status();
}
if ( IS_STATE(MP3M_STATE_IMAGE_OPEN) )
trans_image();
uop = MS_UOP_NOP;
break;
//#ifdef JPG_DIGEST_ENABLED //DM1019
// case MS_UOP_MENU:
// if ( g_ui_active_menu_id == PICTURE_CD_MENU_ID )
// thumbnail_image();
// uop = MS_UOP_NOP;
// break;
//#endif
//ZORAN DM1018
case MS_UOP_DISPLAY:
// if(b_Kodak_picture_cd)
#ifdef JPG_DIGEST_ENABLED //DM1019
if(DigestNotify)
{
jpgmenu_notdisp_item = DigestNotify;
DigestNotify = 0;
}
#endif
if(jpgmenu_notdisp_item)
{
jpgmenu_notdisp_item = 0;
open_image();
uop = MS_UOP_NOP;
}
else{
if(IS_STATE(MP3M_STATE_FIRST_TIME_SLIDESHOW))
{
CLEAR_STATE(MP3M_STATE_FIRST_TIME_SLIDESHOW);
// b_Kodak_picture_cd = FALSE;
uop = MS_UOP_NOP;
open_slideshow();
}
else
uop = dialog_user_op( pmsw, uop, param );
}
break;
//return MS_UOP_NOP;
// case MS_UOP_ENTER:
// if ( !IS_STATE(MP3M_STATE_IMAGE_OPEN) )
// open_image();
// break;
default:
if ( IS_STATE(MP3M_STATE_IMAGE_OPEN)&&IS_STATE( MP3M_STATE_STATUS_ACTIVE ))
{
close_image_status();
}
uop = dialog_user_op( pmsw, uop, param );
}
return uop;
}
// ZORAN CDE0924 >>>
#endif // D_PICTURE_CD_ENABLED
// ZORAN CDE0924 >>>
static void track_action(int cur)
{
EVENT evt = 0;
long track = (long) cur;
#ifdef NO_C_STDLIB
dbouts("\nTrack number is "); dboutl(track);
#endif
// <<< ZORAN CDE0924 : Implement PictureCD Browser
#ifdef D_PICTURE_CD_ENABLED
// Bypass opening the image if the slideshow was just opened,
// but proceed to display the first file
if ( (g_ui_active_menu_id == PICTURE_CD_MENU_ID) && !IS_STATE(MP3M_STATE_SLIDESHOW_ACTIVE) )
{
if ( !IS_STATE(MP3M_STATE_IMAGE_OPEN) )
open_image();
}
if(PM_IsPlaybackShuffle(PM_GetPlaybackMode())||PM_IsPlaybackProgram(PM_GetPlaybackMode()))
{
ie_send( IE_CORE_STOP );//DM1106 Abort playback first...
ie_send( IE_CORE_PLAY );
}
else
{
evt = IE_CORE_JPG_GOTO_ENTRY;;
ie_send_ex(evt, (void *) track);
}
#else
evt = IE_CORE_GOTO_ENTRY;
ie_send_ex(evt, (void *) track);
#endif // D_PICTURE_CD_ENABLED
// ZORAN CDE0924 >>>
}
static void track_1_action(void)
{
track_action(1);
}
static void track_2_action(void)
{
track_action(2);
}
static void track_3_action(void)
{
track_action(3);
}
static void track_any_action(void)
{
track_action( BUTTON_NUMBER_TO_TRACK(gmp3m.iButtonNumber) );
}
static void mp3_refresh( int iButtonNumberNext )
{
MS_change_focus((MS_DIALOG *)screen, (MS_WIDGET *) &gmp3m.msbTrack[iButtonNumberNext]);
#ifdef D_PICTURE_CD_ENABLED
if ( !IS_STATE(MP3M_STATE_IMAGE_OPEN) )
#endif // D_PICTURE_CD_ENABLED
{
MS_refresh((MS_DIALOG *) screen);
update_scroll_statics();
}
}
#if 1 //def DISABLE
// Select the item in the list corresponding to the current track
static void list_goto_track( WORD wTrackNext )
{
int iTrackCurrent = BUTTON_NUMBER_TO_TRACK( gmp3m.iButtonNumber );
int iTrackNext = (int) wTrackNext;
#if 0 //ZORAN DM1112 remove repeat code...
if ( iTrackNext == iTrackCurrent + 1 )
{
int iButtonNumberNext = TRACK_TO_BUTTON_NUMBER( iTrackNext );
#ifdef NO_C_STDLIB
dbouts("\n iTrackCurrent: "); dbouti(iTrackCurrent);
dbouts("\n iTrackNext: "); dbouti(iTrackNext);
#endif
#ifdef NO_C_STDLIB
rtouts("\n iButtonNumberNext: "); rtouti(iButtonNumberNext);
rtouts("\n last displayed item: "); rtouti(gmp3m.lastDisplayed.iItemNum);
#endif
if ( iButtonNumberNext > gmp3m.lastDisplayed.iItemNum )
{
if ( can_scroll(B_SCROLL_FORWARD) )
{
scroll_forward();
iButtonNumberNext = TRACK_TO_BUTTON_NUMBER( iTrackNext );
mp3_refresh( iButtonNumberNext );
}
else
{
change_directory();
iButtonNumberNext = TRACK_TO_BUTTON_NUMBER( iTrackNext );
}
gmp3m.iButtonNumber = iButtonNumberNext;
#ifdef NO_C_STDLIB
rtouts("\niButtonNumber set to "); rtouti(gmp3m.iButtonNumber);
#endif // NO_C_STDLIB
return;
} // iButtonNumberNext > gmp3m.lastDisplayed.iItemNum
else
// Button number is already displayed
{
gmp3m.iButtonNumber = iButtonNumberNext;
#ifdef NO_C_STDLIB
rtouts("\niButtonNumber set to "); rtouti(gmp3m.iButtonNumber);
#endif // NO_C_STDLIB
mp3_refresh( iButtonNumberNext );
} // iButtonNumberNext > gmp3m.lastDisplayed.iItemNum
} // if ( iTrackNext == iTrackCurrent + 1 )
else
if ( iTrackNext == iTrackCurrent - 1 )
{
int iButtonNumberNext = TRACK_TO_BUTTON_NUMBER( iTrackNext );
#ifdef NO_C_STDLIB
dbouts("\n iTrackCurrent: "); dbouti(iTrackCurrent);
dbouts("\n iTrackNext: "); dbouti(iTrackNext);
#endif
#ifdef NO_C_STDLIB
rtouts("\n iButtonNumberNext: "); rtouti(iButtonNumberNext);
rtouts("\n last displayed item: "); rtouti(gmp3m.lastDisplayed.iItemNum);
#endif
if ( iButtonNumberNext < gmp3m.firstDisplayed.iItemNum )
{
if ( can_scroll(!B_SCROLL_FORWARD) )
{
scroll_backward();
iButtonNumberNext = TRACK_TO_BUTTON_NUMBER( iTrackNext );
mp3_refresh( iButtonNumberNext );
}
else
{
previous_directory();
iButtonNumberNext = TRACK_TO_BUTTON_NUMBER( iTrackNext );
}
gmp3m.iButtonNumber = iButtonNumberNext;
#ifdef NO_C_STDLIB
rtouts("\niButtonNumber set to "); rtouti(gmp3m.iButtonNumber);
#endif // NO_C_STDLIB
return;
} // iButtonNumberNext > gmp3m.lastDisplayed.iItemNum
else
// Button number is already displayed
{
gmp3m.iButtonNumber = iButtonNumberNext;
#ifdef NO_C_STDLIB
rtouts("\niButtonNumber set to "); rtouti(gmp3m.iButtonNumber);
#endif // NO_C_STDLIB
mp3_refresh( iButtonNumberNext );
} // iButtonNumberNext < gmp3m.firstDisplayed.iItemNum
} // if ( iTrackNext == iTrackCurrent - 1 )
else
#endif //#if 0
{
if ( iTrackCurrent != iTrackNext )
//Zoran DM1112 Add the following to update and scroll the screen whatever current track is...
//iTrackNext is not have to == iTrackCurrent +/-1
{
int iButtonNumberNext = TRACK_TO_BUTTON_NUMBER( iTrackNext );
#ifdef NO_C_STDLIB
rtouts("\n iTrackCurrent: "); rtouti(iTrackCurrent);
rtouts("\n iTrackNext: "); rtouti(iTrackNext);
#endif
if ( iButtonNumberNext > gmp3m.lastDisplayed.iItemNum )
{
if ( can_scroll(B_SCROLL_FORWARD) )
{
scroll_forward();
iButtonNumberNext = TRACK_TO_BUTTON_NUMBER( iTrackNext );
mp3_refresh( iButtonNumberNext );
}
else
{
change_directory();
iButtonNumberNext = TRACK_TO_BUTTON_NUMBER( iTrackNext );
}
gmp3m.iButtonNumber = iButtonNumberNext;
#ifdef NO_C_STDLIB
rtouts("\niButtonNumber set to "); rtouti(gmp3m.iButtonNumber);
#endif // NO_C_STDLIB
return;
} // iButtonNumberNext > gmp3m.lastDisplayed.iItemNum
else if ( iButtonNumberNext < gmp3m.firstDisplayed.iItemNum )
{
if ( can_scroll(!B_SCROLL_FORWARD) )
{
scroll_backward();
iButtonNumberNext = TRACK_TO_BUTTON_NUMBER( iTrackNext );
mp3_refresh( iButtonNumberNext );
}
else
{
previous_directory();
iButtonNumberNext = TRACK_TO_BUTTON_NUMBER( iTrackNext );
}
gmp3m.iButtonNumber = iButtonNumberNext;
#ifdef NO_C_STDLIB
rtouts("\niButtonNumber set to "); rtouti(gmp3m.iButtonNumber);
#endif // NO_C_STDLIB
return;
} // iButtonNumberNext < gmp3m.lastDisplayed.iItemNum
else
// Button number is already displayed
{
gmp3m.iButtonNumber = iButtonNumberNext;
#ifdef NO_C_STDLIB
rtouts("\niButtonNumber set to "); rtouti(gmp3m.iButtonNumber);
#endif // NO_C_STDLIB
mp3_refresh( iButtonNumberNext );
} // iButtonNumberNext > gmp3m.lastDisplayed.iItemNum
} // iTrackCurrent != iTrackNext
}
}
// ZORAN CDE0816 >>>
#endif
static void on_mp3_close(void)
{
int iItemNum;
// <<< ZORAN CDE0521 : Clear time and track on exit
char sz[2] = "";
#ifdef DISABLE
// ZORAN CDE0626 : Support transition detection
g_ui_bTimePending = FALSE;
#endif
sc_SetBytes(SC_CURRENT_TIME_MSG_ADDR, 0, 2, (BYTE *)sz);
sc_SetBytes(SC_TOTAL_TIME_MSG_ADDR, 0, 2, (BYTE *)sz);
// ZORAN CDE0521 >>>
#ifdef NO_C_STDLIB
rtouts("\nMP3 menu closed");
#endif
CLEAR_STATE( MP3M_STATE_LIST_INITIALIZED );
// ZORAN CDE0924 : Implement PictureCD Browser
#ifdef D_PICTURE_CD_ENABLED
if((( g_disc_type == DEC_DISC_TYPE_JPG ))//&&(gcs.pstate == PST_STOP))
#ifdef JPG_DIGEST_ENABLED //DM1019
||(g_ui_active_menu_id == DIGEST_MENU_ID)
#endif
)
// if ( g_ui_active_menu_id == PICTURE_CD_MENU_ID )
{
if ( IS_STATE(MP3M_STATE_SLIDESHOW_ACTIVE) )
close_slideshow();
SAFELY_DELETE_PTR(gmp3m.pSlideshowTimer);
}
SAFELY_DELETE(gmp3m.pmssMenuTitle);
SAFELY_DELETE(gmp3m.pmssDirName);
SAFELY_DELETE(gmp3m.pmssTmpMsg);
SAFELY_DELETE(gmp3m.pmssTmpString);
#endif // D_PICTURE_CD_ENABLED
#ifdef DISABLE
for ( iItemNum = 0; iItemNum < MAX_DISPLAY_TRACKS; iItemNum++ )
{
SAFELY_DELETE(gmp3m.msbTrack[iItemNum]);
}
#endif // DISABLE
}
static void init_list(void)
{
int iItemNum;
for ( iItemNum = 0; iItemNum < MAX_DISPLAY_TRACKS; iItemNum++ )
{
initListItem(iItemNum);
}
SET_STATE( MP3M_STATE_LIST_INITIALIZED );
list_files(0);
}
static void init_directory( int iIndex )
{
#ifdef D_PICTURE_CD_ENABLED
MS_WIDGET *msw = (MS_WIDGET *) gmp3m.pmssDirName;
#else
MS_WIDGET *msw = (MS_WIDGET *) &mssDirName;
#endif // D_PICTURE_CD_ENABLED
reset_directory_vars();
gmp3m.iDirNum = iIndex;
((MS_STATIC *) msw)->text = dir_name_address(iIndex);
MS_add_item((MS_DIALOG *) screen, msw, !C_FOCUSED);
}
void open_PCD(void)
{
#ifdef DISABLE
// ZORAN CDE0626 : Support transition detection
g_ui_bTimePending = FALSE;
#endif
gmp3m.iDirNum = 0;
// ZORAN CDE1010 : Clear all state bits on entry
#ifdef D_PICTURE_CD_ENABLED
gmp3m.wState &= (MP3M_STATE_FIRST_TIME_SLIDESHOW|MP3M_STATE_SLIDESHOW_ACTIVE|MP3M_STATE_SLIDESHOW_PAUSED); //Keep pause state when reopen picture menu
#else
gmp3m.wState = 0;
#endif
#ifdef D_PICTURE_CD_ENABLED
if(!(gmp3m.wState&MP3M_STATE_SLIDESHOW_ACTIVE))
{
// gmp3m.iButtonNumber = 0;
Menu_update_buttonnumber(PM_GetProgramListEntry( (WORD)(gns.cdda.m_CurrPosition).iPlaylistItem ));
gmp3m.pSlideshowTimer = NULL;
}
#endif
gmp3m.dirBounds.iFirstFileIndex = -1;
gmp3m.dirBounds.iLastFileIndex = -1;
gmp3m.dirBounds.iLastItemNum = -1;
gmp3m.firstDisplayed.iFileIndex = -1;
gmp3m.firstDisplayed.iItemNum = -1;
gmp3m.lastDisplayed = gmp3m.firstDisplayed;
// ZORAN CDE0924 : Implement PictureCD Browser
#ifdef D_PICTURE_CD_ENABLED
gmp3m.pmssMenuTitle = NULL;
gmp3m.pmssDirName = NULL;
gmp3m.pmssTmpMsg = NULL;
gmp3m.pmssTmpString = NULL;
// gmp3m.pSlideshowTimer = NULL;
gmp3m.Angle = 0;
// gmp3m.Transition_mode = 0;
#endif // D_PICTURE_CD_ENABLED
screen = MS_create_screen((MS_POS *)&screen_pos, screen_color, 0, on_mp3_close, layout);
// ZORAN CDE0924 : Implement PictureCD Browser
#ifdef D_PICTURE_CD_ENABLED
if ( g_ui_active_menu_id == PICTURE_CD_MENU_ID )
MS_override_user_op( (MS_WIDGET *) screen, mp3m_screen_user_op );
#endif // D_PICTURE_CD_ENABLED
#ifdef D_PICTURE_CD_ENABLED
{
MS_POS mspos = {MSS_TITLE_X, MS_LINE_0, MP3M_MSS_TITLE_WIDTH, MS_LINE_HEIGHT};
if ( g_ui_active_menu_id == PICTURE_CD_MENU_ID )
mspos.w = PCDM_MSS_TITLE_WIDTH;
gmp3m.pmssMenuTitle = MS_create_static(&mspos, I_COLOR,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -