wndw_zm.c
来自「TECHWELL 之tw2835 四画面合一之驱动代码,CCIR656输出,KE」· C语言 代码 · 共 164 行
C
164 行
#include "hdr.h"
//==================================================================================
// zm window definition & variable description
//==================================================================================
U8 idata wndw_zm_ch_l;
U8 idata wndw_zm_ch_r;
U8 idata wndw_zm_ch_t;
U8 idata wndw_zm_ch_b;
//==================================================================================
// zm window function description
//==================================================================================
void CreateWndwZm(void)
{
U8 _rdat_;
// b_status_win = ON;
b_cmn_wndw_mn = ON;
_rdat_ = ReadAsicByte(cmn_lst_slvr_x,DVC_PG1,0x0c);
SetBit(_rdat_,(BIT3|BIT2));
WriteAsicByte(cmn_lst_slvr_x,DVC_PG1,0x0c,_rdat_);
}
//==================================================================================
void RunWndwZm(void)
{
U8 _crsr_pos_x_, _crsr_pos_y_;
U8 _zm_hl_, _zm_hr_, _zm_vt_, _zm_vb_;
// U8 _mse_btn_flg_=0;
U8 _rdat_;
U8 _dvc_, _ch_;
U8 _t1_;
U8 _osd_pos_x_, _osd_pos_y_;
_zm_hl_ = ReadAsicByte(cmn_lst_slvr_x,DVC_PG1,0x0d);
_zm_hr_ = _zm_hl_ + 90;
_zm_vt_ = ReadAsicByte(cmn_lst_slvr_x,DVC_PG1,0x0e);
if(b_cmn_jp_vdo == VDO_NTSC) _zm_vb_ = _zm_vt_ + 60;
else _zm_vb_ = _zm_vt_ + 72;
_crsr_pos_x_ = (U8)(reg_crsr_pos_x>>1);
_crsr_pos_y_ = (U8)(reg_crsr_pos_y>>1);
// _osd_pos_x_ = GetMseOSDX(reg_crsr_pos_x);
// _osd_pos_y_ = GetMseOSDY(reg_crsr_pos_y);
_osd_pos_x_ = GetMseOSDX(reg_crsr_pos_x);
_osd_pos_y_ = GetMseOSDY(reg_crsr_pos_y);
if(b_zm_pop_en == ON) RunZmPop();
else{
if(b_mse_btn_dwn_lb == 1){
b_mse_btn_dwn_lb = 0;
}
if(b_mse_btn_dwn_rb == 1) b_mse_btn_dwn_rb = 0;
if(b_mse_clk_lb == 1){
b_mse_clk_lb = 0;
_rdat_ = ReadAsicByte(cmn_lst_slvr_x,DVC_PG1,0x0c);
if(mse_btn_pshng_cnt > MSE_BTN_DLY_CLK){
_rdat_ ^= BIT7;
// if(BitSet(_rdat_,BIT7)) SetAsicFlgType(MASTER,DVC_PG1,0x06,BIT2,0x00); //... CH_VAR_EN_D=0
// else SetAsicFlgType(MASTER,DVC_PG1,0x06,BIT2,BIT2); //... CH_VAR_EN_D=1
//#if defined(__16CH__)
// if(BitSet(_rdat_,BIT7)){
// SetAsicFlgType(SLAVE1,DVC_PG1,0x06,BIT2,0x00);
// SetAsicFlgType(SLAVE2,DVC_PG1,0x06,BIT2,0x00);
// SetAsicFlgType(SLAVE3,DVC_PG1,0x06,BIT2,0x00);
// }
// else{
// SetAsicFlgType(SLAVE1,DVC_PG1,0x06,BIT2,BIT2);
// SetAsicFlgType(SLAVE2,DVC_PG1,0x06,BIT2,BIT2);
// SetAsicFlgType(SLAVE3,DVC_PG1,0x06,BIT2,BIT2);
// }
//#endif
for(_t1_=0;_t1_<cmn_max_ch;_t1_++){
SetCrntDvcCh(_t1_,&_dvc_,&_ch_);
if(BitSet(_rdat_,BIT7)){
SetAsicFlgType(_dvc_,DVC_PG1,0x06,BIT2,0x00); //... CH_VAR_EN_D=0
SetAsicFlgType(_dvc_,DVC_PG2,0x60+(_ch_<<3),BIT5,0x00); //... MDBOX_MD=0
SetAsicFlgType(_dvc_,DVC_PG2,0x61+(_ch_<<3),BIT5,0x00); //... MDMASK_EN=0
}
else{
SetAsicFlgType(_dvc_,DVC_PG1,0x06,BIT2,BIT2); //... CH_VAR_EN_D=1
}
}
WriteAsicByte(cmn_lst_slvr_x,DVC_PG1,0x0c,_rdat_);
}
}
if(b_mse_clk_rb == 1){
b_mse_clk_rb = 0;
CreateZmPop();
}
}
if(b_mse_rlse_lb == 0){
if(b_mse_init_zm == 0){
b_mse_init_zm = 1;
if((_crsr_pos_x_ >= _zm_hl_)&&(_crsr_pos_x_ <= _zm_hr_)&&(_crsr_pos_y_ >= _zm_vt_)&&(_crsr_pos_y_ <= _zm_vb_)){
// SetMseLayer(OFF);
SetAsicFlgType(MASTER,DVC_PG2,0x10,BIT4,0x00);
wndw_zm_ch_l = _crsr_pos_x_ - _zm_hl_;
wndw_zm_ch_r = _zm_hr_ - _crsr_pos_x_;
wndw_zm_ch_t = _crsr_pos_y_ - _zm_vt_;
wndw_zm_ch_b = _zm_vb_ - _crsr_pos_y_;
}
}
if((_crsr_pos_x_ >= _zm_hl_)&&(_crsr_pos_x_ <= _zm_hr_)&&(_crsr_pos_y_ >= _zm_vt_)&&(_crsr_pos_y_ <= _zm_vb_)){
if((_crsr_pos_x_-wndw_zm_ch_l) > -1){
if((_crsr_pos_x_+wndw_zm_ch_r) < 181) _zm_hl_ = _crsr_pos_x_ - wndw_zm_ch_l;
}
else{
_zm_hl_ = 0;
_zm_hr_ = wndw_zm_ch_l + wndw_zm_ch_r;
}
WriteAsicByte(cmn_lst_slvr_x,DVC_PG1,0x0d,_zm_hl_);
if((_crsr_pos_x_+wndw_zm_ch_r) < 181){
if((_crsr_pos_x_-wndw_zm_ch_l) > -1) _zm_hr_ = _crsr_pos_x_ + wndw_zm_ch_r;
}
else{
_zm_hl_ = 180 - (wndw_zm_ch_l + wndw_zm_ch_r);
_zm_hr_ = 180;
}
WriteAsicByte(cmn_lst_slvr_x,DVC_PG1,0x0d,_zm_hl_);
if((_crsr_pos_y_-wndw_zm_ch_t) > -1){
if((_crsr_pos_y_+wndw_zm_ch_b) <= cmn_bot) _zm_vt_ = _crsr_pos_y_ - wndw_zm_ch_t;
}
else{
_zm_vt_ = 0;
_zm_vb_ = wndw_zm_ch_t + wndw_zm_ch_b;
}
WriteAsicByte(cmn_lst_slvr_x,DVC_PG1,0x0e,_zm_vt_);
if((_crsr_pos_y_+wndw_zm_ch_b) <= cmn_bot){
if((_crsr_pos_y_-wndw_zm_ch_t) > -1) _zm_vb_ = _crsr_pos_y_ + wndw_zm_ch_b;
}
else{
_zm_vt_ = cmn_bot - (wndw_zm_ch_t + wndw_zm_ch_b);
_zm_vb_ = cmn_bot;
}
WriteAsicByte(cmn_lst_slvr_x,DVC_PG1,0x0e,_zm_vt_);
}
}
else{
if(b_mse_init_zm == 1){
b_mse_init_zm = 0;
// SetMseLayer(ON);
SetAsicFlgType(MASTER,DVC_PG2,0x10,BIT4,BIT4);
}
}
}
//==================================================================================
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?