Lottie experiments

This commit is contained in:
Isaac 2024-06-14 23:02:06 +04:00
parent 032ded0817
commit 93a4e355f7
8 changed files with 22 additions and 16 deletions

View File

@ -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

View File

@ -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 {

View File

@ -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)

View File

@ -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

View File

@ -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