/* * This file is part of the SDWebImage package. * (c) Olivier Poitrey * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ #import #import "SDWebImageCompat.h" #import "SDImageCoder.h" NS_ASSUME_NONNULL_BEGIN /// A per-provider (provider means, AnimatedImage object) based frame pool, each player who use the same provider share the same frame buffer @interface SDImageFramePool : NSObject /// Register and return back a frame pool, also increase reference count + (instancetype)registerProvider:(id)provider; /// Unregister a frame pool, also decrease reference count, if zero dealloc the frame pool + (void)unregisterProvider:(id)provider; /// Prefetch the current frame, query using `frameAtIndex:` by caller to check whether finished. - (void)prefetchFrameAtIndex:(NSUInteger)index; /// Control the max buffer count for current frame pool, used for RAM/CPU balance, default unlimited @property (nonatomic, assign) NSUInteger maxBufferCount; /// Control the max concurrent fetch queue operation count, used for CPU balance, default 1 @property (nonatomic, assign) NSUInteger maxConcurrentCount; // Frame Operations @property (nonatomic, readonly) NSUInteger currentFrameCount; - (nullable UIImage *)frameAtIndex:(NSUInteger)index; - (void)setFrame:(nullable UIImage *)frame atIndex:(NSUInteger)index; - (void)removeFrameAtIndex:(NSUInteger)index; - (void)removeAllFrames; NS_ASSUME_NONNULL_END @end