12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- //
- // 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
|