Swiftgram/lottie-ios/Classes/Models/LOTShapeGradientFill.m
2017-08-04 15:34:12 -07:00

68 lines
1.6 KiB
Objective-C

//
// LOTShapeGradientFill.m
// Lottie
//
// Created by brandon_withrow on 7/26/17.
// Copyright © 2017 Airbnb. All rights reserved.
//
#import "LOTShapeGradientFill.h"
#import "CGGeometry+LOTAdditions.h"
@implementation LOTShapeGradientFill
- (instancetype)initWithJSON:(NSDictionary *)jsonDictionary {
self = [super init];
if (self) {
[self _mapFromJSON:jsonDictionary];
}
return self;
}
- (void)_mapFromJSON:(NSDictionary *)jsonDictionary {
if (jsonDictionary[@"nm"] ) {
_keyname = [jsonDictionary[@"nm"] copy];
}
NSNumber *type = jsonDictionary[@"t"];
if (type.integerValue != 1) {
_type = LOTGradientTypeRadial;
} else {
_type = LOTGradientTypeLinear;
}
NSDictionary *start = jsonDictionary[@"s"];
if (start) {
_startPoint = [[LOTKeyframeGroup alloc] initWithData:start];
}
NSDictionary *end = jsonDictionary[@"e"];
if (end) {
_endPoint = [[LOTKeyframeGroup alloc] initWithData:end];
}
NSDictionary *gradient = jsonDictionary[@"g"];
if (gradient) {
NSDictionary *unwrappedGradient = gradient[@"k"];
_numberOfColors = gradient[@"p"];
_gradient = [[LOTKeyframeGroup alloc] initWithData:unwrappedGradient];
}
NSDictionary *opacity = jsonDictionary[@"o"];
if (opacity) {
_opacity = [[LOTKeyframeGroup alloc] initWithData:opacity];
[_opacity remapKeyframesWithBlock:^CGFloat(CGFloat inValue) {
return LOT_RemapValue(inValue, 0, 100, 0, 1);
}];
}
NSNumber *evenOdd = jsonDictionary[@"r"];
if (evenOdd.integerValue == 2) {
_evenOddFillRule = YES;
} else {
_evenOddFillRule = NO;
}
}
@end