aboutsummaryrefslogtreecommitdiff
path: root/ios/RNVideoProcessing
diff options
context:
space:
mode:
authorMichael <michael.foiani@gmail.com>2021-07-02 14:34:33 -0400
committerMichael <michael.foiani@gmail.com>2021-07-02 14:34:33 -0400
commit643e7adcda3e5ae7aa3daeb86020f2e6f38d1448 (patch)
tree032dcc7c80a96f709e24ac747c74e75045d8845b /ios/RNVideoProcessing
parent66c974161b59f1e3570e2a4a42334fabc16c2129 (diff)
Add depedencies to xcode for react-native-video-processing. Building the project was successful.
Diffstat (limited to 'ios/RNVideoProcessing')
-rw-r--r--ios/RNVideoProcessing/Frontend-Bridging-Header.h4
-rw-r--r--ios/RNVideoProcessing/RNTrimmerView/RNTrimmerView-Bridging-Header.h11
-rw-r--r--ios/RNVideoProcessing/RNTrimmerView/RNTrimmerView.swift273
-rw-r--r--ios/RNVideoProcessing/RNTrimmerView/RNTrimmerViewManager.swift17
4 files changed, 305 insertions, 0 deletions
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)
+ }
+}