📄 cvmat.hpp
字号:
/* mat_add2 = mat_add1 * scalar */
inline _CvMAT_ADD_EX_ operator * ( const _CvMAT_ADD_& a, double alpha )
{ return _CvMAT_ADD_EX_( a.a, alpha, a.b, a.beta*alpha, 0 ); }
/* mat_add2 = scalar * mat_add1 */
inline _CvMAT_ADD_EX_ operator * ( double alpha, const _CvMAT_ADD_& a )
{ return _CvMAT_ADD_EX_( a.a, alpha, a.b, a.beta*alpha, 0 ); }
/* -mat_add_ex */
inline _CvMAT_ADD_EX_ operator - ( const _CvMAT_ADD_EX_& a )
{ return _CvMAT_ADD_EX_( a.a, -a.alpha, a.b, -a.beta, -a.gamma ); }
/*
* PART II. Matrix multiplication.
*/
/* mmul = mat1 * mat2 */
inline _CvMAT_MUL_ operator * ( const CvMAT& a, const CvMAT& b )
{ return _CvMAT_MUL_( &a, &b, 0 ); }
/* mmul = (mat1^t) * mat2 */
inline _CvMAT_MUL_ operator * ( const _CvMAT_T_& a, const CvMAT& b )
{ return _CvMAT_MUL_( &a.a, &b, a.alpha, 1 ); }
/* mmul = mat1 * (mat2^t) */
inline _CvMAT_MUL_ operator * ( const CvMAT& b, const _CvMAT_T_& a )
{ return _CvMAT_MUL_( &b, &a.a, a.alpha, 2 ); }
/* mmul = (mat1^t) * (mat2^t) */
inline _CvMAT_MUL_ operator * ( const _CvMAT_T_& a, const _CvMAT_T_& b )
{ return _CvMAT_MUL_( &a.a, &b.a, a.alpha*b.alpha, 3 ); }
/* mmul = mat_scaled1 * mat2 */
inline _CvMAT_MUL_ operator * ( const _CvMAT_SCALE_& a, const CvMAT& b )
{ return _CvMAT_MUL_( a.a, &b, a.alpha, 0 ); }
/* mmul = mat1 * mat_scaled2 */
inline _CvMAT_MUL_ operator * ( const CvMAT& b, const _CvMAT_SCALE_& a )
{ return _CvMAT_MUL_( &b, a.a, a.alpha, 0 ); }
/* mmul = (mat1^t) * mat_scaled1 */
inline _CvMAT_MUL_ operator * ( const _CvMAT_T_& a, const _CvMAT_SCALE_& b )
{ return _CvMAT_MUL_( &a.a, b.a, a.alpha*b.alpha, 1 ); }
/* mmul = mat_scaled1 * (mat2^t) */
inline _CvMAT_MUL_ operator * ( const _CvMAT_SCALE_& b, const _CvMAT_T_& a )
{ return _CvMAT_MUL_( b.a, &a.a, a.alpha*b.alpha, 2 ); }
/* mmul = mat_scaled1 * mat_scaled2 */
inline _CvMAT_MUL_ operator * ( const _CvMAT_SCALE_& a, const _CvMAT_SCALE_& b )
{ return _CvMAT_MUL_( a.a, b.a, a.alpha*b.alpha, 0 ); }
/* mmul2 = mmul1 * scalar */
inline _CvMAT_MUL_ operator * ( const _CvMAT_MUL_& a, double alpha )
{ return _CvMAT_MUL_( a.a, a.b, a.alpha*alpha, a.t_ab ); }
/* mmul2 = scalar * mmul1 */
inline _CvMAT_MUL_ operator * ( double alpha, const _CvMAT_MUL_& a )
{ return _CvMAT_MUL_( a.a, a.b, a.alpha*alpha, a.t_ab ); }
/* -mmul */
inline _CvMAT_MUL_ operator - ( const _CvMAT_MUL_& a )
{ return _CvMAT_MUL_( a.a, a.b, -a.alpha, a.t_ab ); }
/* mmuladd = mmul + mat */
inline _CvMAT_MUL_ADD_ operator + ( const _CvMAT_MUL_& a, const CvMAT& b )
{ return _CvMAT_MUL_ADD_( a.a, a.b, a.alpha, &b, 1, a.t_ab ); }
/* !!! Comment this off because of ambigous conversion error !!!
mmuladd = mat + mmul */
/* inline _CvMAT_MUL_ADD_ operator + ( const CvMAT& b, const _CvMAT_MUL_& a )
{ return _CvMAT_MUL_ADD_( a.a, a.b, a.alpha, &b, 1, a.t_ab ); }*/
/* mmuladd = mmul - mat */
inline _CvMAT_MUL_ADD_ operator - ( const _CvMAT_MUL_& a, const CvMAT& b )
{ return _CvMAT_MUL_ADD_( a.a, a.b, a.alpha, &b, -1, a.t_ab ); }
/* !!! Comment this off because of ambigous conversion error !!!
mmuladd = mat - mmul */
/*inline _CvMAT_MUL_ADD_ operator - ( const CvMAT& b, const _CvMAT_MUL_& a )
{ return _CvMAT_MUL_ADD_( a.a, a.b, -a.alpha, &b, 1, a.t_ab ); }*/
/* mmuladd = mmul + mat_scaled */
inline _CvMAT_MUL_ADD_ operator + ( const _CvMAT_MUL_& a, const _CvMAT_SCALE_& b )
{ return _CvMAT_MUL_ADD_( a.a, a.b, a.alpha, b.a, b.alpha, a.t_ab ); }
/* mmuladd = mat_scaled + mmul */
inline _CvMAT_MUL_ADD_ operator + ( const _CvMAT_SCALE_& b, const _CvMAT_MUL_& a )
{ return _CvMAT_MUL_ADD_( a.a, a.b, a.alpha, b.a, b.alpha, a.t_ab ); }
/* mmuladd = mmul - mat_scaled */
inline _CvMAT_MUL_ADD_ operator - ( const _CvMAT_MUL_& a, const _CvMAT_SCALE_& b )
{ return _CvMAT_MUL_ADD_( a.a, a.b, a.alpha, b.a, -b.alpha, a.t_ab ); }
/* mmuladd = mat_scaled - mmul */
inline _CvMAT_MUL_ADD_ operator - ( const _CvMAT_SCALE_& b, const _CvMAT_MUL_& a )
{ return _CvMAT_MUL_ADD_( a.a, a.b, -a.alpha, b.a, b.alpha, a.t_ab ); }
/* mmuladd = mmul + (mat^t) */
inline _CvMAT_MUL_ADD_ operator + ( const _CvMAT_MUL_& a, const _CvMAT_T_& b )
{ return _CvMAT_MUL_ADD_( a.a, a.b, a.alpha, &b.a, b.alpha, a.t_ab + 4 ); }
/* mmuladd = (mat^t) + mmul */
inline _CvMAT_MUL_ADD_ operator + ( const _CvMAT_T_& b, const _CvMAT_MUL_& a )
{ return _CvMAT_MUL_ADD_( a.a, a.b, a.alpha, &b.a, b.alpha, a.t_ab + 4 ); }
/* mmuladd = mmul - (mat^t) */
inline _CvMAT_MUL_ADD_ operator - ( const _CvMAT_MUL_& a, const _CvMAT_T_& b )
{ return _CvMAT_MUL_ADD_( a.a, a.b, a.alpha, &b.a, -b.alpha, a.t_ab + 4 ); }
/* mmuladd = (mat^t) - mmul */
inline _CvMAT_MUL_ADD_ operator - ( const _CvMAT_T_& b, const _CvMAT_MUL_& a )
{ return _CvMAT_MUL_ADD_( a.a, a.b, -a.alpha, &b.a, b.alpha, a.t_ab + 4 ); }
/* mmuladd = mat_scaled_shited * mat */
inline _CvMAT_MUL_ADD_ operator * ( const _CvMAT_SCALE_SHIFT_& a, const CvMAT& b )
{ return _CvMAT_MUL_ADD_( a.a, &b, a.alpha, &b, a.beta, 0 ); }
/* mmuladd = mat * mat_scaled_shited */
inline _CvMAT_MUL_ADD_ operator * ( const CvMAT& b, const _CvMAT_SCALE_SHIFT_& a )
{ return _CvMAT_MUL_ADD_( &b, a.a, a.alpha, &b, a.beta, 0 ); }
/* mmuladd = mat_scaled_shited * mat_scaled */
inline _CvMAT_MUL_ADD_ operator * ( const _CvMAT_SCALE_SHIFT_& a, const _CvMAT_SCALE_& b )
{ return _CvMAT_MUL_ADD_( a.a, b.a, a.alpha*b.alpha, b.a, a.beta*b.alpha, 0 ); }
/* mmuladd = mat_scaled * mat_scaled_shited */
inline _CvMAT_MUL_ADD_ operator * ( const _CvMAT_SCALE_& b, const _CvMAT_SCALE_SHIFT_& a )
{ return _CvMAT_MUL_ADD_( b.a, a.a, a.alpha*b.alpha, b.a, a.beta*b.alpha, 0 ); }
/* mmuladd = mat_scaled_shited * (mat^t) */
inline _CvMAT_MUL_ADD_ operator * ( const _CvMAT_SCALE_SHIFT_& a, const _CvMAT_T_& b )
{ return _CvMAT_MUL_ADD_( a.a, &b.a, a.alpha*b.alpha, &b.a, a.beta*b.alpha, 6 ); }
/* mmuladd = (mat^t) * mat_scaled_shited */
inline _CvMAT_MUL_ADD_ operator * ( const _CvMAT_T_& b, const _CvMAT_SCALE_SHIFT_& a )
{ return _CvMAT_MUL_ADD_( &b.a, a.a, a.alpha*b.alpha, &b.a, a.beta*b.alpha, 5 ); }
/* mmuladd2 = mmuladd1 * scalar */
inline _CvMAT_MUL_ADD_ operator * ( const _CvMAT_MUL_ADD_& a, double alpha )
{ return _CvMAT_MUL_ADD_( a.a, a.b, a.alpha*alpha, a.c, a.beta*alpha, a.t_abc ); }
/* mmuladd2 = scalar * mmuladd1 */
inline _CvMAT_MUL_ADD_ operator * ( double alpha, const _CvMAT_MUL_ADD_& a )
{ return _CvMAT_MUL_ADD_( a.a, a.b, a.alpha*alpha, a.c, a.beta*alpha, a.t_abc ); }
/* -mmuladd */
inline _CvMAT_MUL_ADD_ operator - ( const _CvMAT_MUL_ADD_& a )
{ return _CvMAT_MUL_ADD_( a.a, a.b, -a.alpha, a.c, -a.beta, a.t_abc ); }
/* inv(a)*b, i.e. solve a*x = b */
inline _CvMAT_SOLVE_ operator * ( const _CvMAT_INV_& a, const CvMAT& b )
{ return _CvMAT_SOLVE_( &a.a, &b, a.method ); }
/*
* PART III. Logical operations
*/
inline _CvMAT_NOT_ operator ~ ( const CvMAT& a )
{ return _CvMAT_NOT_(&a); }
inline _CvMAT_LOGIC_ operator & ( const CvMAT& a, const CvMAT& b )
{ return _CvMAT_LOGIC_( &a, &b, _CvMAT_LOGIC_::AND, 0 ); }
inline _CvMAT_LOGIC_ operator & ( const _CvMAT_NOT_& a, const CvMAT& b )
{ return _CvMAT_LOGIC_( a.a, &b, _CvMAT_LOGIC_::AND, 1 ); }
inline _CvMAT_LOGIC_ operator & ( const CvMAT& a, const _CvMAT_NOT_& b )
{ return _CvMAT_LOGIC_( &a, b.a, _CvMAT_LOGIC_::AND, 2 ); }
inline _CvMAT_LOGIC_ operator & ( const _CvMAT_NOT_& a, const _CvMAT_NOT_& b )
{ return _CvMAT_LOGIC_( a.a, b.a, _CvMAT_LOGIC_::AND, 3 ); }
inline _CvMAT_LOGIC_ operator | ( const CvMAT& a, const CvMAT& b )
{ return _CvMAT_LOGIC_( &a, &b, _CvMAT_LOGIC_::OR, 0 ); }
inline _CvMAT_LOGIC_ operator | ( const _CvMAT_NOT_& a, const CvMAT& b )
{ return _CvMAT_LOGIC_( a.a, &b, _CvMAT_LOGIC_::OR, 1 ); }
inline _CvMAT_LOGIC_ operator | ( const CvMAT& a, const _CvMAT_NOT_& b )
{ return _CvMAT_LOGIC_( &a, b.a, _CvMAT_LOGIC_::OR, 2 ); }
inline _CvMAT_LOGIC_ operator | ( const _CvMAT_NOT_& a, const _CvMAT_NOT_& b )
{ return _CvMAT_LOGIC_( a.a, b.a, _CvMAT_LOGIC_::OR, 3 ); }
inline _CvMAT_LOGIC_ operator ^ ( const CvMAT& a, const CvMAT& b )
{ return _CvMAT_LOGIC_( &a, &b, _CvMAT_LOGIC_::XOR, 0 ); }
inline _CvMAT_LOGIC_ operator ^ ( const _CvMAT_NOT_& a, const CvMAT& b )
{ return _CvMAT_LOGIC_( a.a, &b, _CvMAT_LOGIC_::XOR, 1 ); }
inline _CvMAT_LOGIC_ operator ^ ( const CvMAT& a, const _CvMAT_NOT_& b )
{ return _CvMAT_LOGIC_( &a, b.a, _CvMAT_LOGIC_::XOR, 2 ); }
inline _CvMAT_LOGIC_ operator ^ ( const _CvMAT_NOT_& a, const _CvMAT_NOT_& b )
{ return _CvMAT_LOGIC_( a.a, b.a, _CvMAT_LOGIC_::XOR, 3 ); }
inline _CvMAT_UN_LOGIC_ operator & ( const CvMAT& a, double alpha )
{ return _CvMAT_UN_LOGIC_( &a, alpha, _CvMAT_LOGIC_::AND, 0 ); }
inline _CvMAT_UN_LOGIC_ operator & ( double alpha, const CvMAT& a )
{ return _CvMAT_UN_LOGIC_( &a, alpha, _CvMAT_LOGIC_::AND, 0 ); }
inline _CvMAT_UN_LOGIC_ operator & ( const _CvMAT_NOT_& a, double alpha )
{ return _CvMAT_UN_LOGIC_( a.a, alpha, _CvMAT_LOGIC_::AND, 1 ); }
inline _CvMAT_UN_LOGIC_ operator & ( double alpha, const _CvMAT_NOT_& a )
{ return _CvMAT_UN_LOGIC_( a.a, alpha, _CvMAT_LOGIC_::AND, 1 ); }
inline _CvMAT_UN_LOGIC_ operator | ( const CvMAT& a, double alpha )
{ return _CvMAT_UN_LOGIC_( &a, alpha, _CvMAT_LOGIC_::OR, 0 ); }
inline _CvMAT_UN_LOGIC_ operator | ( double alpha, const CvMAT& a )
{ return _CvMAT_UN_LOGIC_( &a, alpha, _CvMAT_LOGIC_::OR, 0 ); }
inline _CvMAT_UN_LOGIC_ operator | ( const _CvMAT_NOT_& a, double alpha )
{ return _CvMAT_UN_LOGIC_( a.a, alpha, _CvMAT_LOGIC_::OR, 1 ); }
inline _CvMAT_UN_LOGIC_ operator | ( double alpha, const _CvMAT_NOT_& a )
{ return _CvMAT_UN_LOGIC_( a.a, alpha, _CvMAT_LOGIC_::OR, 1 ); }
inline _CvMAT_UN_LOGIC_ operator ^ ( const CvMAT& a, double alpha )
{ return _CvMAT_UN_LOGIC_( &a, alpha, _CvMAT_LOGIC_::XOR, 0 ); }
inline _CvMAT_UN_LOGIC_ operator ^ ( double alpha, const CvMAT& a )
{ return _CvMAT_UN_LOGIC_( &a, alpha, _CvMAT_LOGIC_::XOR, 0 ); }
inline _CvMAT_UN_LOGIC_ operator ^ ( const _CvMAT_NOT_& a, double alpha )
{ return _CvMAT_UN_LOGIC_( a.a, alpha, _CvMAT_LOGIC_::XOR, 1 ); }
inline _CvMAT_UN_LOGIC_ operator ^ ( double alpha, const _CvMAT_NOT_& a )
{ return _CvMAT_UN_LOGIC_( a.a, alpha, _CvMAT_LOGIC_::XOR, 1 ); }
/*
* PART IV. Comparison operations
*/
inline _CvMAT_CMP_ operator > ( const CvMAT& a, const CvMAT& b )
{ return _CvMAT_CMP_( &a, &b, CV_CMP_GT ); }
inline _CvMAT_CMP_ operator >= ( const CvMAT& a, const CvMAT& b )
{ return _CvMAT_CMP_( &a, &b, CV_CMP_GE ); }
inline _CvMAT_CMP_ operator < ( const CvMAT& a, const CvMAT& b )
{ return _CvMAT_CMP_( &a, &b, CV_CMP_LT ); }
inline _CvMAT_CMP_ operator <= ( const CvMAT& a, const CvMAT& b )
{ return _CvMAT_CMP_( &a, &b, CV_CMP_LE ); }
inline _CvMAT_CMP_ operator == ( const CvMAT& a, const CvMAT& b )
{ return _CvMAT_CMP_( &a, &b, CV_CMP_EQ ); }
inline _CvMAT_CMP_ operator != ( const CvMAT& a, const CvMAT& b )
{ return _CvMAT_CMP_( &a, &b, CV_CMP_NE ); }
inline _CvMAT_CMP_ operator > ( const CvMAT& a, double alpha )
{ return _CvMAT_CMP_( &a, alpha, CV_CMP_GT ); }
inline _CvMAT_CMP_ operator > ( double alpha, const CvMAT& a )
{ return _CvMAT_CMP_( &a, alpha, CV_CMP_LT ); }
inline _CvMAT_CMP_ operator >= ( const CvMAT& a, double alpha )
{ return _CvMAT_CMP_( &a, alpha, CV_CMP_GE ); }
inline _CvMAT_CMP_ operator >= ( double alpha, const CvMAT& a )
{ return _CvMAT_CMP_( &a, alpha, CV_CMP_LE ); }
inline _CvMAT_CMP_ operator < ( const CvMAT& a, double alpha )
{ return _CvMAT_CMP_( &a, alpha, CV_CMP_LT ); }
inline _CvMAT_CMP_ operator < ( double alpha, const CvMAT& a )
{ return _CvMAT_CMP_( &a, alpha, CV_CMP_GT ); }
inline _CvMAT_CMP_ operator <= ( const CvMAT& a, double alpha )
{ return _CvMAT_CMP_( &a, alpha, CV_CMP_LE ); }
inline _CvMAT_CMP_ operator <= ( double alpha, const CvMAT& a )
{ return _CvMAT_CMP_( &a, alpha, CV_CMP_GE ); }
inline _CvMAT_CMP_ operator == ( const CvMAT& a, double alpha )
{ return _CvMAT_CMP_( &a, alpha, CV_CMP_EQ ); }
inline _CvMAT_CMP_ operator == ( double alpha, const CvMAT& a )
{ return _CvMAT_CMP_( &a, alpha, CV_CMP_EQ ); }
inline _CvMAT_CMP_ operator != ( const CvMAT& a, double alpha )
{ return _CvMAT_CMP_( &a, alpha, CV_CMP_NE ); }
inline _CvMAT_CMP_ operator != ( double alpha, const CvMAT& a )
{ return _CvMAT_CMP_( &a, alpha, CV_CMP_NE ); }
/*
* PART V. Speedup for some augmented assignments to CvMAT
*/
inline CvMAT& CvMAT::operator += ( const _CvMAT_SCALE_& scale_mat )
{ return (*this = *this + scale_mat); }
inline CvMAT& CvMAT::operator += ( const _CvMAT_SCALE_SHIFT_& scale_mat )
{ return (*this = *this + scale_mat); }
inline CvMAT& CvMAT::operator += ( const _CvMAT_MUL_& mmul )
{ return (*this = mmul + *this); }
inline CvMAT& CvMAT::operator -= ( const _CvMAT_SCALE_& scale_mat )
{ return (*this = *this - scale_mat); }
inline CvMAT& CvMAT::operator -= ( const _CvMAT_SCALE_SHIFT_& scale_mat )
{ return (*this = *this - scale_mat); }
inline CvMAT& CvMAT::operator -= ( const _CvMAT_MUL_& mmul )
{ return (*this = -mmul + *this); }
inline CvMAT& CvMAT::operator *= ( const _CvMAT_SCALE_& scale_mat )
{ return (*this = *this * scale_mat); }
inline CvMAT& CvMAT::operator *= ( const _CvMAT_SCALE_SHIFT_& scale_mat )
{ return (*this = *this * scale_mat); }
/****************************************************************************************\
* misc. operations on temporary matrices (+,-,*) *
\****************************************************************************************/
/*
* the base proxy class implementation
*/
/* a.*b */
inline _CvMAT_DOT_OP_ _CvMAT_BASE_OP_::mul( const CvMAT& a ) const
{ return ((CvMAT)*this).mul(a); }
/* a.*b*alpha */
inline _CvMAT_DOT_OP_ _CvMAT_BASE_OP_::mul( const _CvMAT_SCALE_& a ) const
{ return ((CvMAT)*this).mul(a); }
/* a./b */
inline _CvMAT_DOT_OP_ _CvMAT_BASE_OP_::div( const CvMAT& a ) const
{ return ((CvMAT)*this).div(a); }
/* a./(b*alpha) */
inline _CvMAT_DOT_OP_ _CvMAT_BASE_OP_::div( const _CvMAT_SCALE_& a ) const
{ return ((CvMAT)*this).div(a); }
/* a.max(b) */
inline _CvMAT_DOT_OP_ _CvMAT_BASE_OP_::min( const CvMAT& a ) const
{ return ((CvMAT)*this).min(a); }
/* a.min(b) */
inline _CvMAT_DOT_OP_ _CvMAT_BASE_OP_::max( const CvMAT& a ) const
{ return ((CvMAT)*this).max(a); }
/* a.max(alpha) */
inline _CvMAT_DOT_OP_ _CvMAT_BASE_OP_::min( double alpha ) const
{ return ((CvMAT)*this).min(alpha); }
/* a.min(alpha) */
inline _CvMAT_DOT_OP_ _CvMAT_BASE_OP_::max( double alpha ) const
{ return ((CvMAT)*this).max(alpha); }
inline _CvMAT_INV_ _CvMAT_BASE_OP_::inv( int method ) const
{ return ((CvMAT)*this).inv(method); }
inline _CvMAT_T_ _CvMAT_BASE_OP_::t() const
{ return ((CvMAT)*this).t(); }
inline _CvMAT_CVT_ _CvMAT_BASE_OP_::cvt( int newdepth, double scale, double shift ) const
{ return ((CvMAT)*this).cvt( newdepth, scale, shift ); }
inline CvMAT _CvMAT_BASE_OP_::row( int r ) const
{ return CvMAT((CvMAT)*this, 0, r ); }
inline CvMAT _CvMAT_BASE_OP_::rowrange( int row1, int row2 ) const
{
CvMAT m = (CvMAT)*this;
assert( 0 <= row1 && row1 < row2 && row2 <= m.height );
return CvMAT( m, cvRect( 0, row1, m.width, row2 - row1 ));
}
inline CvMAT _CvMAT_BASE_OP_::col( int c ) const
{ return CvMAT( (CvMAT)*this, 1, c ); }
inline CvMAT _CvMAT_BASE_OP_::colrange( int col1, int col2 ) const
{
CvMAT m = (CvMAT)*this;
assert( 0 <= col1 && col1 < col2 && col2 <= m.width );
return CvMAT( m, cvRect( col1, 0, col2 - col1, m.height ));
}
inline CvMAT _CvMAT_BASE_OP_::rect( CvRect r ) const
{ return CvMAT( (CvMAT)*this, r ); }
inline CvMAT _CvMAT_BASE_OP_::diag( int d ) const
{ return CvMAT( (CvMAT)*this, -1, d ); }
inline double _CvMAT_BASE_OP_::det() const
{ return ((CvMAT)*this).det(); }
inline double _CvMAT_BASE_OP_::norm( int norm_type ) const
{ return ((CvMAT)*this).norm( norm_type ); }
inline CvScalar _CvMAT_BASE_OP_::sum() const
{ return ((CvMAT)*this).sum(); }
inline double _CvMAT_BASE_OP_::min( CvPoint* minloc ) const
{ return ((CvMAT)*this).min( minloc ); }
inline double _CvMAT_BASE_OP_::max( CvPoint* maxloc ) const
{ return ((CvMAT)*this).max( maxloc ); }
/****************************************************************************************/
/* proxy classes implementation. */
/* part I. constructors
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -