LOTShapeStroke.m
1.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
//
// LOTShapeStroke.m
// LottieAnimator
//
// Created by Brandon Withrow on 12/15/15.
// Copyright © 2015 Brandon Withrow. All rights reserved.
//
#import "LOTShapeStroke.h"
#import "CGGeometry+LOTAdditions.h"
@implementation LOTShapeStroke
- (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];
}
NSDictionary *color = jsonDictionary[@"c"];
if (color) {
_color = [[LOTKeyframeGroup alloc] initWithData:color];
}
NSDictionary *width = jsonDictionary[@"w"];
if (width) {
_width = [[LOTKeyframeGroup alloc] initWithData:width];
}
NSDictionary *opacity = jsonDictionary[@"o"];
if (opacity) {
_opacity = [[LOTKeyframeGroup alloc] initWithData:opacity];
[_opacity remapKeyframesWithBlock:^CGFloat(CGFloat inValue) {
return LOT_RemapValue(inValue, 0, 100, 0, 1);
}];
}
_capType = [jsonDictionary[@"lc"] integerValue] - 1;
_joinType = [jsonDictionary[@"lj"] integerValue] - 1;
NSNumber *fillEnabled = jsonDictionary[@"fillEnabled"];
_fillEnabled = fillEnabled.boolValue;
NSDictionary *dashOffset = nil;
NSArray *dashes = jsonDictionary[@"d"];
if (dashes) {
NSMutableArray *dashPattern = [NSMutableArray array];
for (NSDictionary *dash in dashes) {
if ([dash[@"n"] isEqualToString:@"o"]) {
dashOffset = dash[@"v"];
continue;
}
// TODO DASH PATTERNS
NSDictionary *value = dash[@"v"];
LOTKeyframeGroup *keyframeGroup = [[LOTKeyframeGroup alloc] initWithData:value];
[dashPattern addObject:keyframeGroup];
}
_lineDashPattern = dashPattern;
}
if (dashOffset) {
_dashOffset = [[LOTKeyframeGroup alloc] initWithData:dashOffset];
}
}
@end