Merge commit '7621e2f8dec938cf48181c8b10afc9b01f444e68' into beta

This commit is contained in:
Ilya Laktyushin
2025-12-06 02:17:48 +04:00
commit 8344b97e03
28070 changed files with 7995182 additions and 0 deletions
@@ -0,0 +1,58 @@
import Foundation
import SwiftSignalKit
import UIKit
import AsyncDisplayKit
public enum AnimationRendererFrameType {
case argb
case yuva
case dct
}
final class AnimationRendererPool {
final class Holder {
let pool: AnimationRendererPool
let renderer: AnimationRenderer
init(pool: AnimationRendererPool, renderer: AnimationRenderer) {
self.pool = pool
self.renderer = renderer
}
deinit {
self.renderer.removeFromSupernode()
self.pool.putBack(renderer: self.renderer)
}
}
private let generate: () -> AnimationRenderer
private var items: [AnimationRenderer] = []
init(generate: @escaping () -> AnimationRenderer) {
self.generate = generate
}
func take() -> Holder {
if !self.items.isEmpty {
let item = self.items.removeLast()
return Holder(pool: self, renderer: item)
} else {
return Holder(pool: self, renderer: self.generate())
}
}
private func putBack(renderer: AnimationRenderer) {
/*#if DEBUG
self.items.append(renderer)
#endif*/
}
}
protocol AnimationRenderer: ASDisplayNode {
var currentFrameImage: UIImage? { get }
func render(queue: Queue, width: Int, height: Int, bytesPerRow: Int, data: Data, type: AnimationRendererFrameType, mulAlpha: Bool, completion: @escaping () -> Void, averageColor: ((UIColor) -> Void)?)
func setOverlayColor(_ color: UIColor?, replace: Bool, animated: Bool)
}