Do not expose the separator because of extensibility, use a function instead
This commit is contained in:
parent
44d266af7c
commit
8742e21fab
|
@ -538,7 +538,7 @@ FOUNDATION_STATIC_INLINE NSUInteger SDCacheCostForImage(UIImage *image) {
|
|||
// grab the transformed disk image if transformer provided
|
||||
id<SDWebImageTransformer> transformer = [context valueForKey:SDWebImageContextCustomTransformer];
|
||||
NSString *transformerKey = [transformer transformerKey];
|
||||
cacheKey = [[key stringByAppendingString:SDWebImageTransformerKeySeparator] stringByAppendingString:transformerKey];
|
||||
cacheKey = SDTransformedKeyForKey(key, transformerKey);
|
||||
}
|
||||
// decode image data only if in-memory cache missed
|
||||
diskImage = [self diskImageForKey:cacheKey data:diskData];
|
||||
|
|
|
@ -255,7 +255,7 @@
|
|||
UIImage *transformedImage = [transformer transformedImageWithImage:downloadedImage forKey:key];
|
||||
if (transformedImage && finished) {
|
||||
NSString *transformerKey = [transformer transformerKey];
|
||||
NSString *cacheKey = [[key stringByAppendingString:SDWebImageTransformerKeySeparator] stringByAppendingString:transformerKey];
|
||||
NSString *cacheKey = SDTransformedKeyForKey(key, transformerKey);
|
||||
BOOL imageWasTransformed = ![transformedImage isEqual:downloadedImage];
|
||||
NSData *cacheData;
|
||||
// pass nil if the image was transformed, so we can recalculate the data from the image
|
||||
|
|
|
@ -9,6 +9,15 @@
|
|||
#import "SDWebImageCompat.h"
|
||||
#import "UIImage+Transform.h"
|
||||
|
||||
/**
|
||||
Return the transformed cache key which applied with specify transformerKey.
|
||||
|
||||
@param key The original cache key
|
||||
@param transformerKey The transformer key from the transformer
|
||||
@return The transformed cache key
|
||||
*/
|
||||
FOUNDATION_EXPORT NSString * _Nullable SDTransformedKeyForKey(NSString * _Nullable key, NSString * _Nonnull transformerKey);
|
||||
|
||||
/**
|
||||
A transformer protocol to transform the image load from cache or from download.
|
||||
You can provide transformer to cache and manager (Through the `transformer` property or context option `SDWebImageContextCustomTransformer`).
|
||||
|
@ -38,9 +47,6 @@
|
|||
|
||||
#pragma mark - Pipeline
|
||||
|
||||
// Separator for different transformerKey, for example, `image.png` |> flip(YES,NO) |> rotate(pi/4,YES) => 'image-SDWebImageFlippingTransformer(1,0)-SDWebImageRotationTransformer(0.78539816339,1).png'
|
||||
FOUNDATION_EXPORT NSString * _Nonnull const SDWebImageTransformerKeySeparator;
|
||||
|
||||
// Pipeline transformer. Which you can bind multiple transformers together to let the image to be transformed one by one in order and generate the final image.
|
||||
@interface SDWebImagePipelineTransformer : NSObject <SDWebImageTransformer>
|
||||
|
||||
|
|
|
@ -11,6 +11,16 @@
|
|||
#import <CoreImage/CoreImage.h>
|
||||
#endif
|
||||
|
||||
// Separator for different transformerKey, for example, `image.png` |> flip(YES,NO) |> rotate(pi/4,YES) => 'image-SDWebImageFlippingTransformer(1,0)-SDWebImageRotationTransformer(0.78539816339,1).png'
|
||||
static NSString * const SDWebImageTransformerKeySeparator = @"-";
|
||||
|
||||
NSString * _Nullable SDTransformedKeyForKey(NSString * _Nullable key, NSString * _Nonnull transformerKey) {
|
||||
if (!key || !transformerKey) {
|
||||
return nil;
|
||||
}
|
||||
return [[key stringByAppendingString:SDWebImageTransformerKeySeparator] stringByAppendingString:transformerKey];
|
||||
}
|
||||
|
||||
@interface UIColor (Additions)
|
||||
|
||||
@property (nonatomic, copy, readonly, nonnull) NSString *sd_hexString;
|
||||
|
@ -50,8 +60,6 @@
|
|||
|
||||
@end
|
||||
|
||||
NSString * const SDWebImageTransformerKeySeparator = @"-";
|
||||
|
||||
@interface SDWebImagePipelineTransformer ()
|
||||
|
||||
@property (nonatomic, copy, readwrite, nonnull) NSArray<id<SDWebImageTransformer>> *transformers;
|
||||
|
|
|
@ -151,13 +151,13 @@ static CGRect SDCGRectFitWithScaleMode(CGRect rect, CGSize size, SDImageScaleMod
|
|||
#if SD_MAC
|
||||
@interface NSBezierPath (Additions)
|
||||
|
||||
+ (instancetype)bezierPathWithRoundedRect:(NSRect)rect byRoundingCorners:(SDRectCorner)corners cornerRadius:(CGFloat)cornerRadius;
|
||||
+ (instancetype)sd_bezierPathWithRoundedRect:(NSRect)rect byRoundingCorners:(SDRectCorner)corners cornerRadius:(CGFloat)cornerRadius;
|
||||
|
||||
@end
|
||||
|
||||
@implementation NSBezierPath (Additions)
|
||||
|
||||
+ (instancetype)bezierPathWithRoundedRect:(NSRect)rect byRoundingCorners:(SDRectCorner)corners cornerRadius:(CGFloat)cornerRadius {
|
||||
+ (instancetype)sd_bezierPathWithRoundedRect:(NSRect)rect byRoundingCorners:(SDRectCorner)corners cornerRadius:(CGFloat)cornerRadius {
|
||||
NSBezierPath *path = [NSBezierPath bezierPath];
|
||||
|
||||
CGFloat maxCorner = MIN(NSWidth(rect), NSHeight(rect)) / 2;
|
||||
|
@ -246,7 +246,7 @@ static CGRect SDCGRectFitWithScaleMode(CGRect rect, CGSize size, SDImageScaleMod
|
|||
#if SD_UIKIT || SD_WATCH
|
||||
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectInset(rect, borderWidth, borderWidth) byRoundingCorners:corners cornerRadii:CGSizeMake(cornerRadius, cornerRadius)];
|
||||
#else
|
||||
NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:CGRectInset(rect, borderWidth, borderWidth) byRoundingCorners:corners cornerRadius:cornerRadius];
|
||||
NSBezierPath *path = [NSBezierPath sd_bezierPathWithRoundedRect:CGRectInset(rect, borderWidth, borderWidth) byRoundingCorners:corners cornerRadius:cornerRadius];
|
||||
#endif
|
||||
[path closePath];
|
||||
|
||||
|
@ -263,7 +263,7 @@ static CGRect SDCGRectFitWithScaleMode(CGRect rect, CGSize size, SDImageScaleMod
|
|||
#if SD_UIKIT || SD_WATCH
|
||||
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:strokeRect byRoundingCorners:corners cornerRadii:CGSizeMake(strokeRadius, strokeRadius)];
|
||||
#else
|
||||
NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:strokeRect byRoundingCorners:corners cornerRadius:strokeRadius];
|
||||
NSBezierPath *path = [NSBezierPath sd_bezierPathWithRoundedRect:strokeRect byRoundingCorners:corners cornerRadius:strokeRadius];
|
||||
#endif
|
||||
[path closePath];
|
||||
|
||||
|
|
Loading…
Reference in New Issue