@@ -732,6 +732,76 @@ namespace MatBindings {
732732 }
733733 };
734734
735+ struct CopyMakeBorderWorker : public CatchCvExceptionWorker {
736+ public:
737+ cv::Mat self;
738+ CopyMakeBorderWorker (cv::Mat self) {
739+ this ->self = self;
740+ }
741+
742+ cv::Mat result;
743+ int top, bottom, left, right;
744+ int borderType = cv::BORDER_CONSTANT;
745+ double v1 = 0 ;
746+ cv::Vec2d v2 = 0 ;
747+ cv::Vec3d v3 = 0 ;
748+ cv::Vec4d v4 = 0 ;
749+
750+ std::string executeCatchCvExceptionWorker () {
751+ if (self.channels () == 1 )
752+ cv::copyMakeBorder (self, result, top, bottom, left, right, borderType, v1);
753+ else if (self.channels () == 2 )
754+ cv::copyMakeBorder (self, result, top, bottom, left, right, borderType, v2);
755+ else if (self.channels () == 3 )
756+ cv::copyMakeBorder (self, result, top, bottom, left, right, borderType, v3);
757+ else if (self.channels () == 4 )
758+ cv::copyMakeBorder (self, result, top, bottom, left, right, borderType, v4);
759+ return " " ;
760+ }
761+
762+ v8::Local<v8::Value> getReturnValue () {
763+ return Mat::Converter::wrap (result);
764+ }
765+
766+ bool unwrapRequiredArgs (Nan::NAN_METHOD_ARGS_TYPE info) {
767+ return (
768+ IntConverter::arg (0 , &top, info) ||
769+ IntConverter::arg (1 , &bottom, info) ||
770+ IntConverter::arg (2 , &left, info) ||
771+ IntConverter::arg (3 , &right, info)
772+ );
773+ }
774+
775+ bool unwrapOptionalArgs (Nan::NAN_METHOD_ARGS_TYPE info) {
776+ return (
777+ IntConverter::optArg (4 , &borderType, info) ||
778+ (
779+ self.channels () == 1 && DoubleConverter::optArg (5 , &v1, info) ||
780+ self.channels () == 2 && Vec2::Converter::optArg (5 , &v2, info) ||
781+ self.channels () == 3 && Vec3::Converter::optArg (5 , &v3, info) ||
782+ self.channels () == 4 && Vec4::Converter::optArg (5 , &v4, info)
783+ )
784+ );
785+ }
786+
787+ bool hasOptArgsObject (Nan::NAN_METHOD_ARGS_TYPE info) {
788+ return FF_ARG_IS_OBJECT (4 );
789+ }
790+
791+ bool unwrapOptionalArgsFromOpts (Nan::NAN_METHOD_ARGS_TYPE info) {
792+ v8::Local<v8::Object> opts = info[4 ]->ToObject ();
793+ return (
794+ IntConverter::optProp (&borderType, " borderType" , opts) ||
795+ (
796+ self.channels () == 1 && DoubleConverter::optProp (&v1, " value" , opts) ||
797+ self.channels () == 2 && Vec2::Converter::optProp (&v2, " value" , opts) ||
798+ self.channels () == 3 && Vec3::Converter::optProp (&v3, " value" , opts) ||
799+ self.channels () == 4 && Vec4::Converter::optProp (&v4, " value" , opts)
800+ )
801+ );
802+ }
803+ };
804+
735805#if CV_VERSION_MINOR > 1
736806 struct RotateWorker : public OpWithCodeWorker {
737807 public:
0 commit comments