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
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// AnimationViewInitializers.swift
|
|
3
|
-
// lottie-swift-iOS
|
|
4
|
-
//
|
|
5
|
-
// Created by Brandon Withrow on 2/6/19.
|
|
6
|
-
//
|
|
7
|
-
|
|
8
|
-
import Foundation
|
|
9
|
-
|
|
10
|
-
public extension AnimationView {
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
Loads a Lottie animation from a JSON file in the supplied bundle.
|
|
14
|
-
|
|
15
|
-
- Parameter name: The string name of the lottie animation with no file
|
|
16
|
-
extension provided.
|
|
17
|
-
- Parameter bundle: The bundle in which the animation is located.
|
|
18
|
-
Defaults to the Main bundle.
|
|
19
|
-
- Parameter imageProvider: An image provider for the animation's image data.
|
|
20
|
-
If none is supplied Lottie will search in the supplied bundle for images.
|
|
21
|
-
*/
|
|
22
|
-
convenience init(name: String,
|
|
23
|
-
bundle: Bundle = Bundle.main,
|
|
24
|
-
imageProvider: AnimationImageProvider? = nil,
|
|
25
|
-
animationCache: AnimationCacheProvider? = LRUAnimationCache.sharedCache) {
|
|
26
|
-
let animation = Animation.named(name, bundle: bundle, subdirectory: nil, animationCache: animationCache)
|
|
27
|
-
let provider = imageProvider ?? BundleImageProvider(bundle: bundle, searchPath: nil)
|
|
28
|
-
self.init(animation: animation, imageProvider: provider)
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
Loads a Lottie animation from a JSON file in a specific path on disk.
|
|
33
|
-
|
|
34
|
-
- Parameter name: The absolute path of the Lottie Animation.
|
|
35
|
-
- Parameter imageProvider: An image provider for the animation's image data.
|
|
36
|
-
If none is supplied Lottie will search in the supplied filepath for images.
|
|
37
|
-
*/
|
|
38
|
-
convenience init(filePath: String,
|
|
39
|
-
imageProvider: AnimationImageProvider? = nil,
|
|
40
|
-
animationCache: AnimationCacheProvider? = LRUAnimationCache.sharedCache) {
|
|
41
|
-
let animation = Animation.filepath(filePath, animationCache: animationCache)
|
|
42
|
-
let provider = imageProvider ?? FilepathImageProvider(filepath: URL(fileURLWithPath: filePath).deletingLastPathComponent().path)
|
|
43
|
-
self.init(animation: animation, imageProvider: provider)
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
Loads a Lottie animation asynchronously from the URL
|
|
48
|
-
|
|
49
|
-
- Parameter url: The url to load the animation from.
|
|
50
|
-
- Parameter imageProvider: An image provider for the animation's image data.
|
|
51
|
-
If none is supplied Lottie will search in the main bundle for images.
|
|
52
|
-
- Parameter closure: A closure to be called when the animation has loaded.
|
|
53
|
-
*/
|
|
54
|
-
convenience init(url: URL,
|
|
55
|
-
imageProvider: AnimationImageProvider? = nil,
|
|
56
|
-
closure: @escaping AnimationView.DownloadClosure,
|
|
57
|
-
animationCache: AnimationCacheProvider? = LRUAnimationCache.sharedCache) {
|
|
58
|
-
|
|
59
|
-
if let animationCache = animationCache, let animation = animationCache.animation(forKey: url.absoluteString) {
|
|
60
|
-
self.init(animation: animation, imageProvider: imageProvider)
|
|
61
|
-
closure(nil)
|
|
62
|
-
} else {
|
|
63
|
-
|
|
64
|
-
self.init(animation: nil, imageProvider: imageProvider)
|
|
65
|
-
|
|
66
|
-
Animation.loadedFrom(url: url, closure: { (animation) in
|
|
67
|
-
if let animation = animation {
|
|
68
|
-
self.animation = animation
|
|
69
|
-
closure(nil)
|
|
70
|
-
} else {
|
|
71
|
-
closure(LottieDownloadError.downloadFailed)
|
|
72
|
-
}
|
|
73
|
-
}, animationCache: animationCache)
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
typealias DownloadClosure = (Error?) -> Void
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
enum LottieDownloadError: Error {
|
|
82
|
-
case downloadFailed
|
|
83
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// AnimationCacheProvider.swift
|
|
3
|
-
// lottie-swift
|
|
4
|
-
//
|
|
5
|
-
// Created by Brandon Withrow on 2/5/19.
|
|
6
|
-
//
|
|
7
|
-
|
|
8
|
-
import Foundation
|
|
9
|
-
/**
|
|
10
|
-
`AnimationCacheProvider` is a protocol that describes an Animation Cache.
|
|
11
|
-
Animation Cache is used when loading `Animation` models. Using an Animation Cache
|
|
12
|
-
can increase performance when loading an animation multiple times.
|
|
13
|
-
|
|
14
|
-
Lottie comes with a prebuilt LRU Animation Cache.
|
|
15
|
-
*/
|
|
16
|
-
public protocol AnimationCacheProvider {
|
|
17
|
-
|
|
18
|
-
func animation(forKey: String) -> Animation?
|
|
19
|
-
|
|
20
|
-
func setAnimation(_ animation: Animation, forKey: String)
|
|
21
|
-
|
|
22
|
-
func clearCache()
|
|
23
|
-
|
|
24
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// AnimationKeypath.swift
|
|
3
|
-
// lottie-swift
|
|
4
|
-
//
|
|
5
|
-
// Created by Brandon Withrow on 2/4/19.
|
|
6
|
-
//
|
|
7
|
-
|
|
8
|
-
import Foundation
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
`AnimationKeypath` is an object that describes a keypath search for nodes in the
|
|
12
|
-
animation JSON. `AnimationKeypath` matches views and properties inside of `AnimationView`
|
|
13
|
-
to their backing `Animation` model by name.
|
|
14
|
-
|
|
15
|
-
A keypath can be used to set properties on an existing animation, or can be validated
|
|
16
|
-
with an existing `Animation`.
|
|
17
|
-
|
|
18
|
-
`AnimationKeypath` can describe a specific object, or can use wildcards for fuzzy matching
|
|
19
|
-
of objects. Acceptable wildcards are either "*" (star) or "**" (double star).
|
|
20
|
-
Single star will search a single depth for the next object.
|
|
21
|
-
Double star will search any depth.
|
|
22
|
-
|
|
23
|
-
Read More at https://airbnb.io/lottie/#/ios?id=dynamic-animation-properties
|
|
24
|
-
|
|
25
|
-
EG:
|
|
26
|
-
@"Layer.Shape Group.Stroke 1.Color"
|
|
27
|
-
Represents a specific color node on a specific stroke.
|
|
28
|
-
|
|
29
|
-
@"**.Stroke 1.Color"
|
|
30
|
-
Represents the color node for every Stroke named "Stroke 1" in the animation.
|
|
31
|
-
*/
|
|
32
|
-
public struct AnimationKeypath {
|
|
33
|
-
|
|
34
|
-
/// Creates a keypath from a dot separated string. The string is separated by "."
|
|
35
|
-
public init(keypath: String) {
|
|
36
|
-
self.keys = keypath.components(separatedBy: ".")
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/// Creates a keypath from a list of strings.
|
|
40
|
-
public init(keys: [String]) {
|
|
41
|
-
self.keys = keys
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
let keys: [String]
|
|
45
|
-
|
|
46
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// AnyValueProvider.swift
|
|
3
|
-
// lottie-swift
|
|
4
|
-
//
|
|
5
|
-
// Created by Brandon Withrow on 1/30/19.
|
|
6
|
-
//
|
|
7
|
-
|
|
8
|
-
import Foundation
|
|
9
|
-
import CoreGraphics
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
`AnyValueProvider` is a protocol that return animation data for a property at a
|
|
13
|
-
given time. Every fame an `AnimationView` queries all of its properties and asks
|
|
14
|
-
if their ValueProvider has an update. If it does the AnimationView will read the
|
|
15
|
-
property and update that portion of the animation.
|
|
16
|
-
|
|
17
|
-
Value Providers can be used to dynamically set animation properties at run time.
|
|
18
|
-
*/
|
|
19
|
-
public protocol AnyValueProvider {
|
|
20
|
-
|
|
21
|
-
/// The Type of the value provider
|
|
22
|
-
var valueType: Any.Type { get }
|
|
23
|
-
|
|
24
|
-
/// Asks the provider if it has an update for the given frame.
|
|
25
|
-
func hasUpdate(frame: AnimationFrameTime) -> Bool
|
|
26
|
-
|
|
27
|
-
/// Asks the provider to update the container with its value for the frame.
|
|
28
|
-
func value(frame: AnimationFrameTime) -> Any
|
|
29
|
-
}
|
package/lottie-swift/src/Public/DynamicProperties/ValueProviders/GradientValueProvider.swift
DELETED
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// GradientValueProvider.swift
|
|
3
|
-
// lottie-swift
|
|
4
|
-
//
|
|
5
|
-
// Created by Enrique Bermúdez on 10/27/19.
|
|
6
|
-
//
|
|
7
|
-
|
|
8
|
-
import Foundation
|
|
9
|
-
import CoreGraphics
|
|
10
|
-
|
|
11
|
-
/// A `ValueProvider` that returns a Gradient Color Value.
|
|
12
|
-
public final class GradientValueProvider: AnyValueProvider {
|
|
13
|
-
|
|
14
|
-
/// Returns a [Color] for a CGFloat(Frame Time).
|
|
15
|
-
public typealias ColorsValueBlock = (CGFloat) -> [Color]
|
|
16
|
-
/// Returns a [Double](Color locations) for a CGFloat(Frame Time).
|
|
17
|
-
public typealias ColorLocationsBlock = (CGFloat) -> [Double]
|
|
18
|
-
|
|
19
|
-
/// The colors values of the provider.
|
|
20
|
-
public var colors: [Color] {
|
|
21
|
-
didSet {
|
|
22
|
-
updateValueArray()
|
|
23
|
-
hasUpdate = true
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/// The color location values of the provider.
|
|
28
|
-
public var locations: [Double] {
|
|
29
|
-
didSet {
|
|
30
|
-
updateValueArray()
|
|
31
|
-
hasUpdate = true
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/// Initializes with a block provider.
|
|
36
|
-
public init(block: @escaping ColorsValueBlock,
|
|
37
|
-
locations: ColorLocationsBlock? = nil) {
|
|
38
|
-
self.block = block
|
|
39
|
-
self.locationsBlock = locations
|
|
40
|
-
self.colors = []
|
|
41
|
-
self.locations = []
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/// Initializes with an array of colors.
|
|
45
|
-
public init(_ colors: [Color],
|
|
46
|
-
locations: [Double] = []) {
|
|
47
|
-
self.colors = colors
|
|
48
|
-
self.locations = locations
|
|
49
|
-
updateValueArray()
|
|
50
|
-
hasUpdate = true
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
// MARK: ValueProvider Protocol
|
|
54
|
-
|
|
55
|
-
public var valueType: Any.Type {
|
|
56
|
-
return [Double].self
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
public func hasUpdate(frame: CGFloat) -> Bool {
|
|
60
|
-
if block != nil || locationsBlock != nil {
|
|
61
|
-
return true
|
|
62
|
-
}
|
|
63
|
-
return hasUpdate
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
public func value(frame: CGFloat) -> Any {
|
|
67
|
-
hasUpdate = false
|
|
68
|
-
|
|
69
|
-
if let block = block {
|
|
70
|
-
let newColors = block(frame)
|
|
71
|
-
let newLocations = locationsBlock?(frame) ?? []
|
|
72
|
-
value = value(from: newColors, locations: newLocations)
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
return value
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// MARK: Private
|
|
79
|
-
|
|
80
|
-
private func value(from colors: [Color], locations: [Double]) -> [Double] {
|
|
81
|
-
|
|
82
|
-
var colorValues = [Double]()
|
|
83
|
-
var alphaValues = [Double]()
|
|
84
|
-
var shouldAddAlphaValues = false
|
|
85
|
-
|
|
86
|
-
for i in 0..<colors.count {
|
|
87
|
-
|
|
88
|
-
if colors[i].a < 1 { shouldAddAlphaValues = true }
|
|
89
|
-
|
|
90
|
-
let location = locations.count > i ? locations[i] :
|
|
91
|
-
(Double(i) / Double(colors.count - 1))
|
|
92
|
-
|
|
93
|
-
colorValues.append(location)
|
|
94
|
-
colorValues.append(colors[i].r)
|
|
95
|
-
colorValues.append(colors[i].g)
|
|
96
|
-
colorValues.append(colors[i].b)
|
|
97
|
-
|
|
98
|
-
alphaValues.append(location)
|
|
99
|
-
alphaValues.append(colors[i].a)
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
return colorValues + (shouldAddAlphaValues ? alphaValues : [])
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
private func updateValueArray() {
|
|
106
|
-
value = value(from: colors, locations: locations)
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
private var hasUpdate: Bool = true
|
|
110
|
-
|
|
111
|
-
private var block: ColorsValueBlock?
|
|
112
|
-
private var locationsBlock: ColorLocationsBlock?
|
|
113
|
-
private var value: [Double] = []
|
|
114
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// LottieImageProvider.swift
|
|
3
|
-
// lottie-swift
|
|
4
|
-
//
|
|
5
|
-
// Created by Brandon Withrow on 1/25/19.
|
|
6
|
-
//
|
|
7
|
-
|
|
8
|
-
import Foundation
|
|
9
|
-
import CoreGraphics
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
Image provider is a protocol that is used to supply images to `AnimationView`.
|
|
13
|
-
|
|
14
|
-
Some animations require a reference to an image. The image provider loads and
|
|
15
|
-
provides those images to the `AnimationView`. Lottie includes a couple of
|
|
16
|
-
prebuilt Image Providers that supply images from a Bundle, or from a FilePath.
|
|
17
|
-
|
|
18
|
-
Additionally custom Image Providers can be made to load images from a URL,
|
|
19
|
-
or to Cache images.
|
|
20
|
-
*/
|
|
21
|
-
public protocol AnimationImageProvider {
|
|
22
|
-
func imageForAsset(asset: ImageAsset) -> CGImage?
|
|
23
|
-
}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// FilepathImageProvider.swift
|
|
3
|
-
// lottie-swift
|
|
4
|
-
//
|
|
5
|
-
// Created by Brandon Withrow on 2/1/19.
|
|
6
|
-
//
|
|
7
|
-
|
|
8
|
-
import Foundation
|
|
9
|
-
#if os(OSX)
|
|
10
|
-
import AppKit
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
An `AnimationImageProvider` that provides images by name from a specific filepath.
|
|
14
|
-
*/
|
|
15
|
-
public class FilepathImageProvider: AnimationImageProvider {
|
|
16
|
-
|
|
17
|
-
let filepath: URL
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
Initializes an image provider with a specific filepath.
|
|
21
|
-
|
|
22
|
-
- Parameter filepath: The absolute filepath containing the images.
|
|
23
|
-
|
|
24
|
-
*/
|
|
25
|
-
public init(filepath: String) {
|
|
26
|
-
self.filepath = URL(fileURLWithPath: filepath)
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
public init(filepath: URL) {
|
|
30
|
-
self.filepath = filepath
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
public func imageForAsset(asset: ImageAsset) -> CGImage? {
|
|
34
|
-
|
|
35
|
-
if asset.name.hasPrefix("data:"),
|
|
36
|
-
let url = URL(string: asset.name),
|
|
37
|
-
let data = try? Data(contentsOf: url),
|
|
38
|
-
let image = NSImage(data: data) {
|
|
39
|
-
return image.CGImage
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
let directPath = filepath.appendingPathComponent(asset.name).path
|
|
43
|
-
if FileManager.default.fileExists(atPath: directPath) {
|
|
44
|
-
|
|
45
|
-
return NSImage(contentsOfFile: directPath)?.CGImage
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
let pathWithDirectory = filepath.appendingPathComponent(asset.directory).appendingPathComponent(asset.name).path
|
|
49
|
-
if FileManager.default.fileExists(atPath: pathWithDirectory) {
|
|
50
|
-
return NSImage(contentsOfFile: pathWithDirectory)?.CGImage
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return nil
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
extension NSImage {
|
|
59
|
-
@objc var CGImage: CGImage? {
|
|
60
|
-
get {
|
|
61
|
-
guard let imageData = self.tiffRepresentation else { return nil }
|
|
62
|
-
guard let sourceData = CGImageSourceCreateWithData(imageData as CFData, nil) else { return nil }
|
|
63
|
-
return CGImageSourceCreateImageAtIndex(sourceData, 0, nil)
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
#endif
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// AnimationImageProvider.swift
|
|
3
|
-
// Lottie_iOS
|
|
4
|
-
//
|
|
5
|
-
// Created by Alexandr Goncharov on 07/06/2019.
|
|
6
|
-
//
|
|
7
|
-
|
|
8
|
-
import Foundation
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
Text provider is a protocol that is used to supply text to `AnimationView`.
|
|
12
|
-
*/
|
|
13
|
-
public protocol AnimationTextProvider: AnyObject {
|
|
14
|
-
func textFor(keypathName: String, sourceText: String) -> String
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/// Text provider that simply map values from dictionary
|
|
18
|
-
public final class DictionaryTextProvider: AnimationTextProvider {
|
|
19
|
-
|
|
20
|
-
public init(_ values: [String: String]) {
|
|
21
|
-
self.values = values
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
let values: [String: String]
|
|
25
|
-
|
|
26
|
-
public func textFor(keypathName: String, sourceText: String) -> String {
|
|
27
|
-
return values[keypathName] ?? sourceText
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/// Default text provider. Uses text in the animation file
|
|
32
|
-
public final class DefaultTextProvider: AnimationTextProvider {
|
|
33
|
-
public func textFor(keypathName: String, sourceText: String) -> String {
|
|
34
|
-
return sourceText
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
public init() {}
|
|
38
|
-
}
|
|
39
|
-
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// LottieView.swift
|
|
3
|
-
// lottie-swift-iOS
|
|
4
|
-
//
|
|
5
|
-
// Created by Brandon Withrow on 2/6/19.
|
|
6
|
-
//
|
|
7
|
-
|
|
8
|
-
import Foundation
|
|
9
|
-
#if os(iOS) || os(tvOS) || os(watchOS) || targetEnvironment(macCatalyst)
|
|
10
|
-
import UIKit
|
|
11
|
-
|
|
12
|
-
//public typealias LottieView = UIView
|
|
13
|
-
|
|
14
|
-
open class LottieView: UIView {
|
|
15
|
-
|
|
16
|
-
var viewLayer: CALayer? {
|
|
17
|
-
return layer
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
func layoutAnimation() {
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
func animationMovedToWindow() {
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
open override func didMoveToWindow() {
|
|
29
|
-
super.didMoveToWindow()
|
|
30
|
-
animationMovedToWindow()
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
var screenScale: CGFloat {
|
|
34
|
-
return UIScreen.main.scale
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
func commonInit() {
|
|
38
|
-
contentMode = .scaleAspectFit
|
|
39
|
-
clipsToBounds = true
|
|
40
|
-
NotificationCenter.default.addObserver(self, selector: #selector(animationWillEnterForeground), name: UIApplication.willEnterForegroundNotification, object: nil)
|
|
41
|
-
NotificationCenter.default.addObserver(self, selector: #selector(animationWillMoveToBackground), name: UIApplication.didEnterBackgroundNotification, object: nil)
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
open override var contentMode: UIView.ContentMode {
|
|
45
|
-
didSet {
|
|
46
|
-
setNeedsLayout()
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
open override func layoutSubviews() {
|
|
51
|
-
super.layoutSubviews()
|
|
52
|
-
self.layoutAnimation()
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
@objc func animationWillMoveToBackground() {
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
@objc func animationWillEnterForeground() {
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
#endif
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# This podspec is used for local developing of Lottie only. It is not to be published.
|
|
3
|
-
|
|
4
|
-
Pod::Spec.new do |s|
|
|
5
|
-
s.name = 'lottie-swift-testing'
|
|
6
|
-
s.version = '0.1.0'
|
|
7
|
-
s.summary = 'Podspec used for testing new versions of lottie against the current published base.'
|
|
8
|
-
|
|
9
|
-
s.description = 'Podspec used for testing new versions of lottie against the current published base.'
|
|
10
|
-
|
|
11
|
-
s.homepage = 'https://github.com/buba447/lottie-swift'
|
|
12
|
-
s.license = { :type => 'Apache', :file => 'LICENSE' }
|
|
13
|
-
s.author = { 'Brandon Withrow' => 'buba447@gmail.com' }
|
|
14
|
-
s.source = { :git => 'https://github.com/airbnb/lottie-ios.git', :branch => 'master' }
|
|
15
|
-
|
|
16
|
-
s.swift_version = '5.0'
|
|
17
|
-
s.ios.deployment_target = '9.0'
|
|
18
|
-
s.osx.deployment_target = '10.10'
|
|
19
|
-
s.tvos.deployment_target = '9.0'
|
|
20
|
-
|
|
21
|
-
s.source_files = 'lottie-swift/src/**/*'
|
|
22
|
-
s.ios.source_files = 'lottie-swift/iOS/*.swift'
|
|
23
|
-
s.ios.exclude_files = 'lottie-swift/src/Public/MacOS/**/*'
|
|
24
|
-
s.tvos.exclude_files = 'lottie-swift/src/Public/MacOS/**/*'
|
|
25
|
-
s.osx.exclude_files = 'lottie-swift/src/Public/iOS/**/*'
|
|
26
|
-
|
|
27
|
-
s.ios.frameworks = ['UIKit', 'CoreGraphics', 'QuartzCore']
|
|
28
|
-
s.tvos.frameworks = ['UIKit', 'CoreGraphics', 'QuartzCore']
|
|
29
|
-
s.osx.frameworks = ['AppKit', 'CoreGraphics', 'QuartzCore']
|
|
30
|
-
s.module_name = 'LottieNew'
|
|
31
|
-
s.header_dir = 'LottieNew'
|
|
32
|
-
end
|