Merge pull request #17165 from komakai:objc-binding
authorGiles Payne <gilespayne@telepathix.net>
Mon, 8 Jun 2020 18:32:53 +0000 (03:32 +0900)
committerGitHub <noreply@github.com>
Mon, 8 Jun 2020 18:32:53 +0000 (18:32 +0000)
commit02385472b62a1eaef07abb60c777d8050d4c47f2
treeecb7fff5735e09083c1b7c312207a65bd79bef33
parentf30b5995b6946d05e69d7673cdb29681697b75b2
Merge pull request #17165 from komakai:objc-binding

Objc binding

* Initial work on Objective-C wrapper

* Objective-C generator script; update manually generated wrappers

* Add Mat tests

* Core Tests

* Imgproc wrapper generation and tests

* Fixes for Imgcodecs wrapper

* Miscellaneous fixes. Swift build support

* Objective-C wrapper build/install

* Add Swift wrappers for videoio/objdetect/feature2d

* Framework build;iOS support

* Fix toArray functions;Use enum types whenever possible

* Use enum types where possible;prepare test build

* Update test

* Add test runner scripts for iOS and macOS

* Add test scripts and samples

* Build fixes

* Fix build (cmake 3.17.x compatibility)

* Fix warnings

* Fix enum name conflicting handling

* Add support for document generation with Jazzy

* Swift/Native fast accessor functions

* Add Objective-C wrapper for calib3d, dnn, ml, photo and video modules

* Remove IntOut/FloatOut/DoubleOut classes

* Fix iOS default test platform value

* Fix samples

* Revert default framework name to opencv2

* Add converter util functions

* Fix failing test

* Fix whitespace

* Add handling for deprecated methods;fix warnings;define __OPENCV_BUILD

* Suppress cmake warnings

* Reduce severity of "jazzy not found" log message

* Fix incorrect #include of compatibility header in ios.h

* Use explicit returns in subscript/get implementation

* Reduce minimum required cmake version to 3.15 for Objective-C/Swift binding
237 files changed:
.gitignore
CMakeLists.txt
cmake/OpenCVGenConfig.cmake
cmake/OpenCVModule.cmake
modules/calib3d/CMakeLists.txt
modules/calib3d/misc/objc/gen_dict.json [new file with mode: 0644]
modules/calib3d/misc/objc/test/Calib3dTest.swift [new file with mode: 0644]
modules/core/CMakeLists.txt
modules/core/misc/objc/common/ArrayUtil.h [new file with mode: 0644]
modules/core/misc/objc/common/ArrayUtil.mm [new file with mode: 0644]
modules/core/misc/objc/common/ByteVector.h [new file with mode: 0644]
modules/core/misc/objc/common/ByteVector.mm [new file with mode: 0644]
modules/core/misc/objc/common/ByteVectorExt.swift [new file with mode: 0644]
modules/core/misc/objc/common/CVObjcUtil.h [new file with mode: 0644]
modules/core/misc/objc/common/Converters.h [new file with mode: 0755]
modules/core/misc/objc/common/Converters.mm [new file with mode: 0644]
modules/core/misc/objc/common/CvType.h [new file with mode: 0644]
modules/core/misc/objc/common/CvType.mm [new file with mode: 0644]
modules/core/misc/objc/common/CvTypeExt.swift [new file with mode: 0644]
modules/core/misc/objc/common/DMatch.h [new file with mode: 0644]
modules/core/misc/objc/common/DMatch.mm [new file with mode: 0644]
modules/core/misc/objc/common/Double2.h [new file with mode: 0644]
modules/core/misc/objc/common/Double2.mm [new file with mode: 0644]
modules/core/misc/objc/common/Double3.h [new file with mode: 0644]
modules/core/misc/objc/common/Double3.mm [new file with mode: 0644]
modules/core/misc/objc/common/DoubleVector.h [new file with mode: 0644]
modules/core/misc/objc/common/DoubleVector.mm [new file with mode: 0644]
modules/core/misc/objc/common/DoubleVectorExt.swift [new file with mode: 0644]
modules/core/misc/objc/common/Float4.h [new file with mode: 0644]
modules/core/misc/objc/common/Float4.mm [new file with mode: 0644]
modules/core/misc/objc/common/Float6.h [new file with mode: 0644]
modules/core/misc/objc/common/Float6.mm [new file with mode: 0644]
modules/core/misc/objc/common/FloatVector.h [new file with mode: 0644]
modules/core/misc/objc/common/FloatVector.mm [new file with mode: 0644]
modules/core/misc/objc/common/FloatVectorExt.swift [new file with mode: 0644]
modules/core/misc/objc/common/Int4.h [new file with mode: 0644]
modules/core/misc/objc/common/Int4.mm [new file with mode: 0644]
modules/core/misc/objc/common/IntVector.h [new file with mode: 0644]
modules/core/misc/objc/common/IntVector.mm [new file with mode: 0644]
modules/core/misc/objc/common/IntVectorExt.swift [new file with mode: 0644]
modules/core/misc/objc/common/KeyPoint.h [new file with mode: 0644]
modules/core/misc/objc/common/KeyPoint.mm [new file with mode: 0644]
modules/core/misc/objc/common/Mat.h [new file with mode: 0644]
modules/core/misc/objc/common/Mat.mm [new file with mode: 0644]
modules/core/misc/objc/common/MatExt.swift [new file with mode: 0644]
modules/core/misc/objc/common/MatOfByte.h [new file with mode: 0644]
modules/core/misc/objc/common/MatOfByte.mm [new file with mode: 0644]
modules/core/misc/objc/common/MatOfDMatch.h [new file with mode: 0644]
modules/core/misc/objc/common/MatOfDMatch.mm [new file with mode: 0644]
modules/core/misc/objc/common/MatOfDouble.h [new file with mode: 0644]
modules/core/misc/objc/common/MatOfDouble.mm [new file with mode: 0644]
modules/core/misc/objc/common/MatOfFloat.h [new file with mode: 0644]
modules/core/misc/objc/common/MatOfFloat.mm [new file with mode: 0644]
modules/core/misc/objc/common/MatOfFloat4.h [new file with mode: 0644]
modules/core/misc/objc/common/MatOfFloat4.mm [new file with mode: 0644]
modules/core/misc/objc/common/MatOfFloat6.h [new file with mode: 0644]
modules/core/misc/objc/common/MatOfFloat6.mm [new file with mode: 0644]
modules/core/misc/objc/common/MatOfInt.h [new file with mode: 0644]
modules/core/misc/objc/common/MatOfInt.mm [new file with mode: 0644]
modules/core/misc/objc/common/MatOfInt4.h [new file with mode: 0644]
modules/core/misc/objc/common/MatOfInt4.mm [new file with mode: 0644]
modules/core/misc/objc/common/MatOfKeyPoint.h [new file with mode: 0644]
modules/core/misc/objc/common/MatOfKeyPoint.mm [new file with mode: 0644]
modules/core/misc/objc/common/MatOfPoint2f.h [new file with mode: 0644]
modules/core/misc/objc/common/MatOfPoint2f.mm [new file with mode: 0644]
modules/core/misc/objc/common/MatOfPoint2i.h [new file with mode: 0644]
modules/core/misc/objc/common/MatOfPoint2i.mm [new file with mode: 0644]
modules/core/misc/objc/common/MatOfPoint3.h [new file with mode: 0644]
modules/core/misc/objc/common/MatOfPoint3.mm [new file with mode: 0644]
modules/core/misc/objc/common/MatOfPoint3f.h [new file with mode: 0644]
modules/core/misc/objc/common/MatOfPoint3f.mm [new file with mode: 0644]
modules/core/misc/objc/common/MatOfRect2d.h [new file with mode: 0644]
modules/core/misc/objc/common/MatOfRect2d.mm [new file with mode: 0644]
modules/core/misc/objc/common/MatOfRect2i.h [new file with mode: 0644]
modules/core/misc/objc/common/MatOfRect2i.mm [new file with mode: 0644]
modules/core/misc/objc/common/MatOfRotatedRect.h [new file with mode: 0644]
modules/core/misc/objc/common/MatOfRotatedRect.mm [new file with mode: 0644]
modules/core/misc/objc/common/MinMaxLocResult.h [new file with mode: 0644]
modules/core/misc/objc/common/MinMaxLocResult.mm [new file with mode: 0644]
modules/core/misc/objc/common/Point2d.h [new file with mode: 0644]
modules/core/misc/objc/common/Point2d.mm [new file with mode: 0644]
modules/core/misc/objc/common/Point2f.h [new file with mode: 0644]
modules/core/misc/objc/common/Point2f.mm [new file with mode: 0644]
modules/core/misc/objc/common/Point2i.h [new file with mode: 0644]
modules/core/misc/objc/common/Point2i.mm [new file with mode: 0644]
modules/core/misc/objc/common/Point3d.h [new file with mode: 0644]
modules/core/misc/objc/common/Point3d.mm [new file with mode: 0644]
modules/core/misc/objc/common/Point3f.h [new file with mode: 0644]
modules/core/misc/objc/common/Point3f.mm [new file with mode: 0644]
modules/core/misc/objc/common/Point3i.h [new file with mode: 0644]
modules/core/misc/objc/common/Point3i.mm [new file with mode: 0644]
modules/core/misc/objc/common/Range.h [new file with mode: 0644]
modules/core/misc/objc/common/Range.m [new file with mode: 0644]
modules/core/misc/objc/common/Rect2d.h [new file with mode: 0644]
modules/core/misc/objc/common/Rect2d.mm [new file with mode: 0644]
modules/core/misc/objc/common/Rect2f.h [new file with mode: 0644]
modules/core/misc/objc/common/Rect2f.mm [new file with mode: 0644]
modules/core/misc/objc/common/Rect2i.h [new file with mode: 0644]
modules/core/misc/objc/common/Rect2i.mm [new file with mode: 0644]
modules/core/misc/objc/common/RotatedRect.h [new file with mode: 0644]
modules/core/misc/objc/common/RotatedRect.mm [new file with mode: 0644]
modules/core/misc/objc/common/Scalar.h [new file with mode: 0644]
modules/core/misc/objc/common/Scalar.mm [new file with mode: 0644]
modules/core/misc/objc/common/Size2d.h [new file with mode: 0644]
modules/core/misc/objc/common/Size2d.mm [new file with mode: 0644]
modules/core/misc/objc/common/Size2f.h [new file with mode: 0644]
modules/core/misc/objc/common/Size2f.mm [new file with mode: 0644]
modules/core/misc/objc/common/Size2i.h [new file with mode: 0644]
modules/core/misc/objc/common/Size2i.mm [new file with mode: 0644]
modules/core/misc/objc/common/TermCriteria.h [new file with mode: 0644]
modules/core/misc/objc/common/TermCriteria.mm [new file with mode: 0644]
modules/core/misc/objc/filelist [new file with mode: 0644]
modules/core/misc/objc/gen_dict.json [new file with mode: 0644]
modules/core/misc/objc/manual/core_manual.hpp [new file with mode: 0644]
modules/core/misc/objc/test/ConvertersTest.swift [new file with mode: 0755]
modules/core/misc/objc/test/CoreTest.swift [new file with mode: 0644]
modules/core/misc/objc/test/CvTypeTest.swift [new file with mode: 0644]
modules/core/misc/objc/test/DMatchTest.swift [new file with mode: 0644]
modules/core/misc/objc/test/KeyPointTest.swift [new file with mode: 0644]
modules/core/misc/objc/test/MatTest.swift [new file with mode: 0644]
modules/core/misc/objc/test/MatTestObjc.m [new file with mode: 0644]
modules/core/misc/objc/test/Point3Test.swift [new file with mode: 0644]
modules/core/misc/objc/test/PointTest.swift [new file with mode: 0644]
modules/core/misc/objc/test/RangeTest.swift [new file with mode: 0644]
modules/core/misc/objc/test/RectTest.swift [new file with mode: 0644]
modules/core/misc/objc/test/RotatedRectTest.swift [new file with mode: 0644]
modules/core/misc/objc/test/ScalarTest.swift [new file with mode: 0644]
modules/core/misc/objc/test/SizeTest.swift [new file with mode: 0644]
modules/core/misc/objc/test/TermCriteriaTest.swift [new file with mode: 0644]
modules/core/misc/objc/test/resources/chessboard.jpg [new file with mode: 0644]
modules/core/misc/objc/test/resources/lena.png [new file with mode: 0644]
modules/dnn/CMakeLists.txt
modules/dnn/misc/objc/gen_dict.json [new file with mode: 0644]
modules/features2d/CMakeLists.txt
modules/features2d/misc/objc/gen_dict.json [new file with mode: 0644]
modules/imgcodecs/CMakeLists.txt
modules/imgcodecs/include/opencv2/imgcodecs/ios.h
modules/imgcodecs/misc/objc/ios/Mat+Converters.h [new file with mode: 0644]
modules/imgcodecs/misc/objc/ios/Mat+Converters.mm [new file with mode: 0644]
modules/imgcodecs/misc/objc/test/ImgcodecsTest.swift [new file with mode: 0644]
modules/imgproc/CMakeLists.txt
modules/imgproc/misc/objc/common/Moments.h [new file with mode: 0644]
modules/imgproc/misc/objc/common/Moments.mm [new file with mode: 0644]
modules/imgproc/misc/objc/gen_dict.json [new file with mode: 0644]
modules/imgproc/misc/objc/test/ImgprocTest.swift [new file with mode: 0644]
modules/imgproc/misc/objc/test/MomentsTest.swift [new file with mode: 0644]
modules/imgproc/misc/objc/test/Subdiv2DTest.swift [new file with mode: 0644]
modules/ml/CMakeLists.txt
modules/ml/misc/objc/gen_dict.json [new file with mode: 0644]
modules/objc/CMakeLists.txt [new file with mode: 0644]
modules/objc/common.cmake [new file with mode: 0644]
modules/objc/doc/README.md [new file with mode: 0644]
modules/objc/generator/CMakeLists.txt [new file with mode: 0644]
modules/objc/generator/gen_objc.py [new file with mode: 0755]
modules/objc/generator/templates/cmakelists.template [new file with mode: 0644]
modules/objc/generator/templates/objc_class_body.template [new file with mode: 0644]
modules/objc/generator/templates/objc_class_header.template [new file with mode: 0644]
modules/objc/generator/templates/objc_module_body.template [new file with mode: 0644]
modules/objc/generator/templates/objc_module_header.template [new file with mode: 0644]
modules/objc/test/cmakelists.template [new file with mode: 0644]
modules/objc/test/dummy/dummy.mm [new file with mode: 0644]
modules/objc/test/test/OpenCVTestCase.swift [new file with mode: 0644]
modules/objdetect/CMakeLists.txt
modules/photo/CMakeLists.txt
modules/photo/misc/objc/gen_dict.json [new file with mode: 0644]
modules/video/CMakeLists.txt
modules/videoio/CMakeLists.txt
modules/videoio/misc/objc/gen_dict.json [new file with mode: 0644]
modules/videoio/misc/objc/ios/CvAbstractCamera2.mm [new file with mode: 0644]
modules/videoio/misc/objc/ios/CvCamera2.h [new file with mode: 0644]
modules/videoio/misc/objc/ios/CvPhotoCamera2.m [new file with mode: 0644]
modules/videoio/misc/objc/ios/CvVideoCamera2.mm [new file with mode: 0644]
platforms/ios/build_framework.py
platforms/ios/run_tests.py [new file with mode: 0755]
platforms/osx/build_framework.py
platforms/osx/run_tests.py [new file with mode: 0755]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection.xcodeproj/project.pbxproj [new file with mode: 0644]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist [new file with mode: 0644]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection/AppDelegate.swift [new file with mode: 0644]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection/Assets.xcassets/AppIcon.appiconset/100.png [new file with mode: 0644]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection/Assets.xcassets/AppIcon.appiconset/114.png [new file with mode: 0644]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection/Assets.xcassets/AppIcon.appiconset/120.png [new file with mode: 0644]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection/Assets.xcassets/AppIcon.appiconset/144.png [new file with mode: 0644]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection/Assets.xcassets/AppIcon.appiconset/152.png [new file with mode: 0644]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection/Assets.xcassets/AppIcon.appiconset/167.png [new file with mode: 0644]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection/Assets.xcassets/AppIcon.appiconset/180.png [new file with mode: 0644]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection/Assets.xcassets/AppIcon.appiconset/20.png [new file with mode: 0644]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection/Assets.xcassets/AppIcon.appiconset/29.png [new file with mode: 0644]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection/Assets.xcassets/AppIcon.appiconset/40.png [new file with mode: 0644]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection/Assets.xcassets/AppIcon.appiconset/50.png [new file with mode: 0644]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection/Assets.xcassets/AppIcon.appiconset/57.png [new file with mode: 0644]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection/Assets.xcassets/AppIcon.appiconset/58.png [new file with mode: 0644]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection/Assets.xcassets/AppIcon.appiconset/60.png [new file with mode: 0644]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection/Assets.xcassets/AppIcon.appiconset/72.png [new file with mode: 0644]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection/Assets.xcassets/AppIcon.appiconset/76.png [new file with mode: 0644]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection/Assets.xcassets/AppIcon.appiconset/80.png [new file with mode: 0644]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection/Assets.xcassets/AppIcon.appiconset/87.png [new file with mode: 0644]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection/Assets.xcassets/AppIcon.appiconset/Contents.json [new file with mode: 0644]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection/Assets.xcassets/AppIcon.appiconset/appstore.png [new file with mode: 0644]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection/Assets.xcassets/Contents.json [new file with mode: 0644]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection/Base.lproj/LaunchScreen.storyboard [new file with mode: 0644]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection/Base.lproj/Main.storyboard [new file with mode: 0644]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection/ColorBlobDetector.swift [new file with mode: 0644]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection/Info.plist [new file with mode: 0644]
samples/swift/ios/ColorBlobDetection/ColorBlobDetection/ViewController.swift [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection.xcodeproj/project.pbxproj [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/AppDelegate.swift [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/Assets.xcassets/AppIcon.appiconset/100.png [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/Assets.xcassets/AppIcon.appiconset/114.png [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/Assets.xcassets/AppIcon.appiconset/120.png [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/Assets.xcassets/AppIcon.appiconset/144.png [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/Assets.xcassets/AppIcon.appiconset/152.png [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/Assets.xcassets/AppIcon.appiconset/167.png [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/Assets.xcassets/AppIcon.appiconset/180.png [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/Assets.xcassets/AppIcon.appiconset/20.png [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/Assets.xcassets/AppIcon.appiconset/29.png [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/Assets.xcassets/AppIcon.appiconset/40.png [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/Assets.xcassets/AppIcon.appiconset/50.png [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/Assets.xcassets/AppIcon.appiconset/57.png [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/Assets.xcassets/AppIcon.appiconset/58.png [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/Assets.xcassets/AppIcon.appiconset/60.png [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/Assets.xcassets/AppIcon.appiconset/72.png [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/Assets.xcassets/AppIcon.appiconset/76.png [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/Assets.xcassets/AppIcon.appiconset/80.png [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/Assets.xcassets/AppIcon.appiconset/87.png [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/Assets.xcassets/AppIcon.appiconset/Contents.json [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/Assets.xcassets/AppIcon.appiconset/appstore.png [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/Assets.xcassets/Contents.json [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/Base.lproj/LaunchScreen.storyboard [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/Base.lproj/Main.storyboard [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/DetectionBasedTracker.h [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/DetectionBasedTracker.mm [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/FaceDetection-Bridging-Header.h [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/Info.plist [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/ViewController.swift [new file with mode: 0644]
samples/swift/ios/FaceDetection/FaceDetection/lbpcascade_frontalface.xml [new file with mode: 0644]