fix gif caching
This commit is contained in:
1 parent
71b1d0a21d
commit
395cbe5e13
19 files changed
+728
-475
No files matched your search
@@ -0,0 +1,36 @@
|
||||
//
|
||||
// File.swift
|
||||
//
|
||||
//
|
||||
// Created by Igor Ferreira on 05/04/2022.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import ImageIO
|
||||
|
||||
public actor CGImageSourceIterator: AsyncIteratorProtocol {
|
||||
|
||||
public let frameCount: Int
|
||||
public let source: CGImageSource
|
||||
public private(set) var currentFrame: Int
|
||||
|
||||
public init(source: CGImageSource) {
|
||||
self.source = source
|
||||
self.frameCount = CGImageSourceGetCount(source)
|
||||
self.currentFrame = 0
|
||||
}
|
||||
|
||||
public func next() async throws -> ImageFrame? {
|
||||
guard currentFrame < frameCount else {
|
||||
return nil
|
||||
}
|
||||
|
||||
let frame: ImageFrame? = if let image = CGImageSourceCreateImageAtIndex(source, currentFrame, nil) {
|
||||
ImageFrame(image: image, interval: source.intervalAtIndex(currentFrame))
|
||||
} else {
|
||||
nil
|
||||
}
|
||||
currentFrame += 1
|
||||
return frame
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user