wndw_mtn_md.c

来自「一个比较好用的TW2835音视频芯片开发板的程序,」· C语言 代码 · 共 543 行 · 第 1/2 页

C
543
字号
	RunWndwMtnMdOSDArw(_pth,0,0);

	SetWndwMtnMdOSDNumAll(_pth);

//	SetWndwMtnMdOSDDspl(_pth);
	WriteOSDStr(_pth,MASTER,WNDW_MTN_MD_CHK_X+2,WNDW_MTN_MD_CHK_MTN_Y,0x00,str_wndw_mtn_dspl_mtn);
	WriteOSDStr(_pth,MASTER,WNDW_MTN_MD_CHK_X+2,WNDW_MTN_MD_CHK_MSK_Y,0x00,str_wndw_mtn_dspl_msk);
	SetWndwMtnMdOSDChk(_pth,WNDW_MTN_MD_CHK_MTN_Y);
	SetWndwMtnMdOSDChk(_pth,WNDW_MTN_MD_CHK_MSK_Y);
}
//==================================================================================
//==================================================================================
void	CreateWndwMtnMd(U8 _pth)
{
//	b_status_wndw = ON;
	b_cmn_wndw_mn = ON;

//	ClearOSD(_pth,WNDW_MTN_MD_POS_X,WNDW_MTN_MD_POS_Y,WNDW_MTN_MD_L,WNDW_MTN_MD_H);
//	SetOSDWndw(_pth,OSD_WNDW_TYPE_MAIN|BOX_WNDW_FRM,WNDW_MTN_MD_POS_X,WNDW_MTN_MD_POS_Y,
//		WNDW_MTN_MD_L,WNDW_MTN_MD_H,str_wndw_ttl_mtn_stp);
	WriteOSDClr(_pth,MASTER,WNDW_MTN_MD_POS_X,WNDW_MTN_MD_POS_Y,WNDW_MTN_MD_L,WNDW_MTN_MD_H);
	SetOSDWndw(_pth,OSD_WNDW_TYPE_MAIN,WNDW_MTN_MD_POS_X,WNDW_MTN_MD_POS_Y,WNDW_MTN_MD_L,WNDW_MTN_MD_H,str_wndw_ttl_mtn_md);

	mse_flg_on_osd = 0xff;
	SetWndwMtnMdOSDCh(_pth);
	SetWndwMtnMdOSD(_pth);
//	SetWndwMtnOSDB(_pth);

	if(GetAsicFlgType(wndw_crnt_dvc,DVC_PG2,0x61+(wndw_crnt_ch<<3),BIT5))		//... if(MDAREA_EN=1)
		SetAsicFlgType(wndw_crnt_dvc,DVC_PG2,0x60+(wndw_crnt_ch<<3),BIT4,BIT4);	//... SBOX_EN=1 for new channel
}
//==================================================================================
void	RunWndwMtnMdCh(U8 _pth, U8 _osd_pos_x)
{
	U8 _t1_;//, _t2_;
	
//	SetCrntDvcCh(wndw_pop_crnt_ch,&wndw_crnt_dvc,&wndw_crnt_ch);
	SetAsicFlgType(wndw_crnt_dvc,DVC_PG2,0x60+(wndw_crnt_ch<<3),BIT4,0x00);		//... SBOX_EN=0 for old channel

	if(_osd_pos_x == WNDW_MTN_MD_CH_DEC_X){
		if(wndw_pop_crnt_ch > 0)		wndw_pop_crnt_ch--;
		else	wndw_pop_crnt_ch = cmn_max_ch-1;
	}
	else{
		if(wndw_pop_crnt_ch < (cmn_max_ch-1))	wndw_pop_crnt_ch++;
		else	wndw_pop_crnt_ch = 0;
	}

	SetCrntDvcCh(wndw_pop_crnt_ch,&wndw_crnt_dvc,&wndw_crnt_ch);
	_t1_ = GetAsicFlgType(wndw_crnt_dvc,DVC_PG2,0x61+(wndw_crnt_ch<<3),BIT5);
//	_t2_ = GetAsicFlgType(wndw_crnt_dvc,DVC_PG2,0x60+(wndw_crnt_ch<<3),BIT5);
//	if((_t1_ == BIT5)&&(_t2_ == BIT5))
	if(_t1_ == BIT5)
		SetAsicFlgType(wndw_crnt_dvc,DVC_PG2,0x60+(wndw_crnt_ch<<3),BIT4,BIT4);	//... SBOX_EN=1 for new channel

	SetWndwMtnMdOSDChNum(_pth);
	SetWndwMtnMdOSDNumAll(_pth);
//	SetWndwMtnMdOSDDspl(_pth);
	SetWndwMtnMdOSDChk(_pth,WNDW_MTN_MD_CHK_MTN_Y);
	SetWndwMtnMdOSDChk(_pth,WNDW_MTN_MD_CHK_MSK_Y);
//	SetWndwMtnOSDBNumAll(_pth);
}
//==================================================================================
void	RunWndwMtnMdDec(U8 _pth, U8 _osd_pos_y)
{
	U8 _t1_;
	
	_t1_ = GetWndwMtnMdNum(_osd_pos_y);
	if(_osd_pos_y == WNDW_MTN_MD_SENS_CL_Y){
		if(_t1_ > 0)	_t1_--;
		else	_t1_ = 3;
	}
	else if(_osd_pos_y == WNDW_MTN_MD_SENS_LV_Y){
		if(_t1_ > 0)	_t1_--;
		else	_t1_ = 31;
	}
	else if(_osd_pos_y == WNDW_MTN_MD_SENS_SP_Y){
		if(_t1_ > 0)	_t1_--;
		else	_t1_ = 15;
	}
	else if(_osd_pos_y == WNDW_MTN_MD_SENS_TM_Y){
		if(_t1_ > 0)	_t1_--;
		else	_t1_ = 15;
	}
	else if(_osd_pos_y == WNDW_MTN_MD_SENS_VL_Y){
		if(_t1_ > 0)	_t1_--;
		else	_t1_ = 62;
	}
	SetWndwMtnMdNum(_osd_pos_y,_t1_);
	SetWndwMtnMdOSDNum(_pth,_osd_pos_y,_t1_);
}
//==================================================================================
void	RunWndwMtnMdInc(U8 _pth, U8 _osd_pos_y)
{
	U8 _t1_;
	
	_t1_ = GetWndwMtnMdNum(_osd_pos_y);
	if(_osd_pos_y == WNDW_MTN_MD_SENS_CL_Y){
		if(_t1_ < 3)	_t1_++;
		else	_t1_ = 0;
	}
	else if(_osd_pos_y == WNDW_MTN_MD_SENS_LV_Y){
		if(_t1_ < 31)	_t1_++;
		else	_t1_ = 0;
	}
	else if(_osd_pos_y == WNDW_MTN_MD_SENS_SP_Y){
		if(_t1_ < 15)	_t1_++;
		else	_t1_ = 0;
	}
	else if(_osd_pos_y == WNDW_MTN_MD_SENS_TM_Y){
		if(_t1_ < 15)	_t1_++;
		else	_t1_ = 0;
	}
	else if(_osd_pos_y == WNDW_MTN_MD_SENS_VL_Y){
		if(_t1_ < 62)	_t1_++;
		else	_t1_ = 0;
	}
	SetWndwMtnMdNum(_osd_pos_y,_t1_);
	SetWndwMtnMdOSDNum(_pth,_osd_pos_y,_t1_);
}
//==================================================================================
void	RunWndwMtnMd(U8 _pth)
{
	U8 _osd_pos_x_, _osd_pos_y_;
	U8 _msk_x_, _msk_y_;
	U8 _blk_hl_, _blk_wdth_, _blk_vt_, _blk_hght_;
	U8 _t1_, _t2_;

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

	RunWndwMtnMdOSDChArw(_pth,_osd_pos_x_,_osd_pos_y_);
	RunWndwMtnMdOSDArw(_pth,_osd_pos_x_,_osd_pos_y_);
//	RunWndwMtnOSDBArw(_pth,_osd_pos_x_,_osd_pos_y_);

	_msk_x_ = GetMseMaskX(wndw_crnt_dvc,wndw_crnt_ch,reg_crsr_pos_x);		//... mask_x current
	_msk_y_ = GetMseMaskY(wndw_crnt_dvc,wndw_crnt_ch,reg_crsr_pos_y);		//... mask_y current

/*
	if((GetWndwMtnMdDspl(BIT5)) == OFF){
	}
	else{
	//	*/
//	if((GetWndwMtnMdDspl(BIT5)) == BIT5){

	_t1_ = GetAsicFlgType(wndw_crnt_dvc,DVC_PG2,0x61+(wndw_crnt_ch<<3),BIT5);
//	_t2_ = GetAsicFlgType(wndw_crnt_dvc,DVC_PG2,0x60+(wndw_crnt_ch<<3),BIT5);
//	if((_t1_ == BIT5)&&(_t2_ == BIT5)){
	if(_t1_ == BIT5){
		if(wndw_pop_crnt_ch == (mse_ch&0x0f))
//			Set2DBoxCur(wndw_crnt_dvc,wndw_crnt_ch,_msk_x_,_msk_y_);
			SetAsicFlgType(wndw_crnt_dvc,DVC_PG2,0x67+(wndw_crnt_ch<<3),0xff,(_msk_x_<<4)|_msk_y_);
	}
	
	if(b_mse_btn_dwn_lb == 1){
		b_mse_btn_dwn_lb = 0;

		if((_osd_pos_x_ == WNDW_MTN_MD_CLOS_X)&&(_osd_pos_y_ == WNDW_MTN_MD_CLOS_Y)){
//			SetBoxBtnStrPush(BOX_WNDW_QUIT);
		}
	}
	if(b_mse_btn_dwn_rb == 1){
		b_mse_btn_dwn_rb = 0;
		
		if((mse_ch&0x0f) == wndw_pop_crnt_ch){
			wndw_mtn_md_blck_strt = (_msk_x_<<4)|_msk_y_;
		}
		else	wndw_mtn_md_blck_strt |= 0x0f;
	}
	if(b_mse_clk_lb == 1){
		b_mse_clk_lb = 0;

		if((_osd_pos_x_ == WNDW_MTN_MD_CLOS_X)&&(_osd_pos_y_ == WNDW_MTN_MD_CLOS_Y)){
//			SetBoxBtnStrPull(BOX_WNDW_QUIT);
			
//			ClearOSD(_pth,WNDW_MTN_MD_POS_X,WNDW_MTN_MD_POS_Y,WNDW_MTN_MD_L,WNDW_MTN_MD_H);
//			DisableBox(_pth,BOX_WNDW_QUIT,BOX_WNDW_FRM);	// decoration wndwdow, main wndwdow
			WriteOSDClr(_pth,MASTER,WNDW_MTN_MD_POS_X,WNDW_MTN_MD_POS_Y,WNDW_MTN_MD_L,WNDW_MTN_MD_H);
			WriteOSDClrX(MASTER,WNDW_MTN_MD_POS_X-1,WNDW_MTN_MD_POS_Y-1,WNDW_MTN_MD_L+2,WNDW_MTN_MD_H+2);

//			Set2DBoxCtrl(wndw_crnt_dvc,wndw_crnt_ch,_2DBOX_CUREN,OFF);
			SetAsicFlgType(wndw_crnt_dvc,DVC_PG2,0x60+(wndw_crnt_ch<<3),BIT4,0x00);		//... SBOX_EN

			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_MTN_MD_CHK_X){
			if(_osd_pos_y_ == WNDW_MTN_MD_CHK_MTN_Y){
				_t1_ = GetAsicFlgType(wndw_crnt_dvc,DVC_PG2,0x60+(wndw_crnt_ch<<3),BIT5)^BIT5;
				if(_t1_ == BIT5){
					_t1_ = GetAsicFlgType(wndw_crnt_dvc,DVC_PG2,0x61+(wndw_crnt_ch<<3),BIT5);
					if(_t1_ == BIT5)	SetAsicFlgType(wndw_crnt_dvc,DVC_PG2,0x60+(wndw_crnt_ch<<3),BIT5|BIT4,BIT5|BIT4);
					else	SetAsicFlgType(wndw_crnt_dvc,DVC_PG2,0x60+(wndw_crnt_ch<<3),BIT5|BIT4,BIT5);
				}
				else	SetAsicFlgType(wndw_crnt_dvc,DVC_PG2,0x60+(wndw_crnt_ch<<3),BIT5|BIT4,0x00);		//... MDBOX_MD=0,SBOX_EN=0
				SetWndwMtnMdOSDChk(_pth,WNDW_MTN_MD_CHK_MTN_Y);
			}
			else if(_osd_pos_y_ == WNDW_MTN_MD_CHK_MSK_Y){
				_t1_ = GetAsicFlgType(wndw_crnt_dvc,DVC_PG2,0x61+(wndw_crnt_ch<<3),BIT5)^BIT5;
				SetAsicFlgType(wndw_crnt_dvc,DVC_PG2,0x61+(wndw_crnt_ch<<3),BIT5,_t1_);
				if(_t1_ == BIT5)	SetAsicFlgType(wndw_crnt_dvc,DVC_PG2,0x60+(wndw_crnt_ch<<3),BIT4,BIT4);	//... SBOX_EN=1
				else	SetAsicFlgType(wndw_crnt_dvc,DVC_PG2,0x60+(wndw_crnt_ch<<3),BIT4,0x00);					//... SBOX_EN=0
				SetWndwMtnMdOSDChk(_pth,WNDW_MTN_MD_CHK_MSK_Y);
			}
		}
		else if((_osd_pos_x_ == WNDW_MTN_MD_CH_DEC_X)||(_osd_pos_x_ == WNDW_MTN_MD_CH_INC_X)){
			if(_osd_pos_y_ == WNDW_MTN_MD_CH_NUM_Y)	RunWndwMtnMdCh(_pth,_osd_pos_x_);
		}
		else if((_osd_pos_x_ == WNDW_MTN_MD_SENS_DEC_X)||(_osd_pos_x_ == WNDW_MTN_MD_SENS_INC_X)){
			if((_osd_pos_y_ >= WNDW_MTN_MD_SENS_CL_Y)&&(_osd_pos_y_ <= WNDW_MTN_MD_SENS_VL_Y)){
				if(_osd_pos_x_ == WNDW_MTN_MD_SENS_DEC_X)	RunWndwMtnMdDec(_pth,_osd_pos_y_);
				else	RunWndwMtnMdInc(_pth,_osd_pos_y_);
			}
		}
	}
	if(b_mse_clk_rb == 1){
		b_mse_clk_rb = 0;
		
		if((mse_ch&0x0f) == wndw_pop_crnt_ch){
			if((wndw_mtn_md_blck_strt&0x0f) != 0x0f){		//... if it's finished setting mask area start to end in current channel area.
//				if((GetWndwMtnMdDspl(BIT5)) == BIT5){
				_t1_ = GetAsicFlgType(wndw_crnt_dvc,DVC_PG2,0x61+(wndw_crnt_ch<<3),BIT5);
				if(_t1_ == BIT5){
					_t1_ = (wndw_mtn_md_blck_strt&0xf0)>>4;					//... mask_x old
					_t2_ = wndw_mtn_md_blck_strt&0x0f;						//... mask_y old

					if(_msk_x_ > _t1_){
						_blk_wdth_ = _msk_x_ - _t1_ + 1;
						_blk_hl_ = _t1_;
					}
					else{
						_blk_wdth_ = _t1_ - _msk_x_ + 1;
						_blk_hl_ = _msk_x_;
					}

					if(_msk_y_ > _t2_){
						_blk_hght_ = _msk_y_ - _t2_ + 1;
						_blk_vt_ = _t2_;
					}
					else{
						_blk_hght_ = _t2_ - _msk_y_ + 1;
						_blk_vt_ = _msk_y_;
					}
					SetMskBlck(wndw_crnt_dvc,wndw_crnt_ch,_blk_hl_,_blk_vt_,_blk_wdth_,_blk_hght_);
				}
			}
		}
		else	wndw_mtn_md_blck_strt |= 0x0f;
	}
	if(b_mse_pshng_clk_lb == 1){
		b_mse_pshng_clk_lb = 0;

		if((_osd_pos_x_ == WNDW_MTN_MD_CH_DEC_X)||(_osd_pos_x_ == WNDW_MTN_MD_CH_INC_X)){
			if(_osd_pos_y_ == WNDW_MTN_MD_CH_NUM_Y)	RunWndwMtnMdCh(_pth,_osd_pos_x_);
		}
		else if((_osd_pos_x_ == WNDW_MTN_MD_SENS_DEC_X)||(_osd_pos_x_ == WNDW_MTN_MD_SENS_INC_X)){
			if((_osd_pos_y_ >= WNDW_MTN_MD_SENS_CL_Y)&&(_osd_pos_y_ <= WNDW_MTN_MD_SENS_VL_Y)){
				if(_osd_pos_x_ == WNDW_MTN_MD_SENS_DEC_X)	RunWndwMtnMdDec(_pth,_osd_pos_y_);
				else	RunWndwMtnMdInc(_pth,_osd_pos_y_);
			}
		}
	}
	if(b_mse_pshng_clk_rb == 1)	b_mse_pshng_clk_rb = 0;
}
//==================================================================================

⌨️ 快捷键说明

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