diff --git a/.travis.yml b/.travis.yml index 4bf5c3b..196db8b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,8 @@ language: swift -osx_image: xcode10.1 +osx_image: xcode10.2 xcode_workspace: Example/PerspectiveTransform.xcworkspace xcode_scheme: Example -xcode_sdk: iphonesimulator12.1 +xcode_sdk: iphonesimulator12.2 git: depth: 1 # use 1, as false cause travis lint server 500 exception cache: diff --git a/Example/PerspectiveTransform.xcodeproj/project.pbxproj b/Example/PerspectiveTransform.xcodeproj/project.pbxproj index e9928ba..8d2f971 100644 --- a/Example/PerspectiveTransform.xcodeproj/project.pbxproj +++ b/Example/PerspectiveTransform.xcodeproj/project.pbxproj @@ -94,6 +94,8 @@ 4B76EDD7205674CF009492EC /* FittingPolygon.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FittingPolygon.swift; sourceTree = ""; }; 4B76EDD9205674F3009492EC /* PolygonLoader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PolygonLoader.swift; sourceTree = ""; }; 4B84138A201DD90D00D17FE2 /* PerspectiveSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PerspectiveSpec.swift; sourceTree = ""; }; + 4B96E125225C8C4600C7E49D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 4B96E126225C8C4600C7E49D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; 4B97C3CC2047BAC1004C9782 /* AccelerateSolvePerfTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AccelerateSolvePerfTest.swift; sourceTree = ""; }; 4B9A5BF021FBA91500979AFE /* install-opencv.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "install-opencv.sh"; sourceTree = ""; }; 4BA3D17A1C771B2E0009B690 /* ProjectionSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.swift; path = ProjectionSpec.swift; sourceTree = ""; tabWidth = 4; }; @@ -102,8 +104,6 @@ 4BA3D1871C7995630009B690 /* Visual.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = Visual.playground; sourceTree = ""; }; 4BA7B1481C7C7A0600933779 /* .travis.yml */ = {isa = PBXFileReference; indentWidth = 2; lastKnownFileType = text; name = .travis.yml; path = ../.travis.yml; sourceTree = ""; tabWidth = 2; }; 4BA7B14D1C7D710D00933779 /* ReferenceImages */ = {isa = PBXFileReference; lastKnownFileType = folder; path = ReferenceImages; sourceTree = ""; }; - 4BB87C3B21F468CA00DABAED /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/LaunchScreen.xib; sourceTree = ""; }; - 4BB87C3C21F468CA00DABAED /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/Main.storyboard; sourceTree = ""; }; 4BCA955E2237A7CE0091E312 /* CATransform3D+MatrixSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CATransform3D+MatrixSpec.swift"; sourceTree = ""; }; 4BCA95622237B9880091E312 /* CATransform3D+MatrixPerformanceTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CATransform3D+MatrixPerformanceTest.swift"; sourceTree = ""; }; 4BD09EAD2046B05A006D2FA4 /* OpenCV_Spec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenCV_Spec.swift; sourceTree = ""; }; @@ -422,33 +422,36 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 0940; + LastUpgradeCheck = 1020; ORGANIZATIONNAME = CocoaPods; TargetAttributes = { 4B74DB33203BD9C70030F41B = { CreatedOnToolsVersion = 9.2; + LastSwiftMigration = 1020; }; 4BDF649A20469AB60022C5F8 = { CreatedOnToolsVersion = 9.2; - LastSwiftMigration = 0920; + LastSwiftMigration = 1020; ProvisioningStyle = Manual; }; 607FACCF1AFB9204008FA782 = { CreatedOnToolsVersion = 6.3.1; - LastSwiftMigration = 0920; + LastSwiftMigration = 1020; }; 607FACE41AFB9204008FA782 = { CreatedOnToolsVersion = 6.3.1; + LastSwiftMigration = 1020; TestTargetID = 607FACCF1AFB9204008FA782; }; }; }; buildConfigurationList = 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "PerspectiveTransform" */; compatibilityVersion = "Xcode 8.0"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, + Base, ); mainGroup = 607FACC71AFB9204008FA782; productRefGroup = 607FACD11AFB9204008FA782 /* Products */; @@ -761,7 +764,7 @@ 607FACD91AFB9204008FA782 /* Main.storyboard */ = { isa = PBXVariantGroup; children = ( - 4BB87C3C21F468CA00DABAED /* en */, + 4B96E125225C8C4600C7E49D /* Base */, ); name = Main.storyboard; sourceTree = ""; @@ -769,7 +772,7 @@ 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */ = { isa = PBXVariantGroup; children = ( - 4BB87C3B21F468CA00DABAED /* en */, + 4B96E126225C8C4600C7E49D /* Base */, ); name = LaunchScreen.xib; sourceTree = ""; @@ -784,6 +787,7 @@ INFOPLIST_FILE = Specs/Info.plist; PRODUCT_BUNDLE_IDENTIFIER = "paulz.github.io.PerspectiveTransform.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -794,6 +798,7 @@ INFOPLIST_FILE = Specs/Info.plist; PRODUCT_BUNDLE_IDENTIFIER = "paulz.github.io.PerspectiveTransform.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; }; name = Release; }; @@ -814,6 +819,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; SWIFT_OBJC_BRIDGING_HEADER = "OpenCV-OSX-Tests/OpenCVWrapper.h"; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -834,6 +840,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; SWIFT_OBJC_BRIDGING_HEADER = "OpenCV-OSX-Tests/OpenCVWrapper.h"; + SWIFT_VERSION = 5.0; }; name = Release; }; @@ -841,6 +848,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "compiler-default"; @@ -885,8 +893,8 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.2; - MACOSX_DEPLOYMENT_TARGET = 10.13; + IPHONEOS_DEPLOYMENT_TARGET = 12.2; + MACOSX_DEPLOYMENT_TARGET = 10.14; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; @@ -900,6 +908,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "compiler-default"; @@ -938,8 +947,8 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.2; - MACOSX_DEPLOYMENT_TARGET = 10.13; + IPHONEOS_DEPLOYMENT_TARGET = 12.2; + MACOSX_DEPLOYMENT_TARGET = 10.14; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_VERSION = 4.2; @@ -956,6 +965,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "paulz.github.io.PerspectiveTransform.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -968,6 +978,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "paulz.github.io.PerspectiveTransform.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; }; name = Release; }; @@ -979,6 +990,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "paulz.github.io.PerspectiveTransform.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example.app/Example"; }; name = Debug; @@ -991,6 +1003,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "paulz.github.io.PerspectiveTransform.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example.app/Example"; }; name = Release; diff --git a/Example/PerspectiveTransform.xcworkspace/xcshareddata/xcschemes/Example.xcscheme b/Example/PerspectiveTransform.xcworkspace/xcshareddata/xcschemes/Example.xcscheme index 6a82bdf..d0603b0 100644 --- a/Example/PerspectiveTransform.xcworkspace/xcshareddata/xcschemes/Example.xcscheme +++ b/Example/PerspectiveTransform.xcworkspace/xcshareddata/xcschemes/Example.xcscheme @@ -1,6 +1,6 @@ '../' @@ -24,7 +24,7 @@ target 'Example' do end target 'OpenCV OSX Tests' do - platform :osx, '10.13' + platform :osx, '10.14' SwiftTestingPods() end end diff --git a/Example/Podfile.lock b/Example/Podfile.lock index 904b50b..c073d0c 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -1,5 +1,5 @@ PODS: - - ImageCoordinateSpace (1.0.7) + - ImageCoordinateSpace (1.1) - iOSSnapshotTestCase (6.0.3): - iOSSnapshotTestCase/SwiftSupport (= 6.0.3) - iOSSnapshotTestCase/Core (6.0.3) @@ -11,7 +11,7 @@ PODS: - Nimble-Snapshots/Core (7.0.0): - iOSSnapshotTestCase (~> 6.0) - Nimble (~> 8.0) - - PerspectiveTransform (0.4) + - PerspectiveTransform (1.0) - Quick (2.0.0) DEPENDENCIES: @@ -34,13 +34,13 @@ EXTERNAL SOURCES: :path: "../" SPEC CHECKSUMS: - ImageCoordinateSpace: 424e76be5db1cbd02a93cb0e97b0d3d46957b454 + ImageCoordinateSpace: 9e560a43a97375371f22343bb47e2c7e7fc428ae iOSSnapshotTestCase: 944a73f6d9676302811a86c0cf35f0e6ef5ab2a0 Nimble: 45f786ae66faa9a709624227fae502db55a8bdd0 Nimble-Snapshots: 2d6d712ceb2d1850d88f850fbd7c732618106022 - PerspectiveTransform: 4e823871c7fde15b776610dbdf102a3b00adb077 + PerspectiveTransform: 80047e1d02903cb3777f429492514978161a7203 Quick: ce1276c7c27ba2da3cb2fd0cde053c3648b3b22d -PODFILE CHECKSUM: 882ce3558060409e596935d1d06dd5a6707894f9 +PODFILE CHECKSUM: 80ff60e539c07a49578d282438bd9e678f55ceff COCOAPODS: 1.6.1 diff --git a/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/PerspectiveTransform.xcscheme b/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/PerspectiveTransform.xcscheme index 3b221f9..7824432 100644 --- a/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/PerspectiveTransform.xcscheme +++ b/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/PerspectiveTransform.xcscheme @@ -1,6 +1,6 @@ (0.0, 0.0, 1.0)\n" + + "SIMD3(0.0, 0.0, 1.0)\n" + + "SIMD3(0.0, 0.0, 1.0)\n" + + "SIMD3(0.0, 0.0, 1.0)\n" + "]" } } @@ -80,7 +80,7 @@ class PerspectiveSpec: QuickSpec { context("pointsToBasisVectorsMap") { it("should result in identity when multiplied by basisVectorsToPointsMap") { - let identity = Matrix3x3(diagonal: Vector3(1)) + let identity = Matrix3x3(diagonal: Vector3(repeating: 1)) expect(perspective.basisVectorsToPointsMap * perspective.pointsToBasisVectorsMap) == identity } diff --git a/PerspectiveTransform.podspec b/PerspectiveTransform.podspec index 4594628..c4df62e 100644 --- a/PerspectiveTransform.podspec +++ b/PerspectiveTransform.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.cocoapods_version = '~> 1.5' s.name = 'PerspectiveTransform' - s.version = '0.4' + s.version = '1.0' s.summary = 'Perspective Transform calculates CATransform3D' s.description = <<-DESC Calculates CATransform3D to transform rectangular frame to convex quadrilateral @@ -14,15 +14,16 @@ Pod::Spec.new do |s| s.author = { 'Paul Zabelin' => authorPage } s.source = { :git => "#{s.homepage}.git", :tag => s.version.to_s } s.social_media_url = 'https://twitter.com/iospaulz' - s.platform = :ios, '11.0' - s.swift_version = '4.2' + s.platform = :ios, '12.2' + s.swift_version = '5.0' s.source_files = 'Pod/Classes/**/*' s.frameworks = 'UIKit', 'CoreGraphics', 'QuartzCore' s.test_spec 'UnitSpecs' do |ts| + ts.requires_app_host = false ts.source_files = 'Example/Specs/**/*.{h,swift}', 'Example/Tests/*Helper.swift' ts.dependencies = { - 'Quick' => '~> 1.3', - 'Nimble' => '~> 7.1' + 'Quick' => '~> 2.0', + 'Nimble' => '~> 8.0' } end s.test_spec 'AppSpecs' do |ts| @@ -30,9 +31,9 @@ Pod::Spec.new do |s| ts.resources = 'Example/Tests/**/*.{png,jpg,svg}' ts.source_files = 'Example/Tests/**/*.{h,swift}', 'Example/PerspectiveTransform/resetAnchorPoint.swift' ts.dependencies = { - 'Quick' => '~> 1.3', - 'Nimble-Snapshots' => '~> 6.8', - 'iOSSnapshotTestCase' => '~> 4.0' + 'Quick' => '~> 2.0', + 'Nimble-Snapshots' => '~> 7.0', + 'iOSSnapshotTestCase' => '~> 6.0' } end end diff --git a/Pod/Classes/Matrix3x3+3D.swift b/Pod/Classes/Matrix3x3+3D.swift index 11a14dd..8d4e4a6 100644 --- a/Pod/Classes/Matrix3x3+3D.swift +++ b/Pod/Classes/Matrix3x3+3D.swift @@ -9,9 +9,9 @@ import simd extension Vector3 { - static let one = Vector3(.one) - static let zero = Vector3(0) - static let lastIndex = Vector3().endIndex - 1 + static let one = Vector3(repeating: .one) + static let zero = Vector3(repeating: 0) + static let lastIndex = Vector3().scalarCount - 1 static let indexSlice = 0...Vector3.lastIndex } diff --git a/Pod/Classes/Perspective+Transform.swift b/Pod/Classes/Perspective+Transform.swift index 1e24c8f..ef737b8 100644 --- a/Pod/Classes/Perspective+Transform.swift +++ b/Pod/Classes/Perspective+Transform.swift @@ -15,7 +15,7 @@ public extension Perspective { - parameter bottomLeft: bottom left corner - parameter bottomRight: bottom right corner */ - public convenience init(_ topLeft: CGPoint, _ topRight: CGPoint, _ bottomLeft: CGPoint, _ bottomRight: CGPoint) { + convenience init(_ topLeft: CGPoint, _ topRight: CGPoint, _ bottomLeft: CGPoint, _ bottomRight: CGPoint) { self.init(.init(topLeft, topRight, bottomLeft, bottomRight)) } /** @@ -23,7 +23,7 @@ public extension Perspective { - parameter points: corner points, must be size 4 */ - public convenience init(_ points: [CGPoint]) { + convenience init(_ points: [CGPoint]) { self.init(.init(points)) } /** @@ -31,7 +31,7 @@ public extension Perspective { - parameter rect: defines the corners */ - public convenience init(_ rect: CGRect) { + convenience init(_ rect: CGRect) { self.init(.init(rect)) } @@ -41,7 +41,7 @@ public extension Perspective { - parameter destination: perspective to transform to - returns: tranformation matrix from this perspective to destination */ - public func projectiveTransform(destination: Perspective) -> CATransform3D { + func projectiveTransform(destination: Perspective) -> CATransform3D { return .init(projection(to: destination).to3d()) } } diff --git a/README.md b/README.md index d7dd3c5..f596df4 100644 --- a/README.md +++ b/README.md @@ -117,6 +117,6 @@ Paul Zabelin, http://github.com/paulz PerspectiveTransform is available under the MIT license. See the LICENSE file for more info. -[swift-badge]: https://img.shields.io/badge/Swift-4.2-orange.svg?style=flat +[swift-badge]: https://img.shields.io/badge/Swift-5.0-orange.svg?style=flat [swift-url]: https://swift.org [carthage-badge]: https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat