mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
[WIP] Story collage
This commit is contained in:
parent
ee5d85facd
commit
6b528aa70f
@ -738,7 +738,7 @@ final class CameraCollageView: UIView, UIGestureRecognizerDelegate {
|
|||||||
self.extractedContainerView.contentView.clipsToBounds = false
|
self.extractedContainerView.contentView.clipsToBounds = false
|
||||||
self.clippingView.clipsToBounds = false
|
self.clippingView.clipsToBounds = false
|
||||||
|
|
||||||
let scale = size.width / originalCameraFrame.width
|
let scale = self.bounds.width / originalCameraFrame.width
|
||||||
transition.animateScale(view: cameraContainerView, from: 1.0, to: scale)
|
transition.animateScale(view: cameraContainerView, from: 1.0, to: scale)
|
||||||
transition.animatePosition(view: cameraContainerView, from: originalCameraFrame.center, to: cameraContainerView.center, completion: { _ in
|
transition.animatePosition(view: cameraContainerView, from: originalCameraFrame.center, to: cameraContainerView.center, completion: { _ in
|
||||||
self.extractedContainerView.contentView.clipsToBounds = true
|
self.extractedContainerView.contentView.clipsToBounds = true
|
||||||
@ -815,7 +815,7 @@ final class CameraCollageView: UIView, UIGestureRecognizerDelegate {
|
|||||||
self.state = state
|
self.state = state
|
||||||
if let size = self.validLayout {
|
if let size = self.validLayout {
|
||||||
var transition: ComponentTransition = .spring(duration: 0.3)
|
var transition: ComponentTransition = .spring(duration: 0.3)
|
||||||
if let previousState, previousState.innerProgress != state.innerProgress {
|
if let previousState, previousState.grid == state.grid && previousState.innerProgress != state.innerProgress {
|
||||||
transition = .immediate
|
transition = .immediate
|
||||||
}
|
}
|
||||||
var progressUpdated = false
|
var progressUpdated = false
|
||||||
|
@ -300,7 +300,7 @@ final class CameraVideoLayer: MetalEngineSubjectLayer, MetalEngineSubject {
|
|||||||
|
|
||||||
encoder.setFragmentTexture(blurredTexture, index: 0)
|
encoder.setFragmentTexture(blurredTexture, index: 0)
|
||||||
|
|
||||||
var brightness: Float = 0.75
|
var brightness: Float = 0.85
|
||||||
var saturation: Float = 1.3
|
var saturation: Float = 1.3
|
||||||
var overlay: SIMD4<Float> = SIMD4<Float>()
|
var overlay: SIMD4<Float> = SIMD4<Float>()
|
||||||
encoder.setFragmentBytes(&brightness, length: 4, index: 0)
|
encoder.setFragmentBytes(&brightness, length: 4, index: 0)
|
||||||
@ -311,32 +311,32 @@ final class CameraVideoLayer: MetalEngineSubjectLayer, MetalEngineSubject {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
context.renderToLayer(spec: renderSpec, state: RenderState.self, layer: self, inputs: rgbaTexture.placeholer, commands: { encoder, placement, rgbaTexture in
|
// context.renderToLayer(spec: renderSpec, state: RenderState.self, layer: self, inputs: rgbaTexture.placeholer, commands: { encoder, placement, rgbaTexture in
|
||||||
guard let rgbaTexture else {
|
// guard let rgbaTexture else {
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
let effectiveRect = placement.effectiveRect
|
// let effectiveRect = placement.effectiveRect
|
||||||
|
//
|
||||||
var rect = SIMD4<Float>(Float(effectiveRect.minX), Float(effectiveRect.minY), Float(effectiveRect.width), Float(effectiveRect.height))
|
// var rect = SIMD4<Float>(Float(effectiveRect.minX), Float(effectiveRect.minY), Float(effectiveRect.width), Float(effectiveRect.height))
|
||||||
encoder.setVertexBytes(&rect, length: 4 * 4, index: 0)
|
// encoder.setVertexBytes(&rect, length: 4 * 4, index: 0)
|
||||||
|
//
|
||||||
var mirror = SIMD2<UInt32>(
|
// var mirror = SIMD2<UInt32>(
|
||||||
videoTextures.mirrorDirection.contains(.horizontal) ? 1 : 0,
|
// videoTextures.mirrorDirection.contains(.horizontal) ? 1 : 0,
|
||||||
videoTextures.mirrorDirection.contains(.vertical) ? 1 : 0
|
// videoTextures.mirrorDirection.contains(.vertical) ? 1 : 0
|
||||||
)
|
// )
|
||||||
encoder.setVertexBytes(&mirror, length: 2 * 4, index: 1)
|
// encoder.setVertexBytes(&mirror, length: 2 * 4, index: 1)
|
||||||
|
//
|
||||||
encoder.setFragmentTexture(rgbaTexture, index: 0)
|
// encoder.setFragmentTexture(rgbaTexture, index: 0)
|
||||||
|
//
|
||||||
var brightness: Float = 1.0
|
// var brightness: Float = 1.0
|
||||||
var saturation: Float = 1.0
|
// var saturation: Float = 1.0
|
||||||
var overlay: SIMD4<Float> = SIMD4<Float>()
|
// var overlay: SIMD4<Float> = SIMD4<Float>()
|
||||||
encoder.setFragmentBytes(&brightness, length: 4, index: 0)
|
// encoder.setFragmentBytes(&brightness, length: 4, index: 0)
|
||||||
encoder.setFragmentBytes(&saturation, length: 4, index: 1)
|
// encoder.setFragmentBytes(&saturation, length: 4, index: 1)
|
||||||
encoder.setFragmentBytes(&overlay, length: 4 * 4, index: 2)
|
// encoder.setFragmentBytes(&overlay, length: 4 * 4, index: 2)
|
||||||
|
//
|
||||||
encoder.drawPrimitives(type: .triangle, vertexStart: 0, vertexCount: 6)
|
// encoder.drawPrimitives(type: .triangle, vertexStart: 0, vertexCount: 6)
|
||||||
})
|
// })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2349,6 +2349,12 @@ public final class WebAppController: ViewController, AttachmentContainable {
|
|||||||
guard let controller = self.controller else {
|
guard let controller = self.controller else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
guard !fileName.contains("/") && fileName.lengthOfBytes(using: .utf8) < 256 && url.lengthOfBytes(using: .utf8) < 32768 else {
|
||||||
|
self.webView?.sendEvent(name: "file_download_requested", data: "{status: \"cancelled\"}")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
var isMedia = false
|
var isMedia = false
|
||||||
var title: String?
|
var title: String?
|
||||||
let photoExtensions = [".jpg", ".png", ".gif", ".tiff"]
|
let photoExtensions = [".jpg", ".png", ".gif", ".tiff"]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user