📄 zoom.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 + -