1 // This file is part of OpenCV project.
2 // It is subject to the license terms in the LICENSE file found in the top-level directory
3 // of this distribution and at http://opencv.org/license.html.
4 //
5 // Copyright (C) 2018 Intel Corporation
6 
7 
8 #ifndef OPENCV_GAPI_CV_DEFS_HPP
9 #define OPENCV_GAPI_CV_DEFS_HPP
10 
11 #if defined(GAPI_STANDALONE)
12 // Simulate OpenCV definitions taken from various
13 // OpenCV interface headers if G-API is built in a
14 // standalone mode.
15 
16 // interface.h:
17 
18 typedef unsigned char uchar;
19 typedef          char schar;
20 
21 typedef unsigned short ushort;
22 
23 #define CV_CN_MAX     512
24 #define CV_CN_SHIFT   3
25 #define CV_DEPTH_MAX  (1 << CV_CN_SHIFT)
26 
27 
28 #define CV_8U   0
29 #define CV_8S   1
30 #define CV_16U  2
31 #define CV_16S  3
32 #define CV_32S  4
33 #define CV_32F  5
34 #define CV_64F  6
35 #define CV_USRTYPE1 7
36 
37 #define CV_MAT_DEPTH_MASK       (CV_DEPTH_MAX - 1)
38 #define CV_MAT_DEPTH(flags)     ((flags) & CV_MAT_DEPTH_MASK)
39 
40 #define CV_MAKETYPE(depth,cn) (CV_MAT_DEPTH(depth) + (((cn)-1) << CV_CN_SHIFT))
41 #define CV_MAKE_TYPE CV_MAKETYPE
42 
43 #define CV_8UC1 CV_MAKETYPE(CV_8U,1)
44 #define CV_8UC2 CV_MAKETYPE(CV_8U,2)
45 #define CV_8UC3 CV_MAKETYPE(CV_8U,3)
46 #define CV_8UC4 CV_MAKETYPE(CV_8U,4)
47 #define CV_8UC(n) CV_MAKETYPE(CV_8U,(n))
48 
49 #define CV_8SC1 CV_MAKETYPE(CV_8S,1)
50 #define CV_8SC2 CV_MAKETYPE(CV_8S,2)
51 #define CV_8SC3 CV_MAKETYPE(CV_8S,3)
52 #define CV_8SC4 CV_MAKETYPE(CV_8S,4)
53 #define CV_8SC(n) CV_MAKETYPE(CV_8S,(n))
54 
55 #define CV_16UC1 CV_MAKETYPE(CV_16U,1)
56 #define CV_16UC2 CV_MAKETYPE(CV_16U,2)
57 #define CV_16UC3 CV_MAKETYPE(CV_16U,3)
58 #define CV_16UC4 CV_MAKETYPE(CV_16U,4)
59 #define CV_16UC(n) CV_MAKETYPE(CV_16U,(n))
60 
61 #define CV_16SC1 CV_MAKETYPE(CV_16S,1)
62 #define CV_16SC2 CV_MAKETYPE(CV_16S,2)
63 #define CV_16SC3 CV_MAKETYPE(CV_16S,3)
64 #define CV_16SC4 CV_MAKETYPE(CV_16S,4)
65 #define CV_16SC(n) CV_MAKETYPE(CV_16S,(n))
66 
67 #define CV_32SC1 CV_MAKETYPE(CV_32S,1)
68 #define CV_32SC2 CV_MAKETYPE(CV_32S,2)
69 #define CV_32SC3 CV_MAKETYPE(CV_32S,3)
70 #define CV_32SC4 CV_MAKETYPE(CV_32S,4)
71 #define CV_32SC(n) CV_MAKETYPE(CV_32S,(n))
72 
73 #define CV_32FC1 CV_MAKETYPE(CV_32F,1)
74 #define CV_32FC2 CV_MAKETYPE(CV_32F,2)
75 #define CV_32FC3 CV_MAKETYPE(CV_32F,3)
76 #define CV_32FC4 CV_MAKETYPE(CV_32F,4)
77 #define CV_32FC(n) CV_MAKETYPE(CV_32F,(n))
78 
79 #define CV_64FC1 CV_MAKETYPE(CV_64F,1)
80 #define CV_64FC2 CV_MAKETYPE(CV_64F,2)
81 #define CV_64FC3 CV_MAKETYPE(CV_64F,3)
82 #define CV_64FC4 CV_MAKETYPE(CV_64F,4)
83 #define CV_64FC(n) CV_MAKETYPE(CV_64F,(n))
84 
85 // cvdef.h:
86 
87 #define CV_MAT_CN_MASK          ((CV_CN_MAX - 1) << CV_CN_SHIFT)
88 #define CV_MAT_CN(flags)        ((((flags) & CV_MAT_CN_MASK) >> CV_CN_SHIFT) + 1)
89 #define CV_MAT_TYPE_MASK        (CV_DEPTH_MAX*CV_CN_MAX - 1)
90 #define CV_MAT_TYPE(flags)      ((flags) & CV_MAT_TYPE_MASK)
91 #define CV_MAT_CONT_FLAG_SHIFT  14
92 #define CV_MAT_CONT_FLAG        (1 << CV_MAT_CONT_FLAG_SHIFT)
93 #define CV_IS_MAT_CONT(flags)   ((flags) & CV_MAT_CONT_FLAG)
94 #define CV_IS_CONT_MAT          CV_IS_MAT_CONT
95 #define CV_SUBMAT_FLAG_SHIFT    15
96 #define CV_SUBMAT_FLAG          (1 << CV_SUBMAT_FLAG_SHIFT)
97 #define CV_IS_SUBMAT(flags)     ((flags) & CV_MAT_SUBMAT_FLAG)
98 
99 ///** Size of each channel item,
100 //   0x8442211 = 1000 0100 0100 0010 0010 0001 0001 ~ array of sizeof(arr_type_elem) */
101 //#define CV_ELEM_SIZE1(type) \
102 //    ((((sizeof(size_t)<<28)|0x8442211) >> CV_MAT_DEPTH(type)*4) & 15)
103 
104 #define CV_MAT_TYPE(flags)      ((flags) & CV_MAT_TYPE_MASK)
105 
106 /** 0x3a50 = 11 10 10 01 01 00 00 ~ array of log2(sizeof(arr_type_elem)) */
107 #define CV_ELEM_SIZE(type) \
108     (CV_MAT_CN(type) << ((((sizeof(size_t)/4+1)*16384|0x3a50) >> CV_MAT_DEPTH(type)*2) & 3))
109 
110 #ifndef CV_OVERRIDE
111 #  define CV_OVERRIDE override
112 #endif
113 
114 // base.h:
115 namespace cv
116 {
117 enum BorderTypes {
118     BORDER_CONSTANT    = 0, //!< `iiiiii|abcdefgh|iiiiiii`  with some specified `i`
119     BORDER_REPLICATE   = 1, //!< `aaaaaa|abcdefgh|hhhhhhh`
120     BORDER_REFLECT     = 2, //!< `fedcba|abcdefgh|hgfedcb`
121     BORDER_WRAP        = 3, //!< `cdefgh|abcdefgh|abcdefg`
122     BORDER_REFLECT_101 = 4, //!< `gfedcb|abcdefgh|gfedcba`
123     BORDER_TRANSPARENT = 5, //!< `uvwxyz|abcdefgh|ijklmno`
124 
125     BORDER_REFLECT101  = BORDER_REFLECT_101, //!< same as BORDER_REFLECT_101
126     BORDER_DEFAULT     = BORDER_REFLECT_101, //!< same as BORDER_REFLECT_101
127     BORDER_ISOLATED    = 16 //!< do not look outside of ROI
128 };
129 // imgproc.hpp:
130 enum InterpolationFlags{
131     INTER_NEAREST        = 0,
132     INTER_LINEAR         = 1,
133     INTER_CUBIC          = 2,
134     INTER_AREA           = 3,
135     INTER_LANCZOS4       = 4,
136     INTER_LINEAR_EXACT   = 5,
137     INTER_MAX            = 7,
138 };
139 } // namespace cv
140 
cvFloor(double value)141 static inline int cvFloor( double value )
142 {
143     int i = (int)value;
144     return i - (i > value);
145 }
146 
147 #endif //  defined(GAPI_STANDALONE)
148 
149 #endif //  OPENCV_GAPI_CV_DEFS_HPP
150