📄 normal.c
字号:
* Return value : BOOL:TRUE-permit;FALSE-forbid
* Remark : Called by PlaybackModeChangeSuccess(),judge if the playback mode described
* by the 3 parameters is permitted.
*----------------------------------------------------------------------------*/
BOOL ChkPBModePermit(BYTE list, BYTE repeatrange, BYTE method)
{
if (list == UI_PLAYBACKLIST_NORMAL)
return (PBModePermit_Normal[method][repeatrange]);
else //(list==UI_PLAYBACKLIST_PROGRAM)
return (PBModePermit_Program[method][repeatrange]);
}
/*----------------------------------------------------------------------------
* Function_Name: PlaybackModeChangeSuccess
* Arguments : BYTE list:IN,indicate the playback list now wanna change to;
* BYTE repeatrange:IN,indicate the playback repeat range now wanna change to;
* BYTE method:IN,indicate the playback method now wanna change to.
* Return value : BOOL:TRUE-permit;FALSE-forbid
* Remark : check if the playback mode permitted;if so,set playback mode according to the 3
* parameters,set segment end type according to the playback mode and set initual
* playback list content.
*----------------------------------------------------------------------------*/
BOOL PlaybackModeChangeSuccess(BYTE list, BYTE repeatrange, BYTE method)
{
if (ChkPBModePermit(list, repeatrange, method))
{
//set playback mode
g_UiPlaybackList = list;
g_UiPlaybackRepeatRange = repeatrange;
g_UiPlaybackMethod = method;
//set segment end mode
if (list == UI_PLAYBACKLIST_NORMAL)
if ((DiscType == C_DVD || DiscType == C_DVD_AUDIO) || (DiscType == C_DVD_VR))
NVSetEndMode(SegEndType_DVD_Normal[method][repeatrange]); //tell nv END's type
else
NVSetEndMode(SegEndType_NODVD_Normal[method][repeatrange]); // tell nv END's type
else
if (g_UiPlaybackRepeatRange == UI_PLAYBACKRANGE_REPEATAB)
NVSetEndMode(C_POINT_END);
else
if (((DiscType == C_DVD || DiscType == C_DVD_AUDIO)) || (DiscType == C_DVD_VR))
NVSetEndMode(C_CHAPTER_END);
else
NVSetEndMode(C_TITLE_END);
//set play list content
if (list == UI_PLAYBACKLIST_NORMAL)
{
switch (repeatrange)
{
case UI_PLAYBACKRANGE_REPEATALL:
case UI_PLAYBACKRANGE_REPEATDISC:
switch (method)
{
case UI_PLAYBACKMETHOD_NORMAL:
if (((DiscType == C_DVD || DiscType == C_DVD_AUDIO)) || (DiscType == C_DVD_VR))
NVGetCurInfo(&PBInfo[REPEATALL_FIRST]);
else
PBInfo[REPEATALL_FIRST].wTTN = 1;
PBInfo[REPEATALL_FIRST].wPTTN = 1;
PBInfo[REPEATALL_FIRST].dwLBAAddr = 0;
if (((DiscType == C_DVD || DiscType == C_DVD_AUDIO)) || (DiscType == C_DVD_VR))
{
PBInfo[REPEATALL_LAST].wTTN = PBInfo[REPEATALL_FIRST].wTTN;
PBInfo[REPEATALL_LAST].wPTTN = NVGetTTPTTNs(PBInfo[REPEATALL_LAST].wTTN);
PBInfo[REPEATALL_LAST].bDomain = PBInfo[REPEATALL_FIRST].bDomain;
}
else
PBInfo[REPEATALL_LAST].wTTN = NVGetTTNsOrTrks();
PBInfo[REPEATALL_LAST].dwLBAAddr = 0;
break;
default:
break;
}
break;
case UI_PLAYBACKRANGE_REPEATONE:
switch (method)
{
case UI_PLAYBACKMETHOD_NORMAL:
case UI_PLAYBACKMETHOD_SHUFFLE:
NVGetCurInfo(&PBInfo[REPEAT1]); //* record current play block(POINT)
PBInfo[REPEAT1].dwLBAAddr = 0; //* make point to block
break;
default:
break;
}
break;
default:
break;
}
}
else
{
switch (repeatrange)
{
case UI_PLAYBACKRANGE_REPEATONE:
if (g_UiPlaybackMethod == UI_PLAYBACKMETHOD_NORMAL)
{
NVGetCurInfo(&PBInfo[REPEAT1]); //* record current play block(POINT)
PBInfo[REPEAT1].dwLBAAddr = 0; //* make point to block
}
break;
default:
break;
}
}
return TRUE;
}
else
return FALSE;
}
/*----------------------------------------------------------------------------
* Function_Name: RecoverOsdIcon
* Arguments :
* Return value :
* Remark : added by jane for recover osd icon
*----------------------------------------------------------------------------*/
void RecoverModegui()
{
if(g_UiPlaybackRepeatRange==UI_PLAYBACKRANGE_REPEATA&&g_UiCoreState!=UI_CORE_STOP)
{
ShowModeGui(MSG_REPEAT_A,0,0);
}
}
void RecoverPlaymodegui()
{
WORD Ratio;
switch(g_UiCoreState)
{
case UI_CORE_FAST:
Ratio = bActionCtl - MinFastVal + 1; /*caculate fast ratio*/
#if ( SKIP_LEVEL==Skip_Level_5 )
#ifndef SHOWHANGMSG
ShowDiscInfo(FastRatio[Ratio - 1], MSG_NULL);
#endif
#else
if (Ratio == 1)
ShowDiscInfo( MSG_FAST, MSG_NULL );
else
ShowDiscInfo(MSG_FWDSRCH, MSG_NULL);
#endif
if (Ratio > 0)
ShowPlayModeGui(RS_FUN_OSD_SCAN, 2 << (Ratio - 1));
break;
case UI_CORE_REVERSE:
Ratio = bActionCtl - MinReverseVal + 1;
#if ( SKIP_LEVEL==Skip_Level_5 )
#else
if (Ratio == 1)
ShowDiscInfo(MSG_REV, MSG_NULL);
else
ShowDiscInfo(MSG_BWDSRCH, MSG_NULL);
#endif
if (Ratio > 0)
ShowPlayModeGui(RS_FUN_OSD_REV_SCAN, 2 << (Ratio - 1));
break;
case UI_CORE_SLOW:
Ratio = bActionCtl - MinSlowVal + 1; /*calculate slow ratio*/
#if ( SKIP_LEVEL==Skip_Level_5 )
#ifndef SHOWHANGMSG
ShowDiscInfo(SlowRatio[Ratio - 1], MSG_NULL);
#endif
#else
if (Ratio == 1)
ShowDiscInfo(MSG_SLOW, MSG_NULL);
else
ShowDiscInfo(MSG_FWDSRCH, MSG_NULL);
#endif
ShowPlayModeGui(RS_FUN_OSD_SLOW, 2 << (Ratio - 1));
break;
case UI_CORE_REVSLOW:
Ratio = bActionCtl - MinSlowVal + 1;
#if ( SKIP_LEVEL==Skip_Level_5 )
#ifndef SHOWHANGMSG
ShowDiscInfo(SlowRatio[Ratio - 1], MSG_NULL);
#endif
#else
if (Ratio == 1)
ShowDiscInfo(MSG_SLOW, MSG_NULL);
else
ShowDiscInfo(MSG_FWDSRCH, MSG_NULL);
#endif
ShowPlayModeGui(RS_FUN_OSD_REV_SLOW, 2 << (Ratio - 1) - SLOW_RATIO_MAX);
break;
case UI_CORE_STEP:
case UI_CORE_PAUSE:
ShowPlayModeGui(RS_FUN_OSD_PAUSE, MSG_NULL );
break;
case UI_CORE_REVSTEP:
ShowDiscInfo(MSG_REV_STEP, MSG_NULL);
break;
default:
break;
}
}
void RecoverDiscInfo()
{
if (DiscType == C_NO_DISC&&!TrayIsOutOfFP()&&MachineState == C_MACHINE_ST_READY)
{
ShowDiscInfo( MSG_NO_DISC, MSG_NULL );
}
}
void RecoverOsdIcon()
{
RecoverPlaymodegui();
RecoverModegui();
RecoverDiscInfo();
}
/*----------------------------------------------------------------------------
* Function_Name: UiMenuPermitKey
* Arguments : DWORD key:IN, indicate virial key value
* Return value : BOOL:TRUE-permit;FALSE-forbid
* Remark : Called by BasalRespondFPKey(),judge if now recieved virial key can be responded.
*----------------------------------------------------------------------------*/
BOOL UiMenuPermitKey(DWORD key)
{
if (g_UiCoreState == UI_CORE_STOP) //if current NV status is stop,every key is safe and is permitted
return TRUE;
if (DiscType == C_DVD && NVChkIsMenu())
{
switch (key)
{ /* Is VMGM_DOM or VTSM_DOM */
case V_KEY_UP:
case V_KEY_DOWN:
case V_KEY_LEFT:
case V_KEY_RIGHT:
case V_KEY_0:
case V_KEY_1:
case V_KEY_2:
case V_KEY_3:
case V_KEY_4:
case V_KEY_5:
case V_KEY_6:
case V_KEY_7:
case V_KEY_8:
case V_KEY_9:
case V_KEY_10:
case V_KEY_ENTER:
case V_KEY_OPEN:
case V_KEY_POWER:
case V_KEY_STOP:
case V_KEY_SETUP:
case V_KEY_MENU:
case V_KEY_TITLE:
case V_KEY_MUTE:
case V_KEY_SCANMODE:
case V_KEY_VOLUM:
case V_KEY_LASTPLAY:
#if 0//maggie cancel
case V_KEY_TV_SYS:
#endif//maggie cancel
case V_KEY_PLAY:
//case V_KEY_NEXT: // Add by Angus 02/12/13 (Disc: The Road Home) (From SAFA39)
//case V_KEY_PREV: // Add by Angus 02/12/13 (Disc: The Road Home) (From SAFA39)
case V_KEY_PAUSE:
case V_KEY_RETURN:
return TRUE;
case V_KEY_FF: //added by carl for FF support in Menu domain.
//31204 gamble for scan & slow in menu
case V_KEY_REV:
case V_KEY_SLOW:
case V_KEY_REVSLOW:
//31204 gamble for scan & slow in menu end
if(NVChkIsHighLight())
return FALSE;
else
return TRUE;
default:
return FALSE;
}
}
else
{
return TRUE;
}
}
/*----------------------------------------------------------------------------
* Function : UiFuncNormalInit
* Arguments : None
* Return value : None
* Remark : when status change from other to normal,call this function and make some
* initialization of OSD.
*----------------------------------------------------------------------------*/
void UiFuncNormalInit(void) //LILY MA:030505-01lily
{
gui_hdc = CreateDC("DISPLAY", "OSD", NULL, NULL);
SetBkMode(gui_hdc, TRANSPARENT);
#if(_SDRAM_MODE==_SDRAM_4M16x1_MODE_)
#if ( _UI_NORMAL_MODE==UI_Noraml_Enable )
if ((!BEject)&&(g_UiCoreState!=UI_CORE_STOP))
{
switch (g_UiPlaybackRepeatRange)
{
case UI_PLAYBACKRANGE_REPEATALL:
#ifndef SHOWHANGMSG
ShowModeGui(MSG_REPEAT_ALL,0,0);
#endif
//SendVFDPart1Show();
break;
case UI_PLAYBACKRANGE_REPEATONE:
#ifndef SHOWHANGMSG
ShowModeGui(MSG_REPEAT,0,0);
#endif
//SendVFDPart1Show();
break;
#if 0//maggie cancel
case UI_PLAYBACKRANGE_REPEATNONE:
break;
#endif//maggie cancel
default:
break;
}
SendVFDPart1Show();
}
if(g_UiCoreState!=UI_CORE_STOP)
{
switch (RepeatAB_Counter)
{
case REPEAT_AB_A:
#ifndef SHOWHANGMSG
ShowModeGui(MSG_REPEAT_A,0,0);
#endif
break;
case REPEAT_AB_B:
#ifndef SHOWHANGMSG
ShowModeGui(MSG_REPEAT_AB,0,0);
#endif
break;
// case REPEAT_AB_OFF:
// break;
default:
break;
}
}
#endif//_UI_NORMAL_MODE==UI_Noraml_Enable
#endif//_SDRAM_1M16x2
}
/*----------------------------------------------------------------------------
* Function : UiFuncNormalProc
* Arguments :
* WORD MsgType:IN;
* DWORD MsgInput:IN.
* Return value : None
* Remark : main function of Normal module.
*----------------------------------------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -