📄 osd_draw.c
字号:
SH_GfxDrawImage(SH_CANV1, SetDivxInfoPlayModeIcon(), 50+185+170+165, 5); //IMG_MODE_NRM/RAN/PGM
}
#endif
}
/******************************************************************************
* Function name : OwGraphicSelectDisplayDvdvSub
* Arguments :
* IN
* OSD_InfoSubState_et old_t, OSD_InfoSubState_et new_t
* OUT
* I/O
* Return : VOID
*
* By : Qian liping 060525
* Description : To redraw Display Information's sub menu
* Revision : 1.0 modified 060413 changlina
******************************************************************************
*/
VOID OwGraphicSelectDisplayDvdvSub( OSD_InfoSubState_et old_t, OSD_InfoSubState_et new_t )
{
/* Un-highlight all case :
1) From "Goto" key twice
2) From "Enter" key case
*/
if( new_t == INFO_SUB_NONE )
{
OwSearchBarDisplay(new_t);
// Reset the search value after info updated.
SetTempValueSetFlag( FALSE );
InitTempValueState();
InitSearchValue();
}else if( new_t == INFO_SUB_VTIME )
{
InitSearchValue();
SetTempValueSetFlag( TRUE);
// Reset the title/chapter value.
if( old_t != INFO_SUB_NONE )
{
OwSearchBarDisplay( INFO_SUB_NONE);
}
OwSearchBarDisplay(INFO_SUB_VTIME);
}
else
{
SetTempValueSetFlag( FALSE );
InitTempValueState();
//Restore current time value.
if( old_t == INFO_SUB_VTIME )
{
OwSearchBarDisplay(old_t);
}
if(new_t == INFO_SUB_CHAPTER)
{
OwSearchBarDisplay(INFO_SUB_CHAPTER);
}
else if( new_t == INFO_SUB_TITLE )
{
// First reset the search value.
InitSearchValue();
OwSearchBarDisplay(INFO_SUB_TITLE);
}
}
OwGfxSelectDvdvInfoDisplaySub( old_t, new_t );
gOSD_state.etInfo_sub = new_t;
}
/******************************************************************************
* Function name : OwGfxSelectDvdvInfoDisplaySub
* Arguments :
* IN
* OSD_InfoSubState_et old_type, OSD_InfoSubState_et new_type
* OUT
* I/O
* Return : VOID
*
* By : Qian liping
* Description : select sub menu and change color of new and old.
* Revision : 1.0
******************************************************************************
*/
VOID OwGfxSelectDvdvInfoDisplaySub( OSD_InfoSubState_et old_type,
OSD_InfoSubState_et new_type )
{
BYTE2 chapter_w;
if( S5H_GetAppType()== APP_MMN )
chapter_w = INFO_DIVX_CHP_W ;
else
chapter_w = INFO_DVD_CHP_W;
/* Use GOTO key to enter editable osd */
if( old_type == INFO_SUB_NONE )
{
/* Highlight the 1st item */
SH_GfxChgAreaColor(SH_CANV1, 50 , 5, 30, 30, COLOR_BLUE_NORM,COLOR_BROWN);
SH_GfxChgAreaColor(SH_CANV1, 50+33, 5, INFO_DVD_TITLE_W-33, 40-3*2, OSD_COLOR_FONT_DEFAULT,OSD_COLOR_FONT_HIGHLIGHT);
return;
}
/* Un-highlight all */
if( old_type == INFO_SUB_TITLE )
{
/* Highlight the 1st item */
SH_GfxChgAreaColor(SH_CANV1, 50 , 5, 30, 30, COLOR_BROWN,COLOR_BLUE_NORM);
SH_GfxChgAreaColor(SH_CANV1, 50+33, 5, INFO_DVD_TITLE_W-33, 40-3*2,OSD_COLOR_FONT_HIGHLIGHT, OSD_COLOR_FONT_DEFAULT);
}
else if( old_type == INFO_SUB_CHAPTER)
{
/* Highlight the 1st item */
SH_GfxChgAreaColor(SH_CANV1, 50+INFO_DVD_TITLE_W, 5, 30, 30, COLOR_BROWN,COLOR_BLUE_NORM);
SH_GfxChgAreaColor(SH_CANV1, 50+INFO_DVD_TITLE_W+33, 5, chapter_w-33, 30, OSD_COLOR_FONT_HIGHLIGHT,OSD_COLOR_FONT_DEFAULT);
}
else if( old_type == INFO_SUB_VTIME )
{
/* Highlight the 1st item */
SH_GfxChgAreaColor(SH_CANV1, 50+INFO_DVD_TITLE_W+chapter_w, 5, 30, 30,COLOR_BROWN, COLOR_BLUE_NORM);
SH_GfxChgAreaColor(SH_CANV1, 50+INFO_DVD_TITLE_W+chapter_w+33, 5, INFO_DVD_TIME_W-33, 30,OSD_COLOR_FONT_HIGHLIGHT,OSD_COLOR_FONT_DEFAULT);
}
/* Use GOTO key to enter usual osd */
if( new_type == INFO_SUB_NONE )
{
return;
}
/* Use Left/Right key to select (editable info OSD) */
else
{
if( new_type == INFO_SUB_TITLE )
{
/* Highlight the 1st item */
SH_GfxChgAreaColor(SH_CANV1, 50 , 5, 30, 30, COLOR_BLUE_NORM,COLOR_BROWN);
SH_GfxChgAreaColor(SH_CANV1, 50+33, 5, INFO_DVD_TITLE_W-33, 40-3*2, OSD_COLOR_FONT_DEFAULT,OSD_COLOR_FONT_HIGHLIGHT);
}
else if( new_type == INFO_SUB_CHAPTER)
{
/* Highlight the 1st item */
SH_GfxChgAreaColor(SH_CANV1, 50+INFO_DVD_TITLE_W, 5, 30, 30, COLOR_BLUE_NORM,COLOR_BROWN);
SH_GfxChgAreaColor(SH_CANV1, 50+INFO_DVD_TITLE_W+33, 5, chapter_w-33, 30, OSD_COLOR_FONT_DEFAULT,OSD_COLOR_FONT_HIGHLIGHT);
}
else if( new_type == INFO_SUB_VTIME )
{
/* Highlight the 1st item */
SH_GfxChgAreaColor(SH_CANV1, 50+INFO_DVD_TITLE_W+chapter_w, 5, 30, 30, COLOR_BLUE_NORM,COLOR_BROWN);
SH_GfxChgAreaColor(SH_CANV1, 50+INFO_DVD_TITLE_W+chapter_w+33, 5, INFO_DVD_TIME_W-33, 30,OSD_COLOR_FONT_DEFAULT,OSD_COLOR_FONT_HIGHLIGHT);
}
}
}
/******************************************************************************
* Function name : GetTimeString
* Arguments :
* IN
* TempKeeper_t *data, char *string
* OUT
* I/O
* Return : VOID
*
* By : KIM DO YEON
* Description :
* Revision : 1.0
******************************************************************************
*/
VOID GetTimeString(TempKeeper_t *data, char *string)
{
if( data->number[0] == 0xFF )
{
sprintf(string,"-:--:--");
}
else
{
string[6] = NumberToCharacter( data->number[0] );
if( data->number[1] == 0xFF )
{
string[5] = NumberToCharacter( 0 );
}
else
{
string[5] = NumberToCharacter( data->number[1] );
}
string[4] = ':';
if( data->number[2] == 0xFF )
{
string[3] = NumberToCharacter( 0 );
}
else
{
string[3] = NumberToCharacter( data->number[2] );
}
if( data->number[3] == 0xFF )
{
string[2] = NumberToCharacter( 0 );
}
else
{
string[2] = NumberToCharacter( data->number[3] );
}
string[1] = ':';
if( data->number[4] == 0xFF )
{
string[0] = NumberToCharacter( 0 );
}
else
{
string[0] = NumberToCharacter( data->number[4] );
}
string[7] = '\0';
}
}
#if _APP_CAP_KEY_QUICK_RESPONSE_NEXT_PREV//By QQ 050829
/******************************************************************************
* Function name : GetDvdvInfoValueInQuickResponseSearch
* Arguments :
* IN
* GetDvdvInfoValueInQuickResponseSearch
* OUT
* I/O
* Return : BYTE2
*
* By : QQ
* Description :
* Revision : 1.0
******************************************************************************
*/
BYTE2 GetDvdvInfoValueInQuickResponseSearch(BOOL pttn_flag)
{
BYTE2 num ;
DvdVideoInfo_t dvdv;
GetDvdvInfoInAppLayer(&dvdv);
#if _APP_CAP_KEY_QUICK_RESPONSE_NEXT_PREV
if(GetNextPrevFlag() == TRUE)
{
num = GetNextPrevSearchValue();
switch(GetDvdvPlayMode())
{
case DVD_PB_NORMAL:
if(pttn_flag)
{
if(num == 0)
num = 1;
else if(num == 0xFFFF)
num = dvdv.total_chapter;
}
else
{
num = dvdv.cur_title;
}
break;
case DVD_PB_PROGRAM:
num = GetNextPrevSearchValue();
if(pttn_flag)
num = gDvd_program.pttn[num];
else
num = gDvd_program.ttn[num];
break;
}
}
else
#endif
{
if(pttn_flag)
num = dvdv.cur_chapter;
else
num = dvdv.cur_title;
}
return num;
}
#endif/*_SUPPORT_INFO_NEXT_PREV_REALTIME_DISP*/
/******************************************************************************
* Function name : OwGetDVDSearchValue
*
* Arguments : OSD_InfoSubState_et infosub
* IN UCHAR *str_title, UCHAR *str_chapter, UCHAR *str_time
*
* Return : VOID
*
* By : Qian liping
* Description :
* Revision : 1.0 060525
******************************************************************************
*/
VOID OwGetDVDSearchValue( OSD_InfoSubState_et infosub, UCHAR *str_title, UCHAR *str_chapter , UCHAR *str_time)
{
DvdVideoInfo_t dvdv;
Pttn_t pttn;
DVDSearch_t search_value;
TempKeeper_t data;
#if _APP_CAP_NAV_MMP_PLAY_VIDEO_FILE
MmpVideoInfo_t mmp;
MMPSearch_t mmp_search_value;
if(S5H_GetAppType() == APP_MMN)
{
GetMmpSearchValue(&mmp_search_value);
mmp.total_folder = GetMmpTotalFolders();
mmp.cur_folder = GetMmpFolderPlay() + 1;
mmp.total_file = GetMmpTotalFiles();
mmp.cur_file = GetMmpBgPlay() + 1;
}
else
#endif
{
GetSearchValue(&search_value);
GetDvdvInfoInAppLayer(&dvdv);
}
strcpy((char *)str_time, "");
strcpy((char *)str_chapter, "");
strcpy((char *)str_title, "");
switch ( infosub )
{
case INFO_SUB_TITLE :
#if _APP_CAP_NAV_MMP_PLAY_VIDEO_FILE
if(S5H_GetAppType() == APP_MMN)
{
if(mmp_search_value.folder_search == 0)
{
sprintf( (CHAR *)str_title, "--/%02d",mmp.total_folder );
//sprintf( (CHAR *)str_chapter, "---/%03d", mmp.total_file );// Qian liping 060921
sprintf( (CHAR *)str_chapter, "----/%04d", mmp.total_file );
}
else
{
sprintf( (CHAR *)str_title, "%02d/%02d", mmp_search_value.folder_search, mmp.total_folder );
}
}
else
#endif
{
if(search_value.title_search == 0)
{
sprintf( (CHAR *)str_title, "--/%02d",dvdv.total_title );
GetDvdTtInfo(dvdv.cur_title, &pttn);
sprintf( (CHAR *)str_chapter, "---/%03d", pttn );
}
else
{
sprintf( (CHAR *)str_title, "%02d/%02d", search_value.title_search,dvdv.total_title );
GetDvdTtInfo(search_value.title_search, &pttn);
sprintf( (CHAR *)str_chapter, "---/%03d", pttn );
}
}
break; /*case INFO_SUB_TITLE */
case INFO_SUB_CHAPTER :
#if _APP_CAP_NAV_MMP_PLAY_VIDEO_FILE
if(S5H_GetAppType() == APP_MMN)
{
mmp_search_value.folder_search = mmp.cur_folder;
SetMmpSearchValue(mmp_search_value);
sprintf( (CHAR *)str_title, "%02d/%02d", mmp_search_value.folder_search, mmp.total_folder );
if(mmp_search_value.file_search == 0)
{
//sprintf( (CHAR *)str_chapter, "---/%03d", mmp.total_file );// Qian liping 060921
sprintf( (CHAR *)str_chapter, "----/%04d", mmp.total_file );
}
else
{
//sprintf((CHAR *)str_chapter, "%03d/%03d", mmp_search_value.file_search, mmp.total_file);
sprintf((CHAR *)str_chapter, "%04d/%04d", mmp_search_value.file_search, mmp.total_file);
}
}
else
#endif
{
// If there is no title search, set suitable title value.
if(search_value.title_search == 0)
{
//Special case : in DVD_DOM_VTSM & DVD_DOM_VMGM
if(GetDvdDomain() == DVD_DOM_VTSM || GetDvdDomain() == DVD_DOM_VMGM)
search_value.title_search = 1;
else
search_value.title_search = dvdv.cur_title;
SetSearchValue(search_value);
sprintf( (CHAR *)str_title, "%02d/%02d", search_value.title_search,dvdv.total_title );
}
GetDvdTtInfo(search_value.title_search, &pttn);
if(search_value.chapter_search == 0)
{
sprintf( (CHAR *)str_chapter, "---/%03d", pttn );
}
else
{
sprintf((CHAR *)str_chapter, "%03d/%03d", search_value.chapter_search, pttn);
}
}
break;/*case INFO_SUB_CHAPTER */
case INFO_SUB_VTIME:
if( GetTempValueSetFlag()== TRUE )
{ // Get search time
GetTempValueState( &data );
GetTimeString(&data, (CHAR *)str_time);
}
else
{ // Restore current time
#if _APP_CAP_NAV_MMP_PLAY_VIDEO_FILE
if(S5H_GetAppType() == APP_MMN)
{
CHAR time_info_str[20], time_remain_str[20];
MmpGetCurTimeStr((char *)time_info_str, (char *)time_remain_str);
strcpy((char *)str_time, (char *)time_info_str);
}
else
#endif
{
BYTE1 hour, min, sec;
GetDvdvPbTime( &hour, &min, &sec);
sprintf((char *)str_time,"%d:%02d:%02d", hour, min, sec);
}
}
break;/* INFO_SUB_VTIME */
case INFO_SUB_NONE:
#if _APP_CAP_NAV_MMP_PLAY_VIDEO_FILE
if(S5H_GetAppType() == APP_MMN)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -