Camera and editor improvements

This commit is contained in:
Ilya Laktyushin 2023-06-11 19:44:08 +04:00
parent 82a59e4e60
commit 137e234310
4 changed files with 16 additions and 9 deletions

View File

@ -878,6 +878,7 @@ public class CameraScreen: ViewController {
self.effectivePreviewView.addGestureRecognizer(pinchGestureRecognizer)
let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(self.handlePan(_:)))
panGestureRecognizer.maximumNumberOfTouches = 1
self.effectivePreviewView.addGestureRecognizer(panGestureRecognizer)
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.handleTap(_:)))

View File

@ -221,7 +221,7 @@ final class MediaEditorRenderer: TextureConsumer {
if let onNextRender = self.onNextRender {
self.onNextRender = nil
Queue.mainQueue().async {
Queue.mainQueue().after(0.1) {
onNextRender()
}
}

View File

@ -702,7 +702,7 @@ final class MediaEditorScreenComponent: Component {
case 86400:
timeoutValue = "24"
case 172800:
timeoutValue = "2d"
timeoutValue = "48"
default:
timeoutValue = "24"
}
@ -1640,8 +1640,10 @@ public final class MediaEditorScreen: ViewController {
self.mediaEditor?.onFirstDisplay = { [weak self] in
if let self, let transitionInView = self.transitionInView {
transitionInView.removeFromSuperview()
self.transitionInView = nil
transitionInView.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, removeOnCompletion: false, completion: { [weak transitionInView] _ in
transitionInView?.removeFromSuperview()
})
}
}
}
@ -2502,7 +2504,7 @@ public final class MediaEditorScreen: ViewController {
updateTimeout(86400, false)
})))
items.append(.action(ContextMenuActionItem(text: "2 Days", icon: { theme in
items.append(.action(ContextMenuActionItem(text: "48 Hours", icon: { theme in
return currentValue == 86400 * 2 ? generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Check"), color: theme.contextMenu.primaryColor) : nil
}, action: { _, a in
a(.default)

View File

@ -132,7 +132,7 @@ final class VideoScrubberComponent: Component {
private var isPanningPositionHandle = false
private var displayLink: SharedDisplayLinkDriver.Link?
private var positionAnimation: (start: Double, from: Double, to: Double)?
private var positionAnimation: (start: Double, from: Double, to: Double, ended: Bool)?
override init(frame: CGRect) {
super.init(frame: frame)
@ -343,12 +343,12 @@ final class VideoScrubberComponent: Component {
let timestamp = CACurrentMediaTime()
let updatedPosition: Double
if let (start, from, to) = self.positionAnimation {
if let (start, from, to, _) = self.positionAnimation {
let duration = to - from
let fraction = duration > 0.0 ? (timestamp - start) / duration : 0.0
updatedPosition = max(component.startPosition, min(component.endPosition, from + (to - from) * fraction))
if fraction >= 1.0 {
self.positionAnimation = (timestamp, component.startPosition, component.endPosition)
self.positionAnimation = (start, from, to, true)
}
} else {
let advance = component.isPlaying ? timestamp - component.generationTimestamp : 0.0
@ -419,8 +419,12 @@ final class VideoScrubberComponent: Component {
self.displayLink?.isPaused = true
transition.setFrame(view: self.cursorView, frame: cursorFrame(size: scrubberSize, position: component.position, duration: component.duration))
} else {
if self.positionAnimation == nil {
self.positionAnimation = (CACurrentMediaTime(), component.position, component.endPosition)
if let (_, _, end, ended) = self.positionAnimation {
if ended, component.position >= component.startPosition && component.position < end - 1.0 {
self.positionAnimation = (CACurrentMediaTime(), component.position, component.endPosition, false)
}
} else {
self.positionAnimation = (CACurrentMediaTime(), component.position, component.endPosition, false)
}
self.displayLink?.isPaused = false
self.updateCursorPosition()