⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 normal.c

📁 M3355的源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
* 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 + -