Swiftgram/lottie-ios/Classes/Models/LOTShapeRepeater.m
2017-08-01 14:44:03 -07:00

84 lines
2.2 KiB
Objective-C

//
// 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, 0, 100, 0, 1);
}];
}
}
@end