1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- //
- // LOTShapeRepeater.m
- // Lottie
- //
- // Created by brandon_withrow on 7/28/17.
- // Copyright © 2017 Airbnb. All rights reserved.
- //
- #import "LOTShapeRepeater.h"
- #import "CGGeometry+LOTAdditions.h"
- @implementation LOTShapeRepeater
- - (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 *copies = jsonDictionary[@"c"];
- if (copies) {
- _copies = [[LOTKeyframeGroup alloc] initWithData:copies];
- }
-
- NSDictionary *offset = jsonDictionary[@"o"];
- if (offset) {
- _offset = [[LOTKeyframeGroup alloc] initWithData:offset];
- }
-
- NSDictionary *transform = jsonDictionary[@"tr"];
-
- NSDictionary *rotation = transform[@"r"];
- if (rotation) {
- _rotation = [[LOTKeyframeGroup alloc] initWithData:rotation];
- [_rotation remapKeyframesWithBlock:^CGFloat(CGFloat inValue) {
- return LOT_DegreesToRadians(inValue);
- }];
- }
-
- NSDictionary *startOpacity = transform[@"so"];
- if (startOpacity) {
- _startOpacity = [[LOTKeyframeGroup alloc] initWithData:startOpacity];
- [_startOpacity remapKeyframesWithBlock:^CGFloat(CGFloat inValue) {
- return LOT_RemapValue(inValue, 0, 100, 0, 1);
- }];
- }
-
- NSDictionary *endOpacity = transform[@"eo"];
- if (endOpacity) {
- _endOpacity = [[LOTKeyframeGroup alloc] initWithData:endOpacity];
- [_endOpacity remapKeyframesWithBlock:^CGFloat(CGFloat inValue) {
- return LOT_RemapValue(inValue, 0, 100, 0, 1);
- }];
- }
-
- NSDictionary *anchorPoint = transform[@"a"];
- if (anchorPoint) {
- _anchorPoint = [[LOTKeyframeGroup alloc] initWithData:anchorPoint];
- }
-
- NSDictionary *position = transform[@"p"];
- if (position) {
- _position = [[LOTKeyframeGroup alloc] initWithData:position];
- }
-
- NSDictionary *scale = transform[@"s"];
- if (scale) {
- _scale = [[LOTKeyframeGroup alloc] initWithData:scale];
- [_scale remapKeyframesWithBlock:^CGFloat(CGFloat inValue) {
- return LOT_RemapValue(inValue, -100, 100, -1, 1);
- }];
- }
- }
- @end
|