|
1 |
| -#include "cvcheck.h" |
2 |
| -#include <cv.hpp> |
3 |
| -#include <highgui.h> |
4 |
| -#include "bea.h" |
5 | 1 | #include "opencvjs.h"
|
6 |
| -#include "customTypes.h" |
7 | 2 | using namespace cv;
|
8 | 3 | namespace bea {
|
9 |
| - template<> struct Convert<cv::TermCriteria> { |
10 |
| - static bool Is(v8::Handle<v8::Value> v) { |
11 |
| - return !v.IsEmpty() && v->IsObject(); |
12 |
| - } |
13 |
| - |
14 |
| - static cv::TermCriteria FromJS(v8::Handle<v8::Value> v, int nArg) { |
15 |
| - const char* msg = "Object with the following properties expected: type, maxCount, epsilon. This will be cast to 'cv::TermCriteria'"; |
16 |
| - if (!Is(v)) BEATHROW(); |
17 |
| - v8::HandleScope scope; |
18 |
| - v8::Local<v8::Object> obj = v->ToObject(); |
19 |
| - cv::TermCriteria ret; |
20 |
| - ret.type = bea::Convert<int>::FromJS(obj->Get(v8::String::NewSymbol("type")), nArg); |
21 |
| - ret.maxCount = bea::Convert<int>::FromJS(obj->Get(v8::String::NewSymbol("maxCount")), nArg); |
22 |
| - ret.epsilon = bea::Convert<double>::FromJS(obj->Get(v8::String::NewSymbol("epsilon")), nArg); |
23 |
| - return ret; |
24 |
| - } |
25 |
| - |
26 |
| - static v8::Handle<v8::Value> ToJS(cv::TermCriteria const& v) { |
27 |
| - v8::HandleScope scope; |
28 |
| - v8::Local<v8::Object> obj = v8::Object::New(); |
29 |
| - obj->Set(v8::String::NewSymbol("type"), bea::Convert<int>::ToJS(v.type)); |
30 |
| - obj->Set(v8::String::NewSymbol("maxCount"), bea::Convert<int>::ToJS(v.maxCount)); |
31 |
| - obj->Set(v8::String::NewSymbol("epsilon"), bea::Convert<double>::ToJS(v.epsilon)); |
32 |
| - return scope.Close(obj); |
33 |
| - } |
34 |
| - |
35 |
| - }; |
36 |
| - |
37 |
| - template<> struct Convert<cv::Point> { |
38 |
| - static bool Is(v8::Handle<v8::Value> v) { |
39 |
| - return !v.IsEmpty() && v->IsObject(); |
40 |
| - } |
41 |
| - |
42 |
| - static cv::Point FromJS(v8::Handle<v8::Value> v, int nArg) { |
43 |
| - const char* msg = "Object with the following properties expected: x, y. This will be cast to 'cv::Point'"; |
44 |
| - if (!Is(v)) BEATHROW(); |
45 |
| - v8::HandleScope scope; |
46 |
| - v8::Local<v8::Object> obj = v->ToObject(); |
47 |
| - cv::Point ret; |
48 |
| - ret.x = bea::Convert<int>::FromJS(obj->Get(v8::String::NewSymbol("x")), nArg); |
49 |
| - ret.y = bea::Convert<int>::FromJS(obj->Get(v8::String::NewSymbol("y")), nArg); |
50 |
| - return ret; |
51 |
| - } |
52 |
| - |
53 |
| - static v8::Handle<v8::Value> ToJS(cv::Point const& v) { |
54 |
| - v8::HandleScope scope; |
55 |
| - v8::Local<v8::Object> obj = v8::Object::New(); |
56 |
| - obj->Set(v8::String::NewSymbol("x"), bea::Convert<int>::ToJS(v.x)); |
57 |
| - obj->Set(v8::String::NewSymbol("y"), bea::Convert<int>::ToJS(v.y)); |
58 |
| - return scope.Close(obj); |
59 |
| - } |
60 |
| - |
61 |
| - }; |
62 |
| - |
63 |
| - template<> struct Convert<cv::Point2f> { |
64 |
| - static bool Is(v8::Handle<v8::Value> v) { |
65 |
| - return !v.IsEmpty() && v->IsObject(); |
66 |
| - } |
67 |
| - |
68 |
| - static cv::Point2f FromJS(v8::Handle<v8::Value> v, int nArg) { |
69 |
| - const char* msg = "Object with the following properties expected: x, y. This will be cast to 'cv::Point2f'"; |
70 |
| - if (!Is(v)) BEATHROW(); |
71 |
| - v8::HandleScope scope; |
72 |
| - v8::Local<v8::Object> obj = v->ToObject(); |
73 |
| - cv::Point2f ret; |
74 |
| - ret.x = bea::Convert<float>::FromJS(obj->Get(v8::String::NewSymbol("x")), nArg); |
75 |
| - ret.y = bea::Convert<float>::FromJS(obj->Get(v8::String::NewSymbol("y")), nArg); |
76 |
| - return ret; |
77 |
| - } |
78 |
| - |
79 |
| - static v8::Handle<v8::Value> ToJS(cv::Point2f const& v) { |
80 |
| - v8::HandleScope scope; |
81 |
| - v8::Local<v8::Object> obj = v8::Object::New(); |
82 |
| - obj->Set(v8::String::NewSymbol("x"), bea::Convert<float>::ToJS(v.x)); |
83 |
| - obj->Set(v8::String::NewSymbol("y"), bea::Convert<float>::ToJS(v.y)); |
84 |
| - return scope.Close(obj); |
85 |
| - } |
86 |
| - |
87 |
| - }; |
88 |
| - |
89 |
| - template<> struct Convert<cv::Size> { |
90 |
| - static bool Is(v8::Handle<v8::Value> v) { |
91 |
| - return !v.IsEmpty() && v->IsObject(); |
92 |
| - } |
93 |
| - |
94 |
| - static cv::Size FromJS(v8::Handle<v8::Value> v, int nArg) { |
95 |
| - const char* msg = "Object with the following properties expected: width, height. This will be cast to 'cv::Size'"; |
96 |
| - if (!Is(v)) BEATHROW(); |
97 |
| - v8::HandleScope scope; |
98 |
| - v8::Local<v8::Object> obj = v->ToObject(); |
99 |
| - cv::Size ret; |
100 |
| - ret.width = bea::Convert<int>::FromJS(obj->Get(v8::String::NewSymbol("width")), nArg); |
101 |
| - ret.height = bea::Convert<int>::FromJS(obj->Get(v8::String::NewSymbol("height")), nArg); |
102 |
| - return ret; |
103 |
| - } |
104 |
| - |
105 |
| - static v8::Handle<v8::Value> ToJS(cv::Size const& v) { |
106 |
| - v8::HandleScope scope; |
107 |
| - v8::Local<v8::Object> obj = v8::Object::New(); |
108 |
| - obj->Set(v8::String::NewSymbol("width"), bea::Convert<int>::ToJS(v.width)); |
109 |
| - obj->Set(v8::String::NewSymbol("height"), bea::Convert<int>::ToJS(v.height)); |
110 |
| - return scope.Close(obj); |
111 |
| - } |
112 |
| - |
113 |
| - }; |
114 |
| - |
115 |
| - template<> struct Convert<cv::Size2f> { |
116 |
| - static bool Is(v8::Handle<v8::Value> v) { |
117 |
| - return !v.IsEmpty() && v->IsObject(); |
118 |
| - } |
119 |
| - |
120 |
| - static cv::Size2f FromJS(v8::Handle<v8::Value> v, int nArg) { |
121 |
| - const char* msg = "Object with the following properties expected: width, height. This will be cast to 'cv::Size2f'"; |
122 |
| - if (!Is(v)) BEATHROW(); |
123 |
| - v8::HandleScope scope; |
124 |
| - v8::Local<v8::Object> obj = v->ToObject(); |
125 |
| - cv::Size2f ret; |
126 |
| - ret.width = bea::Convert<float>::FromJS(obj->Get(v8::String::NewSymbol("width")), nArg); |
127 |
| - ret.height = bea::Convert<float>::FromJS(obj->Get(v8::String::NewSymbol("height")), nArg); |
128 |
| - return ret; |
129 |
| - } |
130 |
| - |
131 |
| - static v8::Handle<v8::Value> ToJS(cv::Size2f const& v) { |
132 |
| - v8::HandleScope scope; |
133 |
| - v8::Local<v8::Object> obj = v8::Object::New(); |
134 |
| - obj->Set(v8::String::NewSymbol("width"), bea::Convert<float>::ToJS(v.width)); |
135 |
| - obj->Set(v8::String::NewSymbol("height"), bea::Convert<float>::ToJS(v.height)); |
136 |
| - return scope.Close(obj); |
137 |
| - } |
138 |
| - |
139 |
| - }; |
140 |
| - |
141 |
| - template<> struct Convert<cv::Rect> { |
142 |
| - static bool Is(v8::Handle<v8::Value> v) { |
143 |
| - return !v.IsEmpty() && v->IsObject(); |
144 |
| - } |
145 |
| - |
146 |
| - static cv::Rect FromJS(v8::Handle<v8::Value> v, int nArg) { |
147 |
| - const char* msg = "Object with the following properties expected: x, y, width, height. This will be cast to 'cv::Rect'"; |
148 |
| - if (!Is(v)) BEATHROW(); |
149 |
| - v8::HandleScope scope; |
150 |
| - v8::Local<v8::Object> obj = v->ToObject(); |
151 |
| - cv::Rect ret; |
152 |
| - ret.x = bea::Convert<int>::FromJS(obj->Get(v8::String::NewSymbol("x")), nArg); |
153 |
| - ret.y = bea::Convert<int>::FromJS(obj->Get(v8::String::NewSymbol("y")), nArg); |
154 |
| - ret.width = bea::Convert<int>::FromJS(obj->Get(v8::String::NewSymbol("width")), nArg); |
155 |
| - ret.height = bea::Convert<int>::FromJS(obj->Get(v8::String::NewSymbol("height")), nArg); |
156 |
| - return ret; |
157 |
| - } |
158 |
| - |
159 |
| - static v8::Handle<v8::Value> ToJS(cv::Rect const& v) { |
160 |
| - v8::HandleScope scope; |
161 |
| - v8::Local<v8::Object> obj = v8::Object::New(); |
162 |
| - obj->Set(v8::String::NewSymbol("x"), bea::Convert<int>::ToJS(v.x)); |
163 |
| - obj->Set(v8::String::NewSymbol("y"), bea::Convert<int>::ToJS(v.y)); |
164 |
| - obj->Set(v8::String::NewSymbol("width"), bea::Convert<int>::ToJS(v.width)); |
165 |
| - obj->Set(v8::String::NewSymbol("height"), bea::Convert<int>::ToJS(v.height)); |
166 |
| - return scope.Close(obj); |
167 |
| - } |
168 |
| - |
169 |
| - }; |
170 |
| - |
171 |
| - template<> struct Convert<cv::Range> { |
172 |
| - static bool Is(v8::Handle<v8::Value> v) { |
173 |
| - return !v.IsEmpty() && v->IsObject(); |
174 |
| - } |
175 |
| - |
176 |
| - static cv::Range FromJS(v8::Handle<v8::Value> v, int nArg) { |
177 |
| - const char* msg = "Object with the following properties expected: start, end. This will be cast to 'cv::Range'"; |
178 |
| - if (!Is(v)) BEATHROW(); |
179 |
| - v8::HandleScope scope; |
180 |
| - v8::Local<v8::Object> obj = v->ToObject(); |
181 |
| - cv::Range ret; |
182 |
| - ret.start = bea::Convert<int>::FromJS(obj->Get(v8::String::NewSymbol("start")), nArg); |
183 |
| - ret.end = bea::Convert<int>::FromJS(obj->Get(v8::String::NewSymbol("end")), nArg); |
184 |
| - return ret; |
185 |
| - } |
186 |
| - |
187 |
| - static v8::Handle<v8::Value> ToJS(cv::Range const& v) { |
188 |
| - v8::HandleScope scope; |
189 |
| - v8::Local<v8::Object> obj = v8::Object::New(); |
190 |
| - obj->Set(v8::String::NewSymbol("start"), bea::Convert<int>::ToJS(v.start)); |
191 |
| - obj->Set(v8::String::NewSymbol("end"), bea::Convert<int>::ToJS(v.end)); |
192 |
| - return scope.Close(obj); |
193 |
| - } |
194 |
| - |
195 |
| - }; |
196 |
| - |
197 |
| - template<> struct Convert<cv::RotatedRect> { |
198 |
| - static bool Is(v8::Handle<v8::Value> v) { |
199 |
| - return !v.IsEmpty() && v->IsObject(); |
200 |
| - } |
201 |
| - |
202 |
| - static cv::RotatedRect FromJS(v8::Handle<v8::Value> v, int nArg) { |
203 |
| - const char* msg = "Object with the following properties expected: center, size, angle. This will be cast to 'cv::RotatedRect'"; |
204 |
| - if (!Is(v)) BEATHROW(); |
205 |
| - v8::HandleScope scope; |
206 |
| - v8::Local<v8::Object> obj = v->ToObject(); |
207 |
| - cv::RotatedRect ret; |
208 |
| - ret.center = bea::Convert<cv::Point2f>::FromJS(obj->Get(v8::String::NewSymbol("center")), nArg); |
209 |
| - ret.size = bea::Convert<cv::Size2f>::FromJS(obj->Get(v8::String::NewSymbol("size")), nArg); |
210 |
| - ret.angle = bea::Convert<float>::FromJS(obj->Get(v8::String::NewSymbol("angle")), nArg); |
211 |
| - return ret; |
212 |
| - } |
213 |
| - |
214 |
| - static v8::Handle<v8::Value> ToJS(cv::RotatedRect const& v) { |
215 |
| - v8::HandleScope scope; |
216 |
| - v8::Local<v8::Object> obj = v8::Object::New(); |
217 |
| - obj->Set(v8::String::NewSymbol("center"), bea::Convert<cv::Point2f>::ToJS(v.center)); |
218 |
| - obj->Set(v8::String::NewSymbol("size"), bea::Convert<cv::Size2f>::ToJS(v.size)); |
219 |
| - obj->Set(v8::String::NewSymbol("angle"), bea::Convert<float>::ToJS(v.angle)); |
220 |
| - return scope.Close(obj); |
221 |
| - } |
222 |
| - |
223 |
| - }; |
224 |
| - |
225 |
| - template<> struct Convert<cv::minMaxLocRet> { |
226 |
| - static bool Is(v8::Handle<v8::Value> v) { |
227 |
| - return !v.IsEmpty() && v->IsObject(); |
228 |
| - } |
229 |
| - |
230 |
| - static cv::minMaxLocRet FromJS(v8::Handle<v8::Value> v, int nArg) { |
231 |
| - const char* msg = "Object with the following properties expected: minVal, maxVal, minIdx, maxIdx. This will be cast to 'cv::minMaxLocRet'"; |
232 |
| - if (!Is(v)) BEATHROW(); |
233 |
| - v8::HandleScope scope; |
234 |
| - v8::Local<v8::Object> obj = v->ToObject(); |
235 |
| - cv::minMaxLocRet ret; |
236 |
| - ret.minVal = bea::Convert<double>::FromJS(obj->Get(v8::String::NewSymbol("minVal")), nArg); |
237 |
| - ret.maxVal = bea::Convert<double>::FromJS(obj->Get(v8::String::NewSymbol("maxVal")), nArg); |
238 |
| - ret.minIdx = bea::Convert<int>::FromJS(obj->Get(v8::String::NewSymbol("minIdx")), nArg); |
239 |
| - ret.maxIdx = bea::Convert<int>::FromJS(obj->Get(v8::String::NewSymbol("maxIdx")), nArg); |
240 |
| - return ret; |
241 |
| - } |
242 |
| - |
243 |
| - static v8::Handle<v8::Value> ToJS(cv::minMaxLocRet const& v) { |
244 |
| - v8::HandleScope scope; |
245 |
| - v8::Local<v8::Object> obj = v8::Object::New(); |
246 |
| - obj->Set(v8::String::NewSymbol("minVal"), bea::Convert<double>::ToJS(v.minVal)); |
247 |
| - obj->Set(v8::String::NewSymbol("maxVal"), bea::Convert<double>::ToJS(v.maxVal)); |
248 |
| - obj->Set(v8::String::NewSymbol("minIdx"), bea::Convert<int>::ToJS(v.minIdx)); |
249 |
| - obj->Set(v8::String::NewSymbol("maxIdx"), bea::Convert<int>::ToJS(v.maxIdx)); |
250 |
| - return scope.Close(obj); |
251 |
| - } |
252 |
| - |
253 |
| - }; |
254 |
| - |
255 |
| - template<> struct Convert<cv::Mat*> { |
256 |
| - static bool Is(v8::Handle<v8::Value> v) { |
257 |
| - return bea::ExposedClass<cv::Mat>::Is(v); |
258 |
| - } |
259 |
| - |
260 |
| - static cv::Mat* FromJS(v8::Handle<v8::Value> v, int nArg) { |
261 |
| - return bea::ExposedClass<cv::Mat>::FromJS(v, nArg); |
262 |
| - } |
263 |
| - |
264 |
| - static v8::Handle<v8::Value> ToJS(cv::Mat* const& v) { |
265 |
| - return bea::ExposedClass<cv::Mat>::ToJS(v); |
266 |
| - } |
267 |
| - |
268 |
| - }; |
269 |
| - |
270 |
| - template<> struct Convert<cv::VideoCapture*> { |
271 |
| - static bool Is(v8::Handle<v8::Value> v) { |
272 |
| - return bea::ExposedClass<cv::VideoCapture>::Is(v); |
273 |
| - } |
274 |
| - |
275 |
| - static cv::VideoCapture* FromJS(v8::Handle<v8::Value> v, int nArg) { |
276 |
| - return bea::ExposedClass<cv::VideoCapture>::FromJS(v, nArg); |
277 |
| - } |
278 |
| - |
279 |
| - static v8::Handle<v8::Value> ToJS(cv::VideoCapture* const& v) { |
280 |
| - return bea::ExposedClass<cv::VideoCapture>::ToJS(v); |
281 |
| - } |
282 |
| - |
283 |
| - }; |
284 |
| - |
285 |
| - template<> struct Convert<cv::VideoWriter*> { |
286 |
| - static bool Is(v8::Handle<v8::Value> v) { |
287 |
| - return bea::ExposedClass<cv::VideoWriter>::Is(v); |
288 |
| - } |
289 |
| - |
290 |
| - static cv::VideoWriter* FromJS(v8::Handle<v8::Value> v, int nArg) { |
291 |
| - return bea::ExposedClass<cv::VideoWriter>::FromJS(v, nArg); |
292 |
| - } |
293 |
| - |
294 |
| - static v8::Handle<v8::Value> ToJS(cv::VideoWriter* const& v) { |
295 |
| - return bea::ExposedClass<cv::VideoWriter>::ToJS(v); |
296 |
| - } |
297 |
| - |
298 |
| - }; |
299 |
| - |
300 |
| - template<> struct Convert<cv::SparseMat*> { |
301 |
| - static bool Is(v8::Handle<v8::Value> v) { |
302 |
| - return bea::ExposedClass<cv::SparseMat>::Is(v); |
303 |
| - } |
304 |
| - |
305 |
| - static cv::SparseMat* FromJS(v8::Handle<v8::Value> v, int nArg) { |
306 |
| - return bea::ExposedClass<cv::SparseMat>::FromJS(v, nArg); |
307 |
| - } |
308 |
| - |
309 |
| - static v8::Handle<v8::Value> ToJS(cv::SparseMat* const& v) { |
310 |
| - return bea::ExposedClass<cv::SparseMat>::ToJS(v); |
311 |
| - } |
312 |
| - |
313 |
| - }; |
314 |
| - |
315 |
| - template<> struct Convert<cv::CascadeClassifier*> { |
316 |
| - static bool Is(v8::Handle<v8::Value> v) { |
317 |
| - return bea::ExposedClass<cv::CascadeClassifier>::Is(v); |
318 |
| - } |
319 |
| - |
320 |
| - static cv::CascadeClassifier* FromJS(v8::Handle<v8::Value> v, int nArg) { |
321 |
| - return bea::ExposedClass<cv::CascadeClassifier>::FromJS(v, nArg); |
322 |
| - } |
323 |
| - |
324 |
| - static v8::Handle<v8::Value> ToJS(cv::CascadeClassifier* const& v) { |
325 |
| - return bea::ExposedClass<cv::CascadeClassifier>::ToJS(v); |
326 |
| - } |
327 |
| - |
328 |
| - }; |
329 | 4 |
|
330 | 5 | }
|
331 | 6 |
|
|
0 commit comments