Wondercoll
Main Page
Packages
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Wondercoll
jni
cxcore
src
_cxcore.h
Go to the documentation of this file.
1
/*M///////////////////////////////////////////////////////////////////////////////////////
2
//
3
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
4
//
5
// By downloading, copying, installing or using the software you agree to this license.
6
// If you do not agree to this license, do not download, install,
7
// copy or use the software.
8
//
9
//
10
// Intel License Agreement
11
// For Open Source Computer Vision Library
12
//
13
// Copyright (C) 2000, Intel Corporation, all rights reserved.
14
// Third party copyrights are property of their respective owners.
15
//
16
// Redistribution and use in source and binary forms, with or without modification,
17
// are permitted provided that the following conditions are met:
18
//
19
// * Redistribution's of source code must retain the above copyright notice,
20
// this list of conditions and the following disclaimer.
21
//
22
// * Redistribution's in binary form must reproduce the above copyright notice,
23
// this list of conditions and the following disclaimer in the documentation
24
// and/or other materials provided with the distribution.
25
//
26
// * The name of Intel Corporation may not be used to endorse or promote products
27
// derived from this software without specific prior written permission.
28
//
29
// This software is provided by the copyright holders and contributors "as is" and
30
// any express or implied warranties, including, but not limited to, the implied
31
// warranties of merchantability and fitness for a particular purpose are disclaimed.
32
// In no event shall the Intel Corporation or contributors be liable for any direct,
33
// indirect, incidental, special, exemplary, or consequential damages
34
// (including, but not limited to, procurement of substitute goods or services;
35
// loss of use, data, or profits; or business interruption) however caused
36
// and on any theory of liability, whether in contract, strict liability,
37
// or tort (including negligence or otherwise) arising in any way out of
38
// the use of this software, even if advised of the possibility of such damage.
39
//
40
//M*/
41
42
#ifndef _CXCORE_INTERNAL_H_
43
#define _CXCORE_INTERNAL_H_
44
45
#if defined _MSC_VER && _MSC_VER >= 1200
46
/* disable warnings related to inline functions */
47
#pragma warning( disable: 4711 4710 4514 )
48
#endif
49
50
typedef
unsigned
long
ulong
;
51
52
#ifdef __BORLANDC__
53
#define WIN32
54
#define CV_DLL
55
#undef _CV_ALWAYS_PROFILE_
56
#define _CV_ALWAYS_NO_PROFILE_
57
#endif
58
59
#include "
cxcore.h
"
60
#include "
cxmisc.h
"
61
#include "
_cxipp.h
"
62
#include <math.h>
63
#include <assert.h>
64
#include <string.h>
65
#include <stdlib.h>
66
#include <stdio.h>
67
#include <limits.h>
68
#include <float.h>
69
70
// -128.f ... 255.f
71
extern
const
float
icv8x32fTab
[];
72
#define CV_8TO32F(x) icv8x32fTab[(x)+128]
73
74
extern
const
ushort
icv8x16uSqrTab
[];
75
#define CV_SQR_8U(x) icv8x16uSqrTab[(x)+255]
76
77
extern
const
char
*
icvHersheyGlyphs
[];
78
79
extern
const
signed
char
icvDepthToType
[];
80
81
#define icvIplToCvDepth( depth ) \
82
icvDepthToType[(((depth) & 255) >> 2) + ((depth) < 0)]
83
84
extern
const
uchar
icvSaturate8u
[];
85
#define CV_FAST_CAST_8U(t) (assert(-256 <= (t) && (t) <= 512), icvSaturate8u[(t)+256])
86
#define CV_MIN_8U(a,b) ((a) - CV_FAST_CAST_8U((a) - (b)))
87
#define CV_MAX_8U(a,b) ((a) + CV_FAST_CAST_8U((b) - (a)))
88
89
typedef
CvFunc2D_3A1I
CvArithmBinMaskFunc2D
;
90
typedef
CvFunc2D_2A1P1I
CvArithmUniMaskFunc2D
;
91
92
93
/****************************************************************************************\
94
* Complex arithmetics *
95
\****************************************************************************************/
96
97
struct
CvComplex32f
;
98
struct
CvComplex64f
;
99
100
struct
CvComplex32f
101
{
102
float
re
,
im
;
103
104
CvComplex32f
() {}
105
CvComplex32f
(
float
_re,
float
_im=0 ) :
re
(_re),
im
(_im) {}
106
explicit
CvComplex32f
(
const
CvComplex64f
& v );
107
//CvComplex32f( const CvComplex32f& v ) : re(v.re), im(v.im) {}
108
//CvComplex32f& operator = (const CvComplex32f& v ) { re = v.re; im = v.im; return *this; }
109
operator
CvComplex64f
()
const
;
110
};
111
112
struct
CvComplex64f
113
{
114
double
re
,
im
;
115
116
CvComplex64f
() {}
117
CvComplex64f
(
double
_re,
double
_im=0 ) :
re
(_re),
im
(_im) {}
118
explicit
CvComplex64f
(
const
CvComplex32f
& v );
119
//CvComplex64f( const CvComplex64f& v ) : re(v.re), im(v.im) {}
120
//CvComplex64f& operator = (const CvComplex64f& v ) { re = v.re; im = v.im; return *this; }
121
operator
CvComplex32f
()
const
;
122
};
123
124
inline
CvComplex32f::CvComplex32f
(
const
CvComplex64f
& v ) : re((
float
)v.re), im((
float
)v.im) {}
125
inline
CvComplex64f::CvComplex64f
(
const
CvComplex32f
& v ) : re(v.re), im(v.im) {}
126
127
inline
CvComplex32f
operator +
(
CvComplex32f
a
,
CvComplex32f
b
)
128
{
129
return
CvComplex32f
( a.
re
+ b.
re
, a.
im
+ b.
im
);
130
}
131
132
inline
CvComplex32f
&
operator +=
(
CvComplex32f
&
a
,
CvComplex32f
b
)
133
{
134
a.
re
+= b.
re
;
135
a.
im
+= b.
im
;
136
return
a
;
137
}
138
139
inline
CvComplex32f
operator -
(
CvComplex32f
a
,
CvComplex32f
b
)
140
{
141
return
CvComplex32f
( a.
re
- b.
re
, a.
im
- b.
im
);
142
}
143
144
inline
CvComplex32f
&
operator -=
(
CvComplex32f
&
a
,
CvComplex32f
b
)
145
{
146
a.
re
-= b.
re
;
147
a.
im
-= b.
im
;
148
return
a
;
149
}
150
151
inline
CvComplex32f
operator -
(
CvComplex32f
a
)
152
{
153
return
CvComplex32f
( -a.
re
, -a.
im
);
154
}
155
156
inline
CvComplex32f
operator *
(
CvComplex32f
a
,
CvComplex32f
b
)
157
{
158
return
CvComplex32f
( a.
re
*b.
re
- a.
im
*b.
im
, a.
re
*b.
im
+ a.
im
*b.
re
);
159
}
160
161
inline
double
abs
(
CvComplex32f
a
)
162
{
163
return
sqrt( (
double
)a.
re
*a.
re
+ (
double
)a.
im
*a.
im
);
164
}
165
166
inline
CvComplex32f
conj
(
CvComplex32f
a
)
167
{
168
return
CvComplex32f
( a.
re
, -a.
im
);
169
}
170
171
172
inline
CvComplex32f
operator /
(
CvComplex32f
a
,
CvComplex32f
b
)
173
{
174
double
t = 1./((
double
)b.
re
*b.
re
+ (
double
)b.
im
*b.
im
);
175
return
CvComplex32f
( (
float
)((a.
re
*b.
re
+ a.
im
*b.
im
)*t),
176
(
float
)((-a.
re
*b.
im
+ a.
im
*b.
re
)*t) );
177
}
178
179
inline
CvComplex32f
operator *
(
double
a
,
CvComplex32f
b
)
180
{
181
return
CvComplex32f
( (
float
)(a*b.
re
), (
float
)(a*b.
im
) );
182
}
183
184
inline
CvComplex32f
operator *
(
CvComplex32f
a
,
double
b
)
185
{
186
return
CvComplex32f
( (
float
)(a.
re
*b), (
float
)(a.
im
*b) );
187
}
188
189
inline
CvComplex32f::operator
CvComplex64f
()
const
190
{
191
return
CvComplex64f
(re,im);
192
}
193
194
195
inline
CvComplex64f
operator +
(
CvComplex64f
a
,
CvComplex64f
b
)
196
{
197
return
CvComplex64f
( a.
re
+ b.
re
, a.
im
+ b.
im
);
198
}
199
200
inline
CvComplex64f
&
operator +=
(
CvComplex64f
&
a
,
CvComplex64f
b
)
201
{
202
a.
re
+= b.
re
;
203
a.
im
+= b.
im
;
204
return
a
;
205
}
206
207
inline
CvComplex64f
operator -
(
CvComplex64f
a
,
CvComplex64f
b
)
208
{
209
return
CvComplex64f
( a.
re
- b.
re
, a.
im
- b.
im
);
210
}
211
212
inline
CvComplex64f
&
operator -=
(
CvComplex64f
&
a
,
CvComplex64f
b
)
213
{
214
a.
re
-= b.
re
;
215
a.
im
-= b.
im
;
216
return
a
;
217
}
218
219
inline
CvComplex64f
operator -
(
CvComplex64f
a
)
220
{
221
return
CvComplex64f
( -a.
re
, -a.
im
);
222
}
223
224
inline
CvComplex64f
operator *
(
CvComplex64f
a
,
CvComplex64f
b
)
225
{
226
return
CvComplex64f
( a.
re
*b.
re
- a.
im
*b.
im
, a.
re
*b.
im
+ a.
im
*b.
re
);
227
}
228
229
inline
double
abs
(
CvComplex64f
a
)
230
{
231
return
sqrt( (
double
)a.
re
*a.
re
+ (
double
)a.
im
*a.
im
);
232
}
233
234
inline
CvComplex64f
operator /
(
CvComplex64f
a
,
CvComplex64f
b
)
235
{
236
double
t = 1./((
double
)b.
re
*b.
re
+ (
double
)b.
im
*b.
im
);
237
return
CvComplex64f
( (a.
re
*b.
re
+ a.
im
*b.
im
)*t,
238
(-a.
re
*b.
im
+ a.
im
*b.
re
)*t );
239
}
240
241
inline
CvComplex64f
operator *
(
double
a
,
CvComplex64f
b
)
242
{
243
return
CvComplex64f
( a*b.
re
, a*b.
im
);
244
}
245
246
inline
CvComplex64f
operator *
(
CvComplex64f
a
,
double
b
)
247
{
248
return
CvComplex64f
( a.
re
*b, a.
im
*b );
249
}
250
251
inline
CvComplex64f::operator
CvComplex32f
()
const
252
{
253
return
CvComplex32f
((
float
)re,(
float
)im);
254
}
255
256
inline
CvComplex64f
conj
(
CvComplex64f
a
)
257
{
258
return
CvComplex64f
( a.
re
, -a.
im
);
259
}
260
261
inline
CvComplex64f
operator +
(
CvComplex64f
a
,
CvComplex32f
b
)
262
{
263
return
CvComplex64f
( a.
re
+ b.
re
, a.
im
+ b.
im
);
264
}
265
266
inline
CvComplex64f
operator +
(
CvComplex32f
a
,
CvComplex64f
b
)
267
{
268
return
CvComplex64f
( a.
re
+ b.
re
, a.
im
+ b.
im
);
269
}
270
271
inline
CvComplex64f
operator -
(
CvComplex64f
a
,
CvComplex32f
b
)
272
{
273
return
CvComplex64f
( a.
re
- b.
re
, a.
im
- b.
im
);
274
}
275
276
inline
CvComplex64f
operator -
(
CvComplex32f
a
,
CvComplex64f
b
)
277
{
278
return
CvComplex64f
( a.
re
- b.
re
, a.
im
- b.
im
);
279
}
280
281
inline
CvComplex64f
operator *
(
CvComplex64f
a
,
CvComplex32f
b
)
282
{
283
return
CvComplex64f
( a.
re
*b.
re
- a.
im
*b.
im
, a.
re
*b.
im
+ a.
im
*b.
re
);
284
}
285
286
inline
CvComplex64f
operator *
(
CvComplex32f
a
,
CvComplex64f
b
)
287
{
288
return
CvComplex64f
( a.
re
*b.
re
- a.
im
*b.
im
, a.
re
*b.
im
+ a.
im
*b.
re
);
289
}
290
291
292
typedef
CvStatus
(
CV_STDCALL
*
CvCopyMaskFunc
)(
const
void
*
src
,
int
src_step,
293
void
*
dst
,
int
dst_step
,
CvSize
size
,
294
const
void
*
mask
,
int
mask_step
);
295
296
CvCopyMaskFunc
icvGetCopyMaskFunc
(
int
elem_size
);
297
298
CvStatus
CV_STDCALL
icvSetZero_8u_C1R
(
uchar
*
dst
,
int
dststep
,
CvSize
size
);
299
300
CvStatus
CV_STDCALL
icvScale_32f
(
const
float
*
src
,
float
*
dst
,
int
len
,
float
a
,
float
b
);
301
CvStatus
CV_STDCALL
icvScale_64f
(
const
double
*
src
,
double
*
dst
,
int
len
,
double
a
,
double
b
);
302
303
CvStatus
CV_STDCALL
icvLUT_Transform8u_8u_C1R
(
const
uchar
*
src
,
int
srcstep
,
uchar
*
dst
,
304
int
dststep
,
CvSize
size
,
const
uchar
*
lut
);
305
CvStatus
CV_STDCALL
icvLUT_Transform8u_16u_C1R
(
const
uchar
*
src
,
int
srcstep
,
ushort
*
dst
,
306
int
dststep
,
CvSize
size
,
const
ushort
*
lut
);
307
CvStatus
CV_STDCALL
icvLUT_Transform8u_32s_C1R
(
const
uchar
*
src
,
int
srcstep
,
int
*
dst
,
308
int
dststep
,
CvSize
size
,
const
int
*
lut
);
309
CvStatus
CV_STDCALL
icvLUT_Transform8u_64f_C1R
(
const
uchar
*
src
,
int
srcstep
,
double
*
dst
,
310
int
dststep
,
CvSize
size
,
const
double
*
lut
);
311
312
CvStatus
CV_STDCALL
icvLUT_Transform8u_8u_C2R
(
const
uchar
*
src
,
int
srcstep
,
uchar
*
dst
,
313
int
dststep
,
CvSize
size
,
const
uchar
*
lut
);
314
CvStatus
CV_STDCALL
icvLUT_Transform8u_8u_C3R
(
const
uchar
*
src
,
int
srcstep
,
uchar
*
dst
,
315
int
dststep
,
CvSize
size
,
const
uchar
*
lut
);
316
CvStatus
CV_STDCALL
icvLUT_Transform8u_8u_C4R
(
const
uchar
*
src
,
int
srcstep
,
uchar
*
dst
,
317
int
dststep
,
CvSize
size
,
const
uchar
*
lut
);
318
319
typedef
CvStatus
(
CV_STDCALL
*
CvLUT_TransformFunc
)(
const
void
*
src
,
int
srcstep
,
void
*
dst
,
320
int
dststep
,
CvSize
size
,
const
void
*
lut
);
321
322
CV_INLINE
CvStatus
323
icvLUT_Transform8u_8s_C1R
(
const
uchar
*
src
,
int
srcstep
,
schar
*
dst
,
324
int
dststep
,
CvSize
size
,
const
schar
*
lut
)
325
{
326
return
icvLUT_Transform8u_8u_C1R
( src, srcstep, (
uchar
*)dst,
327
dststep, size, (
const
uchar
*)lut );
328
}
329
330
CV_INLINE
CvStatus
331
icvLUT_Transform8u_16s_C1R
(
const
uchar
*
src
,
int
srcstep
,
short
*
dst
,
332
int
dststep
,
CvSize
size
,
const
short
*
lut
)
333
{
334
return
icvLUT_Transform8u_16u_C1R
( src, srcstep, (
ushort
*)dst,
335
dststep, size, (
const
ushort
*)lut );
336
}
337
338
CV_INLINE
CvStatus
339
icvLUT_Transform8u_32f_C1R
(
const
uchar
*
src
,
int
srcstep
,
float
*
dst
,
340
int
dststep
,
CvSize
size
,
const
float
*
lut
)
341
{
342
return
icvLUT_Transform8u_32s_C1R
( src, srcstep, (
int
*)dst,
343
dststep, size, (
const
int
*)lut );
344
}
345
346
#endif
/*_CXCORE_INTERNAL_H_*/
Generated on Thu Apr 4 2013 14:33:04 for Wondercoll by
1.8.3.1