LOTMask.m
1.5 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
//
// LOTMask.m
// LottieAnimator
//
// Created by Brandon Withrow on 12/14/15.
// Copyright © 2015 Brandon Withrow. All rights reserved.
//
#import "LOTMask.h"
#import "CGGeometry+LOTAdditions.h"
@implementation LOTMask
- (instancetype)initWithJSON:(NSDictionary *)jsonDictionary {
self = [super init];
if (self) {
[self _mapFromJSON:jsonDictionary];
}
return self;
}
- (void)_mapFromJSON:(NSDictionary *)jsonDictionary {
NSNumber *closed = jsonDictionary[@"cl"];
_closed = closed.boolValue;
NSNumber *inverted = jsonDictionary[@"inv"];
_inverted = inverted.boolValue;
NSString *mode = jsonDictionary[@"mode"];
if ([mode isEqualToString:@"a"]) {
_maskMode = LOTMaskModeAdd;
} else if ([mode isEqualToString:@"s"]) {
_maskMode = LOTMaskModeSubtract;
} else if ([mode isEqualToString:@"i"]) {
_maskMode = LOTMaskModeIntersect;
} else {
_maskMode = LOTMaskModeUnknown;
}
NSDictionary *maskshape = jsonDictionary[@"pt"];
if (maskshape) {
_maskPath = [[LOTKeyframeGroup alloc] initWithData:maskshape];
}
NSDictionary *opacity = jsonDictionary[@"o"];
if (opacity) {
_opacity = [[LOTKeyframeGroup alloc] initWithData:opacity];
[_opacity remapKeyframesWithBlock:^CGFloat(CGFloat inValue) {
return LOT_RemapValue(inValue, 0, 100, 0, 1);
}];
}
NSDictionary *expansion = jsonDictionary[@"x"];
if (expansion) {
_expansion = [[LOTKeyframeGroup alloc] initWithData:expansion];
}
}
@end