#import "TGColorWallpaperInfo.h" @interface TGColorWallpaperInfo () { uint32_t _color; int _tintColor; CGFloat _systemAlpha; CGFloat _buttonsAlpha; CGFloat _highlightedButtonAlpha; CGFloat _progressAlpha; } @end @implementation TGColorWallpaperInfo - (instancetype)initWithColor:(uint32_t)color { return [self initWithColor:color tintColor:0x000000 systemAlpha:0.25f buttonsAlpha:0.35f highlightedButtonAlpha:0.50f progressAlpha:0.35f]; } - (instancetype)initWithColor:(uint32_t)color tintColor:(int)tintColor systemAlpha:(CGFloat)systemAlpha buttonsAlpha:(CGFloat)buttonsAlpha highlightedButtonAlpha:(CGFloat)highlightedButtonAlpha progressAlpha:(CGFloat)progressAlpha { self = [super init]; if (self != nil) { _color = color; _tintColor = tintColor; _systemAlpha = systemAlpha; _buttonsAlpha = buttonsAlpha; _highlightedButtonAlpha = highlightedButtonAlpha; _progressAlpha = progressAlpha; } return self; } - (NSString *)thumbnailUrl { return [[NSString alloc] initWithFormat:@"color://?color=%d", (int)_color]; } - (NSString *)fullscreenUrl { return [self thumbnailUrl]; } - (int)tintColor { return _tintColor; } - (CGFloat)systemAlpha { return _systemAlpha; } - (CGFloat)buttonsAlpha { return _buttonsAlpha; } - (CGFloat)highlightedButtonAlpha { return _highlightedButtonAlpha; } - (CGFloat)progressAlpha { return _progressAlpha; } - (UIImage *)image { UIGraphicsBeginImageContextWithOptions(CGSizeMake(1, 1), true, 0.0f); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(context, UIColorRGB(_color).CGColor); CGContextFillRect(context, CGRectMake(0.0f, 0.0f, 1.0f, 1.0f)); UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return image; } - (NSData *)imageData { return nil; } - (bool)hasData { return false; } - (BOOL)isEqual:(id)object { if ([object isKindOfClass:[TGColorWallpaperInfo class]]) { if (((TGColorWallpaperInfo *)object)->_color == _color && ((TGColorWallpaperInfo *)object)->_tintColor == _tintColor) { return true; } } return false; } - (NSDictionary *)infoDictionary { return @{ @"_className": NSStringFromClass([self class]), @"color": @(_color), @"tintColor": @(_tintColor), @"systemAlpha": @(_systemAlpha), @"buttonsAlpha": @(_buttonsAlpha), @"highlightedButtonAlpha": @(_highlightedButtonAlpha), @"progressAlpha": @(_progressAlpha) }; } + (TGWallpaperInfo *)infoWithDictionary:(NSDictionary *)dict { return [[TGColorWallpaperInfo alloc] initWithColor:[dict[@"color"] intValue] tintColor:[dict[@"tintColor"] intValue] systemAlpha:[dict[@"systemAlpha"] floatValue] buttonsAlpha:[dict[@"buttonsAlpha"] floatValue] highlightedButtonAlpha:[dict[@"highlightedButtonAlpha"] floatValue] progressAlpha:[dict[@"progressAlpha"] floatValue]]; } @end