From 4f1e778593a984a9bbd1826caebe809c09566a8a Mon Sep 17 00:00:00 2001 From: Jay Moore Date: Fri, 24 Feb 2017 15:42:28 -0500 Subject: [PATCH 1/6] add more descriptions --- lottie-ios/Classes/AnimatableLayers/LOTLayerView.m | 6 ++++++ .../AnimatableProperties/LOTAnimatableColorValue.m | 2 +- lottie-ios/Classes/Models/LOTLayer.m | 9 ++++++++- lottie-ios/Classes/Models/LOTShapeGroup.m | 6 ++++++ 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/lottie-ios/Classes/AnimatableLayers/LOTLayerView.m b/lottie-ios/Classes/AnimatableLayers/LOTLayerView.m index 95492aa4f2..1b81ce8ffd 100644 --- a/lottie-ios/Classes/AnimatableLayers/LOTLayerView.m +++ b/lottie-ios/Classes/AnimatableLayers/LOTLayerView.m @@ -296,4 +296,10 @@ } } +- (NSString*)description { + NSMutableString *text = [[super description] mutableCopy]; + [text appendFormat:@" model: %@", _layerModel]; + return text; +} + @end diff --git a/lottie-ios/Classes/AnimatableProperties/LOTAnimatableColorValue.m b/lottie-ios/Classes/AnimatableProperties/LOTAnimatableColorValue.m index eb5684864f..51a57185bd 100644 --- a/lottie-ios/Classes/AnimatableProperties/LOTAnimatableColorValue.m +++ b/lottie-ios/Classes/AnimatableProperties/LOTAnimatableColorValue.m @@ -32,7 +32,7 @@ if ([value isKindOfClass:[NSArray class]] && [[(NSArray *)value firstObject] isKindOfClass:[NSDictionary class]] && [(NSArray *)value firstObject][@"t"]) { - //Keframes + //Keyframes [self _buildAnimationForKeyframes:value]; } else { //Single Value, no animation diff --git a/lottie-ios/Classes/Models/LOTLayer.m b/lottie-ios/Classes/Models/LOTLayer.m index b39a038c1b..27f554d0a6 100644 --- a/lottie-ios/Classes/Models/LOTLayer.m +++ b/lottie-ios/Classes/Models/LOTLayer.m @@ -71,7 +71,7 @@ NSDictionary *position = ks[@"p"]; if ([position[@"s"] boolValue]) { - // Seperate dimensions + // Separate dimensions _positionX = [[LOTAnimatableNumberValue alloc] initWithNumberValues:position[@"x"] frameRate:_framerate]; _positionY = [[LOTAnimatableNumberValue alloc] initWithNumberValues:position[@"y"] frameRate:_framerate]; } else { @@ -145,4 +145,11 @@ } } +- (NSString*)description { + NSMutableString *text = [[super description] mutableCopy]; + [text appendFormat:@" %@ id: %d pid: %d frames: %d-%d\n", _layerName, (int)_layerID.integerValue, (int)_parentID.integerValue, + (int)_inFrame.integerValue, (int)_outFrame.integerValue]; + return text; +} + @end diff --git a/lottie-ios/Classes/Models/LOTShapeGroup.m b/lottie-ios/Classes/Models/LOTShapeGroup.m index f91056ec96..b42577af1d 100644 --- a/lottie-ios/Classes/Models/LOTShapeGroup.m +++ b/lottie-ios/Classes/Models/LOTShapeGroup.m @@ -67,4 +67,10 @@ return nil; } +- (NSString*)description { + NSMutableString *text = [[super description] mutableCopy]; + [text appendFormat:@" items: %@", self.items]; + return text; +} + @end From b0be357c13ea835faa50ccdb3dccf82a6b8e96a9 Mon Sep 17 00:00:00 2001 From: Jay Moore Date: Fri, 24 Feb 2017 16:28:08 -0500 Subject: [PATCH 2/6] add more parser warnings --- Example/Tests/MeditatingCopeyV2.json | 1 + lottie-ios/Classes/Models/LOTComposition.m | 12 ++++++++++++ lottie-ios/Classes/Models/LOTLayer.h | 6 +++--- lottie-ios/Classes/Models/LOTLayer.m | 12 ++++++++---- lottie-ios/Classes/Models/LOTShapeTransform.m | 12 ++++++++++++ 5 files changed, 36 insertions(+), 7 deletions(-) create mode 100644 Example/Tests/MeditatingCopeyV2.json diff --git a/Example/Tests/MeditatingCopeyV2.json b/Example/Tests/MeditatingCopeyV2.json new file mode 100644 index 0000000000..eb1f1a937e --- /dev/null +++ b/Example/Tests/MeditatingCopeyV2.json @@ -0,0 +1 @@ +{"assets":[{"id":"image_0","w":88,"h":53,"u":"images/","p":"img_0.png"},{"id":"image_1","w":88,"h":53,"u":"images/","p":"img_1.png"},{"id":"image_2","w":64,"h":47,"u":"images/","p":"img_2.png"},{"id":"image_3","w":118,"h":58,"u":"images/","p":"img_3.png"},{"id":"image_4","w":255,"h":347,"u":"images/","p":"img_4.png"},{"id":"image_5","w":176,"h":123,"u":"images/","p":"img_5.png"},{"id":"image_6","w":176,"h":123,"u":"images/","p":"img_6.png"},{"id":"image_7","w":193,"h":197,"u":"images/","p":"img_7.png"},{"id":"image_8","w":193,"h":197,"u":"images/","p":"img_8.png"},{"id":"comp_0","layers":[{"ddd":0,"ind":0,"ty":2,"nm":"Layer 2","refId":"image_0","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[246.136,153.353,0]},"a":{"k":[43.897,26.479,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":150.000006109625,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":2,"nm":"Layer 3","refId":"image_1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[309.71,152.199,0]},"a":{"k":[43.897,26.479,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":150.000006109625,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":2,"nm":"Layer 4","refId":"image_2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[276.659,242.865,0]},"a":{"k":[31.752,23.006,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":150.000006109625,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":2,"nm":"Layer 5","refId":"image_3","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[278.5,192.378,0]},"a":{"k":[58.914,28.841,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":150.000006109625,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":2,"nm":"Layer 6","refId":"image_4","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[283.816,192.962,0]},"a":{"k":[127.338,173.385,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":150.000006109625,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":2,"nm":"Layer 7","refId":"image_5","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[303.417,334.232,0]},"a":{"k":[87.732,61.334,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":150.000006109625,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":2,"nm":"Layer 8","refId":"image_6","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[251.878,334.931,0]},"a":{"k":[87.732,61.335,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":150.000006109625,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":2,"nm":"Layer 9","refId":"image_7","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[138.397,229.332,0]},"a":{"k":[96.34,98.099,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":150.000006109625,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":2,"nm":"Layer 10","refId":"image_8","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[414.23,229.881,0]},"a":{"k":[96.34,98.099,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":150.000006109625,"st":0,"bm":0,"sr":1}]}],"layers":[{"ddd":0,"ind":0,"ty":0,"nm":"Stars_Meditating Copey 2","refId":"comp_0","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":0,"s":[270,480,0],"e":[270,415,0],"to":[0,-10.8333330154419,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":30,"s":[270,415,0],"e":[270,480,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":60,"s":[270,480,0],"e":[270,415,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":89,"s":[270,415,0],"e":[270,480,0],"to":[0,0,0],"ti":[0,-10.8333330154419,0]},{"t":120.0000048877}]},"a":{"k":[276,190.5,0]},"s":{"k":[100,100,100]}},"ao":0,"w":552,"h":381,"ip":0,"op":150.000006109625,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"Shadow Outlines","ks":{"o":{"k":6},"r":{"k":0},"p":{"k":[270,701.617,0]},"a":{"k":[102,9,0]},"s":{"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_0p667_0p333_0p333"],"t":0,"s":[100,100,100],"e":[65,65,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_0p667_0p333_0p333"],"t":30,"s":[65,65,100],"e":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_0p667_0p333_0p333"],"t":60,"s":[100,100,100],"e":[65,65,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_0p667_0p333_0p333"],"t":89,"s":[65,65,100],"e":[100,100,100]},{"t":120.0000048877}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-5.142],[-38.346,-1.346],[0,0],[-4.922,3.425],[0,0],[52.032,0]],"o":[[0,3.961],[0,0],[34.35,-1.205],[0,0],[-6.563,-4.567],[-56.573,0]],"v":[[-102.435,0],[-36.889,8.689],[36.888,8.689],[101.566,1.218],[101.566,-1.217],[-0.001,-9.311]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0,0,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[102.435,9.311],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":150.000006109625,"st":0,"bm":0,"sr":1}],"v":"4.5.0","ddd":0,"ip":0,"op":150.000006109625,"fr":29.9700012207031,"w":540,"h":960} \ No newline at end of file diff --git a/lottie-ios/Classes/Models/LOTComposition.m b/lottie-ios/Classes/Models/LOTComposition.m index 5326adf0b8..f20f0adaf6 100644 --- a/lottie-ios/Classes/Models/LOTComposition.m +++ b/lottie-ios/Classes/Models/LOTComposition.m @@ -49,6 +49,18 @@ modelMap[layer.layerID] = layer; } + NSArray *assets = jsonDictionary[@"assets"]; + if (assets && assets.count > 0) { + NSLog(@"%s: Warning: images and precomps are not supported.", __PRETTY_FUNCTION__); + } + + NSString *version = jsonDictionary[@"v"]; + NSString *supportedVersion = @"4.5.0"; + + if ([supportedVersion compare:version options:NSNumericSearch] == NSOrderedDescending) { + NSLog(@"%s: Warning: version (%@) is lower than supported version (%@)", __PRETTY_FUNCTION__, version, supportedVersion); + } + _modelMap = modelMap; _layers = layers; } diff --git a/lottie-ios/Classes/Models/LOTLayer.h b/lottie-ios/Classes/Models/LOTLayer.h index c3e5842ab5..e022134a26 100644 --- a/lottie-ios/Classes/Models/LOTLayer.h +++ b/lottie-ios/Classes/Models/LOTLayer.h @@ -18,9 +18,9 @@ @class LOTComposition; typedef enum : NSInteger { - LOTLayerTypeNone, + LOTLayerTypeNone = 0, // bodymovin calls this a "PreComp" LOTLayerTypeSolid, - LOTLayerTypeUnknown, + LOTLayerTypeImage, LOTLayerTypeNull, LOTLayerTypeShape } LOTLayerType; @@ -29,7 +29,7 @@ typedef enum : NSInteger { LOTMatteTypeNone, LOTMatteTypeAdd, LOTMatteTypeInvert, - LOTLayerTypeUknown + LOTMatteTypeUnknown } LOTMatteType; @interface LOTLayer : NSObject diff --git a/lottie-ios/Classes/Models/LOTLayer.m b/lottie-ios/Classes/Models/LOTLayer.m index 27f554d0a6..d7b5589137 100644 --- a/lottie-ios/Classes/Models/LOTLayer.m +++ b/lottie-ios/Classes/Models/LOTLayer.m @@ -32,11 +32,15 @@ _compBounds = composition.compBounds; _framerate = composition.framerate; - NSNumber *layerType = jsonDictionary[@"ty"]; - if (layerType.integerValue <= LOTLayerTypeShape) { - _layerType = layerType.integerValue; + NSInteger layerType = [jsonDictionary[@"ty"] integerValue]; + if (layerType <= LOTLayerTypeShape) { + if (layerType == LOTLayerTypeImage) { + NSLog(@"%s: Warning: image layer not supported. convert to a shape layer?", __PRETTY_FUNCTION__); + } + _layerType = layerType; } else { - _layerType = LOTLayerTypeUnknown; + NSLog(@"%s: Warning: Invalid layer type: %d", __PRETTY_FUNCTION__, (int)layerType); + _layerType = LOTLayerTypeImage; } _parentID = [jsonDictionary[@"parent"] copy]; diff --git a/lottie-ios/Classes/Models/LOTShapeTransform.m b/lottie-ios/Classes/Models/LOTShapeTransform.m index 37f678be80..3d842a57e7 100644 --- a/lottie-ios/Classes/Models/LOTShapeTransform.m +++ b/lottie-ios/Classes/Models/LOTShapeTransform.m @@ -66,6 +66,18 @@ _opacity = [[LOTAnimatableNumberValue alloc] initWithNumberValues:opacity frameRate:frameRate]; [_opacity remapValuesFromMin:@0 fromMax:@100 toMin:@0 toMax:@1]; } + + NSString *name = jsonDictionary[@"nm"]; + + NSDictionary *skew = jsonDictionary[@"sk"]; + BOOL hasSkew = (skew && [skew[@"k"] isEqual:@0] == NO); + NSDictionary *skewAxis = jsonDictionary[@"sa"]; + BOOL hasSkewAxis = (skewAxis && [skewAxis[@"k"] isEqual:@0] == NO); + + if (hasSkew || hasSkewAxis) { + NSLog(@"%s: Warning: skew is not supported: %@", __PRETTY_FUNCTION__, name); + } + } - (NSString *)description { From c06b8694c92f1e986ac7481e97d0594073e82acb Mon Sep 17 00:00:00 2001 From: Jay Moore Date: Fri, 24 Feb 2017 16:53:08 -0500 Subject: [PATCH 3/6] rm test json file --- Example/Tests/MeditatingCopeyV2.json | 1 - 1 file changed, 1 deletion(-) delete mode 100644 Example/Tests/MeditatingCopeyV2.json diff --git a/Example/Tests/MeditatingCopeyV2.json b/Example/Tests/MeditatingCopeyV2.json deleted file mode 100644 index eb1f1a937e..0000000000 --- a/Example/Tests/MeditatingCopeyV2.json +++ /dev/null @@ -1 +0,0 @@ -{"assets":[{"id":"image_0","w":88,"h":53,"u":"images/","p":"img_0.png"},{"id":"image_1","w":88,"h":53,"u":"images/","p":"img_1.png"},{"id":"image_2","w":64,"h":47,"u":"images/","p":"img_2.png"},{"id":"image_3","w":118,"h":58,"u":"images/","p":"img_3.png"},{"id":"image_4","w":255,"h":347,"u":"images/","p":"img_4.png"},{"id":"image_5","w":176,"h":123,"u":"images/","p":"img_5.png"},{"id":"image_6","w":176,"h":123,"u":"images/","p":"img_6.png"},{"id":"image_7","w":193,"h":197,"u":"images/","p":"img_7.png"},{"id":"image_8","w":193,"h":197,"u":"images/","p":"img_8.png"},{"id":"comp_0","layers":[{"ddd":0,"ind":0,"ty":2,"nm":"Layer 2","refId":"image_0","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[246.136,153.353,0]},"a":{"k":[43.897,26.479,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":150.000006109625,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":2,"nm":"Layer 3","refId":"image_1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[309.71,152.199,0]},"a":{"k":[43.897,26.479,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":150.000006109625,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":2,"nm":"Layer 4","refId":"image_2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[276.659,242.865,0]},"a":{"k":[31.752,23.006,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":150.000006109625,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":2,"nm":"Layer 5","refId":"image_3","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[278.5,192.378,0]},"a":{"k":[58.914,28.841,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":150.000006109625,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":2,"nm":"Layer 6","refId":"image_4","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[283.816,192.962,0]},"a":{"k":[127.338,173.385,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":150.000006109625,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":2,"nm":"Layer 7","refId":"image_5","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[303.417,334.232,0]},"a":{"k":[87.732,61.334,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":150.000006109625,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":2,"nm":"Layer 8","refId":"image_6","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[251.878,334.931,0]},"a":{"k":[87.732,61.335,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":150.000006109625,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":2,"nm":"Layer 9","refId":"image_7","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[138.397,229.332,0]},"a":{"k":[96.34,98.099,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":150.000006109625,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":2,"nm":"Layer 10","refId":"image_8","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[414.23,229.881,0]},"a":{"k":[96.34,98.099,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":150.000006109625,"st":0,"bm":0,"sr":1}]}],"layers":[{"ddd":0,"ind":0,"ty":0,"nm":"Stars_Meditating Copey 2","refId":"comp_0","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":0,"s":[270,480,0],"e":[270,415,0],"to":[0,-10.8333330154419,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":30,"s":[270,415,0],"e":[270,480,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":60,"s":[270,480,0],"e":[270,415,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":89,"s":[270,415,0],"e":[270,480,0],"to":[0,0,0],"ti":[0,-10.8333330154419,0]},{"t":120.0000048877}]},"a":{"k":[276,190.5,0]},"s":{"k":[100,100,100]}},"ao":0,"w":552,"h":381,"ip":0,"op":150.000006109625,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"Shadow Outlines","ks":{"o":{"k":6},"r":{"k":0},"p":{"k":[270,701.617,0]},"a":{"k":[102,9,0]},"s":{"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_0p667_0p333_0p333"],"t":0,"s":[100,100,100],"e":[65,65,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_0p667_0p333_0p333"],"t":30,"s":[65,65,100],"e":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_0p667_0p333_0p333"],"t":60,"s":[100,100,100],"e":[65,65,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_0p667_0p333_0p333"],"t":89,"s":[65,65,100],"e":[100,100,100]},{"t":120.0000048877}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-5.142],[-38.346,-1.346],[0,0],[-4.922,3.425],[0,0],[52.032,0]],"o":[[0,3.961],[0,0],[34.35,-1.205],[0,0],[-6.563,-4.567],[-56.573,0]],"v":[[-102.435,0],[-36.889,8.689],[36.888,8.689],[101.566,1.218],[101.566,-1.217],[-0.001,-9.311]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0,0,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[102.435,9.311],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":150.000006109625,"st":0,"bm":0,"sr":1}],"v":"4.5.0","ddd":0,"ip":0,"op":150.000006109625,"fr":29.9700012207031,"w":540,"h":960} \ No newline at end of file From 9d28648b3ce8e579c92e2a711b484c50fd34c655 Mon Sep 17 00:00:00 2001 From: Jay Moore Date: Fri, 24 Feb 2017 17:05:28 -0500 Subject: [PATCH 4/6] rm newline --- lottie-ios/Classes/Models/LOTLayer.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lottie-ios/Classes/Models/LOTLayer.m b/lottie-ios/Classes/Models/LOTLayer.m index 78a87c663e..ed5e3dc389 100644 --- a/lottie-ios/Classes/Models/LOTLayer.m +++ b/lottie-ios/Classes/Models/LOTLayer.m @@ -163,7 +163,7 @@ - (NSString*)description { NSMutableString *text = [[super description] mutableCopy]; - [text appendFormat:@" %@ id: %d pid: %d frames: %d-%d\n", _layerName, (int)_layerID.integerValue, (int)_parentID.integerValue, + [text appendFormat:@" %@ id: %d pid: %d frames: %d-%d", _layerName, (int)_layerID.integerValue, (int)_parentID.integerValue, (int)_inFrame.integerValue, (int)_outFrame.integerValue]; return text; } From 0f622e4dc200f715c770aa9e2556d1f332762f55 Mon Sep 17 00:00:00 2001 From: Jay Moore Date: Fri, 24 Feb 2017 17:11:05 -0500 Subject: [PATCH 5/6] rm version check --- lottie-ios/Classes/Models/LOTComposition.m | 7 ------- 1 file changed, 7 deletions(-) diff --git a/lottie-ios/Classes/Models/LOTComposition.m b/lottie-ios/Classes/Models/LOTComposition.m index 10099cde9e..8624caf9a7 100644 --- a/lottie-ios/Classes/Models/LOTComposition.m +++ b/lottie-ios/Classes/Models/LOTComposition.m @@ -51,13 +51,6 @@ withFramerate:_framerate withAssetGroup:_assetGroup]; } - - NSString *version = jsonDictionary[@"v"]; - NSString *supportedVersion = @"4.5.0"; - - if ([supportedVersion compare:version options:NSNumericSearch] == NSOrderedDescending) { - NSLog(@"%s: Warning: version (%@) is lower than supported version (%@)", __PRETTY_FUNCTION__, version, supportedVersion); - } [_assetGroup finalizeInitialization]; From 9df722d6a2250d6ddd47d91f4417fa2fe0168ed7 Mon Sep 17 00:00:00 2001 From: Jay Moore Date: Fri, 24 Feb 2017 17:21:39 -0500 Subject: [PATCH 6/6] add warnings for gradients, star --- lottie-ios/Classes/Models/LOTShapeGroup.m | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lottie-ios/Classes/Models/LOTShapeGroup.m b/lottie-ios/Classes/Models/LOTShapeGroup.m index b42577af1d..b1fed60814 100644 --- a/lottie-ios/Classes/Models/LOTShapeGroup.m +++ b/lottie-ios/Classes/Models/LOTShapeGroup.m @@ -63,7 +63,14 @@ } else if ([type isEqualToString:@"tm"]) { LOTShapeTrimPath *trim = [[LOTShapeTrimPath alloc] initWithJSON:itemJSON frameRate:frameRate]; return trim; + } else if ([type isEqualToString:@"gs"] || [type isEqualToString:@"gf"]) { + // gs = gradient stroke + // gf = gradient fill + NSLog(@"%s: Warning: gradients are not supported", __PRETTY_FUNCTION__); + } else if ([type isEqualToString:@"sr"]) { + NSLog(@"%s: Warning: star is not supported. Convert to vector path?", __PRETTY_FUNCTION__); } + return nil; }