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 + -
显示快捷键?