72 lines
2.6 KiB
Swift
72 lines
2.6 KiB
Swift
//
|
|
// ViewController+UIGestureRecognizerDelegate.swift
|
|
// SimpleVideoEditor
|
|
//
|
|
// Created by RenZhu Macro on 2020/7/9.
|
|
// Copyright © 2020 RenZhu Macro. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
import MetalVideoProcess
|
|
|
|
extension ViewController: UIGestureRecognizerDelegate {
|
|
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
|
|
return true;
|
|
}
|
|
|
|
@IBAction func rotateAction(ges: UIRotationGestureRecognizer) {
|
|
guard let item = (self.mainSelectedItem != nil ? self.mainSelectedItem : self.subSelectedItem) else {
|
|
return
|
|
}
|
|
guard let transformFilter = item.transformFilter else {
|
|
return
|
|
}
|
|
let rotDeg = transformFilter.rotate + Double(-ges.velocity)
|
|
transformFilter.rotate = rotDeg
|
|
item.rotate = rotDeg
|
|
}
|
|
|
|
@IBAction func pinchAction(ges: UIPinchGestureRecognizer) {
|
|
guard let item = (self.mainSelectedItem != nil ? self.mainSelectedItem : self.subSelectedItem) else {
|
|
return
|
|
}
|
|
guard let transformFilter = item.transformFilter else {
|
|
return
|
|
}
|
|
transformFilter.scale = Position((transformFilter.scale.x) + Float(ges.velocity * 0.01), (transformFilter.scale.y) + Float(ges.velocity * 0.01))
|
|
var x: Float = (transformFilter.scale.x)
|
|
var y: Float = (transformFilter.scale.y)
|
|
if ((transformFilter.scale.x) < 0.01) {
|
|
x = 0.01
|
|
}
|
|
if ((transformFilter.scale.y) < 0.01) {
|
|
y = 0.01
|
|
}
|
|
transformFilter.scale = Position(x, y)
|
|
item.scale = transformFilter.scale
|
|
}
|
|
|
|
@IBAction func panAction(ges: UIPanGestureRecognizer) {
|
|
guard let item = (self.mainSelectedItem != nil ? self.mainSelectedItem : self.subSelectedItem) else {
|
|
return
|
|
}
|
|
guard let transformFilter = item.transformFilter else {
|
|
return
|
|
}
|
|
|
|
if ges.state == .changed {
|
|
let tanl = ges.translation(in: ges.view)
|
|
|
|
// have to content the view scaleFactor and the vertex to texture scale.
|
|
transformFilter.translation = Position(currentPostion.x + Float(tanl.x * self.renderView.contentScaleFactor * 2.0) / Float(self.renderView.drawableSize.width), currentPostion.y - Float(tanl.y * self.renderView.contentScaleFactor * 2.0) / Float(self.renderView.drawableSize.height))
|
|
|
|
} else if ges.state == .ended {
|
|
currentPostion = (transformFilter.translation)
|
|
}
|
|
|
|
item.translation = transformFilter.translation
|
|
}
|
|
|
|
|
|
}
|