mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Merge commit '37f281dd4092f552fe8c9f305f044c312a8fea5d'
This commit is contained in:
commit
6f3e4f3931
@ -215,13 +215,17 @@ public final class DrawingStickerEntityView: DrawingEntityView {
|
|||||||
context.draw(image.cgImage!, in: imageRect)
|
context.draw(image.cgImage!, in: imageRect)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var synchronous = false
|
||||||
|
if case let .image(_, type) = self.stickerEntity.content {
|
||||||
|
synchronous = type == .dualPhoto
|
||||||
|
}
|
||||||
self.imageNode.setSignal(.single({ arguments -> DrawingContext? in
|
self.imageNode.setSignal(.single({ arguments -> DrawingContext? in
|
||||||
let context = DrawingContext(size: arguments.drawingSize, opaque: false, clear: true)
|
let context = DrawingContext(size: arguments.drawingSize, opaque: false, clear: true)
|
||||||
context?.withFlippedContext({ ctx in
|
context?.withFlippedContext({ ctx in
|
||||||
drawImageWithOrientation(image, size: arguments.drawingSize, in: ctx)
|
drawImageWithOrientation(image, size: arguments.drawingSize, in: ctx)
|
||||||
})
|
})
|
||||||
return context
|
return context
|
||||||
}))
|
}), attemptSynchronously: synchronous)
|
||||||
self.setNeedsLayout()
|
self.setNeedsLayout()
|
||||||
} else if case let .video(videoPath, image, _) = self.stickerEntity.content {
|
} else if case let .video(videoPath, image, _) = self.stickerEntity.content {
|
||||||
let url = URL(fileURLWithPath: videoPath)
|
let url = URL(fileURLWithPath: videoPath)
|
||||||
|
@ -663,13 +663,9 @@ final class VideoInputScalePass: RenderPass {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func process(input: MTLTexture, secondInput: MTLTexture?, timestamp: CMTime, device: MTLDevice, commandBuffer: MTLCommandBuffer) -> MTLTexture? {
|
func process(input: MTLTexture, secondInput: MTLTexture?, timestamp: CMTime, device: MTLDevice, commandBuffer: MTLCommandBuffer) -> MTLTexture? {
|
||||||
#if targetEnvironment(simulator)
|
|
||||||
|
|
||||||
#else
|
|
||||||
guard max(input.width, input.height) > 1920 || secondInput != nil else {
|
guard max(input.width, input.height) > 1920 || secondInput != nil else {
|
||||||
return input
|
return input
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
let scaledSize = CGSize(width: input.width, height: input.height).fitted(CGSize(width: 1920.0, height: 1920.0))
|
let scaledSize = CGSize(width: input.width, height: input.height).fitted(CGSize(width: 1920.0, height: 1920.0))
|
||||||
let width: Int
|
let width: Int
|
||||||
@ -718,10 +714,6 @@ final class VideoInputScalePass: RenderPass {
|
|||||||
|
|
||||||
renderCommandEncoder.setRenderPipelineState(self.mainPipelineState!)
|
renderCommandEncoder.setRenderPipelineState(self.mainPipelineState!)
|
||||||
|
|
||||||
#if targetEnvironment(simulator)
|
|
||||||
let secondInput = input
|
|
||||||
#endif
|
|
||||||
|
|
||||||
let (mainVideoState, additionalVideoState, transitionVideoState) = self.transitionState(for: timestamp, mainInput: input, additionalInput: secondInput)
|
let (mainVideoState, additionalVideoState, transitionVideoState) = self.transitionState(for: timestamp, mainInput: input, additionalInput: secondInput)
|
||||||
|
|
||||||
if let transitionVideoState {
|
if let transitionVideoState {
|
||||||
|
@ -1974,25 +1974,6 @@ public final class MediaEditorScreen: ViewController, UIDropInteractionDelegate
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if targetEnvironment(simulator)
|
|
||||||
if case let .asset(asset) = subject, asset.mediaType == .video {
|
|
||||||
let videoEntity = DrawingStickerEntity(content: .dualVideoReference)
|
|
||||||
videoEntity.referenceDrawingSize = storyDimensions
|
|
||||||
videoEntity.scale = 1.625
|
|
||||||
videoEntity.position = PIPPosition.topRight.getPosition(storyDimensions)
|
|
||||||
self.entitiesView.add(videoEntity, announce: false)
|
|
||||||
|
|
||||||
mediaEditor.setAdditionalVideo("", positionChanges: [VideoPositionChange(additional: false, timestamp: 0.0), VideoPositionChange(additional: true, timestamp: 3.0)])
|
|
||||||
mediaEditor.setAdditionalVideoPosition(videoEntity.position, scale: videoEntity.scale, rotation: videoEntity.rotation)
|
|
||||||
if let entityView = self.entitiesView.getView(for: videoEntity.uuid) as? DrawingStickerEntityView {
|
|
||||||
entityView.updated = { [weak videoEntity, weak self] in
|
|
||||||
if let self, let videoEntity {
|
|
||||||
self.mediaEditor?.setAdditionalVideoPosition(videoEntity.position, scale: videoEntity.scale, rotation: videoEntity.rotation)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
self.gradientColorsDisposable = mediaEditor.gradientColors.start(next: { [weak self] colors in
|
self.gradientColorsDisposable = mediaEditor.gradientColors.start(next: { [weak self] colors in
|
||||||
if let self, let colors {
|
if let self, let colors {
|
||||||
|
@ -3481,22 +3481,18 @@ public final class StoryItemSetContainerComponent: Component {
|
|||||||
let entities = generateChatInputTextEntities(caption)
|
let entities = generateChatInputTextEntities(caption)
|
||||||
var updatedText: String?
|
var updatedText: String?
|
||||||
var updatedEntities: [MessageTextEntity]?
|
var updatedEntities: [MessageTextEntity]?
|
||||||
var updatedPrivacy: EngineStoryPrivacy?
|
|
||||||
if caption.string != item.text || entities != item.entities {
|
if caption.string != item.text || entities != item.entities {
|
||||||
updatedText = caption.string
|
updatedText = caption.string
|
||||||
updatedEntities = entities
|
updatedEntities = entities
|
||||||
}
|
}
|
||||||
if privacy.privacy != item.privacy {
|
|
||||||
updatedPrivacy = privacy.privacy
|
|
||||||
}
|
|
||||||
|
|
||||||
if let mediaResult {
|
if let mediaResult {
|
||||||
switch mediaResult {
|
switch mediaResult {
|
||||||
case let .image(image, dimensions):
|
case let .image(image, dimensions):
|
||||||
updateProgressImpl?(0.0)
|
updateProgressImpl?(0.0)
|
||||||
|
|
||||||
if let imageData = compressImageToJPEG(image, quality: 0.7) {
|
if let imageData = compressImageToJPEG(image, quality: 0.7) {
|
||||||
updateDisposable.set((context.engine.messages.editStory(id: id, media: .image(dimensions: dimensions, data: imageData, stickers: stickers), text: updatedText, entities: updatedEntities, privacy: updatedPrivacy)
|
updateDisposable.set((context.engine.messages.editStory(id: id, media: .image(dimensions: dimensions, data: imageData, stickers: stickers), text: updatedText, entities: updatedEntities, privacy: nil)
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] result in
|
|> deliverOnMainQueue).start(next: { [weak self] result in
|
||||||
guard let self else {
|
guard let self else {
|
||||||
return
|
return
|
||||||
@ -3544,7 +3540,7 @@ public final class StoryItemSetContainerComponent: Component {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
updateDisposable.set((context.engine.messages.editStory(id: id, media: .video(dimensions: dimensions, duration: duration, resource: resource, firstFrameFile: firstFrameFile, stickers: stickers), text: updatedText, entities: updatedEntities, privacy: updatedPrivacy)
|
updateDisposable.set((context.engine.messages.editStory(id: id, media: .video(dimensions: dimensions, duration: duration, resource: resource, firstFrameFile: firstFrameFile, stickers: stickers), text: updatedText, entities: updatedEntities, privacy: nil)
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] result in
|
|> deliverOnMainQueue).start(next: { [weak self] result in
|
||||||
guard let self else {
|
guard let self else {
|
||||||
return
|
return
|
||||||
@ -3565,8 +3561,8 @@ public final class StoryItemSetContainerComponent: Component {
|
|||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if updatedText != nil || updatedPrivacy != nil {
|
} else if updatedText != nil {
|
||||||
let _ = (context.engine.messages.editStory(id: id, media: nil, text: updatedText, entities: updatedEntities, privacy: updatedPrivacy)
|
let _ = (context.engine.messages.editStory(id: id, media: nil, text: updatedText, entities: updatedEntities, privacy: nil)
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] result in
|
|> deliverOnMainQueue).start(next: { [weak self] result in
|
||||||
switch result {
|
switch result {
|
||||||
case .completed:
|
case .completed:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user