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

📄 wndw_vga.c

📁 TECHWELL 之tw2835 四画面合一之驱动代码,CCIR656输出,KEIL C51 平台编译,
💻 C
📖 第 1 页 / 共 5 页
字号:
#include	"hdr.h"

#if defined(__WTH_VGA__)
//==================================================================================
U16 bdata	wndw_vga_flg = 0x00;
sbit b_vga_or = wndw_vga_flg^0;



//==================================================================================
//				VGA Output Resolution wndwdow function description
//==================================================================================
void	SetWndwVGAOrOSD(U8 _pth)
{
	if(b_vga_or == VGA_OR_640x480){
		WriteOSDFnt(_pth,MASTER,WNDW_VGA_OR_RDO_X,WNDW_VGA_OR_RDO_Y,0x00,OSD_RDO_CHK);
		WriteOSDFnt(_pth,MASTER,WNDW_VGA_OR_RDO_X,WNDW_VGA_OR_RDO_Y+2,0x00,OSD_RDO_BLK);
	}
	else{
		WriteOSDFnt(_pth,MASTER,WNDW_VGA_OR_RDO_X,WNDW_VGA_OR_RDO_Y,0x00,OSD_RDO_BLK);
		WriteOSDFnt(_pth,MASTER,WNDW_VGA_OR_RDO_X,WNDW_VGA_OR_RDO_Y+2,0x00,OSD_RDO_CHK);
	}
}
//==================================================================================
void	CreateWndwVGAOr(U8 _pth)
{
//	b_status_wndw = ON;
	b_cmn_wndw_mn = ON;

	WriteOSDClr(_pth,MASTER,WNDW_VGA_OR_POS_X,WNDW_VGA_OR_POS_Y,WNDW_VGA_OR_L,WNDW_VGA_OR_H);
	SetOSDWndw(_pth,OSD_WNDW_TYPE_MAIN,WNDW_VGA_OR_POS_X,WNDW_VGA_OR_POS_Y,WNDW_VGA_OR_L,WNDW_VGA_OR_H,str_wndw_ttl_out_rs);

	WriteOSDStr(_pth,MASTER,WNDW_VGA_OR_RDO_X+2,WNDW_VGA_OR_RDO_Y,0x00,str_wndw_vga_or_vga);
	WriteOSDStr(_pth,MASTER,WNDW_VGA_OR_RDO_X+2,WNDW_VGA_OR_RDO_Y+2,0x00,str_wndw_vga_or_svga);

	SetWndwVGAOrOSD(_pth);
}
//==================================================================================
void	RunWndwVGAOr(U8 _pth)//U8 _osd_pos_x_, U8 _osd_pos_y_)
{
	U8	_osd_pos_x_, _osd_pos_y_;

	_osd_pos_x_ = GetMseOSDX(reg_crsr_pos_x);
	_osd_pos_y_ = GetMseOSDY(reg_crsr_pos_y);

	
	if(b_mse_btn_dwn_lb == 1){
		b_mse_btn_dwn_lb = 0;

		if((_osd_pos_x_ == WNDW_VGA_OR_CLOS_X)&&(_osd_pos_y_ == WNDW_VGA_OR_CLOS_Y)){
//			SetBoxBtnStrPush(BOX_WNDW_QUIT);
		}
	}
	if(b_mse_btn_dwn_rb == 1)	b_mse_btn_dwn_rb = 0;
	if(b_mse_clk_lb == 1){
		b_mse_clk_lb = 0;

		if((_osd_pos_x_ == WNDW_VGA_OR_CLOS_X)&&(_osd_pos_y_ == WNDW_VGA_OR_CLOS_Y)){
//			SetBoxBtnStrPull(BOX_WNDW_QUIT);
			
			WriteOSDClr(_pth,MASTER,WNDW_VGA_OR_POS_X,WNDW_VGA_OR_POS_Y,WNDW_VGA_OR_L,WNDW_VGA_OR_H);
			WriteOSDClrX(MASTER,WNDW_VGA_OR_POS_X-1,WNDW_VGA_OR_POS_Y-1,WNDW_VGA_OR_L+2,WNDW_VGA_OR_H+2);
//			DisableBox(X_PATH,BOX_WNDW_FRM-2,BOX_WNDW_FRM);	// decoration wndwdow, main wndwdow

			SetOSDNoMn();

//			b_status_wndw = OFF;
//			global_menu_crnt_pos = 30;
			b_cmn_wndw_mn = OFF;
			wndw_mn_pos_crnt = 30;
		}
		else{
			if((_osd_pos_x_ == WNDW_VGA_OR_RDO_X)&&
				((_osd_pos_y_ == WNDW_VGA_OR_RDO_Y)||(_osd_pos_y_ == (WNDW_VGA_OR_RDO_Y+2)))){

				b_vga_or = (_osd_pos_y_ - WNDW_VGA_OR_RDO_Y)>>1;

				/* MDIN-180 Vclk PLL setting */
			 	MDIN180VPLLMPLLCtrl();
//				/* MDIN-180 Input Setting */
//				MDIN180InputCtrl();
				/* MDIN-180 Output Sync Setting */
				MDIN180SyncSize();	
				/* MDIN-180 Deinterlacing Parameters Setting */
				MDIN180DeintRegSet();

				SetWndwVGAOrOSD(_pth);
			}
		}
	}
	if(b_mse_clk_rb == 1)	b_mse_clk_rb = 0;
	if(b_mse_pshng_clk_lb == 1)	b_mse_pshng_clk_lb = 0;
	if(b_mse_pshng_clk_rb == 1)	b_mse_pshng_clk_rb = 0;
}
//==================================================================================




//==================================================================================
//==================================================================================
U8 idata	wndw_vga_di_md = VGA_DI_ADPT;

sbit b_vga_di_edg = wndw_vga_flg^1;
sbit b_vga_di_fst = wndw_vga_flg^2;
sbit b_vga_di_mtn = wndw_vga_flg^3;

//==================================================================================
//				VGA Di-Interlacing wndwdow function description
//==================================================================================
void	SetWndwVGADiOSDRdo(U8 _pth)
{
	U8 _t1_, _t2_;
	
	for(_t1_=0;_t1_<3;_t1_++){
		if(wndw_vga_di_md == _t1_)	_t2_ = OSD_RDO_CHK;
		else	_t2_ = OSD_RDO_BLK;

		WriteOSDFnt(_pth,MASTER,WNDW_VGA_DI_RDO_X,WNDW_VGA_DI_RDO_Y+_t1_,0x00,_t2_);
	}
}
//==================================================================================
void	SetWndwVGADiOSDChk(U8 _pth)
{
	U8 _t1_;
	
	if(b_vga_di_edg == ON)	_t1_ = OSD_CHK_BOX_CHK;
	else	_t1_ = OSD_CHK_BOX_BLK;
	WriteOSDFnt(_pth,MASTER,WNDW_VGA_DI_CHK_X,WNDW_VGA_DI_CHK_EDG_Y,0x00,_t1_);

	if(b_vga_di_fst == ON)	_t1_ = OSD_CHK_BOX_CHK;
	else	_t1_ = OSD_CHK_BOX_BLK;
	WriteOSDFnt(_pth,MASTER,WNDW_VGA_DI_CHK_X,WNDW_VGA_DI_CHK_FST_Y,0x00,_t1_);

	if(b_vga_di_mtn == ON)	_t1_ = OSD_CHK_BOX_CHK;
	else	_t1_ = OSD_CHK_BOX_BLK;
	WriteOSDFnt(_pth,MASTER,WNDW_VGA_DI_CHK_X,WNDW_VGA_DI_CHK_MTN_Y,0x00,_t1_);
}
//==================================================================================
void	CreateWndwVGADi(U8 _pth)
{
//	b_status_wndw = ON;
	b_cmn_wndw_mn = ON;

	WriteOSDClr(_pth,MASTER,WNDW_VGA_DI_POS_X,WNDW_VGA_DI_POS_Y,WNDW_VGA_DI_L,WNDW_VGA_DI_H);
	SetOSDWndw(_pth,OSD_WNDW_TYPE_MAIN,WNDW_VGA_DI_POS_X,WNDW_VGA_DI_POS_Y,WNDW_VGA_DI_L,WNDW_VGA_DI_H,str_wndw_ttl_de_int);

	SetOSDGrp(_pth,WNDW_VGA_DI_RDO_X-1,WNDW_VGA_DI_RDO_Y,17,3,0x00,str_wndw_grp_3d_de_int);

	WriteOSDStr(_pth,MASTER,WNDW_VGA_DI_RDO_X+2,WNDW_VGA_DI_RDO_Y,0x00,str_wndw_vga_di_adpt);
	WriteOSDStr(_pth,MASTER,WNDW_VGA_DI_RDO_X+2,WNDW_VGA_DI_RDO_Y+1,0x00,str_wndw_vga_di_bob);
	WriteOSDStr(_pth,MASTER,WNDW_VGA_DI_RDO_X+2,WNDW_VGA_DI_RDO_Y+2,0x00,str_wndw_vga_di_wv);

	WriteOSDStr(_pth,MASTER,WNDW_VGA_DI_CHK_X+2,WNDW_VGA_DI_CHK_EDG_Y,0x00,str_wndw_vga_di_edg);
	WriteOSDStr(_pth,MASTER,WNDW_VGA_DI_CHK_X+2,WNDW_VGA_DI_CHK_FST_Y,0x00,str_wndw_vga_di_fst);
	WriteOSDStr(_pth,MASTER,WNDW_VGA_DI_CHK_X+2,WNDW_VGA_DI_CHK_MTN_Y,0x00,str_wndw_vga_di_mtn_1);
//	WriteOSDStr(_pth,MASTER,WNDW_VGA_DI_CHK_X+2,WNDW_VGA_DI_CHK_MTN_Y+1,0x00,str_wndw_vga_di_mtn_2);

	SetWndwVGADiOSDRdo(_pth);
	SetWndwVGADiOSDChk(_pth);
}
//==================================================================================
void	RunWndwVGADi(U8 _pth)//U8 _osd_pos_x_, U8 _osd_pos_y_)
{
	U8	_osd_pos_x_, _osd_pos_y_;

	_osd_pos_x_ = GetMseOSDX(reg_crsr_pos_x);
	_osd_pos_y_ = GetMseOSDY(reg_crsr_pos_y);

	
	if(b_mse_btn_dwn_lb == 1){
		b_mse_btn_dwn_lb = 0;

		if((_osd_pos_x_ == WNDW_VGA_DI_CLOS_X)&&(_osd_pos_y_ == WNDW_VGA_DI_CLOS_Y)){
//			SetBoxBtnStrPush(BOX_WNDW_QUIT);
		}
	}
	if(b_mse_btn_dwn_rb == 1)	b_mse_btn_dwn_rb = 0;
	if(b_mse_clk_lb == 1){
		b_mse_clk_lb = 0;

		if((_osd_pos_x_ == WNDW_VGA_DI_CLOS_X)&&(_osd_pos_y_ == WNDW_VGA_DI_CLOS_Y)){
//			SetBoxBtnStrPull(BOX_WNDW_QUIT);
			
			WriteOSDClr(_pth,MASTER,WNDW_VGA_DI_POS_X,WNDW_VGA_DI_POS_Y,WNDW_VGA_DI_L,WNDW_VGA_DI_H);
			WriteOSDClrX(MASTER,WNDW_VGA_DI_POS_X-1,WNDW_VGA_DI_POS_Y-1,WNDW_VGA_DI_L+2,WNDW_VGA_DI_H+2);
//			DisableBox(X_PATH,BOX_WNDW_FRM-2,BOX_WNDW_FRM);	// decoration wndwdow, main wndwdow

			SetOSDNoMn();

//			b_status_wndw = OFF;
//			global_menu_crnt_pos = 30;
			b_cmn_wndw_mn = OFF;
			wndw_mn_pos_crnt = 30;
		}
		else{
			if((_osd_pos_x_ == WNDW_VGA_DI_RDO_X)&&
				((_osd_pos_y_ >= WNDW_VGA_DI_RDO_Y)&&(_osd_pos_y_ <= (WNDW_VGA_DI_RDO_Y+VGA_DI_WV)))){

				wndw_vga_di_md = _osd_pos_y_ - WNDW_VGA_DI_RDO_Y;

				if(wndw_vga_di_md == VGA_DI_ADPT)	DeintAdaptStillEn();
				else if(wndw_vga_di_md == VGA_DI_BOB)	DeintIntraOnly();
				else if(wndw_vga_di_md == VGA_DI_WV)	DeintInterOnly();

				SetWndwVGADiOSDRdo(_pth);
			}
			else{
				if((_osd_pos_x_ == WNDW_VGA_DI_CHK_X)&&((_osd_pos_y_ == WNDW_VGA_DI_CHK_EDG_Y)||
					(_osd_pos_y_ == WNDW_VGA_DI_CHK_FST_Y)||(_osd_pos_y_ == WNDW_VGA_DI_CHK_MTN_Y))){

					if(_osd_pos_y_ == WNDW_VGA_DI_CHK_EDG_Y){
						b_vga_di_edg ^= 1;
						if(b_vga_di_edg)	DeintEdgeAll();
						else	DeintEdge90();
					}
					else if(_osd_pos_y_ == WNDW_VGA_DI_CHK_FST_Y){
						b_vga_di_fst ^= 1;
						if(b_vga_di_fst)	DeintFastEn();
						else	DeintFastDis();
					}
					else if(_osd_pos_y_ == WNDW_VGA_DI_CHK_MTN_Y){
						b_vga_di_mtn ^= 1;
						if(b_vga_di_mtn)	DeintBorderEn();
						else	DeintBorderDis();
					}

					SetWndwVGADiOSDChk(_pth);
				}
			}
		}
	}
	if(b_mse_clk_rb == 1)	b_mse_clk_rb = 0;
	if(b_mse_pshng_clk_lb == 1)	b_mse_pshng_clk_lb = 0;
	if(b_mse_pshng_clk_rb == 1)	b_mse_pshng_clk_rb = 0;
}
//==================================================================================





//==================================================================================
//==================================================================================
sbit b_vga_ie_shrp = wndw_vga_flg^4;
sbit b_vga_ie_lti = wndw_vga_flg^5;
sbit b_vga_ie_cti = wndw_vga_flg^6;
sbit b_vga_ie_bw = wndw_vga_flg^7;

//==================================================================================
//				VGA Ie-Interlacing wndwdow function description
//==================================================================================
void	SetWndwVGAIeOSDChk(U8 _pth)
{
	U8 _t1_;
	
	if(b_vga_ie_shrp == ON)	_t1_ = OSD_CHK_BOX_CHK;
	else	_t1_ = OSD_CHK_BOX_BLK;
	WriteOSDFnt(_pth,MASTER,WNDW_VGA_IE_CHK_X,WNDW_VGA_IE_CHK_SHRP_Y,0x00,_t1_);

	if(b_vga_ie_lti == ON)	_t1_ = OSD_CHK_BOX_CHK;
	else	_t1_ = OSD_CHK_BOX_BLK;
	WriteOSDFnt(_pth,MASTER,WNDW_VGA_IE_CHK_X,WNDW_VGA_IE_CHK_LTI_Y,0x00,_t1_);

	if(b_vga_ie_cti == ON)	_t1_ = OSD_CHK_BOX_CHK;
	else	_t1_ = OSD_CHK_BOX_BLK;
	WriteOSDFnt(_pth,MASTER,WNDW_VGA_IE_CHK_X,WNDW_VGA_IE_CHK_CTI_Y,0x00,_t1_);

	if(b_vga_ie_bw == ON)	_t1_ = OSD_CHK_BOX_CHK;
	else	_t1_ = OSD_CHK_BOX_BLK;
	WriteOSDFnt(_pth,MASTER,WNDW_VGA_IE_CHK_X,WNDW_VGA_IE_CHK_BW_Y,0x00,_t1_);
}
//==================================================================================
void	CreateWndwVGAIe(U8 _pth)
{
//	b_status_wndw = ON;
	b_cmn_wndw_mn = ON;

	WriteOSDClr(_pth,MASTER,WNDW_VGA_IE_POS_X,WNDW_VGA_IE_POS_Y,WNDW_VGA_IE_L,WNDW_VGA_IE_H);
	SetOSDWndw(_pth,OSD_WNDW_TYPE_MAIN,WNDW_VGA_IE_POS_X,WNDW_VGA_IE_POS_Y,WNDW_VGA_IE_L,WNDW_VGA_IE_H,str_wndw_ttl_img_en);

	WriteOSDStr(_pth,MASTER,WNDW_VGA_IE_CHK_X+2,WNDW_VGA_IE_CHK_SHRP_Y,0x00,str_wndw_vga_ie_shrp);
	WriteOSDStr(_pth,MASTER,WNDW_VGA_IE_CHK_X+2,WNDW_VGA_IE_CHK_LTI_Y,0x00,str_wndw_vga_ie_lti);
	WriteOSDStr(_pth,MASTER,WNDW_VGA_IE_CHK_X+2,WNDW_VGA_IE_CHK_CTI_Y,0x00,str_wndw_vga_ie_cti);
	WriteOSDStr(_pth,MASTER,WNDW_VGA_IE_CHK_X+2,WNDW_VGA_IE_CHK_BW_Y,0x00,str_wndw_vga_ie_bw);

	SetWndwVGAIeOSDChk(_pth);
}
//==================================================================================
void	RunWndwVGAIe(U8 _pth)//U8 _osd_pos_x_, U8 _osd_pos_y_)
{
	U8	_osd_pos_x_, _osd_pos_y_;

	_osd_pos_x_ = GetMseOSDX(reg_crsr_pos_x);
	_osd_pos_y_ = GetMseOSDY(reg_crsr_pos_y);

	
	if(b_mse_btn_dwn_lb == 1){
		b_mse_btn_dwn_lb = 0;

		if((_osd_pos_x_ == WNDW_VGA_IE_CLOS_X)&&(_osd_pos_y_ == WNDW_VGA_IE_CLOS_Y)){
//			SetBoxBtnStrPush(BOX_WNDW_QUIT);
		}
	}

⌨️ 快捷键说明

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