Skip to content

Commit 3b0f0c2

Browse files
Merge pull request #558 from justadudewhohacks/remove-macro-inferno
remove macro inferno and fix node12 specific compiler warnings
2 parents 0a86131 + e5e8199 commit 3b0f0c2

File tree

154 files changed

+3366
-2138
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

154 files changed

+3366
-2138
lines changed

binding.gyp

-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
"cc/core",
1111
"cc/modules",
1212
"<!(node -e \"require('nan')\")",
13-
"<!(node -e \"require('macro-inferno')\")",
1413
"<!(node -e \"require('native-node-utils')\")"
1514
],
1615
"libraries": [

cc/ExternalMemTracking.cc

+5-5
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,11 @@ NAN_METHOD(ExternalMemTracking::GetMemMetrics) {
4040
}
4141
#endif
4242

43-
FF_OBJ result = FF_NEW_OBJ();
44-
Nan::Set(result, FF_NEW_STRING("TotalAlloc"), Nan::New((double)TotalAlloc));
45-
Nan::Set(result, FF_NEW_STRING("TotalKnownByJS"), Nan::New((double)TotalKnownByJS));
46-
Nan::Set(result, FF_NEW_STRING("NumAllocations"), Nan::New((double)NumAllocations));
47-
Nan::Set(result, FF_NEW_STRING("NumDeAllocations"), Nan::New((double)NumDeAllocations));
43+
v8::Local<v8::Object> result = Nan::New<v8::Object>();
44+
Nan::Set(result, FF::newString("TotalAlloc"), Nan::New((double)TotalAlloc));
45+
Nan::Set(result, FF::newString("TotalKnownByJS"), Nan::New((double)TotalKnownByJS));
46+
Nan::Set(result, FF::newString("NumAllocations"), Nan::New((double)NumAllocations));
47+
Nan::Set(result, FF::newString("NumDeAllocations"), Nan::New((double)NumDeAllocations));
4848

4949
info.GetReturnValue().Set(result);
5050
return;

cc/core/Mat.cc

+106-82
Large diffs are not rendered by default.

cc/core/Mat.h

+1
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ class Mat : public Nan::ObjectWrap {
7070
static NAN_METHOD(GetRegion);
7171
static NAN_METHOD(Norm);
7272
static NAN_METHOD(Normalize);
73+
static NAN_METHOD(NormalizeAsync);
7374
static NAN_METHOD(Row);
7475
static NAN_METHOD(Release);
7576
static NAN_METHOD(PushBack);

cc/core/MatBindings.h

+71-21
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ namespace MatBindings {
4040
return "";
4141
}
4242

43-
FF_VAL getReturnValue() {
43+
v8::Local<v8::Value> getReturnValue() {
4444
return Mat::Converter::wrap(returnValue);
4545
}
4646

@@ -88,7 +88,7 @@ namespace MatBindings {
8888
);
8989
}
9090

91-
FF_VAL getReturnValue() {
91+
v8::Local<v8::Value> getReturnValue() {
9292
return Mat::Converter::wrap(self);
9393
}
9494
};
@@ -113,7 +113,7 @@ namespace MatBindings {
113113
);
114114
}
115115

116-
FF_VAL getReturnValue() {
116+
v8::Local<v8::Value> getReturnValue() {
117117
return Mat::Converter::wrap(self);
118118
}
119119
};
@@ -148,7 +148,7 @@ namespace MatBindings {
148148
free(data);
149149
}
150150

151-
FF_VAL getReturnValue() {
151+
v8::Local<v8::Value> getReturnValue() {
152152
return Nan::NewBuffer(data, size, freeBufferCallback, 0).ToLocalChecked();
153153
}
154154
};
@@ -168,7 +168,7 @@ namespace MatBindings {
168168
return "";
169169
}
170170

171-
FF_VAL getReturnValue() {
171+
v8::Local<v8::Value> getReturnValue() {
172172
return Mat::Converter::wrap(dst);
173173
}
174174

@@ -233,7 +233,7 @@ namespace MatBindings {
233233
}
234234

235235
bool hasOptArgsObject(Nan::NAN_METHOD_ARGS_TYPE info) {
236-
return FF_ARG_IS_OBJECT(1);
236+
return FF::isArgObject(info, 1);
237237
}
238238

239239
bool unwrapOptionalArgsFromOpts(Nan::NAN_METHOD_ARGS_TYPE info) {
@@ -326,11 +326,11 @@ namespace MatBindings {
326326
}
327327

328328
v8::Local<v8::Value> getReturnValue() {
329-
FF_OBJ ret = FF_NEW_OBJ();
330-
Nan::Set(ret, FF_NEW_STRING("minVal"), Nan::New(minVal));
331-
Nan::Set(ret, FF_NEW_STRING("maxVal"), Nan::New(maxVal));
332-
Nan::Set(ret, FF_NEW_STRING("minLoc"), Point2::Converter::wrap(minLoc));
333-
Nan::Set(ret, FF_NEW_STRING("maxLoc"), Point2::Converter::wrap(maxLoc));
329+
v8::Local<v8::Object> ret = Nan::New<v8::Object>();
330+
Nan::Set(ret, FF::newString("minVal"), Nan::New(minVal));
331+
Nan::Set(ret, FF::newString("maxVal"), Nan::New(maxVal));
332+
Nan::Set(ret, FF::newString("minLoc"), Point2::Converter::wrap(minLoc));
333+
Nan::Set(ret, FF::newString("maxLoc"), Point2::Converter::wrap(maxLoc));
334334
return ret;
335335
}
336336
};
@@ -422,7 +422,7 @@ namespace MatBindings {
422422

423423
cv::Mat dst;
424424

425-
FF_VAL getReturnValue() {
425+
v8::Local<v8::Value> getReturnValue() {
426426
return Mat::Converter::wrap(dst);
427427
}
428428

@@ -474,11 +474,11 @@ namespace MatBindings {
474474
}
475475

476476
bool hasOptArgsObject(Nan::NAN_METHOD_ARGS_TYPE info) {
477-
return FF_ARG_IS_OBJECT(0);
477+
return FF::isArgObject(info, 0);
478478
}
479479

480480
bool unwrapOptionalArgsFromOpts(Nan::NAN_METHOD_ARGS_TYPE info) {
481-
FF_OBJ opts = info[0]->ToObject(Nan::GetCurrentContext()).ToLocalChecked();
481+
v8::Local<v8::Object> opts = info[0]->ToObject(Nan::GetCurrentContext()).ToLocalChecked();
482482
return (
483483
IntConverter::optProp(&flags, "flags", opts) ||
484484
IntConverter::optProp(&nonzeroRows, "nonzeroRows", opts)
@@ -507,7 +507,7 @@ namespace MatBindings {
507507
return "";
508508
}
509509

510-
FF_VAL getReturnValue() {
510+
v8::Local<v8::Value> getReturnValue() {
511511
return Mat::Converter::wrap(dst);
512512
}
513513

@@ -523,11 +523,11 @@ namespace MatBindings {
523523
}
524524

525525
bool hasOptArgsObject(Nan::NAN_METHOD_ARGS_TYPE info) {
526-
return FF_ARG_IS_OBJECT(1);
526+
return FF::isArgObject(info, 1);
527527
}
528528

529529
bool unwrapOptionalArgsFromOpts(Nan::NAN_METHOD_ARGS_TYPE info) {
530-
FF_OBJ opts = info[1]->ToObject(Nan::GetCurrentContext()).ToLocalChecked();
530+
v8::Local<v8::Object> opts = info[1]->ToObject(Nan::GetCurrentContext()).ToLocalChecked();
531531
return (
532532
BoolConverter::optProp(&dftRows, "dftRows", opts) ||
533533
BoolConverter::optProp(&conjB, "conjB", opts)
@@ -670,7 +670,7 @@ namespace MatBindings {
670670
}
671671

672672
bool hasOptArgsObject(Nan::NAN_METHOD_ARGS_TYPE info) {
673-
return FF_ARG_IS_OBJECT(0);
673+
return FF::isArgObject(info, 0);
674674
}
675675

676676
bool unwrapOptionalArgsFromOpts(Nan::NAN_METHOD_ARGS_TYPE info) {
@@ -735,7 +735,7 @@ namespace MatBindings {
735735
}
736736

737737
bool hasOptArgsObject(Nan::NAN_METHOD_ARGS_TYPE info) {
738-
return FF_ARG_IS_OBJECT(3);
738+
return FF::isArgObject(info, 3);
739739
}
740740

741741
bool unwrapOptionalArgsFromOpts(Nan::NAN_METHOD_ARGS_TYPE info) {
@@ -767,7 +767,7 @@ namespace MatBindings {
767767
return "";
768768
}
769769

770-
FF_VAL getReturnValue() {
770+
v8::Local<v8::Value> getReturnValue() {
771771
return ObjectArrayConverter<Point2, cv::Point2f>::wrap(corners);
772772
}
773773
};
@@ -883,7 +883,7 @@ namespace MatBindings {
883883
}
884884

885885
bool hasOptArgsObject(Nan::NAN_METHOD_ARGS_TYPE info) {
886-
return FF_ARG_IS_OBJECT(4);
886+
return FF::isArgObject(info, 4);
887887
}
888888

889889
bool unwrapOptionalArgsFromOpts(Nan::NAN_METHOD_ARGS_TYPE info) {
@@ -986,6 +986,56 @@ namespace MatBindings {
986986
);
987987
}
988988
};
989+
990+
struct NormalizeWorker : public CatchCvExceptionWorker {
991+
public:
992+
cv::Mat self;
993+
NormalizeWorker(cv::Mat self) {
994+
this->self = self;
995+
}
996+
997+
double alpha = 1;
998+
double beta = 0;
999+
int norm_type = cv::NORM_L2;
1000+
int dtype = -1;
1001+
cv::Mat mask = cv::noArray().getMat();
1002+
1003+
cv::Mat returnValue;
1004+
1005+
std::string executeCatchCvExceptionWorker() {
1006+
cv::normalize(self, returnValue, alpha, beta, norm_type, dtype, mask);
1007+
return "";
1008+
}
1009+
1010+
v8::Local<v8::Value> getReturnValue() {
1011+
return Mat::Converter::wrap(returnValue);
1012+
}
1013+
1014+
bool unwrapOptionalArgs(Nan::NAN_METHOD_ARGS_TYPE info) {
1015+
return (
1016+
DoubleConverter::optArg(0, &alpha, info) ||
1017+
DoubleConverter::optArg(1, &beta, info) ||
1018+
IntConverter::optArg(2, &norm_type, info) ||
1019+
IntConverter::optArg(3, &dtype, info) ||
1020+
Mat::Converter::optArg(4, &mask, info)
1021+
);
1022+
}
1023+
1024+
bool hasOptArgsObject(Nan::NAN_METHOD_ARGS_TYPE info) {
1025+
return FF::isArgObject(info, 0);
1026+
}
1027+
1028+
bool unwrapOptionalArgsFromOpts(Nan::NAN_METHOD_ARGS_TYPE info) {
1029+
v8::Local<v8::Object> opts = info[0]->ToObject(Nan::GetCurrentContext()).ToLocalChecked();
1030+
return (
1031+
DoubleConverter::optProp(&alpha, "alpha", opts) ||
1032+
DoubleConverter::optProp(&beta, "beta", opts) ||
1033+
IntConverter::optProp(&norm_type, "normType", opts) ||
1034+
IntConverter::optProp(&dtype, "dtype", opts) ||
1035+
Mat::Converter::optProp(&mask, "mask", opts)
1036+
);
1037+
}
1038+
};
9891039

9901040
#if CV_VERSION_MINOR > 1
9911041
struct RotateWorker : public OpWithCodeWorker {

cc/core/MatCalib3dBindings.h

+4-4
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ namespace MatCalib3dBindings {
318318
}
319319

320320
bool hasOptArgsObject(Nan::NAN_METHOD_ARGS_TYPE info) {
321-
return FF_ARG_IS_OBJECT(6);
321+
return FF::isArgObject(info, 6);
322322
}
323323

324324
bool unwrapOptionalArgsFromOpts(Nan::NAN_METHOD_ARGS_TYPE info) {
@@ -451,7 +451,7 @@ namespace MatCalib3dBindings {
451451
}
452452

453453
bool hasOptArgsObject(Nan::NAN_METHOD_ARGS_TYPE info) {
454-
return FF_ARG_IS_OBJECT(3);
454+
return FF::isArgObject(info, 3);
455455
}
456456

457457
bool unwrapOptionalArgsFromOpts(Nan::NAN_METHOD_ARGS_TYPE info) {
@@ -656,7 +656,7 @@ namespace MatCalib3dBindings {
656656
}
657657

658658
bool hasOptArgsObject(Nan::NAN_METHOD_ARGS_TYPE info) {
659-
return FF_ARG_IS_OBJECT(1);
659+
return FF::isArgObject(info, 1);
660660
}
661661

662662
bool unwrapOptionalArgsFromOpts(Nan::NAN_METHOD_ARGS_TYPE info) {
@@ -748,7 +748,7 @@ namespace MatCalib3dBindings {
748748
}
749749

750750
bool hasOptArgsObject(Nan::NAN_METHOD_ARGS_TYPE info) {
751-
return FF_ARG_IS_OBJECT(2);
751+
return FF::isArgObject(info, 2);
752752
}
753753

754754
bool unwrapOptionalArgsFromOpts(Nan::NAN_METHOD_ARGS_TYPE info) {

cc/core/MatImgproc.cc

+14-41
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ void MatImgproc::Init(v8::Local<v8::FunctionTemplate> ctor) {
5151
Nan::SetPrototypeMethod(ctor, "findContours", FindContours);
5252
Nan::SetPrototypeMethod(ctor, "findContoursAsync", FindContoursAsync);
5353
Nan::SetPrototypeMethod(ctor, "drawContours", DrawContours);
54+
Nan::SetPrototypeMethod(ctor, "drawContoursAsync", DrawContoursAsync);
5455
Nan::SetPrototypeMethod(ctor, "drawLine", DrawLine);
5556
Nan::SetPrototypeMethod(ctor, "drawArrowedLine", DrawArrowedLine);
5657
Nan::SetPrototypeMethod(ctor, "drawCircle", DrawCircle);
@@ -113,47 +114,19 @@ void MatImgproc::Init(v8::Local<v8::FunctionTemplate> ctor) {
113114
};
114115

115116
NAN_METHOD(MatImgproc::DrawContours) {
116-
FF_METHOD_CONTEXT("Mat::DrawContours");
117-
118-
FF_ARG_ARRAY(0, FF_ARR jsContours);
119-
FF_ARG_INSTANCE(1, cv::Vec3d color, Vec3::constructor, FF_UNWRAP_VEC3_AND_GET);
120-
121-
// optional args
122-
bool hasOptArgsObj = FF_HAS_ARG(2) && info[2]->IsObject();
123-
FF_OBJ optArgs = hasOptArgsObj ? info[2]->ToObject(Nan::GetCurrentContext()).ToLocalChecked() : FF_NEW_OBJ();
124-
FF_GET_INT_IFDEF(optArgs, int contourIdx, "contourIdx", 0);
125-
FF_GET_INT_IFDEF(optArgs, int maxLevel, "maxLevel", INT_MAX);
126-
FF_GET_INSTANCE_IFDEF(optArgs, cv::Point2d offset, "offset", Point2::constructor, FF_UNWRAP_PT2_AND_GET, Point2, cv::Point2d());
127-
FF_GET_INT_IFDEF(optArgs, int lineType, "lineType", cv::LINE_8);
128-
FF_GET_INT_IFDEF(optArgs, int thickness, "thickness", 1);
129-
if (!hasOptArgsObj) {
130-
FF_ARG_INT_IFDEF(2, contourIdx, contourIdx);
131-
FF_ARG_UINT_IFDEF(3, maxLevel, maxLevel);
132-
FF_ARG_INSTANCE_IFDEF(4, offset, Point2::constructor, FF_UNWRAP_PT2_AND_GET, offset);
133-
FF_ARG_INT_IFDEF(5, lineType, lineType);
134-
FF_ARG_INT_IFDEF(6, thickness, thickness);
135-
}
136-
137-
std::vector<std::vector<cv::Point>> contours;
138-
std::vector<cv::Vec4i> hierarchy;
139-
for (uint i = 0; i < jsContours->Length(); i++) {
140-
FF_OBJ jsContour = jsContours->Get(i)->ToObject(Nan::GetCurrentContext()).ToLocalChecked();
141-
contours.push_back(FF_UNWRAP_CONTOUR_AND_GET(jsContour));
142-
hierarchy.push_back(FF_UNWRAP_CONTOUR(jsContour)->hierarchy);
143-
}
144-
145-
cv::drawContours(
146-
FF_UNWRAP_MAT_AND_GET(info.This()),
147-
contours,
148-
contourIdx,
149-
color,
150-
thickness,
151-
lineType,
152-
hierarchy,
153-
(int)maxLevel,
154-
offset
155-
);
156-
FF_RETURN(info.This());
117+
FF::SyncBinding(
118+
std::make_shared<MatImgprocBindings::DrawContoursWorker>(Mat::Converter::unwrap(info.This())),
119+
"Mat::DrawContours",
120+
info
121+
);
122+
}
123+
124+
NAN_METHOD(MatImgproc::DrawContoursAsync) {
125+
FF::AsyncBinding(
126+
std::make_shared<MatImgprocBindings::DrawContoursWorker>(Mat::Converter::unwrap(info.This())),
127+
"Mat::DrawContoursAsync",
128+
info
129+
);
157130
}
158131

159132
NAN_METHOD(MatImgproc::Rescale) {

cc/core/MatImgproc.h

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ class MatImgproc {
1212
static void Init(v8::Local<v8::FunctionTemplate> ctor);
1313

1414
static NAN_METHOD(DrawContours);
15+
static NAN_METHOD(DrawContoursAsync);
1516
static NAN_METHOD(Rescale);
1617
static NAN_METHOD(RescaleAsync);
1718
static NAN_METHOD(Resize);

0 commit comments

Comments
 (0)