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

📄 zoom.c

📁 M3355的源代码
💻 C
字号:
/*****************************************************************************
*  Copyright (C) 2001 Acer Labs, Inc.  All Rights Reserved.
*  File:  ui_Zoom.c
*  Contents:  Zoom process
*  History:
*     Date   By      Reason        Ver.
*   ============ =========    ==========     ======
*   2004.5.18  Maggie Liu    Create it       1.0
*****************************************************************************/
#include <comsub.h>
#include <pe.h>
#include <panel.h>
#include <osd.h>
#include <nv.h>
#include <ui.h>
#include <ui_sub.h>
#include <panel.h>
#include "../../cstm/fend/frntp.h"
//#include "nmnvlib.h"
#include "normal.h"
//#include "nm_func.h"
#include <stdio.h>
#include <stdlib.h>
#include <audio.h>
//#include <fileopen.h>
#include <rscstruc.h>
#include <resource.h>
#include <platform.h>
//#include <filesys.h>
//#if(_SDRAM_MODE==_SDRAM_4M16x1_MODE_)
//#include <picture_cd.h>//cliff 30512-01cf for make the behavier(rotate and mirror) of JPG and PICTURECD same
//#endif
//#include <setupfunc.h>
//20021115 Tom Yang for perhibit KEY_SETUP start
//#include <atapi.h>
//#include <vobu.h>

#include "uiosd.h"
#include "NMOSD.h"
//#include "../FileopenMenu/MediaPlayerOutlook.h"

int ZoomPreSub = 0;
BYTE ZoomPreOnOff = 0;
//below used in zoom's screen fit.
//0 mean normal 1 to 9 mean large -1 to -9 mean small.
int bZoomVRatio;
int bZoomHRatio;

static void DVD_Clear_ZOOM(void);               //30507-01jeff clear zoom when highlight come up
/********************************************************************/
/*    Zoom  Sub-function           */
/********************************************************************/

void UiSubFuncZoomInit(void)
{
 	SUBTTINFO SubttInfo;
 	extern WORD zoomnum;
	extern unsigned char bzoomokflag;
     //David: Console+Zoom
    if(gZoomFuncPlus != TRUE)
    	g_UiCrntSubFunc = UI_SUBFUNC_ZOOM;

    bZoomCount++;
    //30826_01 Sean for Screen Fit & Zoom, letterBox mode disable Screenfit

#if (_SW_SCREEN_FIT==_SW_SCREEN_FIT_ENABLE)
	if (bZoomCount > 3)
#else
    if (bZoomCount >= 3)
#endif
    {
        bZoomCount = 0;
    }

    if (bZoomCount != ZOOMNORMAL)
    {
        bZoomVRatio = 0;
        bZoomHRatio = 0;

        bZoomXOffset = 0;
        bZoomYOffset = 0;
	        
        ShowZoomOSD();
        if(bZoomCount == 1)
        {
	        if(DiscType == C_DVD)
	        {
	        	NVGetSPInfo(&SubttInfo);
	        	ZoomPreOnOff = SubttInfo.SubTTOnOff;
	        	ZoomPreSub = SubttInfo.SubTTNo;
	        	
                if(/*DiscType == C_DVD &&*/ NVIsUOPPermit(UOP21) != TRUE)
                {
                    bNVSpSwOnOff = C_OFF;
                    NVNoteUI_SubPicChange();
                    DVDSPDispSwitch(C_OFF);
                }
                else
	        		NVSetSpSW( C_OFF);
        	}
        }

    }
    else
    {
        if(g_UiCrntSubFunc==UI_SUBFUNC_ZOOM)
	        g_UiCrntSubFunc = UI_SUBFUNC_BASAL;
	        ModifyZoomOSD(V_KEY_CLEAR);
	        ClearRectArea(gui_hdc, GUITYPE_ZOOM);
    }

	//benjamin move to here		
   // if (bZoomCount == 3)
   // {
   // }
    RunZoom();
}

BYTE UiSubFuncZoomProc(WORD MsgType, DWORD MsgInput)
{
    switch (MsgType)
    {
    case C_FP_KEY:
        return ZoomRespondFPKey(MsgInput);
    case C_TIMER_ACTIVE:
        return ZoomRespondTimer(MsgInput);
    case C_NV_NOTICE:
        return ZoomRespondNVNotice(MsgInput);
    default:
        return UI_NOUSE_FUNC_MSG;
    }
}


BYTE ZoomRespondFPKey(DWORD MsgInput)
{
    int i;
    int moveRange;
 	SUBTTINFO SubttInfo;
	extern WORD zoomnum,wShowedNum;
	extern unsigned char bzoomokflag;

    if (bZoomCount == 1)
        moveRange = ZOOM_RANGE_4X;
    else if (bZoomCount == 2)
        moveRange = ZOOM_RANGE_16X;
    //--------------
    moveRange--;

    switch (MsgInput)
    {
	case V_KEY_ENTER:
		//benjamin add,not need zoom decode jpg,only vp zoom
		return UI_NOUSE_FUNC_MSG;
		break;
	case V_KEY_LEFT:
		if(NVChkZoomEnable()==FALSE)//benjamin add
			return UI_IS_FUNC_MSG;
			
        if (bZoomCount == 3)
        {
          //if (bZoomHRatio > -SCREEN_FIT_SCALE_RANGE)
            if (bZoomHRatio > 0)
            {
                bZoomHRatio--;
                ModifyZoomOSD(MsgInput);
                RunZoom();
            }
            break;
        }
        else
        {
            if (bZoomXOffset > -moveRange)
            {
                bZoomXOffset--;
                //RunZoom();//31217_01 Sean update for LA new Zoom Spec.
                ModifyZoomOSD(MsgInput);
                RunZoom();//31217_01 Sean update for LA new Zoom Spec.
            }
        }
        break;
    case V_KEY_RIGHT:
		if(NVChkZoomEnable()==FALSE)//benjamin add
			return UI_IS_FUNC_MSG;
		
        if (bZoomCount == 3)
        {
           if (bZoomHRatio < SCREEN_FIT_SCALE_RANGE)
            {
                bZoomHRatio++;
                ModifyZoomOSD(MsgInput);
                RunZoom();
                return UI_IS_FUNC_MSG;
            }
            ShowScreenFitWindow(bScreenFitCount);
            break;
        }
        else
        {
            if (bZoomXOffset < moveRange)
            {
                bZoomXOffset++;
                //RunZoom();//31217_01 Sean update for LA new Zoom Spec.
                ModifyZoomOSD(MsgInput);
                RunZoom();//31217_01 Sean update for LA new Zoom Spec.
            }
        }
        break;
    case V_KEY_UP:
		if(NVChkZoomEnable()==FALSE)//benjamin add
			return UI_IS_FUNC_MSG;
		
        if (bZoomCount == 3)
        {
           if (bZoomVRatio < SCREEN_FIT_SCALE_RANGE)
            {
                bZoomVRatio ++;
                ModifyZoomOSD(MsgInput);
                RunZoom();
            }
            break;
        }
        else
        {
            if (bZoomYOffset > -moveRange)
            {
                bZoomYOffset--;
                //RunZoom();//31217_01 Sean update for LA new Zoom Spec.
                ModifyZoomOSD(MsgInput);
                RunZoom();//31217_01 Sean update for LA new Zoom Spec.
            }
        }
        break;
    case V_KEY_DOWN:
		if(NVChkZoomEnable()==FALSE)//benjamin add
			return UI_IS_FUNC_MSG;
		
        if (bZoomCount == 3)
        {
            //if (bZoomVRatio > -SCREEN_FIT_SCALE_RANGE)
            if (bZoomVRatio > 0)
            {
                bZoomVRatio--;
                ModifyZoomOSD(MsgInput);
                RunZoom();
            }
            break;
        }
        else
        {
            if (bZoomYOffset < moveRange)
            {
               bZoomYOffset++;
                //RunZoom();//31217_01 Sean update for LA new Zoom Spec.
                ModifyZoomOSD(MsgInput);
                RunZoom();//31217_01 Sean update for LA new Zoom Spec.
            }
        }
        break;
    case V_KEY_ZOOM:
		if(NVChkZoomEnable()==FALSE)//benjamin add
			return UI_IS_FUNC_MSG;
		
        bZoomCount++;
        if(bZoomCount == 1)
        {
	        if(DiscType == C_DVD)
	        {
	        	NVGetSPInfo(&SubttInfo);
	        	ZoomPreOnOff = SubttInfo.SubTTOnOff;
	        	ZoomPreSub = SubttInfo.SubTTNo;
	        	
                if(/*DiscType == C_DVD && */NVIsUOPPermit(UOP21) != TRUE)
                {
                    bNVSpSwOnOff = C_OFF;
                    NVNoteUI_SubPicChange();
                    DVDSPDispSwitch(C_OFF);
                }
                else
	        		NVSetSpSW( C_OFF);
        	}
        }
#if (_SW_SCREEN_FIT==_SW_SCREEN_FIT_ENABLE)
        else if (bZoomCount == 3)
        {
        	//30826_01 Sean for Screen Fit & Zoom, letterBox mode disable Screenfit
        	if ( (NoZoomDspMode==Letterbox) || (NoZoomDspMode == Panscan) ) //031023 Panscan dead temp fixed
        	{
        	//	bZoomCount = ZOOMNORMAL; //031021 turn on screen-fit on letter box mode
        	}
        	else
        	{
		            bZoomHRatio = 0;
		            bZoomVRatio = 0;
        	}
	        //30826_01 Sean for Screen Fit & Zoom, letterBox mode disable Screenfit
        }
        else if (bZoomCount > 3)
#else
        else if (bZoomCount >= 3)
#endif
        {
            bZoomCount = ZOOMNORMAL;
        }

        if (bZoomCount == ZOOMNORMAL)
        {

            RunZoom();
			
            /* exit from zoom */
            ModifyZoomOSD(V_KEY_CLEAR);
            SetTimer(OSD2_TM_ID, CancelZoom, INFINITETIME);
	     if(g_UiCrntSubFunc==UI_SUBFUNC_CONSOLE)
	     	CmdUIMsg(C_NV_NOTICE,C_DVD_SUBPICCHK);
	     
	     if(g_UiCrntSubFunc==UI_SUBFUNC_ZOOM)
	     		g_UiCrntSubFunc=UI_SUBFUNC_BASAL;
	     gZoomFuncPlus=FALSE;
        }
        else
        {
            bZoomXOffset = 0;
            bZoomYOffset = 0;
            ModifyZoomOSD(MsgInput);//31217_01 Sean update for LA new Zoom Spec.
            RunZoom();
			//if(bZoomCount==3)
			//{			
			//}
        }
        break;
		#if 0//maggie for cancel
    case V_KEY_FILEOPEN:
    	/*
        if (bZoomCount)
        {
            bZoomCount = ZOOMNORMAL;
            RunZoom();
            ModifyZoomOSD(V_KEY_CLEAR);
        }
        SetTimer(OSD2_TM_ID, CancelZoom, INFINITETIME);
        */
        CloseZoom();//for lg bug2765       
        return UI_NOUSE_FUNC_MSG;
		#endif//maggie for cancel
    case V_KEY_MENU:
    	 if (NVIsMenu(ROOT_MENU)&&(DiscType == C_DVD))
        {
            CloseZoom();//for lg bug2765           
            return UI_NOUSE_FUNC_MSG;
        }
        else
            return UI_IS_FUNC_MSG;
    case V_KEY_TITLE:
//        if (((DiscType == C_DVD || DiscType == C_DVD_AUDIO)) || (DiscType == C_DVD_VR) || ((DiscType == C_FILEOPENDISC) && (FileType == C_JPGFILE)) )
//bejamin changed here,when jpg zoom not response tittle key 
//cause the bug of zoom->title->programe->setup black screen bug
        if (NVIsMenu(TITLE_MENU)&&(DiscType == C_DVD))
        {
            CloseZoom();//for lg bug2765           
            return UI_NOUSE_FUNC_MSG;
        }
        else
            return UI_IS_FUNC_MSG;

    //case V_KEY_SETUP:
    //    CloseZoom();//for lg bug2765        
      //  return UI_NOUSE_FUNC_MSG;

    //case V_KEY_PROGRAM:
   // case V_KEY_DVIEW:
#if 0   
    case V_KEY_GAME:
   // case V_KEY_TTSCR:
        ModifyZoomOSD(V_KEY_CLEAR);
        if(g_UiCrntSubFunc==UI_SUBFUNC_ZOOM)
        g_UiCrntSubFunc = UI_SUBFUNC_BASAL;
        gZoomFuncPlus=FALSE;
        SetTimer(OSD2_TM_ID, CancelZoom, INFINITETIME);
        return UI_NOUSE_FUNC_MSG;
#endif        
    case V_KEY_STOP:
        g_UiCrntSubFunc = UI_SUBFUNC_BASAL; /* CAUTION: there is no "break;" */
    case V_KEY_OPEN:
    //case V_KEY_PBC_ONOFF:
        CloseZoom();//for lg bug2765
        return UI_NOUSE_FUNC_MSG;
    case V_KEY_SETUPDEFAULT:
        CloseZoom();//for lg bug2765
        return UI_NOUSE_FUNC_MSG;
    //David: Console+Zoom		
#if 0    
    case V_KEY_VOLUM:
#endif		
    case V_KEY_TMSCR:
#ifdef _MUTE_ENABLE_
	case V_KEY_VOLUP:
	case V_KEY_MUTE:
#endif
#ifdef _MUTE_ENABLE_
	case V_KEY_VOLDOWN:
#endif
    //case V_KEY_CONSOLE:
		gZoomFuncPlus = TRUE;
		return UI_NOUSE_FUNC_MSG;
	//case V_KEY_CLOSEZOOM://benjamin add for mix play cancel zoom
	//	if(bMixPlay)
	//		CloseZoom();
	//	break;
    default:
        return UI_NOUSE_FUNC_MSG;
    }

    return UI_IS_FUNC_MSG;
}

BYTE ZoomRespondTimer(DWORD MsgInput)
{
    int i;

    switch (MsgInput)
    {
    case C_ZOOM_TIMER:
	//David: Console+Zoom
	//if(gZoomFuncPlus == FALSE)
	if(g_UiCrntSubFunc==UI_SUBFUNC_ZOOM)
	{
        g_UiCrntSubFunc = UI_SUBFUNC_BASAL;
	}
	gZoomFuncPlus=FALSE;
        ClearRectArea(gui_hdc, GUITYPE_ZOOM);
        SetTimer(OSD2_TM_ID, CancelZoom, INFINITETIME);
        return UI_IS_FUNC_MSG;
    default:
        return UI_NOUSE_FUNC_MSG;
    }
}

BYTE ZoomRespondNVNotice(DWORD MsgInput)
{
    int i;

#if 0//maggie for cancel
    switch (MsgInput)
    {
    case C_DVD_CHGDOMAIN:
        if (CurrentDomain == VMGM_DOM || CurrentDomain == VTSM_DOM)
        { /* menu or title */
            CloseZoom();//for lg bug2765
        }
        break;
    default:
        break;
    }
#endif
	if (MsgInput == C_DVD_CHGDOMAIN)
        if (CurrentDomain == VMGM_DOM || CurrentDomain == VTSM_DOM)
            CloseZoom();//for lg bug2765
    return UI_NOUSE_FUNC_MSG;
	
}

void CloseZoom()
{
	if (bZoomCount != ZOOMNORMAL) /*peter 20021127 for whadh*/
	{
	    bZoomCount = ZOOMNORMAL;
	    RunZoom();
	    ModifyZoomOSD(V_KEY_CLEAR);
	    SetTimer(OSD2_TM_ID, CancelZoom, INFINITETIME);
	    //if ((gZoomFuncPlus==FALSE)||(g_UiCrntSubFunc == UI_SUBFUNC_ZOOM))
	    if(g_UiCrntSubFunc==UI_SUBFUNC_ZOOM)
		 g_UiCrntSubFunc = UI_SUBFUNC_BASAL;
	    //else 
	         gZoomFuncPlus=FALSE;
	}

}
/*----------------------------------------------------------------------------
 * Function_Name: DVD_Clear_ZOOM
 * Arguments    : None
 * Return value : None
 * Remark : Clear zoom when highlight come up
 * Author       : Jeff Chang 2003/05/07 //30507-01jeff clear zoom when highlight come up
 *----------------------------------------------------------------------------*/
void DVD_Clear_ZOOM(void)
{
    int i;

    if(bZoomCount!=ZOOMNORMAL)
    {
	    bZoomCount = ZOOMNORMAL;
	    ClearRectArea(gui_hdc, GUITYPE_SCREEN);
	    ModifyZoomOSD(V_KEY_CLEAR);
	    RunZoom();
    }
    
    gZoomFuncPlus=FALSE;
    if(g_UiCrntSubFunc==UI_SUBFUNC_ZOOM)
    	g_UiCrntSubFunc = UI_SUBFUNC_BASAL;
    
}


/*----------------------------------------------------------------------------
 * Function_Name: IsZOOM
 * Arguments    : None
 * Return value : 0:Not zoom  1:zoom
 * Remark : Check zoom status
 * Author       : Jeff Chang 2003/05/07 //30507-01jeff
 *----------------------------------------------------------------------------*/
BOOL IsZOOM(void)
{
    if (bZoomCount == ZOOMNORMAL)
        return FALSE;
    else
        return TRUE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -