diff options
author | Michael <michael.foiani@gmail.com> | 2021-07-02 14:34:33 -0400 |
---|---|---|
committer | Michael <michael.foiani@gmail.com> | 2021-07-02 14:34:33 -0400 |
commit | 643e7adcda3e5ae7aa3daeb86020f2e6f38d1448 (patch) | |
tree | 032dcc7c80a96f709e24ac747c74e75045d8845b | |
parent | 66c974161b59f1e3570e2a4a42334fabc16c2129 (diff) |
Add depedencies to xcode for react-native-video-processing. Building the project was successful.
-rw-r--r-- | ios/Frontend.xcodeproj/project.pbxproj | 252 | ||||
-rw-r--r-- | ios/Frontend/Info.plist | 16 | ||||
-rw-r--r-- | ios/Podfile.lock | 18 | ||||
-rw-r--r-- | ios/RNVideoProcessing/Frontend-Bridging-Header.h | 4 | ||||
-rw-r--r-- | ios/RNVideoProcessing/RNTrimmerView/RNTrimmerView-Bridging-Header.h | 11 | ||||
-rw-r--r-- | ios/RNVideoProcessing/RNTrimmerView/RNTrimmerView.swift | 273 | ||||
-rw-r--r-- | ios/RNVideoProcessing/RNTrimmerView/RNTrimmerViewManager.swift | 17 |
7 files changed, 562 insertions, 29 deletions
diff --git a/ios/Frontend.xcodeproj/project.pbxproj b/ios/Frontend.xcodeproj/project.pbxproj index aa86fb3d..ce1492da 100644 --- a/ios/Frontend.xcodeproj/project.pbxproj +++ b/ios/Frontend.xcodeproj/project.pbxproj @@ -18,6 +18,29 @@ 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 2DCD954D1E0B4F2C00145EB5 /* FrontendTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* FrontendTests.m */; }; 8CFABFFB75409DE440B1F946 /* libPods-Frontend-FrontendTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6C8C01B1DA113E97C596E47C /* libPods-Frontend-FrontendTests.a */; }; + B12DC05B268F8B3100AFB62E /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B12DC05A268F8B3100AFB62E /* CoreMedia.framework */; }; + B12DC05D268F8B3A00AFB62E /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B12DC05C268F8B3A00AFB62E /* CoreVideo.framework */; }; + B12DC05F268F8B4000AFB62E /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B12DC05E268F8B4000AFB62E /* OpenGLES.framework */; }; + B12DC061268F8B4800AFB62E /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B12DC060268F8B4800AFB62E /* AVFoundation.framework */; }; + B12DC063268F8B5000AFB62E /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B12DC062268F8B5000AFB62E /* QuartzCore.framework */; }; + B12DC065268F8B5500AFB62E /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B12DC064268F8B5500AFB62E /* MobileCoreServices.framework */; }; + B12DC066268F8B5A00AFB62E /* GPUImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B1267235268F88A000F5BECB /* GPUImage.framework */; }; + B12DC067268F8B5A00AFB62E /* GPUImage.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B1267235268F88A000F5BECB /* GPUImage.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + B170CF27268F86B600D3E799 /* VideoProcessingGPUFilters.swift in Sources */ = {isa = PBXBuildFile; fileRef = B170CF24268F86B600D3E799 /* VideoProcessingGPUFilters.swift */; }; + B170CF28268F86B600D3E799 /* RNVideoProcessingManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B170CF25268F86B600D3E799 /* RNVideoProcessingManager.swift */; }; + B170CF29268F86B600D3E799 /* RNVideoPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = B170CF26268F86B600D3E799 /* RNVideoPlayer.swift */; }; + B170CF30268F872200D3E799 /* RNTrimmerViewManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B170CF2E268F872100D3E799 /* RNTrimmerViewManager.swift */; }; + B170CF31268F872200D3E799 /* RNTrimmerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B170CF2F268F872100D3E799 /* RNTrimmerView.swift */; }; + B170CF39268F875200D3E799 /* ICGThumbView.m in Sources */ = {isa = PBXBuildFile; fileRef = B170CF32268F875200D3E799 /* ICGThumbView.m */; }; + B170CF3A268F875200D3E799 /* ICGRulerView.m in Sources */ = {isa = PBXBuildFile; fileRef = B170CF34268F875200D3E799 /* ICGRulerView.m */; }; + B170CF3B268F875200D3E799 /* ICGVideoTrimmerView.m in Sources */ = {isa = PBXBuildFile; fileRef = B170CF38268F875200D3E799 /* ICGVideoTrimmerView.m */; }; + B170CF3E268F875D00D3E799 /* RNTrimmerViewBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = B170CF3C268F875D00D3E799 /* RNTrimmerViewBridge.m */; }; + B170CF43268F877100D3E799 /* RNVideoProcessingBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = B170CF3F268F877100D3E799 /* RNVideoProcessingBridge.m */; }; + B170CF4A268F878400D3E799 /* SDAVAssetExportSession.m in Sources */ = {isa = PBXBuildFile; fileRef = B170CF44268F878400D3E799 /* SDAVAssetExportSession.m */; }; + B170CF4B268F878400D3E799 /* RNVideoTrimmerBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = B170CF46268F878400D3E799 /* RNVideoTrimmerBridge.m */; }; + B170CF4C268F878400D3E799 /* RNVideoTrimmer.swift in Sources */ = {isa = PBXBuildFile; fileRef = B170CF47268F878400D3E799 /* RNVideoTrimmer.swift */; }; + B170CF4D268F878400D3E799 /* AVUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B170CF48268F878400D3E799 /* AVUtilities.swift */; }; + B1C776B0268F8F210072612E /* Frontend-Bridging-Header.h in Sources */ = {isa = PBXBuildFile; fileRef = B1C776AC268F8EBB0072612E /* Frontend-Bridging-Header.h */; }; B6D41FC4D095A2EF7C3277A9 /* libPods-Frontend-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F8C4537388D0708785A4770E /* libPods-Frontend-tvOS.a */; }; B7B3F698256E07C400EF4575 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = B7B3F697256E07C400EF4575 /* GoogleService-Info.plist */; }; B7B3F699256E07C400EF4575 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = B7B3F697256E07C400EF4575 /* GoogleService-Info.plist */; }; @@ -39,8 +62,36 @@ remoteGlobalIDString = 2D02E47A1E0B4A5D006451C7; remoteInfo = "Frontend-tvOS"; }; + B1267232268F88A000F5BECB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B126722C268F88A000F5BECB /* GPUImage.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = BCF1A33414DDB1EC00852800; + remoteInfo = GPUImage; + }; + B1267234268F88A000F5BECB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B126722C268F88A000F5BECB /* GPUImage.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = BCE209E51943F20C002FEED8; + remoteInfo = GPUImageFramework; + }; /* End PBXContainerItemProxy section */ +/* Begin PBXCopyFilesBuildPhase section */ + B12DC068268F8B5A00AFB62E /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + B12DC067268F8B5A00AFB62E /* GPUImage.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + /* Begin PBXFileReference section */ 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = "<group>"; }; 00E356EE1AD99517003FC87E /* FrontendTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FrontendTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -64,6 +115,39 @@ 82C6ED904DE229CD9C824BE9 /* Pods-Frontend.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Frontend.release.xcconfig"; path = "Target Support Files/Pods-Frontend/Pods-Frontend.release.xcconfig"; sourceTree = "<group>"; }; 9441D0AF6446AB2B76D53150 /* Pods-Frontend-tvOSTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Frontend-tvOSTests.debug.xcconfig"; path = "Target Support Files/Pods-Frontend-tvOSTests/Pods-Frontend-tvOSTests.debug.xcconfig"; sourceTree = "<group>"; }; A8F8B1059699DFE5975BAB3B /* Pods-Frontend-tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Frontend-tvOS.debug.xcconfig"; path = "Target Support Files/Pods-Frontend-tvOS/Pods-Frontend-tvOS.debug.xcconfig"; sourceTree = "<group>"; }; + B126722C268F88A000F5BECB /* GPUImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = GPUImage.xcodeproj; path = "../node_modules/react-native-video-processing/ios/GPUImage/framework/GPUImage.xcodeproj"; sourceTree = "<group>"; }; + B12DC05A268F8B3100AFB62E /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; }; + B12DC05C268F8B3A00AFB62E /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = System/Library/Frameworks/CoreVideo.framework; sourceTree = SDKROOT; }; + B12DC05E268F8B4000AFB62E /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + B12DC060268F8B4800AFB62E /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + B12DC062268F8B5000AFB62E /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + B12DC064268F8B5500AFB62E /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; }; + B170CF24268F86B600D3E799 /* VideoProcessingGPUFilters.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = VideoProcessingGPUFilters.swift; path = "../../node_modules/react-native-video-processing/ios/RNVideoProcessing/VideoProcessingGPUFilters.swift"; sourceTree = "<group>"; }; + B170CF25268F86B600D3E799 /* RNVideoProcessingManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = RNVideoProcessingManager.swift; path = "../../node_modules/react-native-video-processing/ios/RNVideoProcessing/RNVideoProcessingManager.swift"; sourceTree = "<group>"; }; + B170CF26268F86B600D3E799 /* RNVideoPlayer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = RNVideoPlayer.swift; path = "../../node_modules/react-native-video-processing/ios/RNVideoProcessing/RNVideoPlayer.swift"; sourceTree = "<group>"; }; + B170CF2D268F872100D3E799 /* RNTrimmerView-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "RNTrimmerView-Bridging-Header.h"; sourceTree = "<group>"; }; + B170CF2E268F872100D3E799 /* RNTrimmerViewManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNTrimmerViewManager.swift; sourceTree = "<group>"; }; + B170CF2F268F872100D3E799 /* RNTrimmerView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNTrimmerView.swift; sourceTree = "<group>"; }; + B170CF32268F875200D3E799 /* ICGThumbView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ICGThumbView.m; path = "../../../../node_modules/react-native-video-processing/ios/RNVideoProcessing/RNTrimmerView/ICGVideoTrimmer/ICGThumbView.m"; sourceTree = "<group>"; }; + B170CF33268F875200D3E799 /* ICGRulerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ICGRulerView.h; path = "../../../../node_modules/react-native-video-processing/ios/RNVideoProcessing/RNTrimmerView/ICGVideoTrimmer/ICGRulerView.h"; sourceTree = "<group>"; }; + B170CF34268F875200D3E799 /* ICGRulerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ICGRulerView.m; path = "../../../../node_modules/react-native-video-processing/ios/RNVideoProcessing/RNTrimmerView/ICGVideoTrimmer/ICGRulerView.m"; sourceTree = "<group>"; }; + B170CF35268F875200D3E799 /* ICGVideoTrimmer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ICGVideoTrimmer.h; path = "../../../../node_modules/react-native-video-processing/ios/RNVideoProcessing/RNTrimmerView/ICGVideoTrimmer/ICGVideoTrimmer.h"; sourceTree = "<group>"; }; + B170CF36268F875200D3E799 /* ICGVideoTrimmerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ICGVideoTrimmerView.h; path = "../../../../node_modules/react-native-video-processing/ios/RNVideoProcessing/RNTrimmerView/ICGVideoTrimmer/ICGVideoTrimmerView.h"; sourceTree = "<group>"; }; + B170CF37268F875200D3E799 /* ICGThumbView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ICGThumbView.h; path = "../../../../node_modules/react-native-video-processing/ios/RNVideoProcessing/RNTrimmerView/ICGVideoTrimmer/ICGThumbView.h"; sourceTree = "<group>"; }; + B170CF38268F875200D3E799 /* ICGVideoTrimmerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ICGVideoTrimmerView.m; path = "../../../../node_modules/react-native-video-processing/ios/RNVideoProcessing/RNTrimmerView/ICGVideoTrimmer/ICGVideoTrimmerView.m"; sourceTree = "<group>"; }; + B170CF3C268F875D00D3E799 /* RNTrimmerViewBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RNTrimmerViewBridge.m; path = "../../../node_modules/react-native-video-processing/ios/RNVideoProcessing/RNTrimmerView/RNTrimmerViewBridge.m"; sourceTree = "<group>"; }; + B170CF3D268F875D00D3E799 /* RNTrimmerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RNTrimmerView.h; path = "../../../node_modules/react-native-video-processing/ios/RNVideoProcessing/RNTrimmerView/RNTrimmerView.h"; sourceTree = "<group>"; }; + B170CF3F268F877100D3E799 /* RNVideoProcessingBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RNVideoProcessingBridge.m; path = "../../node_modules/react-native-video-processing/ios/RNVideoProcessing/RNVideoProcessingBridge.m"; sourceTree = "<group>"; }; + B170CF40268F877100D3E799 /* RNVideoProcessing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RNVideoProcessing.h; path = "../../node_modules/react-native-video-processing/ios/RNVideoProcessing/RNVideoProcessing.h"; sourceTree = "<group>"; }; + B170CF41268F877100D3E799 /* RCTSwiftBridgeModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RCTSwiftBridgeModule.h; path = "../../node_modules/react-native-video-processing/ios/RNVideoProcessing/RCTSwiftBridgeModule.h"; sourceTree = "<group>"; }; + B170CF42268F877100D3E799 /* RNVideoProcessing-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "RNVideoProcessing-Bridging-Header.h"; path = "../../node_modules/react-native-video-processing/ios/RNVideoProcessing/RNVideoProcessing-Bridging-Header.h"; sourceTree = "<group>"; }; + B170CF44268F878400D3E799 /* SDAVAssetExportSession.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDAVAssetExportSession.m; path = "../../../node_modules/react-native-video-processing/ios/RNVideoProcessing/RNVideoTrimmer/SDAVAssetExportSession.m"; sourceTree = "<group>"; }; + B170CF45268F878400D3E799 /* SDAVAssetExportSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDAVAssetExportSession.h; path = "../../../node_modules/react-native-video-processing/ios/RNVideoProcessing/RNVideoTrimmer/SDAVAssetExportSession.h"; sourceTree = "<group>"; }; + B170CF46268F878400D3E799 /* RNVideoTrimmerBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RNVideoTrimmerBridge.m; path = "../../../node_modules/react-native-video-processing/ios/RNVideoProcessing/RNVideoTrimmer/RNVideoTrimmerBridge.m"; sourceTree = "<group>"; }; + B170CF47268F878400D3E799 /* RNVideoTrimmer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = RNVideoTrimmer.swift; path = "../../../node_modules/react-native-video-processing/ios/RNVideoProcessing/RNVideoTrimmer/RNVideoTrimmer.swift"; sourceTree = "<group>"; }; + B170CF48268F878400D3E799 /* AVUtilities.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AVUtilities.swift; path = "../../../node_modules/react-native-video-processing/ios/RNVideoProcessing/RNVideoTrimmer/AVUtilities.swift"; sourceTree = "<group>"; }; + B170CF49268F878400D3E799 /* RNVideoTrimmer-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "RNVideoTrimmer-Bridging-Header.h"; path = "../../../node_modules/react-native-video-processing/ios/RNVideoProcessing/RNVideoTrimmer/RNVideoTrimmer-Bridging-Header.h"; sourceTree = "<group>"; }; + B1C776AC268F8EBB0072612E /* Frontend-Bridging-Header.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc.preprocessed; fileEncoding = 4; path = "Frontend-Bridging-Header.h"; sourceTree = "<group>"; }; B7B3F697256E07C400EF4575 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; }; B7D7DF1925880C7800C18E93 /* FrontendDebug.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = FrontendDebug.entitlements; path = Frontend/FrontendDebug.entitlements; sourceTree = "<group>"; }; B848841B31EAA032CEAC624B /* Pods-Frontend-FrontendTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Frontend-FrontendTests.release.xcconfig"; path = "Target Support Files/Pods-Frontend-FrontendTests/Pods-Frontend-FrontendTests.release.xcconfig"; sourceTree = "<group>"; }; @@ -87,7 +171,14 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + B12DC05B268F8B3100AFB62E /* CoreMedia.framework in Frameworks */, + B12DC065268F8B5500AFB62E /* MobileCoreServices.framework in Frameworks */, 162320D6BACFC1F441EC22C1 /* libPods-Frontend.a in Frameworks */, + B12DC063268F8B5000AFB62E /* QuartzCore.framework in Frameworks */, + B12DC061268F8B4800AFB62E /* AVFoundation.framework in Frameworks */, + B12DC066268F8B5A00AFB62E /* GPUImage.framework in Frameworks */, + B12DC05D268F8B3A00AFB62E /* CoreVideo.framework in Frameworks */, + B12DC05F268F8B4000AFB62E /* OpenGLES.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -147,6 +238,12 @@ 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { isa = PBXGroup; children = ( + B12DC064268F8B5500AFB62E /* MobileCoreServices.framework */, + B12DC062268F8B5000AFB62E /* QuartzCore.framework */, + B12DC060268F8B4800AFB62E /* AVFoundation.framework */, + B12DC05E268F8B4000AFB62E /* OpenGLES.framework */, + B12DC05C268F8B3A00AFB62E /* CoreVideo.framework */, + B12DC05A268F8B3100AFB62E /* CoreMedia.framework */, ED297162215061F000B7C4FE /* JavaScriptCore.framework */, ED2971642150620600B7C4FE /* JavaScriptCore.framework */, 032770E196D0B343FBF58097 /* libPods-Frontend.a */, @@ -175,6 +272,8 @@ 83CBB9F61A601CBA00E9B192 = { isa = PBXGroup; children = ( + B126722C268F88A000F5BECB /* GPUImage.xcodeproj */, + B170CF22268F863000D3E799 /* RNVideoProcessing */, 13B07FAE1A68108700A75B9A /* Frontend */, 832341AE1AAA6A7D00B99B32 /* Libraries */, 00E356EF1AD99517003FC87E /* FrontendTests */, @@ -198,6 +297,72 @@ name = Products; sourceTree = "<group>"; }; + B126722D268F88A000F5BECB /* Products */ = { + isa = PBXGroup; + children = ( + B1267233268F88A000F5BECB /* libGPUImage.a */, + B1267235268F88A000F5BECB /* GPUImage.framework */, + ); + name = Products; + sourceTree = "<group>"; + }; + B170CF22268F863000D3E799 /* RNVideoProcessing */ = { + isa = PBXGroup; + children = ( + B1C776AC268F8EBB0072612E /* Frontend-Bridging-Header.h */, + B170CF41268F877100D3E799 /* RCTSwiftBridgeModule.h */, + B170CF42268F877100D3E799 /* RNVideoProcessing-Bridging-Header.h */, + B170CF40268F877100D3E799 /* RNVideoProcessing.h */, + B170CF3F268F877100D3E799 /* RNVideoProcessingBridge.m */, + B170CF2B268F86F500D3E799 /* RNTrimmerView */, + B170CF2A268F86DA00D3E799 /* RNVideoTrimmer */, + B170CF26268F86B600D3E799 /* RNVideoPlayer.swift */, + B170CF25268F86B600D3E799 /* RNVideoProcessingManager.swift */, + B170CF24268F86B600D3E799 /* VideoProcessingGPUFilters.swift */, + ); + path = RNVideoProcessing; + sourceTree = "<group>"; + }; + B170CF2A268F86DA00D3E799 /* RNVideoTrimmer */ = { + isa = PBXGroup; + children = ( + B170CF48268F878400D3E799 /* AVUtilities.swift */, + B170CF49268F878400D3E799 /* RNVideoTrimmer-Bridging-Header.h */, + B170CF47268F878400D3E799 /* RNVideoTrimmer.swift */, + B170CF46268F878400D3E799 /* RNVideoTrimmerBridge.m */, + B170CF45268F878400D3E799 /* SDAVAssetExportSession.h */, + B170CF44268F878400D3E799 /* SDAVAssetExportSession.m */, + ); + path = RNVideoTrimmer; + sourceTree = "<group>"; + }; + B170CF2B268F86F500D3E799 /* RNTrimmerView */ = { + isa = PBXGroup; + children = ( + B170CF3D268F875D00D3E799 /* RNTrimmerView.h */, + B170CF3C268F875D00D3E799 /* RNTrimmerViewBridge.m */, + B170CF2C268F86FF00D3E799 /* ICGVideoTrimmer */, + B170CF2D268F872100D3E799 /* RNTrimmerView-Bridging-Header.h */, + B170CF2F268F872100D3E799 /* RNTrimmerView.swift */, + B170CF2E268F872100D3E799 /* RNTrimmerViewManager.swift */, + ); + path = RNTrimmerView; + sourceTree = "<group>"; + }; + B170CF2C268F86FF00D3E799 /* ICGVideoTrimmer */ = { + isa = PBXGroup; + children = ( + B170CF33268F875200D3E799 /* ICGRulerView.h */, + B170CF34268F875200D3E799 /* ICGRulerView.m */, + B170CF37268F875200D3E799 /* ICGThumbView.h */, + B170CF32268F875200D3E799 /* ICGThumbView.m */, + B170CF35268F875200D3E799 /* ICGVideoTrimmer.h */, + B170CF36268F875200D3E799 /* ICGVideoTrimmerView.h */, + B170CF38268F875200D3E799 /* ICGVideoTrimmerView.m */, + ); + path = ICGVideoTrimmer; + sourceTree = "<group>"; + }; DC1ED7ABEFF4D056945504EA /* Pods */ = { isa = PBXGroup; children = ( @@ -250,6 +415,7 @@ 901AC37769F9C0ACE97F2ECF /* [CP] Embed Pods Frameworks */, 40BC5C221AB5093182A8B9DE /* [CP] Copy Pods Resources */, 5A5C99B7D995797D0BBC1D92 /* [CP-User] [RNFB] Core Configuration */, + B12DC068268F8B5A00AFB62E /* Embed Frameworks */, ); buildRules = ( ); @@ -309,20 +475,22 @@ TargetAttributes = { 00E356ED1AD99517003FC87E = { CreatedOnToolsVersion = 6.2; - DevelopmentTeam = CA2JXDK7RB; + DevelopmentTeam = VQ6D29Y5N7; + ProvisioningStyle = Automatic; TestTargetID = 13B07F861A680F5B00A75B9A; }; 13B07F861A680F5B00A75B9A = { - DevelopmentTeam = FZ5J543S6Y; - LastSwiftMigration = 1120; + DevelopmentTeam = VQ6D29Y5N7; + LastSwiftMigration = 1250; ProvisioningStyle = Automatic; }; 2D02E47A1E0B4A5D006451C7 = { CreatedOnToolsVersion = 8.2.1; - ProvisioningStyle = Automatic; + ProvisioningStyle = Manual; }; 2D02E48F1E0B4A5D006451C7 = { CreatedOnToolsVersion = 8.2.1; + DevelopmentTeam = VQ6D29Y5N7; ProvisioningStyle = Automatic; TestTargetID = 2D02E47A1E0B4A5D006451C7; }; @@ -339,6 +507,12 @@ mainGroup = 83CBB9F61A601CBA00E9B192; productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; projectDirPath = ""; + projectReferences = ( + { + ProductGroup = B126722D268F88A000F5BECB /* Products */; + ProjectRef = B126722C268F88A000F5BECB /* GPUImage.xcodeproj */; + }, + ); projectRoot = ""; targets = ( 13B07F861A680F5B00A75B9A /* Frontend */, @@ -349,6 +523,23 @@ }; /* End PBXProject section */ +/* Begin PBXReferenceProxy section */ + B1267233268F88A000F5BECB /* libGPUImage.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libGPUImage.a; + remoteRef = B1267232268F88A000F5BECB /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B1267235268F88A000F5BECB /* GPUImage.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = GPUImage.framework; + remoteRef = B1267234268F88A000F5BECB /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + /* Begin PBXResourcesBuildPhase section */ 00E356EC1AD99517003FC87E /* Resources */ = { isa = PBXResourcesBuildPhase; @@ -709,8 +900,23 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + B170CF31268F872200D3E799 /* RNTrimmerView.swift in Sources */, + B1C776B0268F8F210072612E /* Frontend-Bridging-Header.h in Sources */, + B170CF3E268F875D00D3E799 /* RNTrimmerViewBridge.m in Sources */, + B170CF28268F86B600D3E799 /* RNVideoProcessingManager.swift in Sources */, + B170CF4A268F878400D3E799 /* SDAVAssetExportSession.m in Sources */, + B170CF30268F872200D3E799 /* RNTrimmerViewManager.swift in Sources */, + B170CF3B268F875200D3E799 /* ICGVideoTrimmerView.m in Sources */, 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, + B170CF29268F86B600D3E799 /* RNVideoPlayer.swift in Sources */, + B170CF3A268F875200D3E799 /* ICGRulerView.m in Sources */, + B170CF27268F86B600D3E799 /* VideoProcessingGPUFilters.swift in Sources */, + B170CF43268F877100D3E799 /* RNVideoProcessingBridge.m in Sources */, + B170CF4C268F878400D3E799 /* RNVideoTrimmer.swift in Sources */, + B170CF4B268F878400D3E799 /* RNVideoTrimmerBridge.m in Sources */, 13B07FC11A68108700A75B9A /* main.m in Sources */, + B170CF39268F875200D3E799 /* ICGThumbView.m in Sources */, + B170CF4D268F878400D3E799 /* AVUtilities.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -765,7 +971,10 @@ buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; - DEVELOPMENT_TEAM = CA2JXDK7RB; + CODE_SIGN_IDENTITY = "Apple Development"; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = VQ6D29Y5N7; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", @@ -780,6 +989,8 @@ ); PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Frontend.app/Frontend"; }; name = Debug; @@ -790,8 +1001,11 @@ buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_IDENTITY = "Apple Development"; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; + CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = CA2JXDK7RB; + DEVELOPMENT_TEAM = VQ6D29Y5N7; INFOPLIST_FILE = FrontendTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; @@ -802,6 +1016,8 @@ ); PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Frontend.app/Frontend"; }; name = Release; @@ -816,7 +1032,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = FZ5J543S6Y; + DEVELOPMENT_TEAM = VQ6D29Y5N7; ENABLE_BITCODE = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", @@ -830,9 +1046,10 @@ "-ObjC", "-lc++", ); - PRODUCT_BUNDLE_IDENTIFIER = com.taggid.taggid; + PRODUCT_BUNDLE_IDENTIFIER = FZ5J543S6Y; PRODUCT_NAME = Frontend; PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OBJC_BRIDGING_HEADER = "RNVideoProcessing/Frontend-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; @@ -848,7 +1065,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = FZ5J543S6Y; + DEVELOPMENT_TEAM = VQ6D29Y5N7; INFOPLIST_FILE = Frontend/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; @@ -857,9 +1074,10 @@ "-ObjC", "-lc++", ); - PRODUCT_BUNDLE_IDENTIFIER = com.taggid.taggid; + PRODUCT_BUNDLE_IDENTIFIER = FZ5J543S6Y; PRODUCT_NAME = Frontend; PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OBJC_BRIDGING_HEADER = "RNVideoProcessing/Frontend-Bridging-Header.h"; SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; @@ -875,7 +1093,9 @@ CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_STYLE = Manual; DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = ""; ENABLE_TESTABILITY = YES; GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = "Frontend-tvOS/Info.plist"; @@ -885,8 +1105,9 @@ "-ObjC", "-lc++", ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.Frontend-tvOS"; + PRODUCT_BUNDLE_IDENTIFIER = FZ5J543S6Y; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = appletvos; TARGETED_DEVICE_FAMILY = 3; TVOS_DEPLOYMENT_TARGET = 12.0; @@ -903,8 +1124,10 @@ CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = ""; GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = "Frontend-tvOS/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; @@ -913,8 +1136,9 @@ "-ObjC", "-lc++", ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.Frontend-tvOS"; + PRODUCT_BUNDLE_IDENTIFIER = FZ5J543S6Y; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = appletvos; TARGETED_DEVICE_FAMILY = 3; TVOS_DEPLOYMENT_TARGET = 12.0; @@ -931,6 +1155,7 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = VQ6D29Y5N7; ENABLE_TESTABILITY = YES; GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = "Frontend-tvOSTests/Info.plist"; @@ -959,6 +1184,7 @@ CLANG_WARN_SUSPICIOUS_MOVE = YES; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = VQ6D29Y5N7; GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = "Frontend-tvOSTests/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; @@ -1033,6 +1259,7 @@ MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; + SWIFT_OBJC_BRIDGING_HEADER = "RNVideoProcessing/Frontend-Bridging-Header.h"; }; name = Debug; }; @@ -1086,6 +1313,7 @@ ); MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; + SWIFT_OBJC_BRIDGING_HEADER = "RNVideoProcessing/Frontend-Bridging-Header.h"; VALIDATE_PRODUCT = YES; }; name = Release; diff --git a/ios/Frontend/Info.plist b/ios/Frontend/Info.plist index 7dedc043..d74f2dcb 100644 --- a/ios/Frontend/Info.plist +++ b/ios/Frontend/Info.plist @@ -2,8 +2,6 @@ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> - <key>NSContactsUsageDescription</key> - <string>This helps you quickly get in touch with friends on the app and more</string> <key>CFBundleDevelopmentRegion</key> <string>en</string> <key>CFBundleDisplayName</key> @@ -50,18 +48,20 @@ </dict> </dict> </dict> + <key>NSCameraUsageDescription</key> + <string>Enable camera access to capture and share moment with your friends</string> + <key>NSContactsUsageDescription</key> + <string>This helps you quickly get in touch with friends on the app and more</string> <key>NSLocationWhenInUseUsageDescription</key> <string></string> <key>NSMainNibFile</key> <string>LaunchScreen</string> - <key>NSPhotoLibraryUsageDescription</key> - <string>This lets you share photos from your library and select profile displays</string> - <key>NSPhotoLibraryAddUsageDescription</key> - <string>This lets you save photos captured on Tagg, to your library</string> - <key>NSCameraUsageDescription</key> - <string>Enable camera access to capture and share moment with your friends</string> <key>NSMicrophoneUsageDescription</key> <string>Enable microphone access to record and listen to videos</string> + <key>NSPhotoLibraryAddUsageDescription</key> + <string>This lets you save photos captured on Tagg, to your library</string> + <key>NSPhotoLibraryUsageDescription</key> + <string>This lets you share photos from your library and select profile displays</string> <key>UIAppFonts</key> <array> <string>Feather.ttf</string> diff --git a/ios/Podfile.lock b/ios/Podfile.lock index ae9f5f83..407b696d 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -134,24 +134,24 @@ PODS: - GoogleUtilities/Environment (~> 7.2) - nanopb (~> 2.30907.0) - PromisesObjC (~> 1.2) - - GoogleUtilities/AppDelegateSwizzler (7.4.1): + - GoogleUtilities/AppDelegateSwizzler (7.4.3): - GoogleUtilities/Environment - GoogleUtilities/Logger - GoogleUtilities/Network - - GoogleUtilities/Environment (7.4.1): + - GoogleUtilities/Environment (7.4.3): - PromisesObjC (~> 1.2) - - GoogleUtilities/Logger (7.4.1): + - GoogleUtilities/Logger (7.4.3): - GoogleUtilities/Environment - - GoogleUtilities/MethodSwizzler (7.4.1): + - GoogleUtilities/MethodSwizzler (7.4.3): - GoogleUtilities/Logger - - GoogleUtilities/Network (7.4.1): + - GoogleUtilities/Network (7.4.3): - GoogleUtilities/Logger - "GoogleUtilities/NSData+zlib" - GoogleUtilities/Reachability - - "GoogleUtilities/NSData+zlib (7.4.1)" - - GoogleUtilities/Reachability (7.4.1): + - "GoogleUtilities/NSData+zlib (7.4.3)" + - GoogleUtilities/Reachability (7.4.3): - GoogleUtilities/Logger - - GoogleUtilities/UserDefaults (7.4.1): + - GoogleUtilities/UserDefaults (7.4.3): - GoogleUtilities/Logger - libevent (2.1.12) - nanopb (2.30907.0): @@ -745,7 +745,7 @@ SPEC CHECKSUMS: glog: 40a13f7840415b9a77023fbcae0f1e6f43192af3 GoogleAppMeasurement: c542a2feaac9ab98fd074e8f1a02c3585bbfbd47 GoogleDataTransport: 8b0e733ea77c9218778e5a9e34ba9508b8328939 - GoogleUtilities: f8a43108b38a68eebe8b3540e1f4f2d28843ce20 + GoogleUtilities: 45dbb24a7f351d69d0a601482b39ad6c32e30dab libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 nanopb: 59221d7f958fb711001e6a449489542d92ae113e OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b diff --git a/ios/RNVideoProcessing/Frontend-Bridging-Header.h b/ios/RNVideoProcessing/Frontend-Bridging-Header.h new file mode 100644 index 00000000..ad5afc0d --- /dev/null +++ b/ios/RNVideoProcessing/Frontend-Bridging-Header.h @@ -0,0 +1,4 @@ +// +// Use this file to import your target's public headers that you would like to expose to Swift. +// +#import "RNVideoProcessing.h" diff --git a/ios/RNVideoProcessing/RNTrimmerView/RNTrimmerView-Bridging-Header.h b/ios/RNVideoProcessing/RNTrimmerView/RNTrimmerView-Bridging-Header.h new file mode 100644 index 00000000..5151c4d0 --- /dev/null +++ b/ios/RNVideoProcessing/RNTrimmerView/RNTrimmerView-Bridging-Header.h @@ -0,0 +1,11 @@ +// +// RNTrimmerView-Bridging-Header.h +// RNVideoProcessing +// + +#ifndef RNTrimmerView_Bridging_Header_h +#define RNTrimmerView_Bridging_Header_h + +#import "RCTBridgeModule.h" + +#endif /* RNTrimmerView_Bridging_Header_h */ diff --git a/ios/RNVideoProcessing/RNTrimmerView/RNTrimmerView.swift b/ios/RNVideoProcessing/RNTrimmerView/RNTrimmerView.swift new file mode 100644 index 00000000..d5909249 --- /dev/null +++ b/ios/RNVideoProcessing/RNTrimmerView/RNTrimmerView.swift @@ -0,0 +1,273 @@ +// +// RNTrimmerView.swift +// RNVideoProcessing +// + +import UIKit +import AVKit + +@objc(RNTrimmerView) +class RNTrimmerView: RCTView, ICGVideoTrimmerDelegate { + + var trimmerView: ICGVideoTrimmerView? + var asset: AVAsset! + var rect: CGRect = CGRect.zero + var mThemeColor = UIColor.clear + var bridge: RCTBridge! + @objc var onChange: RCTBubblingEventBlock? + @objc var onTrackerMove: RCTBubblingEventBlock? + var _minLength: CGFloat? = nil + var _maxLength: CGFloat? = nil + var _thumbWidth: CGFloat? = nil + var _trackerColor: UIColor = UIColor.clear + var _trackerHandleColor: UIColor = UIColor.clear + var _showTrackerHandle = false + + @objc func setSource(_ val: NSString) { + source = val + } + @objc func setWidth(_ val: NSNumber) { + width = val + } + @objc func setHeight(_ val: NSNumber) { + height = val + } + @objc func setThemeColor(_ val: NSString) { + themeColor = val + } + @objc func setMinLength(_ val: NSNumber) { + minLength = val + } + @objc func setMaxLength(_ val: NSNumber) { + maxLength = val + } + @objc func setCurrentTime(_ val: NSNumber) { + currentTime = val + } + @objc func setTrackerColor(_ val: NSString) { + trackerColor = val + } + @objc func setThumbWidth(_ val: NSNumber) { + thumbWidth = val + } + @objc func setShowTrackerHandle(_ val: NSNumber) { + showTrackerHandle = val + } + @objc func setTrackerHandleColor(_ val: NSString) { + trackerHandleColor = val + } + + var source: NSString? { + set { + setSource(source: newValue) + } + get { + + return nil + } + } + + var showTrackerHandle: NSNumber? { + set { + if newValue == nil { + return + } + let _nVal = newValue! == 1 ? true : false + if _showTrackerHandle != _nVal { + print("CHANGED: showTrackerHandle \(newValue!)"); + _showTrackerHandle = _nVal + self.updateView() + } + } + get { + return nil + } + } + + var trackerHandleColor: NSString? { + set { + if newValue != nil { + let color = NumberFormatter().number(from: newValue! as String) + let formattedColor = RCTConvert.uiColor(color) + if formattedColor != nil { + print("CHANGED: trackerHandleColor: \(newValue!)") + self._trackerHandleColor = formattedColor! + self.updateView(); + } + } + } + get { + return nil + } + } + + var height: NSNumber? { + set { + self.rect.size.height = RCTConvert.cgFloat(newValue) + 40 + self.updateView() + } + get { + return nil + } + } + + var width: NSNumber? { + set { + self.rect.size.width = RCTConvert.cgFloat(newValue) + self.updateView() + } + get { + return nil + } + } + + var themeColor: NSString? { + set { + if newValue != nil { + let color = NumberFormatter().number(from: newValue! as String) + self.mThemeColor = RCTConvert.uiColor(color) + self.updateView() + } + } + get { + return nil + } + } + + var maxLength: NSNumber? { + set { + if newValue != nil { + self._maxLength = RCTConvert.cgFloat(newValue!) + self.updateView() + } + } + get { + return nil + } + } + + var minLength: NSNumber? { + set { + if newValue != nil { + self._minLength = RCTConvert.cgFloat(newValue!) + self.updateView() + } + } + get { + return nil + } + } + + var thumbWidth: NSNumber? { + set { + if newValue != nil { + self._thumbWidth = RCTConvert.cgFloat(newValue!) + self.updateView() + } + } + get { + return nil + } + } + + var currentTime: NSNumber? { + set { + print("CHANGED: [TrimmerView]: currentTime: \(newValue)") + if newValue != nil && self.trimmerView != nil { + let convertedValue = newValue as! CGFloat + self.trimmerView?.seek(toTime: convertedValue) + // self.trimmerView + } + } + get { + return nil + } + } + + var trackerColor: NSString? { + set { + if newValue == nil { + return + } + print("CHANGED: trackerColor \(newValue!)") + let color = NumberFormatter().number(from: newValue! as String) + let formattedColor = RCTConvert.uiColor(color) + if formattedColor != nil { + self._trackerColor = formattedColor! + self.updateView() + } + } + get { + return nil + } + } + + func updateView() { + self.frame = rect + if trimmerView != nil { + trimmerView!.frame = rect + trimmerView!.themeColor = self.mThemeColor + trimmerView!.trackerColor = self._trackerColor + trimmerView!.trackerHandleColor = self._trackerHandleColor + trimmerView!.showTrackerHandle = self._showTrackerHandle + trimmerView!.maxLength = _maxLength == nil ? CGFloat(self.asset.duration.seconds) : _maxLength! + self.frame = CGRect(x: rect.origin.x, y: rect.origin.y, width: rect.size.width, height: rect.size.height + 20) + if _minLength != nil { + trimmerView!.minLength = _minLength! + } + if _thumbWidth != nil { + trimmerView!.thumbWidth = _thumbWidth! + } + self.trimmerView!.resetSubviews() + // Timer.scheduledTimer(timeInterval: 0.5, target: self, selector: #selector(self.updateTrimmer), userInfo: nil, repeats: false) + } + } + + func updateTrimmer() { + self.trimmerView!.resetSubviews() + } + + func setSource(source: NSString?) { + if source != nil { + let pathToSource = NSURL(string: source! as String) + self.asset = AVURLAsset(url: pathToSource! as URL, options: nil) + + trimmerView = ICGVideoTrimmerView(frame: rect, asset: self.asset) + trimmerView!.showsRulerView = false + trimmerView!.hideTracker(false) + trimmerView!.delegate = self + trimmerView!.trackerColor = self._trackerColor + self.addSubview(trimmerView!) + self.updateView() + } + } + + init(frame: CGRect, bridge: RCTBridge) { + super.init(frame: frame) + self.bridge = bridge + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + func onTrimmerPositionChange(startTime: CGFloat, endTime: CGFloat) { + if self.onChange != nil { + let event = ["startTime": startTime, "endTime": endTime] + self.onChange!(event) + } + } + + func trimmerView(_ trimmerView: ICGVideoTrimmerView, didChangeLeftPosition startTime: CGFloat, rightPosition endTime: CGFloat) { + onTrimmerPositionChange(startTime: startTime, endTime: endTime) + } + + public func trimmerView(_ trimmerView: ICGVideoTrimmerView, currentPosition currentTime: CGFloat) { + print("current", currentTime) + if onTrackerMove == nil { + return + } + let event = ["currentTime": currentTime] + self.onTrackerMove!(event) + } +} diff --git a/ios/RNVideoProcessing/RNTrimmerView/RNTrimmerViewManager.swift b/ios/RNVideoProcessing/RNTrimmerView/RNTrimmerViewManager.swift new file mode 100644 index 00000000..450a45b3 --- /dev/null +++ b/ios/RNVideoProcessing/RNTrimmerView/RNTrimmerViewManager.swift @@ -0,0 +1,17 @@ +// +// RNTrimmerViewManager.swift +// RNVideoProcessing +// + +import UIKit + +@objc(RNTrimmerViewManager) +class RNTrimmerViewManager: RCTViewManager { + override class func requiresMainQueueSetup() -> Bool { + return true + } + + @objc override func view() -> UIView! { + return RNTrimmerView(frame: CGRect.zero, bridge: self.bridge) + } +} |