@@ -759,6 +759,76 @@ namespace MatBindings {
759759 }
760760 };
761761
762+ struct CopyMakeBorderWorker : public CatchCvExceptionWorker {
763+ public:
764+ cv::Mat self;
765+ CopyMakeBorderWorker (cv::Mat self) {
766+ this ->self = self;
767+ }
768+
769+ cv::Mat result;
770+ int top, bottom, left, right;
771+ int borderType = cv::BORDER_CONSTANT;
772+ double v1 = 0 ;
773+ cv::Vec2d v2 = 0 ;
774+ cv::Vec3d v3 = 0 ;
775+ cv::Vec4d v4 = 0 ;
776+
777+ std::string executeCatchCvExceptionWorker () {
778+ if (self.channels () == 1 )
779+ cv::copyMakeBorder (self, result, top, bottom, left, right, borderType, v1);
780+ else if (self.channels () == 2 )
781+ cv::copyMakeBorder (self, result, top, bottom, left, right, borderType, v2);
782+ else if (self.channels () == 3 )
783+ cv::copyMakeBorder (self, result, top, bottom, left, right, borderType, v3);
784+ else if (self.channels () == 4 )
785+ cv::copyMakeBorder (self, result, top, bottom, left, right, borderType, v4);
786+ return " " ;
787+ }
788+
789+ v8::Local<v8::Value> getReturnValue () {
790+ return Mat::Converter::wrap (result);
791+ }
792+
793+ bool unwrapRequiredArgs (Nan::NAN_METHOD_ARGS_TYPE info) {
794+ return (
795+ IntConverter::arg (0 , &top, info) ||
796+ IntConverter::arg (1 , &bottom, info) ||
797+ IntConverter::arg (2 , &left, info) ||
798+ IntConverter::arg (3 , &right, info)
799+ );
800+ }
801+
802+ bool unwrapOptionalArgs (Nan::NAN_METHOD_ARGS_TYPE info) {
803+ return (
804+ IntConverter::optArg (4 , &borderType, info) ||
805+ (
806+ self.channels () == 1 && DoubleConverter::optArg (5 , &v1, info) ||
807+ self.channels () == 2 && Vec2::Converter::optArg (5 , &v2, info) ||
808+ self.channels () == 3 && Vec3::Converter::optArg (5 , &v3, info) ||
809+ self.channels () == 4 && Vec4::Converter::optArg (5 , &v4, info)
810+ )
811+ );
812+ }
813+
814+ bool hasOptArgsObject (Nan::NAN_METHOD_ARGS_TYPE info) {
815+ return FF_ARG_IS_OBJECT (4 );
816+ }
817+
818+ bool unwrapOptionalArgsFromOpts (Nan::NAN_METHOD_ARGS_TYPE info) {
819+ v8::Local<v8::Object> opts = info[4 ]->ToObject ();
820+ return (
821+ IntConverter::optProp (&borderType, " borderType" , opts) ||
822+ (
823+ self.channels () == 1 && DoubleConverter::optProp (&v1, " value" , opts) ||
824+ self.channels () == 2 && Vec2::Converter::optProp (&v2, " value" , opts) ||
825+ self.channels () == 3 && Vec3::Converter::optProp (&v3, " value" , opts) ||
826+ self.channels () == 4 && Vec4::Converter::optProp (&v4, " value" , opts)
827+ )
828+ );
829+ }
830+ };
831+
762832#if CV_VERSION_MINOR > 1
763833 struct RotateWorker : public OpWithCodeWorker {
764834 public:
0 commit comments