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,80 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <Scheme
3
- LastUpgradeVersion = "1000"
4
- version = "1.3">
5
- <BuildAction
6
- parallelizeBuildables = "YES"
7
- buildImplicitDependencies = "YES">
8
- <BuildActionEntries>
9
- <BuildActionEntry
10
- buildForTesting = "YES"
11
- buildForRunning = "YES"
12
- buildForProfiling = "YES"
13
- buildForArchiving = "YES"
14
- buildForAnalyzing = "YES">
15
- <BuildableReference
16
- BuildableIdentifier = "primary"
17
- BlueprintIdentifier = "486E8674220A3751007CD915"
18
- BuildableName = "libLottie.a"
19
- BlueprintName = "LottieLibraryMacOS"
20
- ReferencedContainer = "container:Lottie.xcodeproj">
21
- </BuildableReference>
22
- </BuildActionEntry>
23
- </BuildActionEntries>
24
- </BuildAction>
25
- <TestAction
26
- buildConfiguration = "Debug"
27
- selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
28
- selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
29
- shouldUseLaunchSchemeArgsEnv = "YES">
30
- <Testables>
31
- </Testables>
32
- <AdditionalOptions>
33
- </AdditionalOptions>
34
- </TestAction>
35
- <LaunchAction
36
- buildConfiguration = "Debug"
37
- selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
38
- selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
39
- launchStyle = "0"
40
- useCustomWorkingDirectory = "NO"
41
- ignoresPersistentStateOnLaunch = "NO"
42
- debugDocumentVersioning = "YES"
43
- debugServiceExtension = "internal"
44
- allowLocationSimulation = "YES">
45
- <MacroExpansion>
46
- <BuildableReference
47
- BuildableIdentifier = "primary"
48
- BlueprintIdentifier = "486E8674220A3751007CD915"
49
- BuildableName = "libLottie.a"
50
- BlueprintName = "LottieLibraryMacOS"
51
- ReferencedContainer = "container:Lottie.xcodeproj">
52
- </BuildableReference>
53
- </MacroExpansion>
54
- <AdditionalOptions>
55
- </AdditionalOptions>
56
- </LaunchAction>
57
- <ProfileAction
58
- buildConfiguration = "Release"
59
- shouldUseLaunchSchemeArgsEnv = "YES"
60
- savedToolIdentifier = ""
61
- useCustomWorkingDirectory = "NO"
62
- debugDocumentVersioning = "YES">
63
- <MacroExpansion>
64
- <BuildableReference
65
- BuildableIdentifier = "primary"
66
- BlueprintIdentifier = "486E8674220A3751007CD915"
67
- BuildableName = "libLottie.a"
68
- BlueprintName = "LottieLibraryMacOS"
69
- ReferencedContainer = "container:Lottie.xcodeproj">
70
- </BuildableReference>
71
- </MacroExpansion>
72
- </ProfileAction>
73
- <AnalyzeAction
74
- buildConfiguration = "Debug">
75
- </AnalyzeAction>
76
- <ArchiveAction
77
- buildConfiguration = "Release"
78
- revealArchiveInOrganizer = "YES">
79
- </ArchiveAction>
80
- </Scheme>
@@ -1,57 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
- <plist version="1.0">
4
- <dict>
5
- <key>SchemeUserState</key>
6
- <dict>
7
- <key>Lottie.xcscheme</key>
8
- <dict>
9
- <key>orderHint</key>
10
- <integer>0</integer>
11
- </dict>
12
- <key>Lottie.xcscheme_^#shared#^_</key>
13
- <dict>
14
- <key>orderHint</key>
15
- <integer>3</integer>
16
- </dict>
17
- <key>LottieLibraryIOS.xcscheme</key>
18
- <dict>
19
- <key>orderHint</key>
20
- <integer>4</integer>
21
- </dict>
22
- <key>LottieLibraryIOS.xcscheme_^#shared#^_</key>
23
- <dict>
24
- <key>orderHint</key>
25
- <integer>4</integer>
26
- </dict>
27
- <key>LottieLibraryMacOS.xcscheme</key>
28
- <dict>
29
- <key>orderHint</key>
30
- <integer>3</integer>
31
- </dict>
32
- <key>Lottie_iOS.xcscheme_^#shared#^_</key>
33
- <dict>
34
- <key>orderHint</key>
35
- <integer>2</integer>
36
- </dict>
37
- <key>Lottie_macOS.xcscheme_^#shared#^_</key>
38
- <dict>
39
- <key>orderHint</key>
40
- <integer>0</integer>
41
- </dict>
42
- <key>Lottie_tvOS.xcscheme_^#shared#^_</key>
43
- <dict>
44
- <key>orderHint</key>
45
- <integer>1</integer>
46
- </dict>
47
- </dict>
48
- <key>SuppressBuildableAutocreation</key>
49
- <dict>
50
- <key>486E8674220A3751007CD915</key>
51
- <dict>
52
- <key>primary</key>
53
- <true/>
54
- </dict>
55
- </dict>
56
- </dict>
57
- </plist>
File without changes
@@ -1,37 +0,0 @@
1
- //
2
- // LayerFontProvider.swift
3
- // Lottie
4
- //
5
- // Created by Brandon Withrow on 8/5/20.
6
- // Copyright © 2020 YurtvilleProds. All rights reserved.
7
- //
8
-
9
- import Foundation
10
-
11
- /// Connects a LottieFontProvider to a group of text layers
12
- final class LayerFontProvider {
13
-
14
- var fontProvider: AnimationFontProvider {
15
- didSet {
16
- reloadTexts()
17
- }
18
- }
19
-
20
- fileprivate(set) var textLayers: [TextCompositionLayer]
21
-
22
- init(fontProvider: AnimationFontProvider) {
23
- self.fontProvider = fontProvider
24
- self.textLayers = []
25
- reloadTexts()
26
- }
27
-
28
- func addTextLayers(_ layers: [TextCompositionLayer]) {
29
- textLayers += layers
30
- }
31
-
32
- func reloadTexts() {
33
- textLayers.forEach {
34
- $0.fontProvider = fontProvider
35
- }
36
- }
37
- }
@@ -1,36 +0,0 @@
1
- //
2
- // LayerTextProvider.swift
3
- // lottie-ios-iOS
4
- //
5
- // Created by Alexandr Goncharov on 07/06/2019.
6
- //
7
-
8
- import Foundation
9
-
10
- /// Connects a LottieTextProvider to a group of text layers
11
- final class LayerTextProvider {
12
-
13
- var textProvider: AnimationTextProvider {
14
- didSet {
15
- reloadTexts()
16
- }
17
- }
18
-
19
- fileprivate(set) var textLayers: [TextCompositionLayer]
20
-
21
- init(textProvider: AnimationTextProvider) {
22
- self.textProvider = textProvider
23
- self.textLayers = []
24
- reloadTexts()
25
- }
26
-
27
- func addTextLayers(_ layers: [TextCompositionLayer]) {
28
- textLayers += layers
29
- }
30
-
31
- func reloadTexts() {
32
- textLayers.forEach {
33
- $0.textProvider = textProvider
34
- }
35
- }
36
- }
@@ -1,107 +0,0 @@
1
- //
2
- // Animation.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/7/19.
6
- //
7
-
8
- import Foundation
9
-
10
- public enum CoordinateSpace: Int, Codable {
11
- case type2d
12
- case type3d
13
- }
14
-
15
- /**
16
- The `Animation` model is the top level model object in Lottie.
17
-
18
- An `Animation` holds all of the animation data backing a Lottie Animation.
19
- Codable, see JSON schema [here](https://github.com/airbnb/lottie-web/tree/master/docs/json).
20
- */
21
- public final class Animation: Codable {
22
-
23
- /// The version of the JSON Schema.
24
- let version: String
25
-
26
- /// The coordinate space of the composition.
27
- let type: CoordinateSpace
28
-
29
- /// The start time of the composition in frameTime.
30
- public let startFrame: AnimationFrameTime
31
-
32
- /// The end time of the composition in frameTime.
33
- public let endFrame: AnimationFrameTime
34
-
35
- /// The frame rate of the composition.
36
- public let framerate: Double
37
-
38
- /// The height of the composition in points.
39
- let width: Int
40
-
41
- /// The width of the composition in points.
42
- let height: Int
43
-
44
- /// The list of animation layers
45
- let layers: [LayerModel]
46
-
47
- /// The list of glyphs used for text rendering
48
- let glyphs: [Glyph]?
49
-
50
- /// The list of fonts used for text rendering
51
- let fonts: FontList?
52
-
53
- /// Asset Library
54
- let assetLibrary: AssetLibrary?
55
-
56
- /// Markers
57
- let markers: [Marker]?
58
- let markerMap: [String : Marker]?
59
-
60
- /// Return all marker names, in order, or an empty list if none are specified
61
- public var markerNames: [String] {
62
- guard let markers = markers else { return [] }
63
- return markers.map { $0.name }
64
- }
65
-
66
- enum CodingKeys : String, CodingKey {
67
- case version = "v"
68
- case type = "ddd"
69
- case startFrame = "ip"
70
- case endFrame = "op"
71
- case framerate = "fr"
72
- case width = "w"
73
- case height = "h"
74
- case layers = "layers"
75
- case glyphs = "chars"
76
- case fonts = "fonts"
77
- case assetLibrary = "assets"
78
- case markers = "markers"
79
- }
80
-
81
- required public init(from decoder: Decoder) throws {
82
- let container = try decoder.container(keyedBy: Animation.CodingKeys.self)
83
- self.version = try container.decode(String.self, forKey: .version)
84
- self.type = try container.decodeIfPresent(CoordinateSpace.self, forKey: .type) ?? .type2d
85
- self.startFrame = try container.decode(AnimationFrameTime.self, forKey: .startFrame)
86
- self.endFrame = try container.decode(AnimationFrameTime.self, forKey: .endFrame)
87
- self.framerate = try container.decode(Double.self, forKey: .framerate)
88
- self.width = try container.decode(Int.self, forKey: .width)
89
- self.height = try container.decode(Int.self, forKey: .height)
90
- self.layers = try container.decode([LayerModel].self, ofFamily: LayerType.self, forKey: .layers)
91
- self.glyphs = try container.decodeIfPresent([Glyph].self, forKey: .glyphs)
92
- self.fonts = try container.decodeIfPresent(FontList.self, forKey: .fonts)
93
- self.assetLibrary = try container.decodeIfPresent(AssetLibrary.self, forKey: .assetLibrary)
94
- self.markers = try container.decodeIfPresent([Marker].self, forKey: .markers)
95
-
96
- if let markers = markers {
97
- var markerMap: [String : Marker] = [:]
98
- for marker in markers {
99
- markerMap[marker.name] = marker
100
- }
101
- self.markerMap = markerMap
102
- } else {
103
- self.markerMap = nil
104
- }
105
- }
106
-
107
- }
@@ -1,27 +0,0 @@
1
- //
2
- // Asset.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/9/19.
6
- //
7
-
8
- import Foundation
9
-
10
- public class Asset: Codable {
11
-
12
- /// The ID of the asset
13
- public let id: String
14
-
15
- private enum CodingKeys : String, CodingKey {
16
- case id = "id"
17
- }
18
-
19
- required public init(from decoder: Decoder) throws {
20
- let container = try decoder.container(keyedBy: Asset.CodingKeys.self)
21
- if let id = try? container.decode(String.self, forKey: .id) {
22
- self.id = id
23
- } else {
24
- self.id = String(try container.decode(Int.self, forKey: .id))
25
- }
26
- }
27
- }
@@ -1,48 +0,0 @@
1
- //
2
- // ImageAsset.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/9/19.
6
- //
7
-
8
- import Foundation
9
-
10
- public final class ImageAsset: Asset {
11
-
12
- /// Image name
13
- public let name: String
14
-
15
- /// Image Directory
16
- public let directory: String
17
-
18
- /// Image Size
19
- public let width: Double
20
-
21
- public let height: Double
22
-
23
- enum CodingKeys : String, CodingKey {
24
- case name = "p"
25
- case directory = "u"
26
- case width = "w"
27
- case height = "h"
28
- }
29
-
30
- required init(from decoder: Decoder) throws {
31
- let container = try decoder.container(keyedBy: ImageAsset.CodingKeys.self)
32
- self.name = try container.decode(String.self, forKey: .name)
33
- self.directory = try container.decode(String.self, forKey: .directory)
34
- self.width = try container.decode(Double.self, forKey: .width)
35
- self.height = try container.decode(Double.self, forKey: .height)
36
- try super.init(from: decoder)
37
- }
38
-
39
- override public func encode(to encoder: Encoder) throws {
40
- try super.encode(to: encoder)
41
- var container = encoder.container(keyedBy: CodingKeys.self)
42
- try container.encode(name, forKey: .name)
43
- try container.encode(directory, forKey: .directory)
44
- try container.encode(width, forKey: .width)
45
- try container.encode(height, forKey: .height)
46
- }
47
-
48
- }
@@ -1,128 +0,0 @@
1
- //
2
- // Keyframe.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/7/19.
6
- //
7
-
8
- import Foundation
9
- import CoreGraphics
10
-
11
- /**
12
- Keyframe represents a point in time and is the container for datatypes.
13
- Note: This is a parent class and should not be used directly.
14
- */
15
- final class Keyframe<T: Interpolatable> {
16
-
17
- /// The value of the keyframe
18
- let value: T
19
- /// The time in frames of the keyframe.
20
- let time: CGFloat
21
- /// A hold keyframe freezes interpolation until the next keyframe that is not a hold.
22
- let isHold: Bool
23
- /// The in tangent for the time interpolation curve.
24
- let inTangent: Vector2D?
25
- /// The out tangent for the time interpolation curve.
26
- let outTangent: Vector2D?
27
-
28
- /// The spacial in tangent of the vector.
29
- let spatialInTangent: Vector3D?
30
- /// The spacial out tangent of the vector.
31
- let spatialOutTangent: Vector3D?
32
-
33
- /// Initialize a value-only keyframe with no time data.
34
- init(_ value: T,
35
- spatialInTangent: Vector3D? = nil,
36
- spatialOutTangent: Vector3D? = nil) {
37
- self.value = value
38
- self.time = 0
39
- self.isHold = true
40
- self.inTangent = nil
41
- self.outTangent = nil
42
- self.spatialInTangent = spatialInTangent
43
- self.spatialOutTangent = spatialOutTangent
44
- }
45
-
46
- /// Initialize a keyframe
47
- init(value: T,
48
- time: Double,
49
- isHold: Bool,
50
- inTangent: Vector2D?,
51
- outTangent: Vector2D?,
52
- spatialInTangent: Vector3D? = nil,
53
- spatialOutTangent: Vector3D? = nil) {
54
- self.value = value
55
- self.time = CGFloat(time)
56
- self.isHold = isHold
57
- self.outTangent = outTangent
58
- self.inTangent = inTangent
59
- self.spatialInTangent = spatialInTangent
60
- self.spatialOutTangent = spatialOutTangent
61
- }
62
-
63
- }
64
-
65
- /**
66
- A generic class used to parse and remap keyframe json.
67
-
68
- Keyframe json has a couple of different variations and formats depending on the
69
- type of keyframea and also the version of the JSON. By parsing the raw data
70
- we can reconfigure it into a constant format.
71
- */
72
- final class KeyframeData<T: Codable>: Codable {
73
-
74
- /// The start value of the keyframe
75
- let startValue: T?
76
- /// The End value of the keyframe. Note: Newer versions animation json do not have this field.
77
- let endValue: T?
78
- /// The time in frames of the keyframe.
79
- let time: Double?
80
- /// A hold keyframe freezes interpolation until the next keyframe that is not a hold.
81
- let hold: Int?
82
-
83
- /// The in tangent for the time interpolation curve.
84
- let inTangent: Vector2D?
85
- /// The out tangent for the time interpolation curve.
86
- let outTangent: Vector2D?
87
-
88
- /// The spacial in tangent of the vector.
89
- let spatialInTangent: Vector3D?
90
- /// The spacial out tangent of the vector.
91
- let spatialOutTangent:Vector3D?
92
-
93
- init(startValue: T?,
94
- endValue: T?,
95
- time: Double?,
96
- hold: Int?,
97
- inTangent: Vector2D?,
98
- outTangent: Vector2D?,
99
- spatialInTangent: Vector3D?,
100
- spatialOutTangent: Vector3D?) {
101
- self.startValue = startValue
102
- self.endValue = endValue
103
- self.time = time
104
- self.hold = hold
105
- self.inTangent = inTangent
106
- self.outTangent = outTangent
107
- self.spatialInTangent = spatialInTangent
108
- self.spatialOutTangent = spatialOutTangent
109
- }
110
-
111
- enum CodingKeys : String, CodingKey {
112
- case startValue = "s"
113
- case endValue = "e"
114
- case time = "t"
115
- case hold = "h"
116
- case inTangent = "i"
117
- case outTangent = "o"
118
- case spatialInTangent = "ti"
119
- case spatialOutTangent = "to"
120
- }
121
-
122
- var isHold: Bool {
123
- if let hold = hold {
124
- return hold > 0
125
- }
126
- return false
127
- }
128
- }
@@ -1,108 +0,0 @@
1
- //
2
- // KeyframeGroup.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/14/19.
6
- //
7
-
8
- import Foundation
9
-
10
- /**
11
- Used for coding/decoding a group of Keyframes by type.
12
-
13
- Keyframe data is wrapped in a dictionary { "k" : KeyframeData }.
14
- The keyframe data can either be an array of keyframes or, if no animation is present, the raw value.
15
- This helper object is needed to properly decode the json.
16
- */
17
-
18
- final class KeyframeGroup<T>: Codable where T: Codable, T: Interpolatable {
19
-
20
- let keyframes: ContiguousArray<Keyframe<T>>
21
-
22
- private enum KeyframeWrapperKey: String, CodingKey {
23
- case keyframeData = "k"
24
- }
25
-
26
- init(keyframes: ContiguousArray<Keyframe<T>>) {
27
- self.keyframes = keyframes
28
- }
29
-
30
- init(_ value: T) {
31
- self.keyframes = [Keyframe(value)]
32
- }
33
-
34
- required init(from decoder: Decoder) throws {
35
- let container = try decoder.container(keyedBy: KeyframeWrapperKey.self)
36
-
37
- if let keyframeData: T = try? container.decode(T.self, forKey: .keyframeData) {
38
- /// Try to decode raw value; No keyframe data.
39
- self.keyframes = [Keyframe<T>(keyframeData)]
40
- } else {
41
- /**
42
- Decode and array of keyframes.
43
-
44
- Body Movin and Lottie deal with keyframes in different ways.
45
-
46
- A keyframe object in Body movin defines a span of time with a START
47
- and an END, from the current keyframe time to the next keyframe time.
48
-
49
- A keyframe object in Lottie defines a singular point in time/space.
50
- This point has an in-tangent and an out-tangent.
51
-
52
- To properly decode this we must iterate through keyframes while holding
53
- reference to the previous keyframe.
54
- */
55
-
56
- var keyframesContainer = try container.nestedUnkeyedContainer(forKey: .keyframeData)
57
- var keyframes = ContiguousArray<Keyframe<T>>()
58
- var previousKeyframeData: KeyframeData<T>?
59
- while(!keyframesContainer.isAtEnd) {
60
- // Ensure that Time and Value are present.
61
-
62
- let keyframeData = try keyframesContainer.decode(KeyframeData<T>.self)
63
-
64
- guard let value: T = keyframeData.startValue ?? previousKeyframeData?.endValue,
65
- let time = keyframeData.time else {
66
- /// Missing keyframe data. JSON must be corrupt.
67
- throw DecodingError.dataCorruptedError(forKey: KeyframeWrapperKey.keyframeData, in: container, debugDescription: "Missing keyframe data.")
68
- }
69
-
70
- keyframes.append(Keyframe<T>(value: value,
71
- time: time,
72
- isHold: keyframeData.isHold,
73
- inTangent: previousKeyframeData?.inTangent,
74
- outTangent: keyframeData.outTangent,
75
- spatialInTangent: previousKeyframeData?.spatialInTangent,
76
- spatialOutTangent: keyframeData.spatialOutTangent))
77
- previousKeyframeData = keyframeData
78
- }
79
- self.keyframes = keyframes
80
- }
81
- }
82
-
83
- func encode(to encoder: Encoder) throws {
84
- var container = encoder.container(keyedBy: KeyframeWrapperKey.self)
85
-
86
- if keyframes.count == 1 {
87
- let keyframe = keyframes[0]
88
- try container.encode(keyframe.value, forKey: .keyframeData)
89
- } else {
90
- var keyframeContainer = container.nestedUnkeyedContainer(forKey: .keyframeData)
91
-
92
- for i in 1..<keyframes.endIndex {
93
- let keyframe = keyframes[i-1]
94
- let nextKeyframe = keyframes[i]
95
- let keyframeData = KeyframeData<T>(startValue: keyframe.value,
96
- endValue: nextKeyframe.value,
97
- time: Double(keyframe.time),
98
- hold: keyframe.isHold ? 1 : nil,
99
- inTangent: nextKeyframe.inTangent,
100
- outTangent: keyframe.outTangent,
101
- spatialInTangent: nil,
102
- spatialOutTangent: nil)
103
- try keyframeContainer.encode(keyframeData)
104
- }
105
- }
106
- }
107
-
108
- }