|
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