lottie-ios 3.4.1 → 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/workflows/stale_issues.yml +17 -0
- package/.swiftpm/xcode/package.xcworkspace/xcuserdata/calstephens.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/Lottie.xcodeproj/project.pbxproj +24 -16
- package/Lottie.xcodeproj/xcshareddata/xcschemes/Lottie (macOS).xcscheme +2 -2
- package/Lottie.xcworkspace/xcshareddata/swiftpm/Package.resolved +0 -81
- package/Lottie.xcworkspace/xcuserdata/calstephens.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/Lottie.xcworkspace/xcuserdata/calstephens.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +0 -17
- package/Lottie.xcworkspace/xcuserdata/calstephens.xcuserdatad/xcdebugger/Expressions.xcexplist +114 -1
- package/Package.swift +1 -6
- package/Rakefile +41 -2
- package/Sources/Private/CoreAnimation/Animations/CALayer+addAnimation.swift +1 -2
- package/Sources/Private/CoreAnimation/Animations/CombinedShapeAnimation.swift +28 -0
- package/Sources/Private/CoreAnimation/Animations/EllipseAnimation.swift +31 -4
- package/Sources/Private/CoreAnimation/Animations/GradientAnimations.swift +2 -2
- package/Sources/Private/CoreAnimation/Animations/RectangleAnimation.swift +34 -7
- package/Sources/Private/CoreAnimation/Animations/ShapeAnimation.swift +25 -14
- package/Sources/Private/CoreAnimation/Animations/StarAnimation.swift +61 -32
- package/Sources/Private/CoreAnimation/Animations/StrokeAnimation.swift +4 -1
- package/Sources/Private/CoreAnimation/CoreAnimationLayer.swift +6 -1
- package/Sources/Private/CoreAnimation/Extensions/KeyframeGroup+exactlyOneKeyframe.swift +2 -2
- package/Sources/Private/CoreAnimation/Extensions/Keyframes+combinedIfPossible.swift +107 -26
- package/Sources/Private/CoreAnimation/Layers/BaseCompositionLayer.swift +2 -1
- package/Sources/Private/CoreAnimation/Layers/CALayer+setupLayerHierarchy.swift +48 -12
- package/Sources/Private/CoreAnimation/Layers/GradientRenderLayer.swift +1 -1
- package/Sources/Private/CoreAnimation/Layers/LayerModel+makeAnimationLayer.swift +4 -0
- package/Sources/Private/CoreAnimation/Layers/MaskCompositionLayer.swift +1 -1
- package/Sources/Private/CoreAnimation/Layers/RepeaterLayer.swift +85 -0
- package/Sources/Private/CoreAnimation/Layers/ShapeItemLayer.swift +17 -4
- package/Sources/Private/CoreAnimation/Layers/ShapeLayer.swift +124 -53
- package/Sources/Private/CoreAnimation/Layers/TextLayer.swift +1 -1
- package/Sources/Private/MainThread/LayerContainers/CompLayers/CompositionLayer.swift +1 -1
- package/Sources/Private/MainThread/LayerContainers/Utility/CoreTextRenderLayer.swift +29 -0
- package/Sources/Private/MainThread/LayerContainers/Utility/InvertedMatteLayer.swift +1 -0
- package/Sources/Private/MainThread/NodeRenderSystem/Extensions/ItemsExtension.swift +5 -0
- package/Sources/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/Renderables/GradientFillRenderer.swift +5 -0
- package/Sources/Private/MainThread/NodeRenderSystem/Nodes/RenderNodes/GradientFillNode.swift +3 -0
- package/Sources/Private/MainThread/NodeRenderSystem/Nodes/RenderNodes/GradientStrokeNode.swift +1 -1
- package/Sources/Private/MainThread/NodeRenderSystem/Nodes/RenderNodes/StrokeNode.swift +17 -1
- package/Sources/Private/Model/Animation.swift +4 -4
- package/Sources/Private/Model/Keyframes/KeyframeGroup.swift +25 -0
- package/Sources/Private/Model/ShapeItems/Ellipse.swift +0 -1
- package/Sources/Private/Model/ShapeItems/Fill.swift +1 -1
- package/Sources/Private/Model/ShapeItems/GradientFill.swift +14 -1
- package/Sources/Private/Model/ShapeItems/GradientStroke.swift +0 -1
- package/Sources/Private/Model/ShapeItems/Merge.swift +0 -1
- package/Sources/Private/Model/ShapeItems/Rectangle.swift +0 -1
- package/Sources/Private/Model/ShapeItems/Repeater.swift +0 -1
- package/Sources/Private/Model/ShapeItems/ShapeTransform.swift +0 -1
- package/Sources/Private/Model/ShapeItems/Star.swift +0 -1
- package/Sources/Private/Model/ShapeItems/Stroke.swift +0 -1
- package/Sources/Private/Model/ShapeItems/Trim.swift +0 -1
- package/Sources/Private/{MainThread/NodeRenderSystem/NodeProperties/ValueProviders → Utility/Interpolatable}/KeyframeInterpolator.swift +0 -0
- package/Sources/Public/Animation/AnimationView.swift +1 -1
- package/Sources/Public/iOS/BundleImageProvider.swift +2 -2
- package/Sources/Public/iOS/FilepathImageProvider.swift +1 -1
- package/Sources/Public/macOS/BundleImageProvider.macOS.swift +1 -1
- package/Sources/Public/macOS/FilepathImageProvider.macOS.swift +1 -1
- package/Tests/AnimationKeypathTests.swift +10 -1
- package/Tests/PerformanceTests.swift +19 -20
- 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 +5 -0
- package/lottie-ios.podspec +2 -1
- package/package.json +1 -1
- package/.swift-version +0 -1
- package/Package.resolved +0 -88
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
name: 'Close stale issues'
|
|
2
|
+
on:
|
|
3
|
+
schedule:
|
|
4
|
+
- cron: '30 1 * * *'
|
|
5
|
+
|
|
6
|
+
jobs:
|
|
7
|
+
stale:
|
|
8
|
+
runs-on: ubuntu-latest
|
|
9
|
+
steps:
|
|
10
|
+
- uses: actions/stale@v5
|
|
11
|
+
with:
|
|
12
|
+
only-labels: >
|
|
13
|
+
can't reproduce
|
|
14
|
+
stale-issue-message: >
|
|
15
|
+
This issue is stale because it is marked "can't reproduce" and has had no activity in the past week. Please comment with additional information, or this issue will be closed due to inactivity in one week.
|
|
16
|
+
days-before-stale: 7
|
|
17
|
+
days-before-close: 7
|
|
Binary file
|
|
@@ -7,6 +7,14 @@
|
|
|
7
7
|
objects = {
|
|
8
8
|
|
|
9
9
|
/* Begin PBXBuildFile section */
|
|
10
|
+
08EF21DC289C643B0097EA47 /* KeyframeInterpolator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08EF21DB289C643B0097EA47 /* KeyframeInterpolator.swift */; };
|
|
11
|
+
08EF21DD289C643B0097EA47 /* KeyframeInterpolator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08EF21DB289C643B0097EA47 /* KeyframeInterpolator.swift */; };
|
|
12
|
+
08EF21DE289C643B0097EA47 /* KeyframeInterpolator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08EF21DB289C643B0097EA47 /* KeyframeInterpolator.swift */; };
|
|
13
|
+
08F8B20D2898A7B100CB5323 /* RepeaterLayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08F8B20C2898A7B100CB5323 /* RepeaterLayer.swift */; };
|
|
14
|
+
08F8B20E2898A7B100CB5323 /* RepeaterLayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08F8B20C2898A7B100CB5323 /* RepeaterLayer.swift */; };
|
|
15
|
+
08F8B20F2898A7B100CB5323 /* RepeaterLayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08F8B20C2898A7B100CB5323 /* RepeaterLayer.swift */; };
|
|
16
|
+
08F8B211289990B700CB5323 /* Samples in Resources */ = {isa = PBXBuildFile; fileRef = 08F8B210289990B700CB5323 /* Samples */; };
|
|
17
|
+
08F8B213289990CB00CB5323 /* SnapshotTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08F8B212289990CB00CB5323 /* SnapshotTests.swift */; };
|
|
10
18
|
19465F52282F998B00BB2C97 /* CachedImageProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19465F51282F998B00BB2C97 /* CachedImageProvider.swift */; };
|
|
11
19
|
19465F53282F998B00BB2C97 /* CachedImageProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19465F51282F998B00BB2C97 /* CachedImageProvider.swift */; };
|
|
12
20
|
19465F54282F998B00BB2C97 /* CachedImageProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19465F51282F998B00BB2C97 /* CachedImageProvider.swift */; };
|
|
@@ -20,10 +28,8 @@
|
|
|
20
28
|
2E8040B027A072B8006E74CB /* Lottie.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2E80409A27A0725D006E74CB /* Lottie.framework */; };
|
|
21
29
|
2E8044AD27A07347006E74CB /* HardcodedImageProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E8040BE27A07343006E74CB /* HardcodedImageProvider.swift */; };
|
|
22
30
|
2E8044AE27A07347006E74CB /* Snapshotting+presentationLayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E8040BF27A07343006E74CB /* Snapshotting+presentationLayer.swift */; };
|
|
23
|
-
2E80450C27A07347006E74CB /* SnapshotTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E80412427A07343006E74CB /* SnapshotTests.swift */; };
|
|
24
31
|
2E80450D27A07347006E74CB /* SnapshotConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E80412527A07343006E74CB /* SnapshotConfiguration.swift */; };
|
|
25
32
|
2E80489427A07377006E74CB /* __Snapshots__ in Resources */ = {isa = PBXBuildFile; fileRef = 2E80489227A07377006E74CB /* __Snapshots__ */; };
|
|
26
|
-
2E80489527A07377006E74CB /* Samples in Resources */ = {isa = PBXBuildFile; fileRef = 2E80489327A07377006E74CB /* Samples */; };
|
|
27
33
|
2E804A1A27A0740F006E74CB /* SnapshotTesting in Frameworks */ = {isa = PBXBuildFile; productRef = 2E804A1927A0740F006E74CB /* SnapshotTesting */; };
|
|
28
34
|
2E9C95D32822F43100677516 /* Fill.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E9C95252822F43000677516 /* Fill.swift */; };
|
|
29
35
|
2E9C95D42822F43100677516 /* Fill.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E9C95252822F43000677516 /* Fill.swift */; };
|
|
@@ -262,9 +268,6 @@
|
|
|
262
268
|
2E9C96BD2822F43100677516 /* AnyValueContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E9C95882822F43000677516 /* AnyValueContainer.swift */; };
|
|
263
269
|
2E9C96BE2822F43100677516 /* AnyValueContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E9C95882822F43000677516 /* AnyValueContainer.swift */; };
|
|
264
270
|
2E9C96BF2822F43100677516 /* AnyValueContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E9C95882822F43000677516 /* AnyValueContainer.swift */; };
|
|
265
|
-
2E9C96C02822F43100677516 /* KeyframeInterpolator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E9C958A2822F43000677516 /* KeyframeInterpolator.swift */; };
|
|
266
|
-
2E9C96C12822F43100677516 /* KeyframeInterpolator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E9C958A2822F43000677516 /* KeyframeInterpolator.swift */; };
|
|
267
|
-
2E9C96C22822F43100677516 /* KeyframeInterpolator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E9C958A2822F43000677516 /* KeyframeInterpolator.swift */; };
|
|
268
271
|
2E9C96C32822F43100677516 /* SingleValueProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E9C958B2822F43000677516 /* SingleValueProvider.swift */; };
|
|
269
272
|
2E9C96C42822F43100677516 /* SingleValueProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E9C958B2822F43000677516 /* SingleValueProvider.swift */; };
|
|
270
273
|
2E9C96C52822F43100677516 /* SingleValueProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E9C958B2822F43000677516 /* SingleValueProvider.swift */; };
|
|
@@ -587,6 +590,10 @@
|
|
|
587
590
|
/* End PBXContainerItemProxy section */
|
|
588
591
|
|
|
589
592
|
/* Begin PBXFileReference section */
|
|
593
|
+
08EF21DB289C643B0097EA47 /* KeyframeInterpolator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyframeInterpolator.swift; sourceTree = "<group>"; };
|
|
594
|
+
08F8B20C2898A7B100CB5323 /* RepeaterLayer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RepeaterLayer.swift; sourceTree = "<group>"; };
|
|
595
|
+
08F8B210289990B700CB5323 /* Samples */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Samples; sourceTree = "<group>"; };
|
|
596
|
+
08F8B212289990CB00CB5323 /* SnapshotTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SnapshotTests.swift; sourceTree = "<group>"; };
|
|
590
597
|
19465F51282F998B00BB2C97 /* CachedImageProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CachedImageProvider.swift; sourceTree = "<group>"; };
|
|
591
598
|
2E044E262820536800FA773B /* AutomaticEngineTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutomaticEngineTests.swift; sourceTree = "<group>"; };
|
|
592
599
|
2E09FA0527B6CEB600BA84E5 /* HardcodedFontProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HardcodedFontProvider.swift; sourceTree = "<group>"; };
|
|
@@ -597,10 +604,8 @@
|
|
|
597
604
|
2E8040AC27A072B8006E74CB /* LottieTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LottieTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
598
605
|
2E8040BE27A07343006E74CB /* HardcodedImageProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HardcodedImageProvider.swift; sourceTree = "<group>"; };
|
|
599
606
|
2E8040BF27A07343006E74CB /* Snapshotting+presentationLayer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Snapshotting+presentationLayer.swift"; sourceTree = "<group>"; };
|
|
600
|
-
2E80412427A07343006E74CB /* SnapshotTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SnapshotTests.swift; sourceTree = "<group>"; };
|
|
601
607
|
2E80412527A07343006E74CB /* SnapshotConfiguration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SnapshotConfiguration.swift; sourceTree = "<group>"; };
|
|
602
608
|
2E80489227A07377006E74CB /* __Snapshots__ */ = {isa = PBXFileReference; lastKnownFileType = folder; path = __Snapshots__; sourceTree = "<group>"; };
|
|
603
|
-
2E80489327A07377006E74CB /* Samples */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Samples; sourceTree = "<group>"; };
|
|
604
609
|
2E9C95252822F43000677516 /* Fill.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Fill.swift; sourceTree = "<group>"; };
|
|
605
610
|
2E9C95262822F43000677516 /* Ellipse.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Ellipse.swift; sourceTree = "<group>"; };
|
|
606
611
|
2E9C95272822F43000677516 /* Trim.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Trim.swift; sourceTree = "<group>"; };
|
|
@@ -680,7 +685,6 @@
|
|
|
680
685
|
2E9C95862822F43000677516 /* NodePropertyMap.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NodePropertyMap.swift; sourceTree = "<group>"; };
|
|
681
686
|
2E9C95872822F43000677516 /* KeypathSearchable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeypathSearchable.swift; sourceTree = "<group>"; };
|
|
682
687
|
2E9C95882822F43000677516 /* AnyValueContainer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnyValueContainer.swift; sourceTree = "<group>"; };
|
|
683
|
-
2E9C958A2822F43000677516 /* KeyframeInterpolator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyframeInterpolator.swift; sourceTree = "<group>"; };
|
|
684
688
|
2E9C958B2822F43000677516 /* SingleValueProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SingleValueProvider.swift; sourceTree = "<group>"; };
|
|
685
689
|
2E9C958C2822F43000677516 /* GroupInterpolator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GroupInterpolator.swift; sourceTree = "<group>"; };
|
|
686
690
|
2E9C958E2822F43000677516 /* ItemsExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemsExtension.swift; sourceTree = "<group>"; };
|
|
@@ -849,9 +853,9 @@
|
|
|
849
853
|
2E8040BA27A07343006E74CB /* Tests */ = {
|
|
850
854
|
isa = PBXGroup;
|
|
851
855
|
children = (
|
|
856
|
+
08F8B210289990B700CB5323 /* Samples */,
|
|
852
857
|
2E80489227A07377006E74CB /* __Snapshots__ */,
|
|
853
|
-
|
|
854
|
-
2E80412427A07343006E74CB /* SnapshotTests.swift */,
|
|
858
|
+
08F8B212289990CB00CB5323 /* SnapshotTests.swift */,
|
|
855
859
|
2E80412527A07343006E74CB /* SnapshotConfiguration.swift */,
|
|
856
860
|
2E72128227BB329C0027BC56 /* AnimationKeypathTests.swift */,
|
|
857
861
|
2E72128427BB32DB0027BC56 /* PerformanceTests.swift */,
|
|
@@ -1146,7 +1150,6 @@
|
|
|
1146
1150
|
2E9C95892822F43000677516 /* ValueProviders */ = {
|
|
1147
1151
|
isa = PBXGroup;
|
|
1148
1152
|
children = (
|
|
1149
|
-
2E9C958A2822F43000677516 /* KeyframeInterpolator.swift */,
|
|
1150
1153
|
2E9C958B2822F43000677516 /* SingleValueProvider.swift */,
|
|
1151
1154
|
2E9C958C2822F43000677516 /* GroupInterpolator.swift */,
|
|
1152
1155
|
);
|
|
@@ -1210,6 +1213,7 @@
|
|
|
1210
1213
|
2E9C95A32822F43100677516 /* CALayer+setupLayerHierarchy.swift */,
|
|
1211
1214
|
2E9C95A42822F43100677516 /* BaseAnimationLayer.swift */,
|
|
1212
1215
|
2E9C95A52822F43100677516 /* PreCompLayer.swift */,
|
|
1216
|
+
08F8B20C2898A7B100CB5323 /* RepeaterLayer.swift */,
|
|
1213
1217
|
);
|
|
1214
1218
|
path = Layers;
|
|
1215
1219
|
sourceTree = "<group>";
|
|
@@ -1302,6 +1306,7 @@
|
|
|
1302
1306
|
2E9C95CF2822F43100677516 /* InterpolatableExtensions.swift */,
|
|
1303
1307
|
2E9C95D02822F43100677516 /* KeyframeExtensions.swift */,
|
|
1304
1308
|
7E48BF5F2860D4FA00A39198 /* KeyframeGroup+Extensions.swift */,
|
|
1309
|
+
08EF21DB289C643B0097EA47 /* KeyframeInterpolator.swift */,
|
|
1305
1310
|
);
|
|
1306
1311
|
path = Interpolatable;
|
|
1307
1312
|
sourceTree = "<group>";
|
|
@@ -1646,7 +1651,7 @@
|
|
|
1646
1651
|
isa = PBXResourcesBuildPhase;
|
|
1647
1652
|
buildActionMask = 2147483647;
|
|
1648
1653
|
files = (
|
|
1649
|
-
|
|
1654
|
+
08F8B211289990B700CB5323 /* Samples in Resources */,
|
|
1650
1655
|
2E80489427A07377006E74CB /* __Snapshots__ in Resources */,
|
|
1651
1656
|
);
|
|
1652
1657
|
runOnlyForDeploymentPostprocessing = 0;
|
|
@@ -1692,6 +1697,7 @@
|
|
|
1692
1697
|
2EAF5AE927A0798700E00531 /* AnimationTextProvider.swift in Sources */,
|
|
1693
1698
|
2E9C96662822F43100677516 /* LayerTransformNode.swift in Sources */,
|
|
1694
1699
|
2E9C97412822F43100677516 /* TestHelpers.swift in Sources */,
|
|
1700
|
+
08EF21DC289C643B0097EA47 /* KeyframeInterpolator.swift in Sources */,
|
|
1695
1701
|
2E9C96152822F43100677516 /* Transform.swift in Sources */,
|
|
1696
1702
|
2E9C97472822F43100677516 /* CGFloatExtensions.swift in Sources */,
|
|
1697
1703
|
2EAF5AC527A0798700E00531 /* UIColorExtension.swift in Sources */,
|
|
@@ -1706,7 +1712,6 @@
|
|
|
1706
1712
|
2E9C965D2822F43100677516 /* MainThreadAnimationLayer.swift in Sources */,
|
|
1707
1713
|
2E9C964E2822F43100677516 /* SolidCompositionLayer.swift in Sources */,
|
|
1708
1714
|
2E9C963F2822F43100677516 /* Asset.swift in Sources */,
|
|
1709
|
-
2E9C96C02822F43100677516 /* KeyframeInterpolator.swift in Sources */,
|
|
1710
1715
|
2E9C96F92822F43100677516 /* BaseCompositionLayer.swift in Sources */,
|
|
1711
1716
|
2EAF5A9B27A0798700E00531 /* BundleImageProvider.macOS.swift in Sources */,
|
|
1712
1717
|
2E9C969F2822F43100677516 /* TextAnimatorNode.swift in Sources */,
|
|
@@ -1747,6 +1752,7 @@
|
|
|
1747
1752
|
2E9C95E82822F43100677516 /* Merge.swift in Sources */,
|
|
1748
1753
|
2E9C96032822F43100677516 /* ImageLayerModel.swift in Sources */,
|
|
1749
1754
|
19465F52282F998B00BB2C97 /* CachedImageProvider.swift in Sources */,
|
|
1755
|
+
08F8B20D2898A7B100CB5323 /* RepeaterLayer.swift in Sources */,
|
|
1750
1756
|
2E9C96BA2822F43100677516 /* KeypathSearchable.swift in Sources */,
|
|
1751
1757
|
2E9C963C2822F43100677516 /* AssetLibrary.swift in Sources */,
|
|
1752
1758
|
2E9C97022822F43100677516 /* PreCompLayer.swift in Sources */,
|
|
@@ -1862,9 +1868,9 @@
|
|
|
1862
1868
|
isa = PBXSourcesBuildPhase;
|
|
1863
1869
|
buildActionMask = 2147483647;
|
|
1864
1870
|
files = (
|
|
1871
|
+
08F8B213289990CB00CB5323 /* SnapshotTests.swift in Sources */,
|
|
1865
1872
|
A1D5BAAC27C731A500777D06 /* DataURLTests.swift in Sources */,
|
|
1866
1873
|
2E8044AD27A07347006E74CB /* HardcodedImageProvider.swift in Sources */,
|
|
1867
|
-
2E80450C27A07347006E74CB /* SnapshotTests.swift in Sources */,
|
|
1868
1874
|
2E09FA0627B6CEB600BA84E5 /* HardcodedFontProvider.swift in Sources */,
|
|
1869
1875
|
2E80450D27A07347006E74CB /* SnapshotConfiguration.swift in Sources */,
|
|
1870
1876
|
6DEF696E2824A76C007D640F /* BundleTests.swift in Sources */,
|
|
@@ -1902,6 +1908,7 @@
|
|
|
1902
1908
|
2EAF5AEA27A0798700E00531 /* AnimationTextProvider.swift in Sources */,
|
|
1903
1909
|
2E9C96672822F43100677516 /* LayerTransformNode.swift in Sources */,
|
|
1904
1910
|
2E9C97422822F43100677516 /* TestHelpers.swift in Sources */,
|
|
1911
|
+
08EF21DD289C643B0097EA47 /* KeyframeInterpolator.swift in Sources */,
|
|
1905
1912
|
2E9C96162822F43100677516 /* Transform.swift in Sources */,
|
|
1906
1913
|
2E9C97482822F43100677516 /* CGFloatExtensions.swift in Sources */,
|
|
1907
1914
|
2EAF5AC627A0798700E00531 /* UIColorExtension.swift in Sources */,
|
|
@@ -1916,7 +1923,6 @@
|
|
|
1916
1923
|
2E9C965E2822F43100677516 /* MainThreadAnimationLayer.swift in Sources */,
|
|
1917
1924
|
2E9C964F2822F43100677516 /* SolidCompositionLayer.swift in Sources */,
|
|
1918
1925
|
2E9C96402822F43100677516 /* Asset.swift in Sources */,
|
|
1919
|
-
2E9C96C12822F43100677516 /* KeyframeInterpolator.swift in Sources */,
|
|
1920
1926
|
2E9C96FA2822F43100677516 /* BaseCompositionLayer.swift in Sources */,
|
|
1921
1927
|
2EAF5A9C27A0798700E00531 /* BundleImageProvider.macOS.swift in Sources */,
|
|
1922
1928
|
2E9C96A02822F43100677516 /* TextAnimatorNode.swift in Sources */,
|
|
@@ -1957,6 +1963,7 @@
|
|
|
1957
1963
|
2E9C95E92822F43100677516 /* Merge.swift in Sources */,
|
|
1958
1964
|
2E9C96042822F43100677516 /* ImageLayerModel.swift in Sources */,
|
|
1959
1965
|
19465F53282F998B00BB2C97 /* CachedImageProvider.swift in Sources */,
|
|
1966
|
+
08F8B20E2898A7B100CB5323 /* RepeaterLayer.swift in Sources */,
|
|
1960
1967
|
2E9C96BB2822F43100677516 /* KeypathSearchable.swift in Sources */,
|
|
1961
1968
|
2E9C963D2822F43100677516 /* AssetLibrary.swift in Sources */,
|
|
1962
1969
|
2E9C97032822F43100677516 /* PreCompLayer.swift in Sources */,
|
|
@@ -2092,6 +2099,7 @@
|
|
|
2092
2099
|
2EAF5AEB27A0798700E00531 /* AnimationTextProvider.swift in Sources */,
|
|
2093
2100
|
2E9C96682822F43100677516 /* LayerTransformNode.swift in Sources */,
|
|
2094
2101
|
2E9C97432822F43100677516 /* TestHelpers.swift in Sources */,
|
|
2102
|
+
08EF21DE289C643B0097EA47 /* KeyframeInterpolator.swift in Sources */,
|
|
2095
2103
|
2E9C96172822F43100677516 /* Transform.swift in Sources */,
|
|
2096
2104
|
2E9C97492822F43100677516 /* CGFloatExtensions.swift in Sources */,
|
|
2097
2105
|
2EAF5AC727A0798700E00531 /* UIColorExtension.swift in Sources */,
|
|
@@ -2106,7 +2114,6 @@
|
|
|
2106
2114
|
2E9C965F2822F43100677516 /* MainThreadAnimationLayer.swift in Sources */,
|
|
2107
2115
|
2E9C96502822F43100677516 /* SolidCompositionLayer.swift in Sources */,
|
|
2108
2116
|
2E9C96412822F43100677516 /* Asset.swift in Sources */,
|
|
2109
|
-
2E9C96C22822F43100677516 /* KeyframeInterpolator.swift in Sources */,
|
|
2110
2117
|
2E9C96FB2822F43100677516 /* BaseCompositionLayer.swift in Sources */,
|
|
2111
2118
|
2EAF5A9D27A0798700E00531 /* BundleImageProvider.macOS.swift in Sources */,
|
|
2112
2119
|
2E9C96A12822F43100677516 /* TextAnimatorNode.swift in Sources */,
|
|
@@ -2147,6 +2154,7 @@
|
|
|
2147
2154
|
2E9C95EA2822F43100677516 /* Merge.swift in Sources */,
|
|
2148
2155
|
2E9C96052822F43100677516 /* ImageLayerModel.swift in Sources */,
|
|
2149
2156
|
19465F54282F998B00BB2C97 /* CachedImageProvider.swift in Sources */,
|
|
2157
|
+
08F8B20F2898A7B100CB5323 /* RepeaterLayer.swift in Sources */,
|
|
2150
2158
|
2E9C96BC2822F43100677516 /* KeypathSearchable.swift in Sources */,
|
|
2151
2159
|
2E9C963E2822F43100677516 /* AssetLibrary.swift in Sources */,
|
|
2152
2160
|
2E9C97042822F43100677516 /* PreCompLayer.swift in Sources */,
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
<BuildableReference
|
|
16
16
|
BuildableIdentifier = "primary"
|
|
17
17
|
BlueprintIdentifier = "2EAF59AC27A0787B00E00531"
|
|
18
|
-
BuildableName = "
|
|
18
|
+
BuildableName = "Lottie.framework"
|
|
19
19
|
BlueprintName = "Lottie-macOS"
|
|
20
20
|
ReferencedContainer = "container:Lottie.xcodeproj">
|
|
21
21
|
</BuildableReference>
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
<BuildableReference
|
|
52
52
|
BuildableIdentifier = "primary"
|
|
53
53
|
BlueprintIdentifier = "2EAF59AC27A0787B00E00531"
|
|
54
|
-
BuildableName = "
|
|
54
|
+
BuildableName = "Lottie.framework"
|
|
55
55
|
BlueprintName = "Lottie-macOS"
|
|
56
56
|
ReferencedContainer = "container:Lottie.xcodeproj">
|
|
57
57
|
</BuildableReference>
|
|
@@ -19,33 +19,6 @@
|
|
|
19
19
|
"version": "0.7.0"
|
|
20
20
|
}
|
|
21
21
|
},
|
|
22
|
-
{
|
|
23
|
-
"package": "SourceKitten",
|
|
24
|
-
"repositoryURL": "https://github.com/jpsim/SourceKitten.git",
|
|
25
|
-
"state": {
|
|
26
|
-
"branch": null,
|
|
27
|
-
"revision": "817dfa6f2e09b0476f3a6c9dbc035991f02f0241",
|
|
28
|
-
"version": "0.32.0"
|
|
29
|
-
}
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
"package": "AirbnbSwift",
|
|
33
|
-
"repositoryURL": "https://github.com/airbnb/swift",
|
|
34
|
-
"state": {
|
|
35
|
-
"branch": "master",
|
|
36
|
-
"revision": "b844956fd69f05e550038469a5d498462176f87a",
|
|
37
|
-
"version": null
|
|
38
|
-
}
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
"package": "swift-argument-parser",
|
|
42
|
-
"repositoryURL": "https://github.com/apple/swift-argument-parser.git",
|
|
43
|
-
"state": {
|
|
44
|
-
"branch": null,
|
|
45
|
-
"revision": "e394bf350e38cb100b6bc4172834770ede1b7232",
|
|
46
|
-
"version": "1.0.3"
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
22
|
{
|
|
50
23
|
"package": "swift-snapshot-testing",
|
|
51
24
|
"repositoryURL": "https://github.com/pointfreeco/swift-snapshot-testing.git",
|
|
@@ -54,60 +27,6 @@
|
|
|
54
27
|
"revision": "88f6e2c0afe04221fcfb1601a2ecaad83115a05f",
|
|
55
28
|
"version": null
|
|
56
29
|
}
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
"package": "SwiftSyntax",
|
|
60
|
-
"repositoryURL": "https://github.com/apple/swift-syntax.git",
|
|
61
|
-
"state": {
|
|
62
|
-
"branch": null,
|
|
63
|
-
"revision": "0b6c22b97f8e9320bca62e82cdbee601cf37ad3f",
|
|
64
|
-
"version": "0.50600.1"
|
|
65
|
-
}
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
"package": "SwiftFormat",
|
|
69
|
-
"repositoryURL": "https://github.com/calda/SwiftFormat",
|
|
70
|
-
"state": {
|
|
71
|
-
"branch": null,
|
|
72
|
-
"revision": "2a9ed335450d3b3f66b2699d65124b9089195f5d",
|
|
73
|
-
"version": "0.49.11-beta-2"
|
|
74
|
-
}
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
"package": "SwiftLint",
|
|
78
|
-
"repositoryURL": "https://github.com/realm/SwiftLint",
|
|
79
|
-
"state": {
|
|
80
|
-
"branch": "e497f1f",
|
|
81
|
-
"revision": "e497f1f5b161af96ba439049d21970c6204d06c6",
|
|
82
|
-
"version": null
|
|
83
|
-
}
|
|
84
|
-
},
|
|
85
|
-
{
|
|
86
|
-
"package": "SwiftyTextTable",
|
|
87
|
-
"repositoryURL": "https://github.com/scottrhoyt/SwiftyTextTable.git",
|
|
88
|
-
"state": {
|
|
89
|
-
"branch": null,
|
|
90
|
-
"revision": "c6df6cf533d120716bff38f8ff9885e1ce2a4ac3",
|
|
91
|
-
"version": "0.9.0"
|
|
92
|
-
}
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
"package": "SWXMLHash",
|
|
96
|
-
"repositoryURL": "https://github.com/drmohundro/SWXMLHash.git",
|
|
97
|
-
"state": {
|
|
98
|
-
"branch": null,
|
|
99
|
-
"revision": "6469881a3f30417c5bb02404ea4b69207f297592",
|
|
100
|
-
"version": "6.0.0"
|
|
101
|
-
}
|
|
102
|
-
},
|
|
103
|
-
{
|
|
104
|
-
"package": "Yams",
|
|
105
|
-
"repositoryURL": "https://github.com/jpsim/Yams.git",
|
|
106
|
-
"state": {
|
|
107
|
-
"branch": null,
|
|
108
|
-
"revision": "9ff1cc9327586db4e0c8f46f064b6a82ec1566fa",
|
|
109
|
-
"version": "4.0.6"
|
|
110
|
-
}
|
|
111
30
|
}
|
|
112
31
|
]
|
|
113
32
|
},
|
package/Lottie.xcworkspace/xcuserdata/calstephens.xcuserdatad/UserInterfaceState.xcuserstate
CHANGED
|
Binary file
|
package/Lottie.xcworkspace/xcuserdata/calstephens.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
CHANGED
|
@@ -18,22 +18,5 @@
|
|
|
18
18
|
endingLineNumber = "44">
|
|
19
19
|
</BreakpointContent>
|
|
20
20
|
</BreakpointProxy>
|
|
21
|
-
<BreakpointProxy
|
|
22
|
-
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
|
23
|
-
<BreakpointContent
|
|
24
|
-
uuid = "E2A7ABE7-5600-4664-AFAF-E57EDC35B39F"
|
|
25
|
-
shouldBeEnabled = "No"
|
|
26
|
-
condition = "outFrame == 601"
|
|
27
|
-
ignoreCount = "0"
|
|
28
|
-
continueAfterRunningActions = "No"
|
|
29
|
-
filePath = "Sources/Private/CoreAnimation/Animations/VisibilityAnimation.swift"
|
|
30
|
-
startingColumnNumber = "9223372036854775807"
|
|
31
|
-
endingColumnNumber = "9223372036854775807"
|
|
32
|
-
startingLineNumber = "17"
|
|
33
|
-
endingLineNumber = "17"
|
|
34
|
-
landmarkName = "addVisibilityAnimation(inFrame:outFrame:context:)"
|
|
35
|
-
landmarkType = "7">
|
|
36
|
-
</BreakpointContent>
|
|
37
|
-
</BreakpointProxy>
|
|
38
21
|
</Breakpoints>
|
|
39
22
|
</Bucket>
|
package/Lottie.xcworkspace/xcuserdata/calstephens.xcuserdatad/xcdebugger/Expressions.xcexplist
CHANGED
|
@@ -2,6 +2,104 @@
|
|
|
2
2
|
<VariablesViewState
|
|
3
3
|
version = "1.0">
|
|
4
4
|
<ContextStates>
|
|
5
|
+
<ContextState
|
|
6
|
+
contextName = "closure #1 in CAShapeLayer.addAnimations(for:context:pathMultiplier:transformPath:):CustomPathAnimation.swift">
|
|
7
|
+
<PersistentStrings>
|
|
8
|
+
<PersistentString
|
|
9
|
+
value = "UIBezierPath(cgPath: pathKeyframe.cgPath())">
|
|
10
|
+
</PersistentString>
|
|
11
|
+
<PersistentString
|
|
12
|
+
value = "path.boundingBox">
|
|
13
|
+
</PersistentString>
|
|
14
|
+
</PersistentStrings>
|
|
15
|
+
</ContextState>
|
|
16
|
+
<ContextState
|
|
17
|
+
contextName = "closure #1 in CAShapeLayer.addAnimations(for:context:pathMultiplier:):CombinedShapeAnimation.swift">
|
|
18
|
+
<PersistentStrings>
|
|
19
|
+
<PersistentString
|
|
20
|
+
value = "UIBezierPath(cgPath: combinedPath)">
|
|
21
|
+
</PersistentString>
|
|
22
|
+
</PersistentStrings>
|
|
23
|
+
</ContextState>
|
|
24
|
+
<ContextState
|
|
25
|
+
contextName = "closure #2 in GradientRenderLayer.addGradientAnimations(for:type:context:):GradientAnimations.swift">
|
|
26
|
+
<PersistentStrings>
|
|
27
|
+
<PersistentString
|
|
28
|
+
value = "gradient.colorConfiguration(from: colorComponents, type: type)">
|
|
29
|
+
</PersistentString>
|
|
30
|
+
</PersistentStrings>
|
|
31
|
+
</ContextState>
|
|
32
|
+
<ContextState
|
|
33
|
+
contextName = "closure #1 in MaskCompositionLayer.MaskLayer.setupAnimations(context:):MaskCompositionLayer.swift">
|
|
34
|
+
<PersistentStrings>
|
|
35
|
+
<PersistentString
|
|
36
|
+
value = "UIBezierPath(cgPath: maskPath)">
|
|
37
|
+
</PersistentString>
|
|
38
|
+
</PersistentStrings>
|
|
39
|
+
</ContextState>
|
|
40
|
+
<ContextState
|
|
41
|
+
contextName = "GradientRenderLayer.addGradientAnimations(for:type:context:):GradientAnimations.swift">
|
|
42
|
+
</ContextState>
|
|
43
|
+
<ContextState
|
|
44
|
+
contextName = "ShapeNodeProperties.init(shape:):ShapeNode.swift">
|
|
45
|
+
<PersistentStrings>
|
|
46
|
+
<PersistentString
|
|
47
|
+
value = "UIBezierPath(cgPath: shape.path.keyframes[0].value.cgPath())">
|
|
48
|
+
</PersistentString>
|
|
49
|
+
</PersistentStrings>
|
|
50
|
+
</ContextState>
|
|
51
|
+
<ContextState
|
|
52
|
+
contextName = "ShapeNode.rebuildOutputs(frame:):ShapeNode.swift">
|
|
53
|
+
<PersistentStrings>
|
|
54
|
+
<PersistentString
|
|
55
|
+
value = "properties.path">
|
|
56
|
+
</PersistentString>
|
|
57
|
+
</PersistentStrings>
|
|
58
|
+
</ContextState>
|
|
59
|
+
<ContextState
|
|
60
|
+
contextName = "MaskLayer.updateWithFrame(frame:forceUpdates:):MaskContainerLayer.swift">
|
|
61
|
+
<PersistentStrings>
|
|
62
|
+
<PersistentString
|
|
63
|
+
value = "UIBezierPath(cgPath: shapePath)">
|
|
64
|
+
</PersistentString>
|
|
65
|
+
</PersistentStrings>
|
|
66
|
+
</ContextState>
|
|
67
|
+
<ContextState
|
|
68
|
+
contextName = "MaskCompositionLayer.init(masks:):MaskCompositionLayer.swift">
|
|
69
|
+
</ContextState>
|
|
70
|
+
<ContextState
|
|
71
|
+
contextName = "CoreAnimationLayer.init(animation:imageProvider:fontProvider:compatibilityTrackerMode:logger:):CoreAnimationLayer.swift">
|
|
72
|
+
</ContextState>
|
|
73
|
+
<ContextState
|
|
74
|
+
contextName = "closure #1 in CAShapeLayer.addAnimations(for:context:pathMultiplier:):RectangleAnimation.swift">
|
|
75
|
+
<PersistentStrings>
|
|
76
|
+
<PersistentString
|
|
77
|
+
value = "UIBezierPath(cgPath: BezierPath.rectangle(position: keyframe.position.pointValue, size: keyframe.size.sizeValue, cornerRadius: keyframe.cornerRadius.cgFloatValue, direction: rectangle.direction).cgPath())">
|
|
78
|
+
</PersistentString>
|
|
79
|
+
</PersistentStrings>
|
|
80
|
+
</ContextState>
|
|
81
|
+
<ContextState
|
|
82
|
+
contextName = "Array<τ_0_0>.shapeRenderGroups.getter:ShapeLayer.swift">
|
|
83
|
+
</ContextState>
|
|
84
|
+
<ContextState
|
|
85
|
+
contextName = "CALayer.path<τ_0_0>(keyframes:value:):CALayer+addAnimation.swift">
|
|
86
|
+
<PersistentStrings>
|
|
87
|
+
<PersistentString
|
|
88
|
+
value = "UIBezierPath(cgPath: path)">
|
|
89
|
+
</PersistentString>
|
|
90
|
+
</PersistentStrings>
|
|
91
|
+
</ContextState>
|
|
92
|
+
<ContextState
|
|
93
|
+
contextName = "CAShapeLayer.addStrokeAnimations(for:context:):StrokeAnimation.swift">
|
|
94
|
+
<PersistentStrings>
|
|
95
|
+
<PersistentString
|
|
96
|
+
value = "UIColor(cgColor: strokeColor.keyframes[0].value.cgColorValue)">
|
|
97
|
+
</PersistentString>
|
|
98
|
+
</PersistentStrings>
|
|
99
|
+
</ContextState>
|
|
100
|
+
<ContextState
|
|
101
|
+
contextName = "Collection<>.pairedLayersAndMasks(context:):CALayer+setupLayerHierarchy.swift">
|
|
102
|
+
</ContextState>
|
|
5
103
|
<ContextState
|
|
6
104
|
contextName = "ShapeItemLayer.setupSolidFillAnimations(shapeLayer:context:):ShapeItemLayer.swift">
|
|
7
105
|
<PersistentStrings>
|
|
@@ -11,7 +109,7 @@
|
|
|
11
109
|
</PersistentStrings>
|
|
12
110
|
</ContextState>
|
|
13
111
|
<ContextState
|
|
14
|
-
contextName = "
|
|
112
|
+
contextName = "ShapeItemLayer.init(shape:otherItems:context:):ShapeItemLayer.swift">
|
|
15
113
|
</ContextState>
|
|
16
114
|
<ContextState
|
|
17
115
|
contextName = "FillNode.rebuildOutputs(frame:):FillNode.swift">
|
|
@@ -21,5 +119,20 @@
|
|
|
21
119
|
</PersistentString>
|
|
22
120
|
</PersistentStrings>
|
|
23
121
|
</ContextState>
|
|
122
|
+
<ContextState
|
|
123
|
+
contextName = "CALayer.keyframeAnimation<τ_0_0, τ_0_1>(for:keyframes:value:context:):CALayer+addAnimation.swift">
|
|
124
|
+
</ContextState>
|
|
125
|
+
<ContextState
|
|
126
|
+
contextName = "CALayer.makeGroupLayers(from:parentGroup:context:):ShapeLayer.swift">
|
|
127
|
+
</ContextState>
|
|
128
|
+
<ContextState
|
|
129
|
+
contextName = "CALayer.addPositionAnimations(from:context:):TransformAnimations.swift">
|
|
130
|
+
</ContextState>
|
|
131
|
+
<ContextState
|
|
132
|
+
contextName = "closure #1 in Array<τ_0_0>.shapeRenderGroups.getter:ShapeLayer.swift">
|
|
133
|
+
</ContextState>
|
|
134
|
+
<ContextState
|
|
135
|
+
contextName = "GroupLayer.init(group:inheritedItems:context:):ShapeLayer.swift">
|
|
136
|
+
</ContextState>
|
|
24
137
|
</ContextStates>
|
|
25
138
|
</VariablesViewState>
|
package/Package.swift
CHANGED
|
@@ -5,9 +5,4 @@ let package = Package(
|
|
|
5
5
|
name: "Lottie",
|
|
6
6
|
platforms: [.iOS("11.0"), .macOS("10.10"), .tvOS("11.0")],
|
|
7
7
|
products: [.library(name: "Lottie", targets: ["Lottie"])],
|
|
8
|
-
targets: [.target(name: "Lottie", path: "Sources")])
|
|
9
|
-
|
|
10
|
-
#if swift(>=5.6)
|
|
11
|
-
// Add the Airbnb Swift formatting plugin if possible
|
|
12
|
-
package.dependencies.append(.package(url: "https://github.com/airbnb/swift", .branch("master")))
|
|
13
|
-
#endif
|
|
8
|
+
targets: [.target(name: "Lottie", path: "Sources")])
|
package/Rakefile
CHANGED
|
@@ -93,7 +93,7 @@ end
|
|
|
93
93
|
namespace :lint do
|
|
94
94
|
desc 'Lints swift files'
|
|
95
95
|
task :swift do
|
|
96
|
-
|
|
96
|
+
formatTool('format --lint')
|
|
97
97
|
end
|
|
98
98
|
|
|
99
99
|
desc 'Lints the CocoaPods podspec'
|
|
@@ -105,7 +105,7 @@ end
|
|
|
105
105
|
namespace :format do
|
|
106
106
|
desc 'Formats swift files'
|
|
107
107
|
task :swift do
|
|
108
|
-
|
|
108
|
+
formatTool('format')
|
|
109
109
|
end
|
|
110
110
|
end
|
|
111
111
|
|
|
@@ -119,3 +119,42 @@ def xcodebuild(command)
|
|
|
119
119
|
sh "xcodebuild #{command}"
|
|
120
120
|
end
|
|
121
121
|
end
|
|
122
|
+
|
|
123
|
+
def formatTool(command)
|
|
124
|
+
# As of Xcode 13.4 / Xcode 14 beta 4, including airbnb/swift as a dependency
|
|
125
|
+
# causes Xcode to spin indefinitely at 100% CPU (due to the remote binary dependencies
|
|
126
|
+
# used by that package). As a workaround, we can specifically add that dependency
|
|
127
|
+
# to our Package.swift file when linting / formatting and remove it afterwards.
|
|
128
|
+
packageDefinition = File.read('Package.swift')
|
|
129
|
+
packageDefinitionWithFormatDependency = packageDefinition +
|
|
130
|
+
<<~EOC
|
|
131
|
+
|
|
132
|
+
#if swift(>=5.6)
|
|
133
|
+
// Add the Airbnb Swift formatting plugin if possible
|
|
134
|
+
package.dependencies.append(
|
|
135
|
+
.package(
|
|
136
|
+
url: "https://github.com/airbnb/swift",
|
|
137
|
+
// Since we don't have a Package.resolved for this, we need to reference a specific commit
|
|
138
|
+
// so changes to the style guide don't cause this repo's checks to start failing.
|
|
139
|
+
.revision("cec29280c35dd6eccba415fa3bfc24c819eae887")))
|
|
140
|
+
#endif
|
|
141
|
+
EOC
|
|
142
|
+
|
|
143
|
+
# Add the format tool dependency to our Package.swift
|
|
144
|
+
File.write('Package.swift', packageDefinitionWithFormatDependency)
|
|
145
|
+
|
|
146
|
+
exitCode = 0
|
|
147
|
+
|
|
148
|
+
# Run the given command
|
|
149
|
+
begin
|
|
150
|
+
sh "swift package --allow-writing-to-package-directory #{command}"
|
|
151
|
+
rescue
|
|
152
|
+
exitCode = $?.exitstatus
|
|
153
|
+
ensure
|
|
154
|
+
# Revert the changes to Package.swift
|
|
155
|
+
File.write('Package.swift', packageDefinition)
|
|
156
|
+
File.delete('Package.resolved')
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
exit exitCode
|
|
160
|
+
end
|
|
@@ -336,8 +336,7 @@ extension CALayer {
|
|
|
336
336
|
if
|
|
337
337
|
let controlPoint1 = keyframe.spatialOutTangent?.pointValue,
|
|
338
338
|
let controlPoint2 = nextKeyframe.spatialInTangent?.pointValue,
|
|
339
|
-
controlPoint1
|
|
340
|
-
controlPoint2 != .zero
|
|
339
|
+
!(controlPoint1 == .zero && controlPoint2 == .zero)
|
|
341
340
|
{
|
|
342
341
|
path.addCurve(
|
|
343
342
|
to: try keyframeValueMapping(nextKeyframe.value),
|
|
@@ -51,3 +51,31 @@ final class CombinedShapeItem: ShapeItem {
|
|
|
51
51
|
let shapes: KeyframeGroup<[BezierPath]>
|
|
52
52
|
|
|
53
53
|
}
|
|
54
|
+
|
|
55
|
+
extension CombinedShapeItem {
|
|
56
|
+
/// Manually combines the given shape keyframes by manually interpolating at each frame
|
|
57
|
+
static func manuallyInterpolating(
|
|
58
|
+
shapes: [KeyframeGroup<BezierPath>],
|
|
59
|
+
name: String,
|
|
60
|
+
context: LayerContext)
|
|
61
|
+
-> CombinedShapeItem
|
|
62
|
+
{
|
|
63
|
+
let animationTimeRange = Int(context.animation.startFrame)...Int(context.animation.endFrame)
|
|
64
|
+
|
|
65
|
+
let interpolators = shapes.map { shape in
|
|
66
|
+
KeyframeInterpolator(keyframes: shape.keyframes)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
let interpolatedKeyframes = animationTimeRange.map { frame in
|
|
70
|
+
Keyframe(
|
|
71
|
+
value: interpolators.compactMap { interpolator in
|
|
72
|
+
interpolator.value(frame: AnimationFrameTime(frame)) as? BezierPath
|
|
73
|
+
},
|
|
74
|
+
time: AnimationFrameTime(frame))
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return CombinedShapeItem(
|
|
78
|
+
shapes: KeyframeGroup(keyframes: ContiguousArray(interpolatedKeyframes)),
|
|
79
|
+
name: name)
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -14,11 +14,11 @@ extension CAShapeLayer {
|
|
|
14
14
|
{
|
|
15
15
|
try addAnimation(
|
|
16
16
|
for: .path,
|
|
17
|
-
keyframes: ellipse.
|
|
18
|
-
value: {
|
|
17
|
+
keyframes: ellipse.combinedKeyframes(context: context).keyframes,
|
|
18
|
+
value: { keyframe in
|
|
19
19
|
BezierPath.ellipse(
|
|
20
|
-
size:
|
|
21
|
-
center:
|
|
20
|
+
size: keyframe.size.sizeValue,
|
|
21
|
+
center: keyframe.position.pointValue,
|
|
22
22
|
direction: ellipse.direction)
|
|
23
23
|
.cgPath()
|
|
24
24
|
.duplicated(times: pathMultiplier)
|
|
@@ -26,3 +26,30 @@ extension CAShapeLayer {
|
|
|
26
26
|
context: context)
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
+
|
|
30
|
+
extension Ellipse {
|
|
31
|
+
/// Data that represents how to render an ellipse at a specific point in time
|
|
32
|
+
struct Keyframe {
|
|
33
|
+
let size: Vector3D
|
|
34
|
+
let position: Vector3D
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/// Creates a single array of animatable keyframes from the separate arrays of keyframes in this Ellipse
|
|
38
|
+
func combinedKeyframes(context: LayerAnimationContext) throws-> KeyframeGroup<Ellipse.Keyframe> {
|
|
39
|
+
let combinedKeyframes = Keyframes.combinedIfPossible(
|
|
40
|
+
size, position,
|
|
41
|
+
makeCombinedResult: Ellipse.Keyframe.init)
|
|
42
|
+
|
|
43
|
+
if let combinedKeyframes = combinedKeyframes {
|
|
44
|
+
return combinedKeyframes
|
|
45
|
+
} else {
|
|
46
|
+
// If we weren't able to combine all of the keyframes, we have to take the timing values
|
|
47
|
+
// from one property and use a fixed value for the other properties.
|
|
48
|
+
return try size.map { sizeValue in
|
|
49
|
+
Keyframe(
|
|
50
|
+
size: sizeValue,
|
|
51
|
+
position: try position.exactlyOneKeyframe(context: context, description: "ellipse position"))
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|