mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Lottie experiments
This commit is contained in:
parent
032ded0817
commit
93a4e355f7
@ -18,7 +18,7 @@ CGRect getPathNativeBoundingBox(CGPathRef _Nonnull path);
|
||||
|
||||
- (instancetype _Nullable)initWithData:(NSData * _Nonnull)data;
|
||||
|
||||
- (void)setFrame:(NSInteger)index;
|
||||
- (void)setFrame:(CGFloat)index;
|
||||
- (UIImage * _Nullable)renderForSize:(CGSize)size useReferenceRendering:(bool)useReferenceRendering canUseMoreMemory:(bool)canUseMoreMemory skipImageGeneration:(bool)skipImageGeneration;
|
||||
|
||||
@end
|
||||
|
@ -53,8 +53,8 @@ CGRect getPathNativeBoundingBox(CGPathRef _Nonnull path) {
|
||||
return CGSizeMake(size.x, size.y);
|
||||
}
|
||||
|
||||
- (void)setFrame:(NSInteger)index {
|
||||
_renderer->setFrame((int)index);
|
||||
- (void)setFrame:(CGFloat)index {
|
||||
_renderer->setFrame((float)index);
|
||||
}
|
||||
|
||||
- (UIImage * _Nullable)renderForSize:(CGSize)size useReferenceRendering:(bool)useReferenceRendering canUseMoreMemory:(bool)canUseMoreMemory skipImageGeneration:(bool)skipImageGeneration {
|
||||
|
@ -91,7 +91,7 @@ func processDrawAnimation(baseCachePath: String, path: String, name: String, siz
|
||||
let referenceImageData = try! Data(contentsOf: URL(fileURLWithPath: cacheFolderPath + "/frame\(frameIndex)"))
|
||||
let referenceImage = decompressImageFrame(data: referenceImageData)
|
||||
|
||||
renderer.setFrame(frameIndex)
|
||||
renderer.setFrame(CGFloat(frameIndex))
|
||||
let image = renderer.render(for: size, useReferenceRendering: !useNonReferenceRendering, canUseMoreMemory: false, skipImageGeneration: false)!
|
||||
|
||||
let (diffImage, deltaImage) = areImagesEqual(image, referenceImage, allowedDifference: allowedDifference)
|
||||
|
@ -152,7 +152,7 @@ private final class ManualReferenceCompareTest {
|
||||
let bundlePath = Bundle.main.path(forResource: "TestDataBundle", ofType: "bundle")!
|
||||
self.fileList = buildAnimationFolderItems(basePath: bundlePath, path: "")
|
||||
|
||||
self.renderSize = CGSize(width: 128.0, height: 128.0)
|
||||
self.renderSize = CGSize(width: 256.0, height: 256.0)
|
||||
|
||||
self.view = view
|
||||
self.view.backgroundColor = .white
|
||||
@ -224,24 +224,24 @@ private final class ManualReferenceCompareTest {
|
||||
var animationTime = 0.0
|
||||
let secondsPerFrame = 1.0 / Double(renderer.framesPerSecond)
|
||||
|
||||
let frameDisplayLink = SharedDisplayLinkDriver.shared.add { [weak self] deltaTime in
|
||||
let frameDisplayLink = SharedDisplayLinkDriver.shared.add(framesPerSecond: .max, { [weak self] deltaTime in
|
||||
guard let self, let currentItem = self.currentItem else {
|
||||
return
|
||||
}
|
||||
|
||||
var frameIndex = Int(animationTime / secondsPerFrame)
|
||||
frameIndex = frameIndex % currentItem.renderer.frameCount
|
||||
var frameIndex = animationTime / secondsPerFrame
|
||||
frameIndex = frameIndex.truncatingRemainder(dividingBy: Double(currentItem.renderer.frameCount))
|
||||
|
||||
currentItem.renderer.setFrame(frameIndex)
|
||||
let image = currentItem.renderer.render(for: self.renderSize, useReferenceRendering: !self.testNonReference, canUseMoreMemory: false, skipImageGeneration: false)!
|
||||
self.imageView.image = image
|
||||
|
||||
currentItem.referenceRenderer.setFrame(index: frameIndex)
|
||||
currentItem.referenceRenderer.setFrame(index: Int(frameIndex))
|
||||
let referenceImage = currentItem.referenceRenderer.makeImage(width: Int(self.renderSize.width), height: Int(self.renderSize.height))!
|
||||
self.referenceImageView.image = referenceImage
|
||||
|
||||
animationTime += deltaTime
|
||||
}
|
||||
})
|
||||
self.frameDisplayLink = frameDisplayLink
|
||||
frameDisplayLink.isPaused = false
|
||||
}
|
||||
@ -267,7 +267,7 @@ public final class ViewController: UIViewController {
|
||||
if #available(iOS 13.0, *) {
|
||||
self.test = ReferenceCompareTest(view: self.view, testNonReference: false)
|
||||
}
|
||||
} else if !"".isEmpty {
|
||||
} else if "".isEmpty {
|
||||
if #available(iOS 13.0, *) {
|
||||
self.test = ManualReferenceCompareTest(view: self.view)
|
||||
}
|
||||
@ -308,7 +308,7 @@ public final class ViewController: UIViewController {
|
||||
var numUpdates: Int = 0
|
||||
var frameIndex = 0
|
||||
while true {
|
||||
animationRenderer.setFrame(frameIndex)
|
||||
animationRenderer.setFrame(CGFloat(frameIndex))
|
||||
let _ = animationRenderer.render(for: CGSize(width: CGFloat(performanceFrameSize), height: CGFloat(performanceFrameSize)), useReferenceRendering: false, canUseMoreMemory: true, skipImageGeneration: true)
|
||||
frameIndex = (frameIndex + 1) % animationRenderer.frameCount
|
||||
numUpdates += 1
|
||||
|
@ -3,12 +3,18 @@ load("@build_bazel_rules_apple//apple:apple.bzl",
|
||||
"apple_dynamic_framework_import",
|
||||
)
|
||||
|
||||
framework_imports = select({
|
||||
"@build_bazel_rules_apple//apple:ios_arm64": glob([
|
||||
"device/libskia.framework/**"
|
||||
]),
|
||||
"//build-system:ios_sim_arm64": glob([
|
||||
"simulator/libskia.framework/**"
|
||||
])
|
||||
})
|
||||
|
||||
apple_dynamic_framework_import(
|
||||
name = "libskia",
|
||||
framework_imports = glob([
|
||||
"libskia.framework/**"
|
||||
]),
|
||||
framework_imports = framework_imports,
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
||||
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 4aa40846d24842e1168375c3db79d85e913ca1e9
|
||||
Subproject commit 2b10b84f626c66288366f0ad2d6af2a396ec454e
|
Loading…
x
Reference in New Issue
Block a user