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

📄 zoomosd.c

📁 M3355的源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <comsub.h>
#include <ui.h>
#include <nv.h>
#include <osd.h> 
#include <ui_sub.h>
#include <panel.h>
#include <rscstruc.h>
#include <resource.h>
#include <platform.h>
#include <fileopen.h>

#include "normal.h"
#include "NMOSD.h"
#include "../fileopenmenu/GuiControl.h"

#include <setupfunc.h>

#include<guiddi.h>
#include <gui.h>
#include <UIOSD.h>


extern int bZoomVRatio;
extern int bZoomHRatio;

//------------------
//for zoom
//#undef PRINTF
void ShowZoomOSD(void)
{
    if(bZoomCount==0)
    {}
    else if(bZoomCount<3)
        ShowZoomWindow(0x02<<((1<<bZoomCount)-1),bZoomXOffset,bZoomYOffset);
    else
        ShowScreenFitWindow(ZOOM_SF_STAGE_N);
    SetTimer(OSD2_TM_ID,CancelZoom,TIME_10SEC);
}

void CancelZoom(void)
{
    if(PollCmdUIMsg(C_TIMER_ACTIVE, C_ZOOM_TIMER)==FALSE)
        SetTimer(OSD2_TM_ID, CancelZoom, C_WAIT_MSG_TIME);
}

void ModifyZoomOSD(int Key)
{
    switch(Key)
    {
    case V_KEY_LEFT:
    case V_KEY_RIGHT:
    case V_KEY_UP:
    case V_KEY_DOWN:
    case V_KEY_ZOOM:
        if(bZoomCount<3)
            ShowZoomWindow(0x02<<((1<<bZoomCount)-1),bZoomXOffset,bZoomYOffset);
        else
            ShowScreenFitWindow(ZOOM_SF_STAGE_N);
        break;
    case V_KEY_CLEAR:
        ClearRectArea(gui_hdc,GUITYPE_ZOOM);
        break;

    }
   // if(g_UiCrntSubFunc == UI_SUBFUNC_ZOOM)
   // {
        //OSDScrShow(&scrMain);
   // }
    SetTimer(OSD2_TM_ID,CancelZoom,TIME_10SEC);
}
#define VP_ZOOM_
#include <VP2UI_setting.h>
#undef VP_ZOOM_
VP2UI_ZOOM jpg_Zoom_Par;
VP2UI_ZOOM backzoominfo;
extern WORD zoomnum;

#if (_JPEG_ZOOM_MODE==_JPG_ZOOM_ENABLE)
BOOL zoompositcheck()
{
	if(jpg_Zoom_Par.XOrg==backzoominfo.XOrg&&backzoominfo.YOrg==jpg_Zoom_Par.YOrg&&
		jpg_Zoom_Par.StartX==backzoominfo.StartX&&jpg_Zoom_Par.StartY==backzoominfo.StartY)
		return TRUE;
	else
		return FALSE;
}
void jpgrunzoom()
{
#if(__JPG_ZOOM_DECODE ==1)
	WORD tempTTN;
	BYTE bzoomcnt;
	bzoomcnt = bZoomCount;
//	printk("jpg_Zoom_Par.StartX is %d,jpg_Zoom_Par.StartY %d,jpg_Zoom_Par.XOrg %d,jpg_Zoom_Par.YOrg %d\n",jpg_Zoom_Par.StartX,jpg_Zoom_Par.StartY,jpg_Zoom_Par.XOrg,jpg_Zoom_Par.YOrg);
//	NvJpgZoom(bZoomCount,jpg_Zoom_Par);
		tempTTN = zoomnum;
	if(bzoomcnt==3)//for fit screen ,we should show the normal picture and do the fitscreen work by VP
		bzoomcnt = 0;
	backzoominfo = jpg_Zoom_Par;
    JPGZoomPlay(tempTTN,jpg_Zoom_Par,bzoomcnt);//benjamin add
//	CloseZoom();
#endif
}
#endif //40309

void RunZoom(void)
{
	extern BYTE ZoomPreOnOff;
	extern int ZoomPreSub;
	extern unsigned char bzoomokflag;
	//30827_02 Sean modify for Zoom
	
	#define VP_ZOOM_
	#include <VP2UI_setting.h>
	#undef VP_ZOOM_
	static VP2UI_ZOOM Zoom_Par;
	//30827_02 Sean modify for Zoom
    BYTE scrFH,scrFV;
    int range;
    float ZoomPara[3] = {1.0, 1.4142135623730950488016887242097, 2.0};
	//30827_02 Sean modify for Zoom
	//    if(bZoomCount==0 || (bZoomCount==3 && bZoomHRatio==0 && bZoomVRatio==0))
	if (bZoomCount==0)
	//30827_02 Sean modify for Zoom
    {
		backzoominfo.StartX=0;
		backzoominfo.StartY=0;
		backzoominfo.XOrg=0;
		backzoominfo.YOrg=0;
		bzoomokflag = 0;
 		if(DiscType==C_FILEOPENDISC&&FileType==C_JPGFILE)
			VfdOpenLongKey(2);//benjamin add 
        if (DiscType == C_DVD)
            {
                NVSetSpSW( C_ON );
                NVSPIdSet( ZoomPreSub, 1 );
                ZoomPreOnOff = 0;
                ZoomPreSub = 0;
            }

//31025_02 Sean modify for screenfit
   		#if (CCbyTVENCder == 1)
		#ifdef _Screen_Fit_Enable
        UINotePE_Set_ScreenFitMode(FALSE);
		#endif
		#endif//#if (CCbyTVENCder == 1)
//31025_02 Sean modify for screenfit

        if ( DiscType == C_DVD )
            APOprParam.DspMode = NoZoomDspMode;
        else
            APOprParam.DspMode = Normal;
		//30827_02 Sean modify for Zoom
        Zoom_Par.DspMode = APOprParam.DspMode;
        Zoom_Par.ZoomRatio = 0;
        Zoom_Par.XOrg = 0;
        Zoom_Par.YOrg = 0;
        Zoom_Par.StartX = 0;
        Zoom_Par.StartY = 0;
        Dec_SetVP_Zoom(Zoom_Par);
        //Dec_SetVP_Zoom(APOprParam.DspMode,0,0,0);
        //30827_02 Sean modify for Zoom
        jpg_Zoom_Par=Zoom_Par;
//31025_02 Sean modify for screenfit
        /*
   		#if (CCbyTVENCder == 1)
		#ifdef _Screen_Fit_Enable
        UINotePE_Set_ScreenFitMode(FALSE);
		#endif
		#endif//#if (CCbyTVENCder == 1)
		*/
//31025_02 Sean modify for screenfit
        //30826_01 Sean for Screen Fit & Zoom
    }
    else if(bZoomCount<3)
    {
		if(DiscType==C_FILEOPENDISC&&FileType==C_JPGFILE)
			VfdCloseLongKey(2);
        if ( ( bZoomCount==1 )&&(APOprParam.DspMode!=Zoom) )
            NoZoomDspMode = APOprParam.DspMode;
        APOprParam.DspMode = Zoom;

        if(bZoomCount==1)
        {
            Zoom_Par.ZoomRatio = 2;//30827_02 Sean modify for Zoom
            range = ZOOM_RANGE_4X;
        }
        if(bZoomCount ==2)
        {
            Zoom_Par.ZoomRatio =4;//30827_02 Sean modify for Zoom
            range = ZOOM_RANGE_16X;
        }
        
		//30827_02 Sean modify for Zoom	
        Zoom_Par.XOrg = APOprParam.HSize_Src*(range + bZoomXOffset)*(ZoomPara[bZoomCount]-1)/(range*2*ZoomPara[bZoomCount]);
        Zoom_Par.YOrg = APOprParam.VSize_Src*(range + bZoomYOffset)*(ZoomPara[bZoomCount]-1)/(range*2*ZoomPara[bZoomCount]);
        
        if ( (bZoomXOffset==0)&&(bZoomYOffset==0) )
        {
        	Zoom_Par.StartX = Zoom_Par.XOrg;
        	Zoom_Par.StartY = Zoom_Par.YOrg;
        }
        //30827_02 Sean modify for Zoom
        //30826_01 Sean for Screen Fit & Zoom
        Zoom_Par.DspMode = APOprParam.DspMode;
        Dec_SetVP_Zoom(Zoom_Par);
        jpg_Zoom_Par=Zoom_Par;
        //30827_02 Sean modify for Zoom
		//Dec_SetVP_Zoom(APOprParam.DspMode,zoomRatio,zoomLeft,zoomTop);
		#if (CCbyTVENCder == 1)
		#ifdef _Screen_Fit_Enable
        UINotePE_Set_ScreenFitMode(FALSE);
		#endif
		#endif//#if (CCbyTVENCder == 1)
        //30826_01 Sean for Screen Fit & Zoom
    }
    else
    {
        //map the zoom ratio
        //if you like, change the mapping way.
        //30829_01 Sean mark for screenfit picture size change bug. temp solution
		if(DiscType==C_FILEOPENDISC&&FileType==C_JPGFILE)
			VfdCloseLongKey(2);
		#if 0	
        if (bZoomHRatio==0 && bZoomVRatio==0)
        {
        	if ( (DiscType == C_DVD) && (NoZoomDspMode != Letterbox) && (NoZoomDspMode != Panscan) ) //031021 turn on screen-fit on letter box mode  //031023 Panscan dead temp fixed
            	APOprParam.DspMode = NoZoomDspMode;
	        else
    	        APOprParam.DspMode = Normal;        	
        }
        #else
   	    APOprParam.DspMode = Normal;
   	    #endif
        //30829_01 Sean mark for screenfit picture size change bug. temp solution

        if(bZoomHRatio>=0)
        {
            scrFH = 1 + bZoomHRatio;
        }
        else
        {
            scrFH = SCREEN_FIT_SCALE_RANGE + 1 - bZoomHRatio;
        }
        if(bZoomVRatio>=0)
        {
            scrFV= 1 + bZoomVRatio;
        }
        else
        {
            scrFV= SCREEN_FIT_SCALE_RANGE + 1 - bZoomVRatio;
        }
        //------------------------------------
        jpg_Zoom_Par=Zoom_Par;
		jpg_Zoom_Par.StartX =scrFH ;
		jpg_Zoom_Par.StartY =scrFV ;
        //30826_01 Sean for Screen Fit & Zoom
       	#if (CCbyTVENCder == 1)
		#ifdef _Screen_Fit_Enable 
        UINotePE_Set_ScreenFitMode(TRUE);
		#endif
		#endif//#if (CCbyTVENCder == 1)
        if(scrFH <= (SCREEN_FIT_SCALE_RANGE + 1) && scrFV <= (SCREEN_FIT_SCALE_RANGE + 1))//when can small remove this code
        	Dec_Set_HV_Scale(scrFH,scrFV);
        //30826_01 Sean for Screen Fit & Zoom
    }
}
void ShowZoomWindow(BYTE zoomRatio,int xOffset,int yOffset)
{
    //use mdc to do it
//    HBITMAP hbmp_comp,hbmp_old;
//    HDC mhdc;
//    mhdc = CreateCompatibleDC(gui_hdc);
//    hbmp_comp = CreateCompatibleBitmap(gui_hdc,188,130);

	if (DiscType == C_FILEOPENDISC)
	{
	    MPA_RefreshAuxiliary(AT_SLIDESHOWHELP_CLOSE, &gAuxParam);
	}
    //--> Gordon. in Slide show, the dc(which used to draw zoom) is different, i.e. (0, 0) is different, so i changed the left, top to be viaribles
    ZOOM_LEFT=430;//290;//MSGRIGHT-ZOOM_WIDTH;
    ZOOM_TOP=280;//170;//CNSL_DOWNHINTBOX_BOTTOM-ZOOM_UP_HEIGHT-ZOOM_DOWN_HEIGHT;
/*
	if(FileType==C_JPGFILE)
    {
        ZOOM_LEFT-=-66; // i.e. L_CANVAS_TO_TV_AUX;
        ZOOM_TOP-=-32;  // i.e. T_CANVAS_TO_TV_AUX;
    }
*/    
//    if(hbmp_comp==NULL)
//    {
//        return ;
//    }
//    hbmp_old = (HBITMAP)SelectObject(mhdc,(HGDIOBJ)hbmp_comp);

    DrawZoomFrame(gui_hdc,zoomRatio,xOffset,yOffset,FALSE);

//    BitBlt(gui_hdc,
//           ZOOM_LEFT,ZOOM_TOP,
//           ZOOM_WIDTH,ZOOM_UP_HEIGHT+ZOOM_DOWN_HEIGHT-1,
//           mhdc, 0, 0, SRCCOPY);

//    SelectObject(mhdc,(HGDIOBJ)hbmp_old);
//    DeleteObject((HGDIOBJ)hbmp_comp);
//    DeleteDC(mhdc);
}
void DrawZoomFrame(HDC hdc,BYTE zoomRatio,int xOffset,int yOffset,BYTE fromZero)
{
    BYTE range;
    int i,j;
    RECT r;

⌨️ 快捷键说明

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