lottie-ios 3.2.3 → 3.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. package/.github/actions/setup/action.yml +32 -0
  2. package/.github/issue_template.md +6 -23
  3. package/.github/workflows/main.yml +98 -0
  4. package/.github/workflows/stale_issues.yml +17 -0
  5. package/.spi.yml +6 -0
  6. package/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +7 -0
  7. package/.swiftpm/xcode/package.xcworkspace/xcuserdata/cal.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  8. package/.swiftpm/xcode/package.xcworkspace/xcuserdata/calstephens.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  9. package/.swiftpm/xcode/xcuserdata/{brandonwithrow.xcuserdatad → cal.xcuserdatad}/xcschemes/xcschememanagement.plist +25 -15
  10. package/.swiftpm/xcode/xcuserdata/calstephens.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
  11. package/Gemfile +4 -0
  12. package/Gemfile.lock +102 -0
  13. package/Lottie.xcodeproj/project.pbxproj +2011 -1972
  14. package/Lottie.xcodeproj/project.xcworkspace/contents.xcworkspacedata +1 -1
  15. package/Lottie.xcodeproj/project.xcworkspace/xcuserdata/cal.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  16. package/Lottie.xcodeproj/xcshareddata/xcschemes/{Lottie_iOS.xcscheme → Lottie (iOS).xcscheme } +15 -18
  17. package/Lottie.xcodeproj/xcshareddata/xcschemes/{Lottie_tvOS.xcscheme → Lottie (macOS).xcscheme } +5 -18
  18. package/Lottie.xcodeproj/xcshareddata/xcschemes/{Lottie_macOS.xcscheme → Lottie (tvOS).xcscheme } +5 -18
  19. package/Lottie.xcodeproj/xcuserdata/cal.xcuserdatad/xcschemes/xcschememanagement.plist +37 -0
  20. package/Lottie.xcodeproj/xcuserdata/calstephens.xcuserdatad/xcschemes/xcschememanagement.plist +24 -0
  21. package/Lottie.xcworkspace/contents.xcworkspacedata +10 -0
  22. package/Lottie.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  23. package/Lottie.xcworkspace/xcshareddata/swiftpm/Package.resolved +34 -0
  24. package/Lottie.xcworkspace/xcuserdata/cal.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  25. package/{Lottie.xcodeproj/xcuserdata/brandonwithrow.xcuserdatad → Lottie.xcworkspace/xcuserdata/cal.xcuserdatad}/xcdebugger/Breakpoints_v2.xcbkptlist +2 -2
  26. package/Lottie.xcworkspace/xcuserdata/cal.xcuserdatad/xcdebugger/Expressions.xcexplist +153 -0
  27. package/Lottie.xcworkspace/xcuserdata/calstephens.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  28. package/Lottie.xcworkspace/xcuserdata/calstephens.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +22 -0
  29. package/Lottie.xcworkspace/xcuserdata/calstephens.xcuserdatad/xcdebugger/Expressions.xcexplist +138 -0
  30. package/Lottie.xcworkspace/xcuserdata/calstephens.xcuserdatad/xcschemes/xcschememanagement.plist +30 -0
  31. package/Package.swift +5 -15
  32. package/README.md +40 -60
  33. package/Rakefile +160 -0
  34. package/Sources/Private/CoreAnimation/Animations/CAAnimation+TimingConfiguration.swift +81 -0
  35. package/Sources/Private/CoreAnimation/Animations/CALayer+addAnimation.swift +447 -0
  36. package/Sources/Private/CoreAnimation/Animations/CombinedShapeAnimation.swift +81 -0
  37. package/Sources/Private/CoreAnimation/Animations/CustomPathAnimation.swift +41 -0
  38. package/Sources/Private/CoreAnimation/Animations/EllipseAnimation.swift +55 -0
  39. package/Sources/Private/CoreAnimation/Animations/GradientAnimations.swift +210 -0
  40. package/Sources/Private/CoreAnimation/Animations/LayerProperty.swift +229 -0
  41. package/Sources/Private/CoreAnimation/Animations/OpacityAnimation.swift +52 -0
  42. package/Sources/Private/CoreAnimation/Animations/RectangleAnimation.swift +58 -0
  43. package/Sources/Private/CoreAnimation/Animations/ShapeAnimation.swift +257 -0
  44. package/Sources/Private/CoreAnimation/Animations/StarAnimation.swift +124 -0
  45. package/Sources/Private/CoreAnimation/Animations/StrokeAnimation.swift +73 -0
  46. package/Sources/Private/CoreAnimation/Animations/TransformAnimations.swift +205 -0
  47. package/Sources/Private/CoreAnimation/Animations/VisibilityAnimation.swift +37 -0
  48. package/Sources/Private/CoreAnimation/CompatibilityTracker.swift +130 -0
  49. package/Sources/Private/CoreAnimation/CoreAnimationLayer.swift +497 -0
  50. package/Sources/Private/CoreAnimation/Extensions/CALayer+fillBounds.swift +35 -0
  51. package/Sources/Private/CoreAnimation/Extensions/KeyframeGroup+exactlyOneKeyframe.swift +37 -0
  52. package/Sources/Private/CoreAnimation/Extensions/Keyframes+combinedIfPossible.swift +154 -0
  53. package/Sources/Private/CoreAnimation/Layers/AnimationLayer.swift +83 -0
  54. package/Sources/Private/CoreAnimation/Layers/BaseAnimationLayer.swift +33 -0
  55. package/Sources/Private/CoreAnimation/Layers/BaseCompositionLayer.swift +88 -0
  56. package/Sources/Private/CoreAnimation/Layers/CALayer+setupLayerHierarchy.swift +167 -0
  57. package/Sources/Private/CoreAnimation/Layers/GradientRenderLayer.swift +94 -0
  58. package/Sources/Private/CoreAnimation/Layers/ImageLayer.swift +79 -0
  59. package/Sources/Private/CoreAnimation/Layers/LayerModel+makeAnimationLayer.swift +64 -0
  60. package/Sources/Private/CoreAnimation/Layers/MaskCompositionLayer.swift +138 -0
  61. package/Sources/Private/CoreAnimation/Layers/PreCompLayer.swift +140 -0
  62. package/Sources/Private/CoreAnimation/Layers/RepeaterLayer.swift +85 -0
  63. package/Sources/Private/CoreAnimation/Layers/ShapeItemLayer.swift +315 -0
  64. package/Sources/Private/CoreAnimation/Layers/ShapeLayer.swift +390 -0
  65. package/Sources/Private/CoreAnimation/Layers/SolidLayer.swift +47 -0
  66. package/Sources/Private/CoreAnimation/Layers/TextLayer.swift +91 -0
  67. package/Sources/Private/CoreAnimation/Layers/TransformLayer.swift +11 -0
  68. package/Sources/Private/CoreAnimation/ValueProviderStore.swift +139 -0
  69. package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/CompLayers/CompositionLayer.swift +94 -86
  70. package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/CompLayers/ImageCompositionLayer.swift +24 -21
  71. package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/CompLayers/MaskContainerLayer.swift +75 -54
  72. package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/CompLayers/NullCompositionLayer.swift +5 -5
  73. package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/CompLayers/PreCompositionLayer.swift +59 -43
  74. package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/CompLayers/ShapeCompositionLayer.swift +22 -20
  75. package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/CompLayers/SolidCompositionLayer.swift +26 -17
  76. package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/CompLayers/TextCompositionLayer.swift +42 -36
  77. package/{lottie-swift/src/Private/LayerContainers/AnimationContainer.swift → Sources/Private/MainThread/LayerContainers/MainThreadAnimationLayer.swift} +200 -140
  78. package/Sources/Private/MainThread/LayerContainers/Utility/CachedImageProvider.swift +47 -0
  79. package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/Utility/CompositionLayersInitializer.swift +33 -24
  80. package/{lottie-swift/src/Private/LayerContainers/Utility/TextLayer.swift → Sources/Private/MainThread/LayerContainers/Utility/CoreTextRenderLayer.swift} +149 -106
  81. package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/Utility/InvertedMatteLayer.swift +26 -24
  82. package/Sources/Private/MainThread/LayerContainers/Utility/LayerFontProvider.swift +41 -0
  83. package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/Utility/LayerImageProvider.swift +20 -16
  84. package/Sources/Private/MainThread/LayerContainers/Utility/LayerTextProvider.swift +40 -0
  85. package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/Utility/LayerTransformNode.swift +82 -67
  86. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Extensions/ItemsExtension.swift +9 -4
  87. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/NodeProperties/NodeProperty.swift +29 -21
  88. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/NodeProperties/Protocols/AnyNodeProperty.swift +16 -10
  89. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/NodeProperties/Protocols/AnyValueContainer.swift +6 -6
  90. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/NodeProperties/Protocols/KeypathSearchable.swift +5 -5
  91. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/NodeProperties/Protocols/NodePropertyMap.swift +10 -8
  92. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/NodeProperties/ValueContainer.swift +25 -21
  93. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/NodeProperties/ValueProviders/GroupInterpolator.swift +23 -17
  94. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/NodeProperties/ValueProviders/SingleValueProvider.swift +22 -17
  95. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/ModifierNodes/TrimPathNode.swift +110 -79
  96. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/OutputNodes/GroupOutputNode.swift +22 -16
  97. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/OutputNodes/PassThroughOutputNode.swift +19 -15
  98. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/OutputNodes/PathOutputNode.swift +22 -20
  99. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/OutputNodes/Renderables/FillRenderer.swift +22 -23
  100. package/Sources/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/Renderables/GradientFillRenderer.swift +247 -0
  101. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/OutputNodes/Renderables/GradientStrokeRenderer.swift +30 -24
  102. package/{lottie-swift/src/Private/NodeRenderSystem/Nodes/OutputNodes/Renderables/GradientFillRenderer.swift → Sources/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/Renderables/LegacyGradientFillRenderer.swift} +93 -66
  103. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/OutputNodes/Renderables/StrokeRenderer.swift +23 -19
  104. package/Sources/Private/MainThread/NodeRenderSystem/Nodes/PathNodes/EllipseNode.swift +139 -0
  105. package/Sources/Private/MainThread/NodeRenderSystem/Nodes/PathNodes/PolygonNode.swift +170 -0
  106. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/PathNodes/RectNode.swift +95 -58
  107. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/PathNodes/ShapeNode.swift +42 -29
  108. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/PathNodes/StarNode.swift +108 -69
  109. package/Sources/Private/MainThread/NodeRenderSystem/Nodes/RenderContainers/GroupNode.swift +155 -0
  110. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/RenderNodes/FillNode.swift +51 -37
  111. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/RenderNodes/GradientFillNode.swift +57 -42
  112. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/RenderNodes/GradientStrokeNode.swift +66 -58
  113. package/Sources/Private/MainThread/NodeRenderSystem/Nodes/RenderNodes/StrokeNode.swift +169 -0
  114. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/Text/TextAnimatorNode.swift +138 -119
  115. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Protocols/AnimatorNode.swift +80 -79
  116. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Protocols/PathNode.swift +5 -3
  117. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Protocols/RenderNode.swift +22 -17
  118. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/RenderLayers/ShapeContainerLayer.swift +27 -24
  119. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/RenderLayers/ShapeRenderLayer.swift +34 -25
  120. package/Sources/Private/Model/Animation.swift +160 -0
  121. package/Sources/Private/Model/Assets/Asset.swift +43 -0
  122. package/{lottie-swift/src → Sources}/Private/Model/Assets/AssetLibrary.swift +40 -13
  123. package/Sources/Private/Model/Assets/ImageAsset.swift +112 -0
  124. package/{lottie-swift/src → Sources}/Private/Model/Assets/PrecompAsset.swift +20 -10
  125. package/Sources/Private/Model/DictionaryInitializable.swift +67 -0
  126. package/Sources/Private/Model/Extensions/Bundle.swift +34 -0
  127. package/{lottie-swift/src → Sources}/Private/Model/Extensions/KeyedDecodingContainerExtensions.swift +8 -4
  128. package/Sources/Private/Model/Keyframes/KeyframeData.swift +113 -0
  129. package/Sources/Private/Model/Keyframes/KeyframeGroup.swift +222 -0
  130. package/{lottie-swift/src → Sources}/Private/Model/Layers/ImageLayerModel.swift +21 -11
  131. package/Sources/Private/Model/Layers/LayerModel.swift +228 -0
  132. package/{lottie-swift/src → Sources}/Private/Model/Layers/PreCompLayerModel.swift +39 -22
  133. package/{lottie-swift/src → Sources}/Private/Model/Layers/ShapeLayerModel.swift +23 -12
  134. package/{lottie-swift/src → Sources}/Private/Model/Layers/SolidLayerModel.swift +31 -19
  135. package/{lottie-swift/src → Sources}/Private/Model/Layers/TextLayerModel.swift +33 -19
  136. package/Sources/Private/Model/Objects/DashPattern.swift +44 -0
  137. package/Sources/Private/Model/Objects/Marker.swift +33 -0
  138. package/Sources/Private/Model/Objects/Mask.swift +80 -0
  139. package/Sources/Private/Model/Objects/Transform.swift +179 -0
  140. package/Sources/Private/Model/ShapeItems/Ellipse.swift +74 -0
  141. package/Sources/Private/Model/ShapeItems/Fill.swift +74 -0
  142. package/Sources/Private/Model/ShapeItems/GradientFill.swift +137 -0
  143. package/Sources/Private/Model/ShapeItems/GradientStroke.swift +185 -0
  144. package/Sources/Private/Model/ShapeItems/Group.swift +48 -0
  145. package/{lottie-swift/src → Sources}/Private/Model/ShapeItems/Merge.swift +29 -12
  146. package/Sources/Private/Model/ShapeItems/Rectangle.swift +72 -0
  147. package/Sources/Private/Model/ShapeItems/Repeater.swift +135 -0
  148. package/Sources/Private/Model/ShapeItems/Shape.swift +56 -0
  149. package/Sources/Private/Model/ShapeItems/ShapeItem.swift +163 -0
  150. package/Sources/Private/Model/ShapeItems/ShapeTransform.swift +135 -0
  151. package/Sources/Private/Model/ShapeItems/Star.swift +131 -0
  152. package/Sources/Private/Model/ShapeItems/Stroke.swift +101 -0
  153. package/Sources/Private/Model/ShapeItems/Trim.swift +77 -0
  154. package/Sources/Private/Model/Text/Font.swift +61 -0
  155. package/{lottie-swift/src → Sources}/Private/Model/Text/Glyph.swift +63 -39
  156. package/Sources/Private/Model/Text/TextAnimator.swift +164 -0
  157. package/Sources/Private/Model/Text/TextDocument.swift +123 -0
  158. package/Sources/Private/RootAnimationLayer.swift +51 -0
  159. package/{lottie-swift/src → Sources}/Private/Utility/Debugging/AnimatorNodeDebugging.swift +7 -7
  160. package/{lottie-swift/src → Sources}/Private/Utility/Debugging/LayerDebugging.swift +72 -48
  161. package/Sources/Private/Utility/Debugging/TestHelpers.swift +10 -0
  162. package/{lottie-swift/src → Sources}/Private/Utility/Extensions/AnimationKeypathExtension.swift +69 -59
  163. package/Sources/Private/Utility/Extensions/BlendMode+Filter.swift +31 -0
  164. package/Sources/Private/Utility/Extensions/CGColor+RGB.swift +22 -0
  165. package/{lottie-swift/src → Sources}/Private/Utility/Extensions/CGFloatExtensions.swift +70 -67
  166. package/Sources/Private/Utility/Extensions/DataExtension.swift +27 -0
  167. package/Sources/Private/Utility/Extensions/MathKit.swift +450 -0
  168. package/Sources/Private/Utility/Extensions/StringExtensions.swift +38 -0
  169. package/{lottie-swift/src → Sources}/Private/Utility/Helpers/AnimationContext.swift +42 -16
  170. package/Sources/Private/Utility/Interpolatable/InterpolatableExtensions.swift +134 -0
  171. package/{lottie-swift/src → Sources}/Private/Utility/Interpolatable/KeyframeExtensions.swift +13 -10
  172. package/Sources/Private/Utility/Interpolatable/KeyframeGroup+Extensions.swift +59 -0
  173. package/{lottie-swift/src/Private/NodeRenderSystem/NodeProperties/ValueProviders → Sources/Private/Utility/Interpolatable}/KeyframeInterpolator.swift +125 -108
  174. package/{lottie-swift/src → Sources}/Private/Utility/Primitives/BezierPath.swift +229 -143
  175. package/Sources/Private/Utility/Primitives/CGPointExtension.swift +35 -0
  176. package/{lottie-swift/src → Sources}/Private/Utility/Primitives/ColorExtension.swift +46 -14
  177. package/{lottie-swift/src → Sources}/Private/Utility/Primitives/CompoundBezierPath.swift +58 -49
  178. package/Sources/Private/Utility/Primitives/CurveVertex.swift +184 -0
  179. package/Sources/Private/Utility/Primitives/PathElement.swift +75 -0
  180. package/Sources/Private/Utility/Primitives/UnitBezier.swift +115 -0
  181. package/Sources/Private/Utility/Primitives/VectorsExtensions.swift +341 -0
  182. package/Sources/Public/Animation/AnimationPublic.swift +266 -0
  183. package/Sources/Public/Animation/AnimationView.swift +1335 -0
  184. package/Sources/Public/Animation/AnimationViewInitializers.swift +109 -0
  185. package/Sources/Public/AnimationCache/AnimationCacheProvider.swift +22 -0
  186. package/{lottie-swift/src → Sources}/Public/AnimationCache/LRUAnimationCache.swift +22 -18
  187. package/Sources/Public/DynamicProperties/AnimationKeypath.swift +49 -0
  188. package/Sources/Public/DynamicProperties/AnyValueProvider.swift +132 -0
  189. package/{lottie-swift/src → Sources}/Public/DynamicProperties/ValueProviders/ColorValueProvider.swift +54 -36
  190. package/{lottie-swift/src → Sources}/Public/DynamicProperties/ValueProviders/FloatValueProvider.swift +40 -36
  191. package/Sources/Public/DynamicProperties/ValueProviders/GradientValueProvider.swift +123 -0
  192. package/{lottie-swift/src → Sources}/Public/DynamicProperties/ValueProviders/PointValueProvider.swift +40 -35
  193. package/{lottie-swift/src → Sources}/Public/DynamicProperties/ValueProviders/SizeValueProvider.swift +40 -35
  194. package/{lottie-swift/src → Sources}/Public/FontProvider/AnimationFontProvider.swift +15 -8
  195. package/Sources/Public/ImageProvider/AnimationImageProvider.swift +21 -0
  196. package/Sources/Public/Keyframes/Interpolatable.swift +253 -0
  197. package/Sources/Public/Keyframes/Keyframe.swift +92 -0
  198. package/Sources/Public/Logging/LottieLogger.swift +137 -0
  199. package/Sources/Public/LottieConfiguration.swift +143 -0
  200. package/{lottie-swift/src → Sources}/Public/Primitives/AnimationTime.swift +1 -1
  201. package/{lottie-swift/src → Sources}/Public/Primitives/Color.swift +10 -6
  202. package/{lottie-swift/src → Sources}/Public/Primitives/Vectors.swift +13 -12
  203. package/Sources/Public/TextProvider/AnimationTextProvider.swift +53 -0
  204. package/{lottie-swift/src → Sources}/Public/iOS/AnimatedButton.swift +42 -26
  205. package/{lottie-swift/src → Sources}/Public/iOS/AnimatedControl.swift +100 -91
  206. package/{lottie-swift/src → Sources}/Public/iOS/AnimatedSwitch.swift +128 -94
  207. package/{lottie-swift/src → Sources}/Public/iOS/AnimationSubview.swift +3 -3
  208. package/Sources/Public/iOS/AnimationViewBase.swift +78 -0
  209. package/{lottie-swift/src → Sources}/Public/iOS/BundleImageProvider.swift +36 -34
  210. package/{lottie-swift/src → Sources}/Public/iOS/Compatibility/CompatibleAnimationKeypath.swift +4 -0
  211. package/{lottie-swift/src → Sources}/Public/iOS/Compatibility/CompatibleAnimationView.swift +38 -29
  212. package/{lottie-swift/src → Sources}/Public/iOS/FilepathImageProvider.swift +24 -21
  213. package/{lottie-swift/src → Sources}/Public/iOS/UIColorExtension.swift +4 -4
  214. package/{lottie-swift/src/Public/MacOS/AnimationSubview.swift → Sources/Public/macOS/AnimationSubview.macOS.swift} +4 -5
  215. package/{lottie-swift/src/Public/MacOS/LottieView.swift → Sources/Public/macOS/AnimationViewBase.macOS.swift} +58 -50
  216. package/{lottie-swift/src/Public/MacOS/BundleImageProvider.swift → Sources/Public/macOS/BundleImageProvider.macOS.swift} +31 -32
  217. package/Sources/Public/macOS/FilepathImageProvider.macOS.swift +67 -0
  218. package/Tests/AnimationKeypathTests.swift +103 -0
  219. package/Tests/AutomaticEngineTests.swift +57 -0
  220. package/Tests/BundleTests.swift +25 -0
  221. package/Tests/DataURLTests.swift +64 -0
  222. package/Tests/ParsingTests.swift +43 -0
  223. package/Tests/PerformanceTests.swift +214 -0
  224. package/Tests/Samples/9squares_AlBoardman.json +1 -0
  225. package/Tests/Samples/Boat_Loader.json +1 -0
  226. package/Tests/Samples/HamburgerArrow.json +1 -0
  227. package/Tests/Samples/IconTransitions.json +1 -0
  228. package/Tests/Samples/Images/dog.png +0 -0
  229. package/Tests/Samples/Issues/issue_1125.json +1 -0
  230. package/Tests/Samples/Issues/issue_1260.json +1 -0
  231. package/Tests/Samples/Issues/issue_1403.json +1 -0
  232. package/Tests/Samples/Issues/issue_1407.json +1 -0
  233. package/Tests/Samples/Issues/issue_1460.json +1 -0
  234. package/Tests/Samples/Issues/issue_1488.json +1 -0
  235. package/Tests/Samples/Issues/issue_1505.json +1 -0
  236. package/Tests/Samples/Issues/issue_1541.json +1 -0
  237. package/Tests/Samples/Issues/issue_1557.json +1 -0
  238. package/Tests/Samples/Issues/issue_1603.json +1 -0
  239. package/Tests/Samples/Issues/issue_1628.json +1 -0
  240. package/Tests/Samples/Issues/issue_1636.json +1 -0
  241. package/Tests/Samples/Issues/issue_1643.json +1 -0
  242. package/Tests/Samples/Issues/issue_1655.json +1 -0
  243. package/Tests/Samples/Issues/issue_1664.json +1 -0
  244. package/Tests/Samples/Issues/issue_1683.json +1 -0
  245. package/Tests/Samples/Issues/issue_1687.json +1 -0
  246. package/Tests/Samples/Issues/issue_1711.json +1 -0
  247. package/Tests/Samples/Issues/issue_1717.json +1 -0
  248. package/Tests/Samples/Issues/issue_769.json +1 -0
  249. package/Tests/Samples/Issues/issue_885.json +1 -0
  250. package/Tests/Samples/Issues/issue_965.json +1 -0
  251. package/Tests/Samples/Issues/pr_1536.json +1 -0
  252. package/Tests/Samples/Issues/pr_1563.json +8439 -0
  253. package/Tests/Samples/Issues/pr_1592.json +5527 -0
  254. package/Tests/Samples/Issues/pr_1599.json +738 -0
  255. package/Tests/Samples/Issues/pr_1604_1.json +1 -0
  256. package/Tests/Samples/Issues/pr_1604_2.json +1 -0
  257. package/Tests/Samples/Issues/pr_1632_1.json +1 -0
  258. package/Tests/Samples/Issues/pr_1632_2.json +1 -0
  259. package/Tests/Samples/Issues/pr_1686.json +513 -0
  260. package/Tests/Samples/Issues/pr_1698.json +1 -0
  261. package/Tests/Samples/Issues/pr_1699.json +1 -0
  262. package/Tests/Samples/LottieFiles/LICENSE.md +14 -0
  263. package/Tests/Samples/LottieFiles/bounce_strokes.json +1 -0
  264. package/Tests/Samples/LottieFiles/cactus.json +1 -0
  265. package/Tests/Samples/LottieFiles/dog_car_ride.json +1 -0
  266. package/Tests/Samples/LottieFiles/draft_icon.json +1 -0
  267. package/Tests/Samples/LottieFiles/fireworks.json +1 -0
  268. package/Tests/Samples/LottieFiles/gradient_1.json +1 -0
  269. package/Tests/Samples/LottieFiles/gradient_2.json +1 -0
  270. package/Tests/Samples/LottieFiles/gradient_pill.json +1 -0
  271. package/Tests/Samples/LottieFiles/gradient_shapes.json +1 -0
  272. package/Tests/Samples/LottieFiles/gradient_square.json +1 -0
  273. package/Tests/Samples/LottieFiles/growth.json +1 -0
  274. package/Tests/Samples/LottieFiles/infinity_loader.json +1 -0
  275. package/Tests/Samples/LottieFiles/loading_dots_1.json +1 -0
  276. package/Tests/Samples/LottieFiles/loading_dots_2.json +1 -0
  277. package/Tests/Samples/LottieFiles/loading_dots_3.json +1 -0
  278. package/Tests/Samples/LottieFiles/loading_gradient_strokes.json +1 -0
  279. package/Tests/Samples/LottieFiles/settings_slider.json +1 -0
  280. package/Tests/Samples/LottieFiles/shop.json +1 -0
  281. package/Tests/Samples/LottieFiles/step_loader.json +1 -0
  282. package/Tests/Samples/LottieLogo1.json +1 -0
  283. package/Tests/Samples/LottieLogo1_masked.json +1 -0
  284. package/Tests/Samples/LottieLogo2.json +1 -0
  285. package/Tests/Samples/MotionCorpse_Jrcanest.json +1 -0
  286. package/Tests/Samples/Nonanimating/BasicLayers.json +1 -0
  287. package/Tests/Samples/Nonanimating/DisableNodesTest.json +1 -0
  288. package/Tests/Samples/Nonanimating/FirstText.json +1 -0
  289. package/Tests/Samples/Nonanimating/GeometryTransformTest.json +1 -0
  290. package/Tests/Samples/Nonanimating/Text_AnimatedProperties.json +1 -0
  291. package/Tests/Samples/Nonanimating/Text_Glyph.json +1 -0
  292. package/Tests/Samples/Nonanimating/Text_NoAnimation.json +1 -0
  293. package/Tests/Samples/Nonanimating/Text_NoGlyph.json +1 -0
  294. package/Tests/Samples/Nonanimating/Zoom.json +1 -0
  295. package/Tests/Samples/Nonanimating/_dog.json +1 -0
  296. package/Tests/Samples/Nonanimating/base64Test.json +1 -0
  297. package/Tests/Samples/Nonanimating/blend_mode_test.json +1 -0
  298. package/Tests/Samples/Nonanimating/keypathTest.json +1 -0
  299. package/Tests/Samples/Nonanimating/verifyLineHeight.json +1 -0
  300. package/Tests/Samples/PinJump.json +1 -0
  301. package/Tests/Samples/Switch.json +1 -0
  302. package/Tests/Samples/Switch_States.json +1 -0
  303. package/Tests/Samples/TwitterHeart.json +1 -0
  304. package/Tests/Samples/TwitterHeartButton.json +1 -0
  305. package/Tests/Samples/TypeFace/A.json +1 -0
  306. package/Tests/Samples/TypeFace/Apostrophe.json +1 -0
  307. package/Tests/Samples/TypeFace/B.json +1 -0
  308. package/Tests/Samples/TypeFace/BlinkingCursor.json +1 -0
  309. package/Tests/Samples/TypeFace/C.json +1 -0
  310. package/Tests/Samples/TypeFace/Colon.json +1 -0
  311. package/Tests/Samples/TypeFace/Comma.json +1 -0
  312. package/Tests/Samples/TypeFace/D.json +1 -0
  313. package/Tests/Samples/TypeFace/E.json +1 -0
  314. package/Tests/Samples/TypeFace/F.json +1 -0
  315. package/Tests/Samples/TypeFace/G.json +1 -0
  316. package/Tests/Samples/TypeFace/H.json +1 -0
  317. package/Tests/Samples/TypeFace/I.json +1 -0
  318. package/Tests/Samples/TypeFace/J.json +1 -0
  319. package/Tests/Samples/TypeFace/K.json +1 -0
  320. package/Tests/Samples/TypeFace/L.json +1 -0
  321. package/Tests/Samples/TypeFace/M.json +1 -0
  322. package/Tests/Samples/TypeFace/N.json +1 -0
  323. package/Tests/Samples/TypeFace/O.json +1 -0
  324. package/Tests/Samples/TypeFace/P.json +1 -0
  325. package/Tests/Samples/TypeFace/Q.json +1 -0
  326. package/Tests/Samples/TypeFace/R.json +1 -0
  327. package/Tests/Samples/TypeFace/S.json +1 -0
  328. package/Tests/Samples/TypeFace/T.json +1 -0
  329. package/Tests/Samples/TypeFace/U.json +1 -0
  330. package/Tests/Samples/TypeFace/V.json +1 -0
  331. package/Tests/Samples/TypeFace/W.json +1 -0
  332. package/Tests/Samples/TypeFace/X.json +1 -0
  333. package/Tests/Samples/TypeFace/Y.json +1 -0
  334. package/Tests/Samples/TypeFace/Z.json +1 -0
  335. package/Tests/Samples/Watermelon.json +1 -0
  336. package/Tests/Samples/setValueTest.json +1 -0
  337. package/Tests/Samples/timeremap.json +1 -0
  338. package/Tests/Samples/vcTransition1.json +1 -0
  339. package/Tests/Samples/vcTransition2.json +1 -0
  340. package/Tests/SnapshotConfiguration.swift +158 -0
  341. package/Tests/SnapshotTests.swift +265 -0
  342. package/Tests/Utils/Bundle+Module.swift +30 -0
  343. package/Tests/Utils/HardcodedFontProvider.swift +19 -0
  344. package/Tests/Utils/HardcodedImageProvider.swift +23 -0
  345. package/Tests/Utils/Snapshotting+presentationLayer.swift +47 -0
  346. package/Tests/ValueProvidersTests.swift +27 -0
  347. package/lottie-ios.podspec +12 -12
  348. package/package.json +1 -1
  349. package/script/test-carthage/Cartfile +1 -0
  350. package/script/test-carthage/Cartfile.resolved +1 -0
  351. package/script/test-carthage/CarthageTest/AppDelegate.swift +26 -0
  352. package/script/test-carthage/CarthageTest/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
  353. package/script/test-carthage/CarthageTest/Assets.xcassets/AppIcon.appiconset/Contents.json +98 -0
  354. package/script/test-carthage/CarthageTest/Assets.xcassets/Contents.json +6 -0
  355. package/script/test-carthage/CarthageTest/Base.lproj/LaunchScreen.storyboard +25 -0
  356. package/script/test-carthage/CarthageTest/Base.lproj/Main.storyboard +24 -0
  357. package/script/test-carthage/CarthageTest/Info.plist +66 -0
  358. package/script/test-carthage/CarthageTest/SceneDelegate.swift +10 -0
  359. package/script/test-carthage/CarthageTest/ViewController.swift +15 -0
  360. package/script/test-carthage/CarthageTest-macOS/AppDelegate.swift +7 -0
  361. package/script/test-carthage/CarthageTest-macOS/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
  362. package/script/test-carthage/CarthageTest-macOS/Assets.xcassets/AppIcon.appiconset/Contents.json +58 -0
  363. package/script/test-carthage/CarthageTest-macOS/Assets.xcassets/Contents.json +6 -0
  364. package/script/test-carthage/CarthageTest-macOS/Base.lproj/Main.storyboard +717 -0
  365. package/script/test-carthage/CarthageTest-macOS/CarthageTest_macOS.entitlements +10 -0
  366. package/script/test-carthage/CarthageTest-macOS/ViewController.swift +15 -0
  367. package/script/test-carthage/CarthageTest.xcodeproj/project.pbxproj +532 -0
  368. package/script/test-carthage/CarthageTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  369. package/script/test-carthage/CarthageTest.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  370. package/script/test-carthage/CarthageTest.xcodeproj/project.xcworkspace/xcuserdata/cal.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  371. package/script/test-carthage/CarthageTest.xcodeproj/project.xcworkspace/xcuserdata/calstephens.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  372. package/script/test-carthage/CarthageTest.xcodeproj/xcuserdata/cal.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
  373. package/script/test-carthage/CarthageTest.xcodeproj/xcuserdata/calstephens.xcuserdatad/xcschemes/xcschememanagement.plist +19 -0
  374. package/script/test-carthage/Mintfile +1 -0
  375. package/script/test-spm/LottieSPM.xcworkspace/contents.xcworkspacedata +7 -0
  376. package/script/test-spm/LottieSPM.xcworkspace/xcuserdata/cal.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  377. package/script/test-spm/Mintfile +1 -0
  378. package/.swiftpm/xcode/package.xcworkspace/xcuserdata/brandonwithrow.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  379. package/Lottie/Info.plist +0 -22
  380. package/Lottie.xcodeproj/project.xcworkspace/xcuserdata/brandonwithrow.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  381. package/Lottie.xcodeproj/xcuserdata/brandonwithrow.xcuserdatad/xcschemes/LottieLibraryMacOS.xcscheme +0 -80
  382. package/Lottie.xcodeproj/xcuserdata/brandonwithrow.xcuserdatad/xcschemes/xcschememanagement.plist +0 -57
  383. package/lottie-swift/Assets/.gitkeep +0 -0
  384. package/lottie-swift/src/Private/LayerContainers/Utility/LayerFontProvider.swift +0 -37
  385. package/lottie-swift/src/Private/LayerContainers/Utility/LayerTextProvider.swift +0 -36
  386. package/lottie-swift/src/Private/Model/Animation.swift +0 -107
  387. package/lottie-swift/src/Private/Model/Assets/Asset.swift +0 -27
  388. package/lottie-swift/src/Private/Model/Assets/ImageAsset.swift +0 -48
  389. package/lottie-swift/src/Private/Model/Keyframes/Keyframe.swift +0 -128
  390. package/lottie-swift/src/Private/Model/Keyframes/KeyframeGroup.swift +0 -108
  391. package/lottie-swift/src/Private/Model/Layers/LayerModel.swift +0 -150
  392. package/lottie-swift/src/Private/Model/Objects/DashPattern.swift +0 -24
  393. package/lottie-swift/src/Private/Model/Objects/Marker.swift +0 -23
  394. package/lottie-swift/src/Private/Model/Objects/Mask.swift +0 -48
  395. package/lottie-swift/src/Private/Model/Objects/Transform.swift +0 -105
  396. package/lottie-swift/src/Private/Model/ShapeItems/Ellipse.swift +0 -50
  397. package/lottie-swift/src/Private/Model/ShapeItems/FillI.swift +0 -49
  398. package/lottie-swift/src/Private/Model/ShapeItems/GradientFill.swift +0 -86
  399. package/lottie-swift/src/Private/Model/ShapeItems/GradientStroke.swift +0 -125
  400. package/lottie-swift/src/Private/Model/ShapeItems/Group.swift +0 -32
  401. package/lottie-swift/src/Private/Model/ShapeItems/Rectangle.swift +0 -50
  402. package/lottie-swift/src/Private/Model/ShapeItems/Repeater.swift +0 -80
  403. package/lottie-swift/src/Private/Model/ShapeItems/Shape.swift +0 -37
  404. package/lottie-swift/src/Private/Model/ShapeItems/ShapeItem.swift +0 -95
  405. package/lottie-swift/src/Private/Model/ShapeItems/ShapeTransform.swift +0 -68
  406. package/lottie-swift/src/Private/Model/ShapeItems/Star.swift +0 -86
  407. package/lottie-swift/src/Private/Model/ShapeItems/Stroke.swift +0 -67
  408. package/lottie-swift/src/Private/Model/ShapeItems/Trim.swift +0 -53
  409. package/lottie-swift/src/Private/Model/Text/Font.swift +0 -35
  410. package/lottie-swift/src/Private/Model/Text/TextAnimator.swift +0 -99
  411. package/lottie-swift/src/Private/Model/Text/TextDocument.swift +0 -70
  412. package/lottie-swift/src/Private/NodeRenderSystem/Nodes/PathNodes/EllipseNode.swift +0 -109
  413. package/lottie-swift/src/Private/NodeRenderSystem/Nodes/PathNodes/PolygonNode.swift +0 -132
  414. package/lottie-swift/src/Private/NodeRenderSystem/Nodes/RenderContainers/GroupNode.swift +0 -141
  415. package/lottie-swift/src/Private/NodeRenderSystem/Nodes/RenderNodes/StrokeNode.swift +0 -127
  416. package/lottie-swift/src/Private/Utility/Extensions/MathKit.swift +0 -539
  417. package/lottie-swift/src/Private/Utility/Extensions/StringExtensions.swift +0 -32
  418. package/lottie-swift/src/Private/Utility/Interpolatable/Interpolatable.swift +0 -18
  419. package/lottie-swift/src/Private/Utility/Interpolatable/InterpolatableExtensions.swift +0 -170
  420. package/lottie-swift/src/Private/Utility/Primitives/CurveVertex.swift +0 -177
  421. package/lottie-swift/src/Private/Utility/Primitives/PathElement.swift +0 -68
  422. package/lottie-swift/src/Private/Utility/Primitives/VectorsExtensions.swift +0 -218
  423. package/lottie-swift/src/Public/Animation/AnimationPublic.swift +0 -196
  424. package/lottie-swift/src/Public/Animation/AnimationView.swift +0 -1006
  425. package/lottie-swift/src/Public/Animation/AnimationViewInitializers.swift +0 -83
  426. package/lottie-swift/src/Public/AnimationCache/AnimationCacheProvider.swift +0 -24
  427. package/lottie-swift/src/Public/DynamicProperties/AnimationKeypath.swift +0 -46
  428. package/lottie-swift/src/Public/DynamicProperties/AnyValueProvider.swift +0 -29
  429. package/lottie-swift/src/Public/DynamicProperties/ValueProviders/GradientValueProvider.swift +0 -114
  430. package/lottie-swift/src/Public/ImageProvider/AnimationImageProvider.swift +0 -23
  431. package/lottie-swift/src/Public/MacOS/FilepathImageProvider.swift +0 -67
  432. package/lottie-swift/src/Public/TextProvider/AnimationTextProvider.swift +0 -39
  433. package/lottie-swift/src/Public/iOS/LottieView.swift +0 -62
  434. package/lottie-swift-testing.podspec +0 -32
@@ -1,50 +0,0 @@
1
- //
2
- // Rectangle.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/8/19.
6
- //
7
-
8
- import Foundation
9
-
10
- /// An item that define an ellipse shape
11
- final class Rectangle: ShapeItem {
12
-
13
- /// The direction of the rect.
14
- let direction: PathDirection
15
-
16
- /// The position
17
- let position: KeyframeGroup<Vector3D>
18
-
19
- /// The size
20
- let size: KeyframeGroup<Vector3D>
21
-
22
- /// The Corner radius of the rectangle
23
- let cornerRadius: KeyframeGroup<Vector1D>
24
-
25
- private enum CodingKeys : String, CodingKey {
26
- case direction = "d"
27
- case position = "p"
28
- case size = "s"
29
- case cornerRadius = "r"
30
- }
31
-
32
- required init(from decoder: Decoder) throws {
33
- let container = try decoder.container(keyedBy: Rectangle.CodingKeys.self)
34
- self.direction = try container.decodeIfPresent(PathDirection.self, forKey: .direction) ?? .clockwise
35
- self.position = try container.decode(KeyframeGroup<Vector3D>.self, forKey: .position)
36
- self.size = try container.decode(KeyframeGroup<Vector3D>.self, forKey: .size)
37
- self.cornerRadius = try container.decode(KeyframeGroup<Vector1D>.self, forKey: .cornerRadius)
38
- try super.init(from: decoder)
39
- }
40
-
41
- override func encode(to encoder: Encoder) throws {
42
- try super.encode(to: encoder)
43
- var container = encoder.container(keyedBy: CodingKeys.self)
44
- try container.encode(direction, forKey: .direction)
45
- try container.encode(position, forKey: .position)
46
- try container.encode(size, forKey: .size)
47
- try container.encode(cornerRadius, forKey: .cornerRadius)
48
- }
49
-
50
- }
@@ -1,80 +0,0 @@
1
- //
2
- // Repeater.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/8/19.
6
- //
7
-
8
- import Foundation
9
-
10
- /// An item that define an ellipse shape
11
- final class Repeater: ShapeItem {
12
-
13
- /// The number of copies to repeat
14
- let copies: KeyframeGroup<Vector1D>
15
-
16
- /// The offset of each copy
17
- let offset: KeyframeGroup<Vector1D>
18
-
19
- /// Start Opacity
20
- let startOpacity: KeyframeGroup<Vector1D>
21
-
22
- /// End opacity
23
- let endOpacity: KeyframeGroup<Vector1D>
24
-
25
- /// The rotation
26
- let rotation: KeyframeGroup<Vector1D>
27
-
28
- /// Anchor Point
29
- let anchorPoint: KeyframeGroup<Vector3D>
30
-
31
- /// Position
32
- let position: KeyframeGroup<Vector3D>
33
-
34
- /// Scale
35
- let scale: KeyframeGroup<Vector3D>
36
-
37
- private enum CodingKeys : String, CodingKey {
38
- case copies = "c"
39
- case offset = "o"
40
- case transform = "tr"
41
- }
42
-
43
- private enum TransformKeys : String, CodingKey {
44
- case rotation = "r"
45
- case startOpacity = "so"
46
- case endOpacity = "eo"
47
- case anchorPoint = "a"
48
- case position = "p"
49
- case scale = "s"
50
- }
51
-
52
- required init(from decoder: Decoder) throws {
53
- let container = try decoder.container(keyedBy: Repeater.CodingKeys.self)
54
- self.copies = try container.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .copies) ?? KeyframeGroup(Vector1D(0))
55
- self.offset = try container.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .offset) ?? KeyframeGroup(Vector1D(0))
56
- let transformContainer = try container.nestedContainer(keyedBy: TransformKeys.self, forKey: .transform)
57
- self.startOpacity = try transformContainer.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .startOpacity) ?? KeyframeGroup(Vector1D(100))
58
- self.endOpacity = try transformContainer.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .endOpacity) ?? KeyframeGroup(Vector1D(100))
59
- self.rotation = try transformContainer.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .rotation) ?? KeyframeGroup(Vector1D(0))
60
- self.position = try transformContainer.decodeIfPresent(KeyframeGroup<Vector3D>.self, forKey: .position) ?? KeyframeGroup(Vector3D(x: Double(0), y: 0, z: 0))
61
- self.anchorPoint = try transformContainer.decodeIfPresent(KeyframeGroup<Vector3D>.self, forKey: .anchorPoint) ?? KeyframeGroup(Vector3D(x: Double(0), y: 0, z: 0))
62
- self.scale = try transformContainer.decodeIfPresent(KeyframeGroup<Vector3D>.self, forKey: .scale) ?? KeyframeGroup(Vector3D(x: Double(100), y: 100, z: 100))
63
- try super.init(from: decoder)
64
- }
65
-
66
- override func encode(to encoder: Encoder) throws {
67
- try super.encode(to: encoder)
68
- var container = encoder.container(keyedBy: CodingKeys.self)
69
- try container.encode(copies, forKey: .copies)
70
- try container.encode(offset, forKey: .offset)
71
- var transformContainer = container.nestedContainer(keyedBy: TransformKeys.self, forKey: .transform)
72
- try transformContainer.encode(startOpacity, forKey: .startOpacity)
73
- try transformContainer.encode(endOpacity, forKey: .endOpacity)
74
- try transformContainer.encode(rotation, forKey: .rotation)
75
- try transformContainer.encode(position, forKey: .position)
76
- try transformContainer.encode(anchorPoint, forKey: .anchorPoint)
77
- try transformContainer.encode(scale, forKey: .scale)
78
- }
79
-
80
- }
@@ -1,37 +0,0 @@
1
- //
2
- // VectorShape.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/8/19.
6
- //
7
-
8
- import Foundation
9
-
10
- /// An item that define an ellipse shape
11
- final class Shape: ShapeItem {
12
-
13
- /// The Path
14
- let path: KeyframeGroup<BezierPath>
15
-
16
- let direction: PathDirection?
17
-
18
- private enum CodingKeys : String, CodingKey {
19
- case path = "ks"
20
- case direction = "d"
21
- }
22
-
23
- required init(from decoder: Decoder) throws {
24
- let container = try decoder.container(keyedBy: Shape.CodingKeys.self)
25
- self.path = try container.decode(KeyframeGroup<BezierPath>.self, forKey: .path)
26
- self.direction = try container.decodeIfPresent(PathDirection.self, forKey: .direction)
27
- try super.init(from: decoder)
28
- }
29
-
30
- override func encode(to encoder: Encoder) throws {
31
- try super.encode(to: encoder)
32
- var container = encoder.container(keyedBy: CodingKeys.self)
33
- try container.encode(path, forKey: .path)
34
- try container.encodeIfPresent(direction, forKey: .direction)
35
- }
36
-
37
- }
@@ -1,95 +0,0 @@
1
- //
2
- // ShapeItem.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/8/19.
6
- //
7
-
8
- import Foundation
9
-
10
- /// Used for mapping a heterogeneous list to classes for parsing.
11
- extension ShapeType: ClassFamily {
12
-
13
- static var discriminator: Discriminator = .type
14
-
15
- func getType() -> AnyObject.Type {
16
- switch self {
17
- case .ellipse:
18
- return Ellipse.self
19
- case .fill:
20
- return Fill.self
21
- case .gradientFill:
22
- return GradientFill.self
23
- case .group:
24
- return Group.self
25
- case .gradientStroke:
26
- return GradientStroke.self
27
- case .merge:
28
- return Merge.self
29
- case .rectangle:
30
- return Rectangle.self
31
- case .repeater:
32
- return Repeater.self
33
- case .shape:
34
- return Shape.self
35
- case .star:
36
- return Star.self
37
- case .stroke:
38
- return Stroke.self
39
- case .trim:
40
- return Trim.self
41
- case .transform:
42
- return ShapeTransform.self
43
- default:
44
- return ShapeItem.self
45
- }
46
- }
47
- }
48
-
49
- enum ShapeType: String, Codable {
50
- case ellipse = "el"
51
- case fill = "fl"
52
- case gradientFill = "gf"
53
- case group = "gr"
54
- case gradientStroke = "gs"
55
- case merge = "mm"
56
- case rectangle = "rc"
57
- case repeater = "rp"
58
- case round = "rd"
59
- case shape = "sh"
60
- case star = "sr"
61
- case stroke = "st"
62
- case trim = "tm"
63
- case transform = "tr"
64
- case unknown
65
-
66
- public init(from decoder: Decoder) throws {
67
- self = try ShapeType(rawValue: decoder.singleValueContainer().decode(RawValue.self)) ?? .unknown
68
- }
69
- }
70
-
71
- /// An item belonging to a Shape Layer
72
- class ShapeItem: Codable {
73
-
74
- /// The name of the shape
75
- let name: String
76
-
77
- /// The type of shape
78
- let type: ShapeType
79
-
80
- let hidden: Bool
81
-
82
- private enum CodingKeys : String, CodingKey {
83
- case name = "nm"
84
- case type = "ty"
85
- case hidden = "hd"
86
- }
87
-
88
- required init(from decoder: Decoder) throws {
89
- let container = try decoder.container(keyedBy: ShapeItem.CodingKeys.self)
90
- self.name = try container.decodeIfPresent(String.self, forKey: .name) ?? "Layer"
91
- self.type = try container.decode(ShapeType.self, forKey: .type)
92
- self.hidden = try container.decodeIfPresent(Bool.self, forKey: .hidden) ?? false
93
- }
94
-
95
- }
@@ -1,68 +0,0 @@
1
- //
2
- // TransformItem.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/8/19.
6
- //
7
-
8
- import Foundation
9
-
10
- /// An item that define an ellipse shape
11
- final class ShapeTransform: ShapeItem {
12
-
13
- /// Anchor Point
14
- let anchor: KeyframeGroup<Vector3D>
15
-
16
- /// Position
17
- let position: KeyframeGroup<Vector3D>
18
-
19
- /// Scale
20
- let scale: KeyframeGroup<Vector3D>
21
-
22
- /// Rotation
23
- let rotation: KeyframeGroup<Vector1D>
24
-
25
- /// opacity
26
- let opacity: KeyframeGroup<Vector1D>
27
-
28
- /// Skew
29
- let skew: KeyframeGroup<Vector1D>
30
-
31
- /// Skew Axis
32
- let skewAxis: KeyframeGroup<Vector1D>
33
-
34
- private enum CodingKeys : String, CodingKey {
35
- case anchor = "a"
36
- case position = "p"
37
- case scale = "s"
38
- case rotation = "r"
39
- case opacity = "o"
40
- case skew = "sk"
41
- case skewAxis = "sa"
42
- }
43
-
44
- required init(from decoder: Decoder) throws {
45
- let container = try decoder.container(keyedBy: ShapeTransform.CodingKeys.self)
46
- self.anchor = try container.decodeIfPresent(KeyframeGroup<Vector3D>.self, forKey: .anchor) ?? KeyframeGroup(Vector3D(x: Double(0), y: 0, z: 0))
47
- self.position = try container.decodeIfPresent(KeyframeGroup<Vector3D>.self, forKey: .position) ?? KeyframeGroup(Vector3D(x: Double(0), y: 0, z: 0))
48
- self.scale = try container.decodeIfPresent(KeyframeGroup<Vector3D>.self, forKey: .scale) ?? KeyframeGroup(Vector3D(x: Double(100), y: 100, z: 100))
49
- self.rotation = try container.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .rotation) ?? KeyframeGroup(Vector1D(0))
50
- self.opacity = try container.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .opacity) ?? KeyframeGroup(Vector1D(100))
51
- self.skew = try container.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .skew) ?? KeyframeGroup(Vector1D(0))
52
- self.skewAxis = try container.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .skewAxis) ?? KeyframeGroup(Vector1D(0))
53
- try super.init(from: decoder)
54
- }
55
-
56
- override func encode(to encoder: Encoder) throws {
57
- try super.encode(to: encoder)
58
- var container = encoder.container(keyedBy: CodingKeys.self)
59
- try container.encode(anchor, forKey: .anchor)
60
- try container.encode(position, forKey: .position)
61
- try container.encode(scale, forKey: .scale)
62
- try container.encode(rotation, forKey: .rotation)
63
- try container.encode(opacity, forKey: .opacity)
64
- try container.encode(skew, forKey: .skew)
65
- try container.encode(skewAxis, forKey: .skewAxis)
66
- }
67
-
68
- }
@@ -1,86 +0,0 @@
1
- //
2
- // Star.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/8/19.
6
- //
7
-
8
- import Foundation
9
-
10
- enum StarType: Int, Codable {
11
- case none
12
- case star
13
- case polygon
14
- }
15
-
16
- /// An item that define an ellipse shape
17
- final class Star: ShapeItem {
18
-
19
- /// The direction of the star.
20
- let direction: PathDirection
21
-
22
- /// The position of the star
23
- let position: KeyframeGroup<Vector3D>
24
-
25
- /// The outer radius of the star
26
- let outerRadius: KeyframeGroup<Vector1D>
27
-
28
- /// The outer roundness of the star
29
- let outerRoundness: KeyframeGroup<Vector1D>
30
-
31
- /// The outer radius of the star
32
- let innerRadius: KeyframeGroup<Vector1D>?
33
-
34
- /// The outer roundness of the star
35
- let innerRoundness: KeyframeGroup<Vector1D>?
36
-
37
- /// The rotation of the star
38
- let rotation: KeyframeGroup<Vector1D>
39
-
40
- /// The number of points on the star
41
- let points: KeyframeGroup<Vector1D>
42
-
43
- /// The type of star
44
- let starType: StarType
45
-
46
- private enum CodingKeys : String, CodingKey {
47
- case direction = "d"
48
- case position = "p"
49
- case outerRadius = "or"
50
- case outerRoundness = "os"
51
- case innerRadius = "ir"
52
- case innerRoundness = "is"
53
- case rotation = "r"
54
- case points = "pt"
55
- case starType = "sy"
56
- }
57
-
58
- required init(from decoder: Decoder) throws {
59
- let container = try decoder.container(keyedBy: Star.CodingKeys.self)
60
- self.direction = try container.decodeIfPresent(PathDirection.self, forKey: .direction) ?? .clockwise
61
- self.position = try container.decode(KeyframeGroup<Vector3D>.self, forKey: .position)
62
- self.outerRadius = try container.decode(KeyframeGroup<Vector1D>.self, forKey: .outerRadius)
63
- self.outerRoundness = try container.decode(KeyframeGroup<Vector1D>.self, forKey: .outerRoundness)
64
- self.innerRadius = try container.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .innerRadius)
65
- self.innerRoundness = try container.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .innerRoundness)
66
- self.rotation = try container.decode(KeyframeGroup<Vector1D>.self, forKey: .rotation)
67
- self.points = try container.decode(KeyframeGroup<Vector1D>.self, forKey: .points)
68
- self.starType = try container.decode(StarType.self, forKey: .starType)
69
- try super.init(from: decoder)
70
- }
71
-
72
- override func encode(to encoder: Encoder) throws {
73
- try super.encode(to: encoder)
74
- var container = encoder.container(keyedBy: CodingKeys.self)
75
- try container.encode(direction, forKey: .direction)
76
- try container.encode(position, forKey: .position)
77
- try container.encode(outerRadius, forKey: .outerRadius)
78
- try container.encode(outerRoundness, forKey: .outerRoundness)
79
- try container.encode(innerRadius, forKey: .innerRadius)
80
- try container.encode(innerRoundness, forKey: .innerRoundness)
81
- try container.encode(rotation, forKey: .rotation)
82
- try container.encode(points, forKey: .points)
83
- try container.encode(starType, forKey: .starType)
84
- }
85
-
86
- }
@@ -1,67 +0,0 @@
1
- //
2
- // Stroke.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/8/19.
6
- //
7
-
8
- import Foundation
9
-
10
- /// An item that define an ellipse shape
11
- final class Stroke: ShapeItem {
12
-
13
- /// The opacity of the stroke
14
- let opacity: KeyframeGroup<Vector1D>
15
-
16
- /// The Color of the stroke
17
- let color: KeyframeGroup<Color>
18
-
19
- /// The width of the stroke
20
- let width: KeyframeGroup<Vector1D>
21
-
22
- /// Line Cap
23
- let lineCap: LineCap
24
-
25
- /// Line Join
26
- let lineJoin: LineJoin
27
-
28
- /// Miter Limit
29
- let miterLimit: Double
30
-
31
- /// The dash pattern of the stroke
32
- let dashPattern: [DashElement]?
33
-
34
- private enum CodingKeys : String, CodingKey {
35
- case opacity = "o"
36
- case color = "c"
37
- case width = "w"
38
- case lineCap = "lc"
39
- case lineJoin = "lj"
40
- case miterLimit = "ml"
41
- case dashPattern = "d"
42
- }
43
-
44
- required init(from decoder: Decoder) throws {
45
- let container = try decoder.container(keyedBy: Stroke.CodingKeys.self)
46
- self.opacity = try container.decode(KeyframeGroup<Vector1D>.self, forKey: .opacity)
47
- self.color = try container.decode(KeyframeGroup<Color>.self, forKey: .color)
48
- self.width = try container.decode(KeyframeGroup<Vector1D>.self, forKey: .width)
49
- self.lineCap = try container.decodeIfPresent(LineCap.self, forKey: .lineCap) ?? .round
50
- self.lineJoin = try container.decodeIfPresent(LineJoin.self, forKey: .lineJoin) ?? .round
51
- self.miterLimit = try container.decodeIfPresent(Double.self, forKey: .miterLimit) ?? 4
52
- self.dashPattern = try container.decodeIfPresent([DashElement].self, forKey: .dashPattern)
53
- try super.init(from: decoder)
54
- }
55
-
56
- override func encode(to encoder: Encoder) throws {
57
- try super.encode(to: encoder)
58
- var container = encoder.container(keyedBy: CodingKeys.self)
59
- try container.encode(opacity, forKey: .opacity)
60
- try container.encode(color, forKey: .color)
61
- try container.encode(width, forKey: .width)
62
- try container.encode(lineCap, forKey: .lineCap)
63
- try container.encode(lineJoin, forKey: .lineJoin)
64
- try container.encode(miterLimit, forKey: .miterLimit)
65
- try container.encodeIfPresent(dashPattern, forKey: .dashPattern)
66
- }
67
- }
@@ -1,53 +0,0 @@
1
- //
2
- // Trim.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/8/19.
6
- //
7
-
8
- import Foundation
9
-
10
- enum TrimType: Int, Codable {
11
- case simultaneously = 1
12
- case individually = 2
13
- }
14
- /// An item that define an ellipse shape
15
- final class Trim: ShapeItem {
16
-
17
- /// The start of the trim
18
- let start: KeyframeGroup<Vector1D>
19
-
20
- /// The end of the trim
21
- let end: KeyframeGroup<Vector1D>
22
-
23
- /// The offset of the trim
24
- let offset: KeyframeGroup<Vector1D>
25
-
26
- let trimType: TrimType
27
-
28
- private enum CodingKeys : String, CodingKey {
29
- case start = "s"
30
- case end = "e"
31
- case offset = "o"
32
- case trimType = "m"
33
- }
34
-
35
- required init(from decoder: Decoder) throws {
36
- let container = try decoder.container(keyedBy: Trim.CodingKeys.self)
37
- self.start = try container.decode(KeyframeGroup<Vector1D>.self, forKey: .start)
38
- self.end = try container.decode(KeyframeGroup<Vector1D>.self, forKey: .end)
39
- self.offset = try container.decode(KeyframeGroup<Vector1D>.self, forKey: .offset)
40
- self.trimType = try container.decode(TrimType.self, forKey: .trimType)
41
- try super.init(from: decoder)
42
- }
43
-
44
- override func encode(to encoder: Encoder) throws {
45
- try super.encode(to: encoder)
46
- var container = encoder.container(keyedBy: CodingKeys.self)
47
- try container.encode(start, forKey: .start)
48
- try container.encode(end, forKey: .end)
49
- try container.encode(offset, forKey: .offset)
50
- try container.encode(trimType, forKey: .trimType)
51
- }
52
-
53
- }
@@ -1,35 +0,0 @@
1
- //
2
- // Font.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/9/19.
6
- //
7
-
8
- import Foundation
9
-
10
- final class Font: Codable {
11
-
12
- let name: String
13
- let familyName: String
14
- let style: String
15
- let ascent: Double
16
-
17
- private enum CodingKeys: String, CodingKey {
18
- case name = "fName"
19
- case familyName = "fFamily"
20
- case style = "fStyle"
21
- case ascent = "ascent"
22
- }
23
-
24
- }
25
-
26
- /// A list of fonts
27
- final class FontList: Codable {
28
-
29
- let fonts: [Font]
30
-
31
- enum CodingKeys : String, CodingKey {
32
- case fonts = "list"
33
- }
34
-
35
- }
@@ -1,99 +0,0 @@
1
- //
2
- // TextAnimator.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/9/19.
6
- //
7
-
8
- import Foundation
9
-
10
- final class TextAnimator: Codable {
11
-
12
- let name: String
13
-
14
- /// Anchor
15
- let anchor: KeyframeGroup<Vector3D>?
16
-
17
- /// Position
18
- let position: KeyframeGroup<Vector3D>?
19
-
20
- /// Scale
21
- let scale: KeyframeGroup<Vector3D>?
22
-
23
- /// Skew
24
- let skew: KeyframeGroup<Vector1D>?
25
-
26
- /// Skew Axis
27
- let skewAxis: KeyframeGroup<Vector1D>?
28
-
29
- /// Rotation
30
- let rotation: KeyframeGroup<Vector1D>?
31
-
32
- /// Opacity
33
- let opacity: KeyframeGroup<Vector1D>?
34
-
35
- /// Stroke Color
36
- let strokeColor: KeyframeGroup<Color>?
37
-
38
- /// Fill Color
39
- let fillColor: KeyframeGroup<Color>?
40
-
41
- /// Stroke Width
42
- let strokeWidth: KeyframeGroup<Vector1D>?
43
-
44
- /// Tracking
45
- let tracking: KeyframeGroup<Vector1D>?
46
-
47
- private enum CodingKeys: String, CodingKey {
48
- // case textSelector = "s" TODO
49
- case textAnimator = "a"
50
- case name = "nm"
51
- }
52
-
53
- private enum TextSelectorKeys: String, CodingKey {
54
- case start = "s"
55
- case end = "e"
56
- case offset = "o"
57
- }
58
-
59
- private enum TextAnimatorKeys: String, CodingKey {
60
- case fillColor = "fc"
61
- case strokeColor = "sc"
62
- case strokeWidth = "sw"
63
- case tracking = "t"
64
- case anchor = "a"
65
- case position = "p"
66
- case scale = "s"
67
- case skew = "sk"
68
- case skewAxis = "sa"
69
- case rotation = "r"
70
- case opacity = "o"
71
- }
72
-
73
- required init(from decoder: Decoder) throws {
74
- let container = try decoder.container(keyedBy: TextAnimator.CodingKeys.self)
75
- self.name = try container.decodeIfPresent(String.self, forKey: .name) ?? ""
76
- let animatorContainer = try container.nestedContainer(keyedBy: TextAnimatorKeys.self, forKey: .textAnimator)
77
- self.fillColor = try animatorContainer.decodeIfPresent(KeyframeGroup<Color>.self, forKey: .fillColor)
78
- self.strokeColor = try animatorContainer.decodeIfPresent(KeyframeGroup<Color>.self, forKey: .strokeColor)
79
- self.strokeWidth = try animatorContainer.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .strokeWidth)
80
- self.tracking = try animatorContainer.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .tracking)
81
- self.anchor = try animatorContainer.decodeIfPresent(KeyframeGroup<Vector3D>.self, forKey: .anchor)
82
- self.position = try animatorContainer.decodeIfPresent(KeyframeGroup<Vector3D>.self, forKey: .position)
83
- self.scale = try animatorContainer.decodeIfPresent(KeyframeGroup<Vector3D>.self, forKey: .scale)
84
- self.skew = try animatorContainer.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .skew)
85
- self.skewAxis = try animatorContainer.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .skewAxis)
86
- self.rotation = try animatorContainer.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .rotation)
87
- self.opacity = try animatorContainer.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .opacity)
88
-
89
- }
90
-
91
- func encode(to encoder: Encoder) throws {
92
- var container = encoder.container(keyedBy: CodingKeys.self)
93
- var animatorContainer = container.nestedContainer(keyedBy: TextAnimatorKeys.self, forKey: .textAnimator)
94
- try animatorContainer.encodeIfPresent(fillColor, forKey: .fillColor)
95
- try animatorContainer.encodeIfPresent(strokeColor, forKey: .strokeColor)
96
- try animatorContainer.encodeIfPresent(strokeWidth, forKey: .strokeWidth)
97
- try animatorContainer.encodeIfPresent(tracking, forKey: .tracking)
98
- }
99
- }