174 lines
4.8 KiB
Objective-C
174 lines
4.8 KiB
Objective-C
/*
|
||
* This file is part of the SDWebImage package.
|
||
* (c) Olivier Poitrey <rs@dailymotion.com>
|
||
*
|
||
* For the full copyright and license information, please view the LICENSE
|
||
* file that was distributed with this source code.
|
||
*/
|
||
|
||
#import <Foundation/Foundation.h>
|
||
#import "SDWebImageCompat.h"
|
||
|
||
enum SDImageCacheType
|
||
{
|
||
/**
|
||
* The image wasn't available the SDWebImage caches, but was downloaded from the web.
|
||
*/
|
||
SDImageCacheTypeNone = 0,
|
||
/**
|
||
* The image was obtained from the disk cache.
|
||
*/
|
||
SDImageCacheTypeDisk,
|
||
/**
|
||
* The image was obtained from the memory cache.
|
||
*/
|
||
SDImageCacheTypeMemory
|
||
};
|
||
typedef enum SDImageCacheType SDImageCacheType;
|
||
|
||
/**
|
||
* SDImageCache maintains a memory cache and an optional disk cache. Disk cache write operations are performed
|
||
* asynchronous so it doesn’t add unnecessary latency to the UI.
|
||
*/
|
||
@interface SDImageCache : NSObject
|
||
|
||
/**
|
||
* The maximum "total cost" of the in-memory image cache. The cost function is the number of pixels held in memory.
|
||
*/
|
||
@property (assign, nonatomic) NSUInteger maxMemoryCost;
|
||
|
||
/**
|
||
* The maximum length of time to keep an image in the cache, in seconds
|
||
*/
|
||
@property (assign, nonatomic) NSInteger maxCacheAge;
|
||
|
||
/**
|
||
* The maximum size of the cache, in bytes.
|
||
*/
|
||
@property (assign, nonatomic) unsigned long long maxCacheSize;
|
||
|
||
/**
|
||
* Returns global shared cache instance
|
||
*
|
||
* @return SDImageCache global instance
|
||
*/
|
||
+ (SDImageCache *)sharedImageCache;
|
||
|
||
/**
|
||
* Init a new cache store with a specific namespace
|
||
*
|
||
* @param ns The namespace to use for this cache store
|
||
*/
|
||
- (id)initWithNamespace:(NSString *)ns;
|
||
|
||
/**
|
||
* Add a read-only cache path to search for images pre-cached by SDImageCache
|
||
* Useful if you want to bundle pre-loaded images with your app
|
||
*
|
||
* @param path The path to use for this read-only cache path
|
||
*/
|
||
- (void)addReadOnlyCachePath:(NSString *)path;
|
||
|
||
/**
|
||
* Store an image into memory and disk cache at the given key.
|
||
*
|
||
* @param image The image to store
|
||
* @param key The unique image cache key, usually it's image absolute URL
|
||
*/
|
||
- (void)storeImage:(UIImage *)image forKey:(NSString *)key;
|
||
|
||
/**
|
||
* Store an image into memory and optionally disk cache at the given key.
|
||
*
|
||
* @param image The image to store
|
||
* @param key The unique image cache key, usually it's image absolute URL
|
||
* @param toDisk Store the image to disk cache if YES
|
||
*/
|
||
- (void)storeImage:(UIImage *)image forKey:(NSString *)key toDisk:(BOOL)toDisk;
|
||
|
||
/**
|
||
* Store an image into memory and optionally disk cache at the given key.
|
||
*
|
||
* @param image The image to store
|
||
* @param recalculate BOOL indicates if imageData can be used or a new data should be constructed from the UIImage
|
||
* @param imageData The image data as returned by the server, this representation will be used for disk storage
|
||
* instead of converting the given image object into a storable/compressed image format in order
|
||
* to save quality and CPU
|
||
* @param key The unique image cache key, usually it's image absolute URL
|
||
* @param toDisk Store the image to disk cache if YES
|
||
*/
|
||
- (void)storeImage:(UIImage *)image recalculateFromImage:(BOOL)recalculate imageData:(NSData *)imageData forKey:(NSString *)key toDisk:(BOOL)toDisk;
|
||
|
||
/**
|
||
* Query the disk cache asynchronously.
|
||
*
|
||
* @param key The unique key used to store the wanted image
|
||
*/
|
||
- (NSOperation *)queryDiskCacheForKey:(NSString *)key done:(void (^)(UIImage *image, SDImageCacheType cacheType))doneBlock;
|
||
|
||
/**
|
||
* Query the memory cache synchronously.
|
||
*
|
||
* @param key The unique key used to store the wanted image
|
||
*/
|
||
- (UIImage *)imageFromMemoryCacheForKey:(NSString *)key;
|
||
|
||
/**
|
||
* Query the disk cache synchronously after checking the memory cache.
|
||
*
|
||
* @param key The unique key used to store the wanted image
|
||
*/
|
||
- (UIImage *)imageFromDiskCacheForKey:(NSString *)key;
|
||
|
||
/**
|
||
* Remove the image from memory and disk cache synchronously
|
||
*
|
||
* @param key The unique image cache key
|
||
*/
|
||
- (void)removeImageForKey:(NSString *)key;
|
||
|
||
/**
|
||
* Remove the image from memory and optionaly disk cache synchronously
|
||
*
|
||
* @param key The unique image cache key
|
||
* @param fromDisk Also remove cache entry from disk if YES
|
||
*/
|
||
- (void)removeImageForKey:(NSString *)key fromDisk:(BOOL)fromDisk;
|
||
|
||
/**
|
||
* Clear all memory cached images
|
||
*/
|
||
- (void)clearMemory;
|
||
|
||
/**
|
||
* Clear all disk cached images
|
||
*/
|
||
- (void)clearDisk;
|
||
|
||
/**
|
||
* Remove all expired cached image from disk
|
||
*/
|
||
- (void)cleanDisk;
|
||
|
||
/**
|
||
* Get the size used by the disk cache
|
||
*/
|
||
- (unsigned long long)getSize;
|
||
|
||
/**
|
||
* Get the number of images in the disk cache
|
||
*/
|
||
- (int)getDiskCount;
|
||
|
||
/**
|
||
* Asynchronously calculate the disk cache's size.
|
||
*/
|
||
- (void)calculateSizeWithCompletionBlock:(void (^)(NSUInteger fileCount, unsigned long long totalSize))completionBlock;
|
||
|
||
/**
|
||
* Check if image exists in cache already
|
||
*/
|
||
- (BOOL)diskImageExistsWithKey:(NSString *)key;
|
||
|
||
@end
|