Wondercoll
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
Macros | Typedefs | Functions | Variables
cxarithm.cpp File Reference
#include "_cxcore.h"

Macros

#define ICV_DEF_BIN_ARI_OP_CASE(__op__, worktype, cast_macro, len)
 
#define ICV_DEF_BIN_ARI_OP_2D(__op__, name, type, worktype, cast_macro)
 
#define ICV_DEF_BIN_ARI_OP_2D_SFS(__op__, name, type, worktype, cast_macro)
 
#define ICV_DEF_UN_ARI_OP_CASE(__op__, worktype, cast_macro,src, scalar, dst, len)
 
#define ICV_DEF_UN_ARI_OP_2D(__op__, name, type, worktype, cast_macro)
 
#define ICV_DEF_BIN_ARI_ALL(__op__, name, cast_8u)
 
#define ICV_DEF_UN_ARI_ALL(__op__, name)
 
#define CV_SUB_R(a, b)   ((b) - (a))
 
#define ICV_DEF_INIT_ARITHM_FUNC_TAB(FUNCNAME, FLAG)
 
#define ICV_DEF_MUL_OP_CASE(flavor, arrtype, worktype, _cast_macro1_,_cast_macro2_, _cvt_macro_)
 
#define ICV_DEF_DIV_OP_CASE(flavor, arrtype, worktype, checktype, _start_row_macro_,_cast_macro1_, _cast_macro2_, _cvt_macro_, _check_macro_, isrc)
 
#define ICV_DEF_RECIP_OP_CASE(flavor, arrtype, worktype, checktype,_start_row_macro_, _cast_macro1_, _cast_macro2_,_cvt_macro_, _check_macro_, isrc)
 
#define div_start_row_int(checktype, divisor)   int i
 
#define div_start_row_flt(checktype, divisor)   const checktype* isrc = (const checktype*)divisor; int i
 
#define div_check_zero_flt(x)   (((x) & 0x7fffffff) != 0)
 
#define div_check_zero_dbl(x)   (((x) & CV_BIG_INT(0x7fffffffffffffff)) != 0)
 
#define ICV_DEF_ADD_WEIGHTED_OP(flavor, arrtype, worktype, load_macro,cast_macro1, cast_macro2)
 
#define shift   14
 

Typedefs

typedef CvStatus(CV_STDCALLCvScaledElWiseFunc )(const void *src1, int step1, const void *src2, int step2, void *dst, int step, CvSize size, double scale)
 
typedef CvStatus(CV_STDCALLCvAddWeightedFunc )(const void *src1, int step1, double alpha, const void *src2, int step2, double beta, double gamma, void *dst, int step, CvSize size)
 

Functions

CV_IMPL void cvSub (const void *srcarr1, const void *srcarr2, void *dstarr, const void *maskarr)
 
CV_IMPL void cvSubRS (const void *srcarr, CvScalar scalar, void *dstarr, const void *maskarr)
 
CV_IMPL void cvAdd (const void *srcarr1, const void *srcarr2, void *dstarr, const void *maskarr)
 
CV_IMPL void cvAddS (const void *srcarr, CvScalar scalar, void *dstarr, const void *maskarr)
 
CV_IMPL void cvMul (const void *srcarr1, const void *srcarr2, void *dstarr, double scale)
 
 ICV_DEF_DIV_OP_CASE (8u, uchar, int, uchar, div_start_row_int, cvRound, CV_CAST_8U, CV_8TO32F, CV_NONZERO, src2) ICV_DEF_DIV_OP_CASE(16u
 
src2 ICV_DEF_DIV_OP_CASE (16s, short, int, short, div_start_row_int, cvRound, CV_CAST_16S, CV_NOP, CV_NONZERO, src2) ICV_DEF_DIV_OP_CASE(32s
 
src2 src2 ICV_DEF_DIV_OP_CASE (32f, float, double, int, div_start_row_flt, CV_NOP, CV_CAST_32F, CV_NOP, div_check_zero_flt, isrc) ICV_DEF_DIV_OP_CASE(64f
 
src2 src2 isrc ICV_DEF_RECIP_OP_CASE (8u, uchar, int, uchar, div_start_row_int, cvRound, CV_CAST_8U, CV_8TO32F, CV_NONZERO, src) ICV_DEF_RECIP_OP_CASE(16u
 
src2 src2 isrc src ICV_DEF_RECIP_OP_CASE (16s, short, int, short, div_start_row_int, cvRound, CV_CAST_16S, CV_NOP, CV_NONZERO, src) ICV_DEF_RECIP_OP_CASE(32s
 
src2 src2 isrc src src ICV_DEF_RECIP_OP_CASE (32f, float, double, int, div_start_row_flt, CV_NOP, CV_CAST_32F, CV_NOP, div_check_zero_flt, isrc) ICV_DEF_RECIP_OP_CASE(64f
 
src2 src2 isrc src src isrc typedef CvStatus (CV_STDCALL *CvRecipFunc)(const void *src
 
CV_IMPL void cvDiv (const void *srcarr1, const void *srcarr2, void *dstarr, double scale)
 
CV_IMPL void cvAddWeighted (const CvArr *srcAarr, double alpha, const CvArr *srcBarr, double beta, double gamma, CvArr *dstarr)
 

Variables

src2 src2 isrc src src isrc
typedef int 
step1
 
src2 src2 isrc src src isrc
typedef int void * 
dst
 
src2 src2 isrc src src isrc
typedef int void int 
step
 
src2 src2 isrc src src isrc
typedef int void int CvSize 
size
 
src2 src2 isrc src src isrc
typedef int void int CvSize
double 
scale
 
 ushort
 
 int
 
 div_start_row_int
 
 cvRound
 
 CV_CAST_16U
 
 CV_CAST_64F
 
 CV_NONZERO
 
src2 CV_CAST_32S
 
src2 src2 double
 
src2 src2 int64
 
src2 src2 div_start_row_flt
 
src2 src2 CV_NOP
 
src2 src2 div_check_zero_dbl
 

Macro Definition Documentation

#define CV_SUB_R (   a,
  b 
)    ((b) - (a))
#define div_check_zero_dbl (   x)    (((x) & CV_BIG_INT(0x7fffffffffffffff)) != 0)
#define div_check_zero_flt (   x)    (((x) & 0x7fffffff) != 0)
#define div_start_row_flt (   checktype,
  divisor 
)    const checktype* isrc = (const checktype*)divisor; int i
#define div_start_row_int (   checktype,
  divisor 
)    int i
#define ICV_DEF_ADD_WEIGHTED_OP (   flavor,
  arrtype,
  worktype,
  load_macro,
  cast_macro1,
  cast_macro2 
)
#define ICV_DEF_BIN_ARI_ALL (   __op__,
  name,
  cast_8u 
)
Value:
ICV_DEF_BIN_ARI_OP_2D_SFS( __op__, icv##name##_8u_C1R, uchar, int, cast_8u ) \
ICV_DEF_BIN_ARI_OP_2D_SFS( __op__, icv##name##_16u_C1R, ushort, int, CV_CAST_16U ) \
ICV_DEF_BIN_ARI_OP_2D_SFS( __op__, icv##name##_16s_C1R, short, int, CV_CAST_16S ) \
ICV_DEF_BIN_ARI_OP_2D( __op__, icv##name##_32s_C1R, int, int, CV_CAST_32S ) \
ICV_DEF_BIN_ARI_OP_2D( __op__, icv##name##_32f_C1R, float, float, CV_CAST_32F ) \
ICV_DEF_BIN_ARI_OP_2D( __op__, icv##name##_64f_C1R, double, double, CV_CAST_64F )
#define ICV_DEF_BIN_ARI_OP_2D (   __op__,
  name,
  type,
  worktype,
  cast_macro 
)
Value:
( const type* src1, int step1, const type* src2, int step2, \
type* dst, int step, CvSize size ), \
(src1, step1, src2, step2, dst, step, size) ) \
{ \
step1/=sizeof(src1[0]); step2/=sizeof(src2[0]); step/=sizeof(dst[0]); \
if( size.width == 1 ) \
{ \
for( ; size.height--; src1 += step1, src2 += step2, dst += step ) \
{ \
worktype t0 = __op__((src1)[0],(src2)[0]); \
(dst)[0] = cast_macro( t0 ); \
} \
} \
else \
{ \
for( ; size.height--; src1 += step1, src2 += step2, dst += step ) \
{ \
ICV_DEF_BIN_ARI_OP_CASE( __op__, worktype, \
cast_macro, size.width ); \
} \
} \
\
return CV_OK; \
}
#define ICV_DEF_BIN_ARI_OP_2D_SFS (   __op__,
  name,
  type,
  worktype,
  cast_macro 
)
Value:
( const type* src1, int step1, const type* src2, int step2, \
type* dst, int step, CvSize size, int /*scalefactor*/ ), \
(src1, step1, src2, step2, dst, step, size, 0) ) \
{ \
step1/=sizeof(src1[0]); step2/=sizeof(src2[0]); step/=sizeof(dst[0]); \
if( size.width == 1 ) \
{ \
for( ; size.height--; src1 += step1, src2 += step2, dst += step ) \
{ \
worktype t0 = __op__((src1)[0],(src2)[0]); \
(dst)[0] = cast_macro( t0 ); \
} \
} \
else \
{ \
for( ; size.height--; src1 += step1, src2 += step2, dst += step ) \
{ \
ICV_DEF_BIN_ARI_OP_CASE( __op__, worktype, \
cast_macro, size.width ); \
} \
} \
\
return CV_OK; \
}
#define ICV_DEF_BIN_ARI_OP_CASE (   __op__,
  worktype,
  cast_macro,
  len 
)
Value:
{ \
int i; \
for( i = 0; i <= (len) - 4; i += 4 ) \
{ \
worktype t0 = __op__((src1)[i], (src2)[i]); \
worktype t1 = __op__((src1)[i+1], (src2)[i+1]); \
\
(dst)[i] = cast_macro( t0 ); \
(dst)[i+1] = cast_macro( t1 ); \
\
t0 = __op__((src1)[i+2],(src2)[i+2]); \
t1 = __op__((src1)[i+3],(src2)[i+3]); \
\
(dst)[i+2] = cast_macro( t0 ); \
(dst)[i+3] = cast_macro( t1 ); \
} \
for( ; i < (len); i++ ) \
{ \
worktype t0 = __op__((src1)[i],(src2)[i]); \
(dst)[i] = cast_macro( t0 ); \
} \
}
#define ICV_DEF_DIV_OP_CASE (   flavor,
  arrtype,
  worktype,
  checktype,
  _start_row_macro_,
  _cast_macro1_,
  _cast_macro2_,
  _cvt_macro_,
  _check_macro_,
  isrc 
)
#define ICV_DEF_INIT_ARITHM_FUNC_TAB (   FUNCNAME,
  FLAG 
)
Value:
static void icvInit##FUNCNAME##FLAG##Table( CvFuncTable* tab )\
{ \
tab->fn_2d[CV_8U] = (void*)icv##FUNCNAME##_8u_##FLAG; \
tab->fn_2d[CV_8S] = 0; \
tab->fn_2d[CV_16U] = (void*)icv##FUNCNAME##_16u_##FLAG; \
tab->fn_2d[CV_16S] = (void*)icv##FUNCNAME##_16s_##FLAG; \
tab->fn_2d[CV_32S] = (void*)icv##FUNCNAME##_32s_##FLAG; \
tab->fn_2d[CV_32F] = (void*)icv##FUNCNAME##_32f_##FLAG; \
tab->fn_2d[CV_64F] = (void*)icv##FUNCNAME##_64f_##FLAG; \
}
#define ICV_DEF_MUL_OP_CASE (   flavor,
  arrtype,
  worktype,
  _cast_macro1_,
  _cast_macro2_,
  _cvt_macro_ 
)
#define ICV_DEF_RECIP_OP_CASE (   flavor,
  arrtype,
  worktype,
  checktype,
  _start_row_macro_,
  _cast_macro1_,
  _cast_macro2_,
  _cvt_macro_,
  _check_macro_,
  isrc 
)
#define ICV_DEF_UN_ARI_ALL (   __op__,
  name 
)
Value:
ICV_DEF_UN_ARI_OP_2D( __op__, icv##name##_8u_C1R, uchar, int, CV_CAST_8U ) \
ICV_DEF_UN_ARI_OP_2D( __op__, icv##name##_16u_C1R, ushort, int, CV_CAST_16U ) \
ICV_DEF_UN_ARI_OP_2D( __op__, icv##name##_16s_C1R, short, int, CV_CAST_16S ) \
ICV_DEF_UN_ARI_OP_2D( __op__, icv##name##_32s_C1R, int, int, CV_CAST_32S ) \
ICV_DEF_UN_ARI_OP_2D( __op__, icv##name##_32f_C1R, float, float, CV_CAST_32F ) \
ICV_DEF_UN_ARI_OP_2D( __op__, icv##name##_64f_C1R, double, double, CV_CAST_64F )
#define ICV_DEF_UN_ARI_OP_2D (   __op__,
  name,
  type,
  worktype,
  cast_macro 
)
Value:
( const type* src, int step1, type* dst, int step, \
CvSize size, const worktype* scalar ) \
{ \
step1 /= sizeof(src[0]); step /= sizeof(dst[0]); \
if( size.width == 1 ) \
{ \
for( ; size.height--; src += step1, dst += step ) \
{ \
worktype t0 = __op__(*(scalar),*(src)); \
*(dst) = cast_macro( t0 ); \
} \
} \
else \
{ \
for( ; size.height--; src += step1, dst += step ) \
{ \
const type *tsrc = src; \
type *tdst = dst; \
int width = size.width; \
ICV_DEF_UN_ARI_OP_CASE( __op__, worktype, cast_macro, \
tsrc, scalar, tdst, width ); \
} \
} \
\
return CV_OK; \
}
#define ICV_DEF_UN_ARI_OP_CASE (   __op__,
  worktype,
  cast_macro,
  src,
  scalar,
  dst,
  len 
)
#define shift   14

Typedef Documentation

typedef CvStatus(CV_STDCALL * CvAddWeightedFunc)(const void *src1, int step1, double alpha, const void *src2, int step2, double beta, double gamma, void *dst, int step, CvSize size)
typedef CvStatus(CV_STDCALL * CvScaledElWiseFunc)(const void *src1, int step1, const void *src2, int step2, void *dst, int step, CvSize size, double scale)

Function Documentation

CV_IMPL void cvAdd ( const void *  srcarr1,
const void *  srcarr2,
void *  dstarr,
const void *  maskarr 
)
CV_IMPL void cvAddS ( const void *  srcarr,
CvScalar  scalar,
void *  dstarr,
const void *  maskarr 
)
CV_IMPL void cvAddWeighted ( const CvArr srcAarr,
double  alpha,
const CvArr srcBarr,
double  beta,
double  gamma,
CvArr dstarr 
)
CV_IMPL void cvDiv ( const void *  srcarr1,
const void *  srcarr2,
void *  dstarr,
double  scale 
)
CV_IMPL void cvMul ( const void *  srcarr1,
const void *  srcarr2,
void *  dstarr,
double  scale 
)
src2 src2 isrc src src isrc typedef CvStatus ( CV_STDCALL CvRecipFunc) const
CV_IMPL void cvSub ( const void *  srcarr1,
const void *  srcarr2,
void *  dstarr,
const void *  maskarr 
)
CV_IMPL void cvSubRS ( const void *  srcarr,
CvScalar  scalar,
void *  dstarr,
const void *  maskarr 
)
ICV_DEF_DIV_OP_CASE ( 8u  ,
uchar  ,
int  ,
uchar  ,
div_start_row_int  ,
cvRound  ,
CV_CAST_8U  ,
CV_8TO32F  ,
CV_NONZERO  ,
src2   
)
src2 ICV_DEF_DIV_OP_CASE ( 16s  ,
short  ,
int  ,
short  ,
div_start_row_int  ,
cvRound  ,
CV_CAST_16S  ,
CV_NOP  ,
CV_NONZERO  ,
src2   
)
src2 src2 ICV_DEF_DIV_OP_CASE ( 32f  ,
float  ,
double  ,
int  ,
div_start_row_flt  ,
CV_NOP  ,
CV_CAST_32F  ,
CV_NOP  ,
div_check_zero_flt  ,
isrc   
)
src2 src2 isrc ICV_DEF_RECIP_OP_CASE ( 8u  ,
uchar  ,
int  ,
uchar  ,
div_start_row_int  ,
cvRound  ,
CV_CAST_8U  ,
CV_8TO32F  ,
CV_NONZERO  ,
src   
)
src2 src2 isrc src ICV_DEF_RECIP_OP_CASE ( 16s  ,
short  ,
int  ,
short  ,
div_start_row_int  ,
cvRound  ,
CV_CAST_16S  ,
CV_NOP  ,
CV_NONZERO  ,
src   
)
src2 src2 isrc src src ICV_DEF_RECIP_OP_CASE ( 32f  ,
float  ,
double  ,
int  ,
div_start_row_flt  ,
CV_NOP  ,
CV_CAST_32F  ,
CV_NOP  ,
div_check_zero_flt  ,
isrc   
)

Variable Documentation

src2 src2 isrc CV_CAST_16U
src2 src2 isrc src CV_CAST_32S
src2 src2 isrc src src CV_CAST_64F
src2 src2 isrc src CV_NONZERO
src2 src2 isrc src src CV_NOP
cvRound cvRound
src2 src2 isrc src src div_check_zero_dbl
src2 src2 isrc src src div_start_row_flt
src2 src2 isrc src div_start_row_int
src2 src2 isrc src src double
src2 src2 isrc src src isrc typedef int void* dst
src2 src2 isrc src int
const CvArr const CvArr const CvArr double scale
src2 src2 isrc src src isrc typedef int void int CvSize size
src2 src2 isrc src src isrc typedef int void int step
src2 src2 isrc src src isrc typedef int step1