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.
- package/.github/actions/setup/action.yml +32 -0
- package/.github/issue_template.md +6 -23
- package/.github/workflows/main.yml +98 -0
- package/.github/workflows/stale_issues.yml +17 -0
- package/.spi.yml +6 -0
- package/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +7 -0
- package/.swiftpm/xcode/package.xcworkspace/xcuserdata/cal.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/.swiftpm/xcode/package.xcworkspace/xcuserdata/calstephens.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/.swiftpm/xcode/xcuserdata/{brandonwithrow.xcuserdatad → cal.xcuserdatad}/xcschemes/xcschememanagement.plist +25 -15
- package/.swiftpm/xcode/xcuserdata/calstephens.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
- package/Gemfile +4 -0
- package/Gemfile.lock +102 -0
- package/Lottie.xcodeproj/project.pbxproj +2011 -1972
- package/Lottie.xcodeproj/project.xcworkspace/contents.xcworkspacedata +1 -1
- package/Lottie.xcodeproj/project.xcworkspace/xcuserdata/cal.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/Lottie.xcodeproj/xcshareddata/xcschemes/{Lottie_iOS.xcscheme → Lottie (iOS).xcscheme } +15 -18
- package/Lottie.xcodeproj/xcshareddata/xcschemes/{Lottie_tvOS.xcscheme → Lottie (macOS).xcscheme } +5 -18
- package/Lottie.xcodeproj/xcshareddata/xcschemes/{Lottie_macOS.xcscheme → Lottie (tvOS).xcscheme } +5 -18
- package/Lottie.xcodeproj/xcuserdata/cal.xcuserdatad/xcschemes/xcschememanagement.plist +37 -0
- package/Lottie.xcodeproj/xcuserdata/calstephens.xcuserdatad/xcschemes/xcschememanagement.plist +24 -0
- package/Lottie.xcworkspace/contents.xcworkspacedata +10 -0
- package/Lottie.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/Lottie.xcworkspace/xcshareddata/swiftpm/Package.resolved +34 -0
- package/Lottie.xcworkspace/xcuserdata/cal.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/{Lottie.xcodeproj/xcuserdata/brandonwithrow.xcuserdatad → Lottie.xcworkspace/xcuserdata/cal.xcuserdatad}/xcdebugger/Breakpoints_v2.xcbkptlist +2 -2
- package/Lottie.xcworkspace/xcuserdata/cal.xcuserdatad/xcdebugger/Expressions.xcexplist +153 -0
- package/Lottie.xcworkspace/xcuserdata/calstephens.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/Lottie.xcworkspace/xcuserdata/calstephens.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +22 -0
- package/Lottie.xcworkspace/xcuserdata/calstephens.xcuserdatad/xcdebugger/Expressions.xcexplist +138 -0
- package/Lottie.xcworkspace/xcuserdata/calstephens.xcuserdatad/xcschemes/xcschememanagement.plist +30 -0
- package/Package.swift +5 -15
- package/README.md +40 -60
- package/Rakefile +160 -0
- package/Sources/Private/CoreAnimation/Animations/CAAnimation+TimingConfiguration.swift +81 -0
- package/Sources/Private/CoreAnimation/Animations/CALayer+addAnimation.swift +447 -0
- package/Sources/Private/CoreAnimation/Animations/CombinedShapeAnimation.swift +81 -0
- package/Sources/Private/CoreAnimation/Animations/CustomPathAnimation.swift +41 -0
- package/Sources/Private/CoreAnimation/Animations/EllipseAnimation.swift +55 -0
- package/Sources/Private/CoreAnimation/Animations/GradientAnimations.swift +210 -0
- package/Sources/Private/CoreAnimation/Animations/LayerProperty.swift +229 -0
- package/Sources/Private/CoreAnimation/Animations/OpacityAnimation.swift +52 -0
- package/Sources/Private/CoreAnimation/Animations/RectangleAnimation.swift +58 -0
- package/Sources/Private/CoreAnimation/Animations/ShapeAnimation.swift +257 -0
- package/Sources/Private/CoreAnimation/Animations/StarAnimation.swift +124 -0
- package/Sources/Private/CoreAnimation/Animations/StrokeAnimation.swift +73 -0
- package/Sources/Private/CoreAnimation/Animations/TransformAnimations.swift +205 -0
- package/Sources/Private/CoreAnimation/Animations/VisibilityAnimation.swift +37 -0
- package/Sources/Private/CoreAnimation/CompatibilityTracker.swift +130 -0
- package/Sources/Private/CoreAnimation/CoreAnimationLayer.swift +497 -0
- package/Sources/Private/CoreAnimation/Extensions/CALayer+fillBounds.swift +35 -0
- package/Sources/Private/CoreAnimation/Extensions/KeyframeGroup+exactlyOneKeyframe.swift +37 -0
- package/Sources/Private/CoreAnimation/Extensions/Keyframes+combinedIfPossible.swift +154 -0
- package/Sources/Private/CoreAnimation/Layers/AnimationLayer.swift +83 -0
- package/Sources/Private/CoreAnimation/Layers/BaseAnimationLayer.swift +33 -0
- package/Sources/Private/CoreAnimation/Layers/BaseCompositionLayer.swift +88 -0
- package/Sources/Private/CoreAnimation/Layers/CALayer+setupLayerHierarchy.swift +167 -0
- package/Sources/Private/CoreAnimation/Layers/GradientRenderLayer.swift +94 -0
- package/Sources/Private/CoreAnimation/Layers/ImageLayer.swift +79 -0
- package/Sources/Private/CoreAnimation/Layers/LayerModel+makeAnimationLayer.swift +64 -0
- package/Sources/Private/CoreAnimation/Layers/MaskCompositionLayer.swift +138 -0
- package/Sources/Private/CoreAnimation/Layers/PreCompLayer.swift +140 -0
- package/Sources/Private/CoreAnimation/Layers/RepeaterLayer.swift +85 -0
- package/Sources/Private/CoreAnimation/Layers/ShapeItemLayer.swift +315 -0
- package/Sources/Private/CoreAnimation/Layers/ShapeLayer.swift +390 -0
- package/Sources/Private/CoreAnimation/Layers/SolidLayer.swift +47 -0
- package/Sources/Private/CoreAnimation/Layers/TextLayer.swift +91 -0
- package/Sources/Private/CoreAnimation/Layers/TransformLayer.swift +11 -0
- package/Sources/Private/CoreAnimation/ValueProviderStore.swift +139 -0
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/CompLayers/CompositionLayer.swift +94 -86
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/CompLayers/ImageCompositionLayer.swift +24 -21
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/CompLayers/MaskContainerLayer.swift +75 -54
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/CompLayers/NullCompositionLayer.swift +5 -5
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/CompLayers/PreCompositionLayer.swift +59 -43
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/CompLayers/ShapeCompositionLayer.swift +22 -20
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/CompLayers/SolidCompositionLayer.swift +26 -17
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/CompLayers/TextCompositionLayer.swift +42 -36
- package/{lottie-swift/src/Private/LayerContainers/AnimationContainer.swift → Sources/Private/MainThread/LayerContainers/MainThreadAnimationLayer.swift} +200 -140
- package/Sources/Private/MainThread/LayerContainers/Utility/CachedImageProvider.swift +47 -0
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/Utility/CompositionLayersInitializer.swift +33 -24
- package/{lottie-swift/src/Private/LayerContainers/Utility/TextLayer.swift → Sources/Private/MainThread/LayerContainers/Utility/CoreTextRenderLayer.swift} +149 -106
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/Utility/InvertedMatteLayer.swift +26 -24
- package/Sources/Private/MainThread/LayerContainers/Utility/LayerFontProvider.swift +41 -0
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/Utility/LayerImageProvider.swift +20 -16
- package/Sources/Private/MainThread/LayerContainers/Utility/LayerTextProvider.swift +40 -0
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/Utility/LayerTransformNode.swift +82 -67
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Extensions/ItemsExtension.swift +9 -4
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/NodeProperties/NodeProperty.swift +29 -21
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/NodeProperties/Protocols/AnyNodeProperty.swift +16 -10
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/NodeProperties/Protocols/AnyValueContainer.swift +6 -6
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/NodeProperties/Protocols/KeypathSearchable.swift +5 -5
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/NodeProperties/Protocols/NodePropertyMap.swift +10 -8
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/NodeProperties/ValueContainer.swift +25 -21
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/NodeProperties/ValueProviders/GroupInterpolator.swift +23 -17
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/NodeProperties/ValueProviders/SingleValueProvider.swift +22 -17
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/ModifierNodes/TrimPathNode.swift +110 -79
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/OutputNodes/GroupOutputNode.swift +22 -16
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/OutputNodes/PassThroughOutputNode.swift +19 -15
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/OutputNodes/PathOutputNode.swift +22 -20
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/OutputNodes/Renderables/FillRenderer.swift +22 -23
- package/Sources/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/Renderables/GradientFillRenderer.swift +247 -0
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/OutputNodes/Renderables/GradientStrokeRenderer.swift +30 -24
- package/{lottie-swift/src/Private/NodeRenderSystem/Nodes/OutputNodes/Renderables/GradientFillRenderer.swift → Sources/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/Renderables/LegacyGradientFillRenderer.swift} +93 -66
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/OutputNodes/Renderables/StrokeRenderer.swift +23 -19
- package/Sources/Private/MainThread/NodeRenderSystem/Nodes/PathNodes/EllipseNode.swift +139 -0
- package/Sources/Private/MainThread/NodeRenderSystem/Nodes/PathNodes/PolygonNode.swift +170 -0
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/PathNodes/RectNode.swift +95 -58
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/PathNodes/ShapeNode.swift +42 -29
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/PathNodes/StarNode.swift +108 -69
- package/Sources/Private/MainThread/NodeRenderSystem/Nodes/RenderContainers/GroupNode.swift +155 -0
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/RenderNodes/FillNode.swift +51 -37
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/RenderNodes/GradientFillNode.swift +57 -42
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/RenderNodes/GradientStrokeNode.swift +66 -58
- package/Sources/Private/MainThread/NodeRenderSystem/Nodes/RenderNodes/StrokeNode.swift +169 -0
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/Text/TextAnimatorNode.swift +138 -119
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Protocols/AnimatorNode.swift +80 -79
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Protocols/PathNode.swift +5 -3
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Protocols/RenderNode.swift +22 -17
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/RenderLayers/ShapeContainerLayer.swift +27 -24
- package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/RenderLayers/ShapeRenderLayer.swift +34 -25
- package/Sources/Private/Model/Animation.swift +160 -0
- package/Sources/Private/Model/Assets/Asset.swift +43 -0
- package/{lottie-swift/src → Sources}/Private/Model/Assets/AssetLibrary.swift +40 -13
- package/Sources/Private/Model/Assets/ImageAsset.swift +112 -0
- package/{lottie-swift/src → Sources}/Private/Model/Assets/PrecompAsset.swift +20 -10
- package/Sources/Private/Model/DictionaryInitializable.swift +67 -0
- package/Sources/Private/Model/Extensions/Bundle.swift +34 -0
- package/{lottie-swift/src → Sources}/Private/Model/Extensions/KeyedDecodingContainerExtensions.swift +8 -4
- package/Sources/Private/Model/Keyframes/KeyframeData.swift +113 -0
- package/Sources/Private/Model/Keyframes/KeyframeGroup.swift +222 -0
- package/{lottie-swift/src → Sources}/Private/Model/Layers/ImageLayerModel.swift +21 -11
- package/Sources/Private/Model/Layers/LayerModel.swift +228 -0
- package/{lottie-swift/src → Sources}/Private/Model/Layers/PreCompLayerModel.swift +39 -22
- package/{lottie-swift/src → Sources}/Private/Model/Layers/ShapeLayerModel.swift +23 -12
- package/{lottie-swift/src → Sources}/Private/Model/Layers/SolidLayerModel.swift +31 -19
- package/{lottie-swift/src → Sources}/Private/Model/Layers/TextLayerModel.swift +33 -19
- package/Sources/Private/Model/Objects/DashPattern.swift +44 -0
- package/Sources/Private/Model/Objects/Marker.swift +33 -0
- package/Sources/Private/Model/Objects/Mask.swift +80 -0
- package/Sources/Private/Model/Objects/Transform.swift +179 -0
- package/Sources/Private/Model/ShapeItems/Ellipse.swift +74 -0
- package/Sources/Private/Model/ShapeItems/Fill.swift +74 -0
- package/Sources/Private/Model/ShapeItems/GradientFill.swift +137 -0
- package/Sources/Private/Model/ShapeItems/GradientStroke.swift +185 -0
- package/Sources/Private/Model/ShapeItems/Group.swift +48 -0
- package/{lottie-swift/src → Sources}/Private/Model/ShapeItems/Merge.swift +29 -12
- package/Sources/Private/Model/ShapeItems/Rectangle.swift +72 -0
- package/Sources/Private/Model/ShapeItems/Repeater.swift +135 -0
- package/Sources/Private/Model/ShapeItems/Shape.swift +56 -0
- package/Sources/Private/Model/ShapeItems/ShapeItem.swift +163 -0
- package/Sources/Private/Model/ShapeItems/ShapeTransform.swift +135 -0
- package/Sources/Private/Model/ShapeItems/Star.swift +131 -0
- package/Sources/Private/Model/ShapeItems/Stroke.swift +101 -0
- package/Sources/Private/Model/ShapeItems/Trim.swift +77 -0
- package/Sources/Private/Model/Text/Font.swift +61 -0
- package/{lottie-swift/src → Sources}/Private/Model/Text/Glyph.swift +63 -39
- package/Sources/Private/Model/Text/TextAnimator.swift +164 -0
- package/Sources/Private/Model/Text/TextDocument.swift +123 -0
- package/Sources/Private/RootAnimationLayer.swift +51 -0
- package/{lottie-swift/src → Sources}/Private/Utility/Debugging/AnimatorNodeDebugging.swift +7 -7
- package/{lottie-swift/src → Sources}/Private/Utility/Debugging/LayerDebugging.swift +72 -48
- package/Sources/Private/Utility/Debugging/TestHelpers.swift +10 -0
- package/{lottie-swift/src → Sources}/Private/Utility/Extensions/AnimationKeypathExtension.swift +69 -59
- package/Sources/Private/Utility/Extensions/BlendMode+Filter.swift +31 -0
- package/Sources/Private/Utility/Extensions/CGColor+RGB.swift +22 -0
- package/{lottie-swift/src → Sources}/Private/Utility/Extensions/CGFloatExtensions.swift +70 -67
- package/Sources/Private/Utility/Extensions/DataExtension.swift +27 -0
- package/Sources/Private/Utility/Extensions/MathKit.swift +450 -0
- package/Sources/Private/Utility/Extensions/StringExtensions.swift +38 -0
- package/{lottie-swift/src → Sources}/Private/Utility/Helpers/AnimationContext.swift +42 -16
- package/Sources/Private/Utility/Interpolatable/InterpolatableExtensions.swift +134 -0
- package/{lottie-swift/src → Sources}/Private/Utility/Interpolatable/KeyframeExtensions.swift +13 -10
- package/Sources/Private/Utility/Interpolatable/KeyframeGroup+Extensions.swift +59 -0
- package/{lottie-swift/src/Private/NodeRenderSystem/NodeProperties/ValueProviders → Sources/Private/Utility/Interpolatable}/KeyframeInterpolator.swift +125 -108
- package/{lottie-swift/src → Sources}/Private/Utility/Primitives/BezierPath.swift +229 -143
- package/Sources/Private/Utility/Primitives/CGPointExtension.swift +35 -0
- package/{lottie-swift/src → Sources}/Private/Utility/Primitives/ColorExtension.swift +46 -14
- package/{lottie-swift/src → Sources}/Private/Utility/Primitives/CompoundBezierPath.swift +58 -49
- package/Sources/Private/Utility/Primitives/CurveVertex.swift +184 -0
- package/Sources/Private/Utility/Primitives/PathElement.swift +75 -0
- package/Sources/Private/Utility/Primitives/UnitBezier.swift +115 -0
- package/Sources/Private/Utility/Primitives/VectorsExtensions.swift +341 -0
- package/Sources/Public/Animation/AnimationPublic.swift +266 -0
- package/Sources/Public/Animation/AnimationView.swift +1335 -0
- package/Sources/Public/Animation/AnimationViewInitializers.swift +109 -0
- package/Sources/Public/AnimationCache/AnimationCacheProvider.swift +22 -0
- package/{lottie-swift/src → Sources}/Public/AnimationCache/LRUAnimationCache.swift +22 -18
- package/Sources/Public/DynamicProperties/AnimationKeypath.swift +49 -0
- package/Sources/Public/DynamicProperties/AnyValueProvider.swift +132 -0
- package/{lottie-swift/src → Sources}/Public/DynamicProperties/ValueProviders/ColorValueProvider.swift +54 -36
- package/{lottie-swift/src → Sources}/Public/DynamicProperties/ValueProviders/FloatValueProvider.swift +40 -36
- package/Sources/Public/DynamicProperties/ValueProviders/GradientValueProvider.swift +123 -0
- package/{lottie-swift/src → Sources}/Public/DynamicProperties/ValueProviders/PointValueProvider.swift +40 -35
- package/{lottie-swift/src → Sources}/Public/DynamicProperties/ValueProviders/SizeValueProvider.swift +40 -35
- package/{lottie-swift/src → Sources}/Public/FontProvider/AnimationFontProvider.swift +15 -8
- package/Sources/Public/ImageProvider/AnimationImageProvider.swift +21 -0
- package/Sources/Public/Keyframes/Interpolatable.swift +253 -0
- package/Sources/Public/Keyframes/Keyframe.swift +92 -0
- package/Sources/Public/Logging/LottieLogger.swift +137 -0
- package/Sources/Public/LottieConfiguration.swift +143 -0
- package/{lottie-swift/src → Sources}/Public/Primitives/AnimationTime.swift +1 -1
- package/{lottie-swift/src → Sources}/Public/Primitives/Color.swift +10 -6
- package/{lottie-swift/src → Sources}/Public/Primitives/Vectors.swift +13 -12
- package/Sources/Public/TextProvider/AnimationTextProvider.swift +53 -0
- package/{lottie-swift/src → Sources}/Public/iOS/AnimatedButton.swift +42 -26
- package/{lottie-swift/src → Sources}/Public/iOS/AnimatedControl.swift +100 -91
- package/{lottie-swift/src → Sources}/Public/iOS/AnimatedSwitch.swift +128 -94
- package/{lottie-swift/src → Sources}/Public/iOS/AnimationSubview.swift +3 -3
- package/Sources/Public/iOS/AnimationViewBase.swift +78 -0
- package/{lottie-swift/src → Sources}/Public/iOS/BundleImageProvider.swift +36 -34
- package/{lottie-swift/src → Sources}/Public/iOS/Compatibility/CompatibleAnimationKeypath.swift +4 -0
- package/{lottie-swift/src → Sources}/Public/iOS/Compatibility/CompatibleAnimationView.swift +38 -29
- package/{lottie-swift/src → Sources}/Public/iOS/FilepathImageProvider.swift +24 -21
- package/{lottie-swift/src → Sources}/Public/iOS/UIColorExtension.swift +4 -4
- package/{lottie-swift/src/Public/MacOS/AnimationSubview.swift → Sources/Public/macOS/AnimationSubview.macOS.swift} +4 -5
- package/{lottie-swift/src/Public/MacOS/LottieView.swift → Sources/Public/macOS/AnimationViewBase.macOS.swift} +58 -50
- package/{lottie-swift/src/Public/MacOS/BundleImageProvider.swift → Sources/Public/macOS/BundleImageProvider.macOS.swift} +31 -32
- package/Sources/Public/macOS/FilepathImageProvider.macOS.swift +67 -0
- package/Tests/AnimationKeypathTests.swift +103 -0
- package/Tests/AutomaticEngineTests.swift +57 -0
- package/Tests/BundleTests.swift +25 -0
- package/Tests/DataURLTests.swift +64 -0
- package/Tests/ParsingTests.swift +43 -0
- package/Tests/PerformanceTests.swift +214 -0
- package/Tests/Samples/9squares_AlBoardman.json +1 -0
- package/Tests/Samples/Boat_Loader.json +1 -0
- package/Tests/Samples/HamburgerArrow.json +1 -0
- package/Tests/Samples/IconTransitions.json +1 -0
- package/Tests/Samples/Images/dog.png +0 -0
- package/Tests/Samples/Issues/issue_1125.json +1 -0
- package/Tests/Samples/Issues/issue_1260.json +1 -0
- package/Tests/Samples/Issues/issue_1403.json +1 -0
- package/Tests/Samples/Issues/issue_1407.json +1 -0
- package/Tests/Samples/Issues/issue_1460.json +1 -0
- package/Tests/Samples/Issues/issue_1488.json +1 -0
- package/Tests/Samples/Issues/issue_1505.json +1 -0
- package/Tests/Samples/Issues/issue_1541.json +1 -0
- package/Tests/Samples/Issues/issue_1557.json +1 -0
- package/Tests/Samples/Issues/issue_1603.json +1 -0
- package/Tests/Samples/Issues/issue_1628.json +1 -0
- package/Tests/Samples/Issues/issue_1636.json +1 -0
- package/Tests/Samples/Issues/issue_1643.json +1 -0
- package/Tests/Samples/Issues/issue_1655.json +1 -0
- package/Tests/Samples/Issues/issue_1664.json +1 -0
- package/Tests/Samples/Issues/issue_1683.json +1 -0
- package/Tests/Samples/Issues/issue_1687.json +1 -0
- package/Tests/Samples/Issues/issue_1711.json +1 -0
- package/Tests/Samples/Issues/issue_1717.json +1 -0
- package/Tests/Samples/Issues/issue_769.json +1 -0
- package/Tests/Samples/Issues/issue_885.json +1 -0
- package/Tests/Samples/Issues/issue_965.json +1 -0
- package/Tests/Samples/Issues/pr_1536.json +1 -0
- package/Tests/Samples/Issues/pr_1563.json +8439 -0
- package/Tests/Samples/Issues/pr_1592.json +5527 -0
- package/Tests/Samples/Issues/pr_1599.json +738 -0
- package/Tests/Samples/Issues/pr_1604_1.json +1 -0
- package/Tests/Samples/Issues/pr_1604_2.json +1 -0
- package/Tests/Samples/Issues/pr_1632_1.json +1 -0
- package/Tests/Samples/Issues/pr_1632_2.json +1 -0
- package/Tests/Samples/Issues/pr_1686.json +513 -0
- package/Tests/Samples/Issues/pr_1698.json +1 -0
- package/Tests/Samples/Issues/pr_1699.json +1 -0
- package/Tests/Samples/LottieFiles/LICENSE.md +14 -0
- package/Tests/Samples/LottieFiles/bounce_strokes.json +1 -0
- package/Tests/Samples/LottieFiles/cactus.json +1 -0
- package/Tests/Samples/LottieFiles/dog_car_ride.json +1 -0
- package/Tests/Samples/LottieFiles/draft_icon.json +1 -0
- package/Tests/Samples/LottieFiles/fireworks.json +1 -0
- package/Tests/Samples/LottieFiles/gradient_1.json +1 -0
- package/Tests/Samples/LottieFiles/gradient_2.json +1 -0
- package/Tests/Samples/LottieFiles/gradient_pill.json +1 -0
- package/Tests/Samples/LottieFiles/gradient_shapes.json +1 -0
- package/Tests/Samples/LottieFiles/gradient_square.json +1 -0
- package/Tests/Samples/LottieFiles/growth.json +1 -0
- package/Tests/Samples/LottieFiles/infinity_loader.json +1 -0
- package/Tests/Samples/LottieFiles/loading_dots_1.json +1 -0
- package/Tests/Samples/LottieFiles/loading_dots_2.json +1 -0
- package/Tests/Samples/LottieFiles/loading_dots_3.json +1 -0
- package/Tests/Samples/LottieFiles/loading_gradient_strokes.json +1 -0
- package/Tests/Samples/LottieFiles/settings_slider.json +1 -0
- package/Tests/Samples/LottieFiles/shop.json +1 -0
- package/Tests/Samples/LottieFiles/step_loader.json +1 -0
- package/Tests/Samples/LottieLogo1.json +1 -0
- package/Tests/Samples/LottieLogo1_masked.json +1 -0
- package/Tests/Samples/LottieLogo2.json +1 -0
- package/Tests/Samples/MotionCorpse_Jrcanest.json +1 -0
- package/Tests/Samples/Nonanimating/BasicLayers.json +1 -0
- package/Tests/Samples/Nonanimating/DisableNodesTest.json +1 -0
- package/Tests/Samples/Nonanimating/FirstText.json +1 -0
- package/Tests/Samples/Nonanimating/GeometryTransformTest.json +1 -0
- package/Tests/Samples/Nonanimating/Text_AnimatedProperties.json +1 -0
- package/Tests/Samples/Nonanimating/Text_Glyph.json +1 -0
- package/Tests/Samples/Nonanimating/Text_NoAnimation.json +1 -0
- package/Tests/Samples/Nonanimating/Text_NoGlyph.json +1 -0
- package/Tests/Samples/Nonanimating/Zoom.json +1 -0
- package/Tests/Samples/Nonanimating/_dog.json +1 -0
- package/Tests/Samples/Nonanimating/base64Test.json +1 -0
- package/Tests/Samples/Nonanimating/blend_mode_test.json +1 -0
- package/Tests/Samples/Nonanimating/keypathTest.json +1 -0
- package/Tests/Samples/Nonanimating/verifyLineHeight.json +1 -0
- package/Tests/Samples/PinJump.json +1 -0
- package/Tests/Samples/Switch.json +1 -0
- package/Tests/Samples/Switch_States.json +1 -0
- package/Tests/Samples/TwitterHeart.json +1 -0
- package/Tests/Samples/TwitterHeartButton.json +1 -0
- package/Tests/Samples/TypeFace/A.json +1 -0
- package/Tests/Samples/TypeFace/Apostrophe.json +1 -0
- package/Tests/Samples/TypeFace/B.json +1 -0
- package/Tests/Samples/TypeFace/BlinkingCursor.json +1 -0
- package/Tests/Samples/TypeFace/C.json +1 -0
- package/Tests/Samples/TypeFace/Colon.json +1 -0
- package/Tests/Samples/TypeFace/Comma.json +1 -0
- package/Tests/Samples/TypeFace/D.json +1 -0
- package/Tests/Samples/TypeFace/E.json +1 -0
- package/Tests/Samples/TypeFace/F.json +1 -0
- package/Tests/Samples/TypeFace/G.json +1 -0
- package/Tests/Samples/TypeFace/H.json +1 -0
- package/Tests/Samples/TypeFace/I.json +1 -0
- package/Tests/Samples/TypeFace/J.json +1 -0
- package/Tests/Samples/TypeFace/K.json +1 -0
- package/Tests/Samples/TypeFace/L.json +1 -0
- package/Tests/Samples/TypeFace/M.json +1 -0
- package/Tests/Samples/TypeFace/N.json +1 -0
- package/Tests/Samples/TypeFace/O.json +1 -0
- package/Tests/Samples/TypeFace/P.json +1 -0
- package/Tests/Samples/TypeFace/Q.json +1 -0
- package/Tests/Samples/TypeFace/R.json +1 -0
- package/Tests/Samples/TypeFace/S.json +1 -0
- package/Tests/Samples/TypeFace/T.json +1 -0
- package/Tests/Samples/TypeFace/U.json +1 -0
- package/Tests/Samples/TypeFace/V.json +1 -0
- package/Tests/Samples/TypeFace/W.json +1 -0
- package/Tests/Samples/TypeFace/X.json +1 -0
- package/Tests/Samples/TypeFace/Y.json +1 -0
- package/Tests/Samples/TypeFace/Z.json +1 -0
- package/Tests/Samples/Watermelon.json +1 -0
- package/Tests/Samples/setValueTest.json +1 -0
- package/Tests/Samples/timeremap.json +1 -0
- package/Tests/Samples/vcTransition1.json +1 -0
- package/Tests/Samples/vcTransition2.json +1 -0
- package/Tests/SnapshotConfiguration.swift +158 -0
- package/Tests/SnapshotTests.swift +265 -0
- package/Tests/Utils/Bundle+Module.swift +30 -0
- package/Tests/Utils/HardcodedFontProvider.swift +19 -0
- package/Tests/Utils/HardcodedImageProvider.swift +23 -0
- package/Tests/Utils/Snapshotting+presentationLayer.swift +47 -0
- package/Tests/ValueProvidersTests.swift +27 -0
- package/lottie-ios.podspec +12 -12
- package/package.json +1 -1
- package/script/test-carthage/Cartfile +1 -0
- package/script/test-carthage/Cartfile.resolved +1 -0
- package/script/test-carthage/CarthageTest/AppDelegate.swift +26 -0
- package/script/test-carthage/CarthageTest/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
- package/script/test-carthage/CarthageTest/Assets.xcassets/AppIcon.appiconset/Contents.json +98 -0
- package/script/test-carthage/CarthageTest/Assets.xcassets/Contents.json +6 -0
- package/script/test-carthage/CarthageTest/Base.lproj/LaunchScreen.storyboard +25 -0
- package/script/test-carthage/CarthageTest/Base.lproj/Main.storyboard +24 -0
- package/script/test-carthage/CarthageTest/Info.plist +66 -0
- package/script/test-carthage/CarthageTest/SceneDelegate.swift +10 -0
- package/script/test-carthage/CarthageTest/ViewController.swift +15 -0
- package/script/test-carthage/CarthageTest-macOS/AppDelegate.swift +7 -0
- package/script/test-carthage/CarthageTest-macOS/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
- package/script/test-carthage/CarthageTest-macOS/Assets.xcassets/AppIcon.appiconset/Contents.json +58 -0
- package/script/test-carthage/CarthageTest-macOS/Assets.xcassets/Contents.json +6 -0
- package/script/test-carthage/CarthageTest-macOS/Base.lproj/Main.storyboard +717 -0
- package/script/test-carthage/CarthageTest-macOS/CarthageTest_macOS.entitlements +10 -0
- package/script/test-carthage/CarthageTest-macOS/ViewController.swift +15 -0
- package/script/test-carthage/CarthageTest.xcodeproj/project.pbxproj +532 -0
- package/script/test-carthage/CarthageTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/script/test-carthage/CarthageTest.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/script/test-carthage/CarthageTest.xcodeproj/project.xcworkspace/xcuserdata/cal.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/script/test-carthage/CarthageTest.xcodeproj/project.xcworkspace/xcuserdata/calstephens.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/script/test-carthage/CarthageTest.xcodeproj/xcuserdata/cal.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
- package/script/test-carthage/CarthageTest.xcodeproj/xcuserdata/calstephens.xcuserdatad/xcschemes/xcschememanagement.plist +19 -0
- package/script/test-carthage/Mintfile +1 -0
- package/script/test-spm/LottieSPM.xcworkspace/contents.xcworkspacedata +7 -0
- package/script/test-spm/LottieSPM.xcworkspace/xcuserdata/cal.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/script/test-spm/Mintfile +1 -0
- package/.swiftpm/xcode/package.xcworkspace/xcuserdata/brandonwithrow.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/Lottie/Info.plist +0 -22
- package/Lottie.xcodeproj/project.xcworkspace/xcuserdata/brandonwithrow.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/Lottie.xcodeproj/xcuserdata/brandonwithrow.xcuserdatad/xcschemes/LottieLibraryMacOS.xcscheme +0 -80
- package/Lottie.xcodeproj/xcuserdata/brandonwithrow.xcuserdatad/xcschemes/xcschememanagement.plist +0 -57
- package/lottie-swift/Assets/.gitkeep +0 -0
- package/lottie-swift/src/Private/LayerContainers/Utility/LayerFontProvider.swift +0 -37
- package/lottie-swift/src/Private/LayerContainers/Utility/LayerTextProvider.swift +0 -36
- package/lottie-swift/src/Private/Model/Animation.swift +0 -107
- package/lottie-swift/src/Private/Model/Assets/Asset.swift +0 -27
- package/lottie-swift/src/Private/Model/Assets/ImageAsset.swift +0 -48
- package/lottie-swift/src/Private/Model/Keyframes/Keyframe.swift +0 -128
- package/lottie-swift/src/Private/Model/Keyframes/KeyframeGroup.swift +0 -108
- package/lottie-swift/src/Private/Model/Layers/LayerModel.swift +0 -150
- package/lottie-swift/src/Private/Model/Objects/DashPattern.swift +0 -24
- package/lottie-swift/src/Private/Model/Objects/Marker.swift +0 -23
- package/lottie-swift/src/Private/Model/Objects/Mask.swift +0 -48
- package/lottie-swift/src/Private/Model/Objects/Transform.swift +0 -105
- package/lottie-swift/src/Private/Model/ShapeItems/Ellipse.swift +0 -50
- package/lottie-swift/src/Private/Model/ShapeItems/FillI.swift +0 -49
- package/lottie-swift/src/Private/Model/ShapeItems/GradientFill.swift +0 -86
- package/lottie-swift/src/Private/Model/ShapeItems/GradientStroke.swift +0 -125
- package/lottie-swift/src/Private/Model/ShapeItems/Group.swift +0 -32
- package/lottie-swift/src/Private/Model/ShapeItems/Rectangle.swift +0 -50
- package/lottie-swift/src/Private/Model/ShapeItems/Repeater.swift +0 -80
- package/lottie-swift/src/Private/Model/ShapeItems/Shape.swift +0 -37
- package/lottie-swift/src/Private/Model/ShapeItems/ShapeItem.swift +0 -95
- package/lottie-swift/src/Private/Model/ShapeItems/ShapeTransform.swift +0 -68
- package/lottie-swift/src/Private/Model/ShapeItems/Star.swift +0 -86
- package/lottie-swift/src/Private/Model/ShapeItems/Stroke.swift +0 -67
- package/lottie-swift/src/Private/Model/ShapeItems/Trim.swift +0 -53
- package/lottie-swift/src/Private/Model/Text/Font.swift +0 -35
- package/lottie-swift/src/Private/Model/Text/TextAnimator.swift +0 -99
- package/lottie-swift/src/Private/Model/Text/TextDocument.swift +0 -70
- package/lottie-swift/src/Private/NodeRenderSystem/Nodes/PathNodes/EllipseNode.swift +0 -109
- package/lottie-swift/src/Private/NodeRenderSystem/Nodes/PathNodes/PolygonNode.swift +0 -132
- package/lottie-swift/src/Private/NodeRenderSystem/Nodes/RenderContainers/GroupNode.swift +0 -141
- package/lottie-swift/src/Private/NodeRenderSystem/Nodes/RenderNodes/StrokeNode.swift +0 -127
- package/lottie-swift/src/Private/Utility/Extensions/MathKit.swift +0 -539
- package/lottie-swift/src/Private/Utility/Extensions/StringExtensions.swift +0 -32
- package/lottie-swift/src/Private/Utility/Interpolatable/Interpolatable.swift +0 -18
- package/lottie-swift/src/Private/Utility/Interpolatable/InterpolatableExtensions.swift +0 -170
- package/lottie-swift/src/Private/Utility/Primitives/CurveVertex.swift +0 -177
- package/lottie-swift/src/Private/Utility/Primitives/PathElement.swift +0 -68
- package/lottie-swift/src/Private/Utility/Primitives/VectorsExtensions.swift +0 -218
- package/lottie-swift/src/Public/Animation/AnimationPublic.swift +0 -196
- package/lottie-swift/src/Public/Animation/AnimationView.swift +0 -1006
- package/lottie-swift/src/Public/Animation/AnimationViewInitializers.swift +0 -83
- package/lottie-swift/src/Public/AnimationCache/AnimationCacheProvider.swift +0 -24
- package/lottie-swift/src/Public/DynamicProperties/AnimationKeypath.swift +0 -46
- package/lottie-swift/src/Public/DynamicProperties/AnyValueProvider.swift +0 -29
- package/lottie-swift/src/Public/DynamicProperties/ValueProviders/GradientValueProvider.swift +0 -114
- package/lottie-swift/src/Public/ImageProvider/AnimationImageProvider.swift +0 -23
- package/lottie-swift/src/Public/MacOS/FilepathImageProvider.swift +0 -67
- package/lottie-swift/src/Public/TextProvider/AnimationTextProvider.swift +0 -39
- package/lottie-swift/src/Public/iOS/LottieView.swift +0 -62
- package/lottie-swift-testing.podspec +0 -32
package/Lottie.xcodeproj/xcuserdata/brandonwithrow.xcuserdatad/xcschemes/LottieLibraryMacOS.xcscheme
DELETED
|
@@ -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>
|
package/Lottie.xcodeproj/xcuserdata/brandonwithrow.xcuserdatad/xcschemes/xcschememanagement.plist
DELETED
|
@@ -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
|
-
}
|