Skip to content

Commit 3c89a09

Browse files
committed
Added the blend mode to transformer API as well
Update unit tests
1 parent 0993718 commit 3c89a09

File tree

3 files changed

+15
-2
lines changed

3 files changed

+15
-2
lines changed

SDWebImage/Core/SDImageTransformer.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,11 +223,14 @@ FOUNDATION_EXPORT NSString * _Nullable SDThumbnailedKeyForKey(NSString * _Nullab
223223
The tint color.
224224
*/
225225
@property (nonatomic, strong, readonly, nonnull) UIColor *tintColor;
226+
/// The blend mode, defaults to `sourceAtop` if you use the old initializer
227+
@property (nonatomic, assign, readonly) CGBlendMode blendMode;
226228

227229
- (nonnull instancetype)init NS_UNAVAILABLE;
228230
+ (nonnull instancetype)new NS_UNAVAILABLE;
229231

230232
+ (nonnull instancetype)transformerWithColor:(nonnull UIColor *)tintColor;
233+
+ (nonnull instancetype)transformerWithColor:(nonnull UIColor *)tintColor blendMode:(CGBlendMode)blendMode;
231234

232235
@end
233236

SDWebImage/Core/SDImageTransformer.m

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,20 +245,26 @@ - (UIImage *)transformedImageWithImage:(UIImage *)image forKey:(NSString *)key {
245245
@interface SDImageTintTransformer ()
246246

247247
@property (nonatomic, strong, nonnull) UIColor *tintColor;
248+
@property (nonatomic, assign) CGBlendMode blendMode;
248249

249250
@end
250251

251252
@implementation SDImageTintTransformer
252253

253254
+ (instancetype)transformerWithColor:(UIColor *)tintColor {
255+
return [self transformerWithColor:tintColor blendMode:kCGBlendModeSourceAtop];
256+
}
257+
258+
+ (instancetype)transformerWithColor:(UIColor *)tintColor blendMode:(CGBlendMode)blendMode {
254259
SDImageTintTransformer *transformer = [SDImageTintTransformer new];
255260
transformer.tintColor = tintColor;
261+
transformer.blendMode = blendMode;
256262

257263
return transformer;
258264
}
259265

260266
- (NSString *)transformerKey {
261-
return [NSString stringWithFormat:@"SDImageTintTransformer(%@)", self.tintColor.sd_hexString];
267+
return [NSString stringWithFormat:@"SDImageTintTransformer(%@,%d)", self.tintColor.sd_hexString, self.blendMode];
262268
}
263269

264270
- (UIImage *)transformedImageWithImage:(UIImage *)image forKey:(NSString *)key {

Tests/Tests/SDImageTransformerTests.m

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,10 @@ - (void)test06UIImageTransformTintWithImage:(UIImage *)testImage {
242242
// Check rounded corner operation not inversion the image
243243
UIColor *topCenterColor = [tintedImage sd_colorAtPoint:CGPointMake(150, 20)];
244244
expect([topCenterColor.sd_hexString isEqualToString:[UIColor blackColor].sd_hexString]).beTruthy();
245+
246+
UIImage *tintedSourceInImage = [testImage sd_tintedImageWithColor:tintColor blendMode:kCGBlendModeSourceOut];
247+
centerColor = [tintedSourceInImage sd_colorAtPoint:CGPointMake(150, 150)];
248+
expect([centerColor.sd_hexString isEqualToString:[UIColor blackColor].sd_hexString]).beTruthy();
245249
}
246250

247251
- (void)test07UIImageTransformBlurCG {
@@ -353,7 +357,7 @@ - (void)test09ImagePipelineTransformer {
353357
@"SDImageRoundCornerTransformer(50.000000,18446744073709551615,1.000000,#ff000000)",
354358
@"SDImageFlippingTransformer(1,1)",
355359
@"SDImageCroppingTransformer({0.000000,0.000000,50.000000,50.000000})",
356-
@"SDImageTintTransformer(#00000000)",
360+
@"SDImageTintTransformer(#00000000,20)",
357361
@"SDImageBlurTransformer(5.000000)",
358362
@"SDImageFilterTransformer(CIColorInvert)"
359363
];

0 commit comments

Comments
 (0)