@@ -93,17 +93,48 @@ jsi::Object FOCV_Function::invoke(jsi::Runtime& runtime, const jsi::Value* argum
93
93
cv::batchDistance (*src1, *src2, *dist, dtype, *nidx, normType, K, *mask, update, crosscheck);
94
94
} break ;
95
95
case hashString (" bitwise_and" , 11 ): {
96
- auto src1 = args.asMatPtr (1 );
97
- auto src2 = args.asMatPtr (2 );
98
96
auto dst = args.asMatPtr (3 );
99
97
100
- if (count > 4 ) {
101
- auto mask = args.asMatPtr (4 );
98
+ if (args. isMat ( 1 ) ) {
99
+ auto src1 = args.asMatPtr (1 );
102
100
103
- cv::bitwise_and (*src1, *src2, *dst, *mask);
104
- break ;
101
+ if (args.isScalar (2 )) {
102
+ auto src2 = args.asScalarPtr (2 );
103
+ cv::bitwise_and (*src1, *src2, *dst);
104
+
105
+ if (count > 4 ) {
106
+ auto mask = args.asMatPtr (4 );
107
+
108
+ cv::bitwise_and (*src1, *src2, *dst, *mask);
109
+ break ;
110
+ }
111
+
112
+ } else {
113
+ auto src2 = args.asMatPtr (2 );
114
+
115
+ if (count > 4 ) {
116
+ auto mask = args.asMatPtr (4 );
117
+
118
+ cv::bitwise_and (*src1, *src2, *dst, *mask);
119
+ break ;
120
+ }
121
+
122
+ cv::bitwise_and (*src1, *src2, *dst);
123
+ }
124
+ } else {
125
+ auto src1 = args.asScalarPtr (1 );
126
+ auto src2 = args.asMatPtr (2 );
127
+
128
+
129
+ if (count > 4 ) {
130
+ auto mask = args.asMatPtr (4 );
131
+
132
+ cv::bitwise_and (*src1, *src2, *dst, *mask);
133
+ break ;
134
+ }
135
+
136
+ cv::bitwise_and (*src1, *src2, *dst);
105
137
}
106
- cv::bitwise_and (*src1, *src2, *dst);
107
138
} break ;
108
139
case hashString (" bitwise_not" , 11 ): {
109
140
auto src = args.asMatPtr (1 );
@@ -118,30 +149,90 @@ jsi::Object FOCV_Function::invoke(jsi::Runtime& runtime, const jsi::Value* argum
118
149
cv::bitwise_not (*src, *dst);
119
150
} break ;
120
151
case hashString (" bitwise_or" , 10 ): {
121
- auto src1 = args.asMatPtr (1 );
122
- auto src2 = args.asMatPtr (2 );
123
152
auto dst = args.asMatPtr (3 );
124
153
125
- if (count > 4 ) {
126
- auto mask = args.asMatPtr (4 );
154
+ if (args. isMat ( 1 ) ) {
155
+ auto src1 = args.asMatPtr (1 );
127
156
128
- cv::bitwise_or (*src1, *src2, *dst, *mask);
129
- break ;
157
+ if (args.isScalar (2 )) {
158
+ auto src2 = args.asScalarPtr (2 );
159
+ cv::bitwise_or (*src1, *src2, *dst);
160
+
161
+ if (count > 4 ) {
162
+ auto mask = args.asMatPtr (4 );
163
+
164
+ cv::bitwise_or (*src1, *src2, *dst, *mask);
165
+ break ;
166
+ }
167
+
168
+ } else {
169
+ auto src2 = args.asMatPtr (2 );
170
+
171
+ if (count > 4 ) {
172
+ auto mask = args.asMatPtr (4 );
173
+
174
+ cv::bitwise_or (*src1, *src2, *dst, *mask);
175
+ break ;
176
+ }
177
+
178
+ cv::bitwise_or (*src1, *src2, *dst);
179
+ }
180
+ } else {
181
+ auto src1 = args.asScalarPtr (1 );
182
+ auto src2 = args.asMatPtr (2 );
183
+
184
+ if (count > 4 ) {
185
+ auto mask = args.asMatPtr (4 );
186
+
187
+ cv::bitwise_or (*src1, *src2, *dst, *mask);
188
+ break ;
189
+ }
190
+
191
+ cv::bitwise_or (*src1, *src2, *dst);
130
192
}
131
- cv::bitwise_or (*src1, *src2, *dst);
132
193
} break ;
133
194
case hashString (" bitwise_xor" , 11 ): {
134
- auto src1 = args.asMatPtr (1 );
135
- auto src2 = args.asMatPtr (2 );
136
195
auto dst = args.asMatPtr (3 );
137
196
138
- if (count > 4 ) {
139
- auto mask = args.asMatPtr (4 );
197
+ if (args. isMat ( 1 ) ) {
198
+ auto src1 = args.asMatPtr (1 );
140
199
141
- cv::bitwise_xor (*src1, *src2, *dst, *mask);
142
- break ;
200
+ if (args.isScalar (2 )) {
201
+ auto src2 = args.asScalarPtr (2 );
202
+ cv::bitwise_xor (*src1, *src2, *dst);
203
+
204
+ if (count > 4 ) {
205
+ auto mask = args.asMatPtr (4 );
206
+
207
+ cv::bitwise_xor (*src1, *src2, *dst, *mask);
208
+ break ;
209
+ }
210
+
211
+ } else {
212
+ auto src2 = args.asMatPtr (2 );
213
+
214
+ if (count > 4 ) {
215
+ auto mask = args.asMatPtr (4 );
216
+
217
+ cv::bitwise_xor (*src1, *src2, *dst, *mask);
218
+ break ;
219
+ }
220
+
221
+ cv::bitwise_xor (*src1, *src2, *dst);
222
+ }
223
+ } else {
224
+ auto src1 = args.asScalarPtr (1 );
225
+ auto src2 = args.asMatPtr (2 );
226
+
227
+ if (count > 4 ) {
228
+ auto mask = args.asMatPtr (4 );
229
+
230
+ cv::bitwise_xor (*src1, *src2, *dst, *mask);
231
+ break ;
232
+ }
233
+
234
+ cv::bitwise_xor (*src1, *src2, *dst);
143
235
}
144
- cv::bitwise_xor (*src1, *src2, *dst);
145
236
} break ;
146
237
case hashString (" borderInterpolate" , 17 ): {
147
238
auto p = args.asNumber (1 );
@@ -203,12 +294,26 @@ jsi::Object FOCV_Function::invoke(jsi::Runtime& runtime, const jsi::Value* argum
203
294
} break ;
204
295
205
296
case hashString (" compare" , 7 ): {
206
- auto src1 = args.asMatPtr (1 );
207
- auto src2 = args.asMatPtr (2 );
208
- auto dst = args.asMatPtr (3 );
209
297
auto cmpop = args.asNumber (4 );
298
+ auto dst = args.asMatPtr (3 );
210
299
211
- cv::compare (*src1, *src2, *dst, cmpop);
300
+ if (args.isMat (1 )) {
301
+ auto src1 = args.asMatPtr (1 );
302
+
303
+ if (args.isScalar (2 )) {
304
+ auto src2 = args.asScalarPtr (2 );
305
+ cv::compare (*src1, *src2, *dst, cmpop);
306
+ } else {
307
+ auto src2 = args.asMatPtr (2 );
308
+ cv::compare (*src1, *src2, *dst, cmpop);
309
+ }
310
+ } else {
311
+ auto src1 = args.asScalarPtr (1 );
312
+ auto src2 = args.asMatPtr (2 );
313
+
314
+ cv::compare (*src1, *src2, *dst, cmpop);
315
+ }
316
+
212
317
} break ;
213
318
case hashString (" completeSymm" , 12 ): {
214
319
auto lowerToUpper = args.asBool (2 );
0 commit comments