diff --git a/Sources/Private/CoreAnimation/Animations/TransformAnimations.swift b/Sources/Private/CoreAnimation/Animations/TransformAnimations.swift index 50da397794..f646409794 100644 --- a/Sources/Private/CoreAnimation/Animations/TransformAnimations.swift +++ b/Sources/Private/CoreAnimation/Animations/TransformAnimations.swift @@ -253,6 +253,11 @@ extension CALayer { context: LayerAnimationContext) throws { + // Core Animation doesn't animate skew changes properly. If the skew value + // changes over the course of the animation then we have to manually + // compute the `CATransform3D` for each frame individually. + let requiresManualInterpolation = transformModel.hasSkewAnimation + let combinedTransformKeyframes = Keyframes.combined( transformModel.anchorPoint, transformModel._position ?? KeyframeGroup(LottieVector3D(x: 0.0, y: 0.0, z: 0.0)), @@ -264,6 +269,7 @@ extension CALayer { transformModel.rotationZ, transformModel._skew ?? KeyframeGroup(LottieVector1D(0)), transformModel._skewAxis ?? KeyframeGroup(LottieVector1D(0)), + requiresManualInterpolation: requiresManualInterpolation, makeCombinedResult: { anchor, position, positionX, positionY, scale, rotationX, rotationY, rotationZ, skew, skewAxis -> CATransform3D in @@ -310,6 +316,18 @@ extension TransformModel { return _skew.keyframes.contains(where: { $0.value.cgFloatValue != 0 }) } + /// Whether or not this transform has a non-zero skew value which animates + var hasSkewAnimation: Bool { + guard + hasSkew, + let _skew = _skew, + let _skewAxis = _skewAxis + else { return false } + + return _skew.keyframes.count > 1 + || _skewAxis.keyframes.count > 1 + } + /// Whether or not this `TransformModel` has any negative X scale values var hasNegativeXScaleValues: Bool { scale.keyframes.contains(where: { $0.value.x < 0 }) diff --git a/Sources/Private/CoreAnimation/Extensions/Keyframes+combined.swift b/Sources/Private/CoreAnimation/Extensions/Keyframes+combined.swift index 278e2f47d5..0a5a52d2d4 100644 --- a/Sources/Private/CoreAnimation/Extensions/Keyframes+combined.swift +++ b/Sources/Private/CoreAnimation/Extensions/Keyframes+combined.swift @@ -10,12 +10,18 @@ enum Keyframes { /// Combines the given keyframe groups of `Keyframe`s into a single keyframe group of of `Keyframe<[T]>`s /// - If all of the `KeyframeGroup`s have the exact same animation timing, the keyframes are merged /// - Otherwise, the keyframes are manually interpolated at each frame in the animation - static func combined(_ allGroups: [KeyframeGroup]) -> KeyframeGroup<[T]> + static func combined( + _ allGroups: [KeyframeGroup], + requiresManualInterpolation: Bool = false) + -> KeyframeGroup<[T]> where T: AnyInterpolatable { - Keyframes.combined(allGroups, makeCombinedResult: { untypedValues in - untypedValues.compactMap { $0 as? T } - }) + Keyframes.combined( + allGroups, + requiresManualInterpolation: requiresManualInterpolation, + makeCombinedResult: { untypedValues in + untypedValues.compactMap { $0 as? T } + }) } /// Combines the given keyframe groups of `Keyframe`s into a single keyframe group of of `Keyframe<[T]>`s @@ -24,6 +30,7 @@ enum Keyframes { static func combined( _ k1: KeyframeGroup, _ k2: KeyframeGroup, + requiresManualInterpolation: Bool = false, makeCombinedResult: (T1, T2) throws -> CombinedResult) rethrows -> KeyframeGroup @@ -31,6 +38,7 @@ enum Keyframes { { try Keyframes.combined( [k1, k2], + requiresManualInterpolation: requiresManualInterpolation, makeCombinedResult: { untypedValues in guard let t1 = untypedValues[0] as? T1, @@ -48,12 +56,14 @@ enum Keyframes { _ k1: KeyframeGroup, _ k2: KeyframeGroup, _ k3: KeyframeGroup, + requiresManualInterpolation: Bool = false, makeCombinedResult: (T1, T2, T3) -> CombinedResult) -> KeyframeGroup where T1: AnyInterpolatable, T2: AnyInterpolatable, T3: AnyInterpolatable { Keyframes.combined( [k1, k2, k3], + requiresManualInterpolation: requiresManualInterpolation, makeCombinedResult: { untypedValues in guard let t1 = untypedValues[0] as? T1, @@ -76,6 +86,7 @@ enum Keyframes { _ k5: KeyframeGroup, _ k6: KeyframeGroup, _ k7: KeyframeGroup, + requiresManualInterpolation: Bool = false, makeCombinedResult: (T1, T2, T3, T4, T5, T6, T7) -> CombinedResult) -> KeyframeGroup where T1: AnyInterpolatable, T2: AnyInterpolatable, T3: AnyInterpolatable, T4: AnyInterpolatable, @@ -83,6 +94,7 @@ enum Keyframes { { Keyframes.combined( [k1, k2, k3, k4, k5, k6, k7], + requiresManualInterpolation: requiresManualInterpolation, makeCombinedResult: { untypedValues in guard let t1 = untypedValues[0] as? T1, @@ -110,6 +122,7 @@ enum Keyframes { _ k6: KeyframeGroup, _ k7: KeyframeGroup, _ k8: KeyframeGroup, + requiresManualInterpolation: Bool = false, makeCombinedResult: (T1, T2, T3, T4, T5, T6, T7, T8) -> CombinedResult) -> KeyframeGroup where T1: AnyInterpolatable, T2: AnyInterpolatable, T3: AnyInterpolatable, T4: AnyInterpolatable, @@ -117,6 +130,7 @@ enum Keyframes { { Keyframes.combined( [k1, k2, k3, k4, k5, k6, k7, k8], + requiresManualInterpolation: requiresManualInterpolation, makeCombinedResult: { untypedValues in guard let t1 = untypedValues[0] as? T1, @@ -147,6 +161,7 @@ enum Keyframes { _ k8: KeyframeGroup, _ k9: KeyframeGroup, _ k10: KeyframeGroup, + requiresManualInterpolation: Bool = false, makeCombinedResult: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) -> CombinedResult) -> KeyframeGroup where T1: AnyInterpolatable, T2: AnyInterpolatable, T3: AnyInterpolatable, T4: AnyInterpolatable, @@ -155,6 +170,7 @@ enum Keyframes { { Keyframes.combined( [k1, k2, k3, k4, k5, k6, k7, k8, k9, k10], + requiresManualInterpolation: requiresManualInterpolation, makeCombinedResult: { untypedValues in guard let t1 = untypedValues[0] as? T1, @@ -181,8 +197,12 @@ enum Keyframes { /// /// `makeCombinedResult` is a closure that takes an array of keyframe values (with the exact same length as `AnyKeyframeGroup`), /// casts them to the expected type, and combined them into the final resulting keyframe. + /// + /// `requiresManualInterpolation` determines whether the keyframes must be computed using `Keyframes.manuallyInterpolated`, + /// which interpolates the value at each frame, or if the keyframes can simply be combined. private static func combined( _ allGroups: [AnyKeyframeGroup], + requiresManualInterpolation: Bool, makeCombinedResult: ([Any]) throws -> CombinedResult?) rethrows -> KeyframeGroup @@ -195,6 +215,7 @@ enum Keyframes { let animatingKeyframes = untypedGroups.filter { $0.keyframes.count > 1 } guard + !requiresManualInterpolation, !allGroups.isEmpty, animatingKeyframes.allSatisfy({ $0.hasSameTimingParameters(as: animatingKeyframes[0]) }) else { diff --git a/Tests/Samples/Issues/issue_2055.json b/Tests/Samples/Issues/issue_2055.json new file mode 100755 index 0000000000..d8dd359273 --- /dev/null +++ b/Tests/Samples/Issues/issue_2055.json @@ -0,0 +1 @@ +{"v":"5.10.2","fr":29.9700012207031,"ip":0,"op":300.00001221925,"w":1023,"h":1036,"nm":"b1361","ddd":0,"assets":[{"id":"comp_0","nm":"background 2","fr":29.9700012207031,"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"background","refId":"comp_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[960,960,0],"ix":2,"l":2},"a":{"a":0,"k":[960,960,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":1920,"h":1920,"ip":0,"op":300.00001221925,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":1,"nm":"Sólido Gris medio-Azul 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[960,960,0],"ix":2,"l":2},"a":{"a":0,"k":[960,960,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"sw":1920,"sh":1920,"sc":"#283279","ip":0,"op":300.00001221925,"st":0,"bm":0}]},{"id":"comp_1","nm":"background","fr":29.9700012207031,"layers":[{"ddd":0,"ind":1,"ty":1,"nm":"Sólido Gris medio-Azul 1","sr":1,"ks":{"o":{"a":0,"k":58,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[960,960,0],"ix":2,"l":2},"a":{"a":0,"k":[960,960,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"sw":1920,"sh":1920,"sc":"#283279","ip":0,"op":300.00001221925,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"background contornos","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[856.053,1088.565,0],"ix":2,"l":2},"a":{"a":0,"k":[1088,793,0],"ix":1,"l":2},"s":{"a":0,"k":[230.735,230.735,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[15.378,-11.559],[162.927,29.327],[38.173,-17.239],[18.98,-48.496],[-8.307,-36.546],[-9.125,-17.353],[-6.859,-9.724],[-7.291,-6.802],[-23.103,-7.366],[-45.58,13.423],[-54.18,60.697],[-63.755,13.894],[-31.522,28.072],[-6.578,18.606],[0.835,19.174],[5.956,16.028],[9.815,12.335],[37.366,3.146],[2.109,0]],"o":[[-39.897,29.989],[-42.609,-7.67],[-48.609,21.951],[-12.101,30.917],[3.817,16.785],[5.068,9.642],[5.762,8.168],[16.663,15.547],[36.459,11.625],[54.427,-16.029],[32.896,-36.854],[27.927,-6.087],[14.983,-13.344],[6.212,-17.571],[-0.742,-16.994],[-5.547,-14.924],[-20.459,-25.713],[-2.169,-0.08],[-49.065,-0.001]],"v":[[123.08,-191.211],[-100.818,-153.972],[-225.033,-137.741],[-332.7,-28.194],[-340.02,74.007],[-320.768,125.312],[-302.904,154.378],[-283.278,176.865],[-223.091,211.598],[-97.914,210.332],[68.602,97.678],[217.796,69.374],[307.326,22.154],[339.538,-26.661],[347.493,-82.53],[337.371,-132.584],[313.957,-176.524],[226.664,-223.636],[220.245,-223.754]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0.39,0.114,0.569,0.863,0.526,0.07,0.34,0.606,0.663,0.026,0.111,0.349],"ix":9}},"s":{"a":0,"k":[112,-266],"ix":5},"e":{"a":0,"k":[210,138],"ix":6},"t":1,"nm":"Relleno de degradado 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[997.513,1016.256],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[124,124],"ix":3},"r":{"a":0,"k":-8,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":6,"ix":4},"sa":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":299.00001217852,"s":[360]}],"ix":5},"nm":"Transform"}],"nm":"Grupo 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[10.096,-2.598],[3.041,-0.977],[11.373,-10.562],[4.787,-10.744],[-7.951,-25.465],[-25.194,-15.137],[-8.904,-2.424],[-19.48,5.819],[-16.368,17.438],[-5.1,15.771],[1.616,11.544],[2.408,5.265],[16.228,9.078],[9.81,3.137],[14.92,0.812],[2.956,-0.001]],"o":[[-3.24,0.833],[-17.747,5.704],[-8.639,8.024],[-8.803,19.762],[7.551,24.179],[7.746,4.655],[19.244,5.24],[25.925,-7.745],[14.417,-15.361],[4.278,-13.231],[-0.889,-6.344],[-7.766,-16.986],[-8.823,-4.937],[-14.535,-4.648],[-2.984,-0.163],[-10.986,0]],"v":[[-37.198,-100.825],[-46.618,-98.109],[-90.208,-73.704],[-110.465,-45.503],[-113.204,24.377],[-63.417,88.57],[-38.318,99.344],[21.459,97.608],[86.578,56.78],[115.735,8.936],[119.54,-28.469],[114.477,-45.826],[76.334,-84.023],[48.192,-96.089],[3.537,-104.337],[-5.375,-104.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0.42,0.114,0.569,0.863,0.552,0.071,0.339,0.606,0.685,0.027,0.11,0.349],"ix":9}},"s":{"a":0,"k":[-68,-98],"ix":5},"e":{"a":0,"k":[-212,118],"ix":6},"t":2,"h":{"a":0,"k":0,"ix":7},"a":{"a":0,"k":0,"ix":8},"nm":"Relleno de degradado 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1555.374,397.987],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":345,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":8,"ix":4},"sa":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":299.00001217852,"s":[360]}],"ix":5},"nm":"Transform"}],"nm":"Grupo 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.119,-0.433],[16.318,-9.938],[8.172,-9.734],[-1.349,-25.796],[-2.544,-8.566],[-9.788,-13.996],[-16.09,-11.893],[-19.616,-3.538],[-13.213,4.961],[-5.464,3.891],[-8.487,23.793],[5.554,27.378],[8.286,13.223],[21.423,11.203],[4.006,1.672],[13.478,0]],"o":[[-18.721,1.966],[-11.014,6.708],[-15.031,17.904],[0.418,7.997],[4.631,15.584],[11.669,16.683],[18.267,13.501],[14.739,2.659],[6.114,-2.295],[17.769,-12.66],[8.937,-25.061],[-3.02,-14.886],[-10.909,-17.408],[-3.669,-1.919],[-12.143,-5.07],[-4.1,-0.001]],"v":[[-13.132,-125.559],[-66.835,-107.305],[-95.966,-82.519],[-118.678,-16.209],[-114.3,8.657],[-92.206,53.434],[-49.778,96.987],[8.202,123.554],[50.623,120.529],[68.018,111.185],[108.323,54.302],[114.472,-26.929],[97.688,-69.506],[49.586,-113.366],[38.074,-118.758],[-0.794,-126.212]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0.45,0.114,0.569,0.863,0.625,0.071,0.339,0.606,0.8,0.027,0.11,0.349],"ix":9}},"s":{"a":0,"k":[-2,-134],"ix":5},"e":{"a":0,"k":[-112,96],"ix":6},"t":1,"nm":"Relleno de degradado 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[788.587,415.075],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":8,"ix":4},"sa":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":299.00001217852,"s":[360]}],"ix":5},"nm":"Transform"}],"nm":"Grupo 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[14.95,-1.677],[1.526,-0.244],[63.22,-58.8],[240.559,28.425],[42.003,-37.549],[3.14,-52.191],[-17.541,-31.689],[-15.707,-14.386],[-22.747,-10.486],[-14.239,-4.148],[-33.058,9.152],[-41.774,35.733],[-43.883,14.71],[-33.439,-4.935],[-95.401,40.721],[-32.81,51.836],[-2.136,40.136],[30.588,44.351],[19.353,15.769],[24.064,10.361],[41.108,0.001]],"o":[[-1.362,0.152],[-28.194,4.508],[-98.643,91.746],[-73.438,-8.678],[-40.741,36.42],[-2.092,34.787],[9.465,17.1],[15.938,14.598],[12.196,5.622],[49.886,14.528],[52.928,-14.653],[31.064,-26.574],[59.832,-20.056],[41.215,6.083],[79.618,-33.985],[24.045,-37.987],[2.856,-53.649],[-13.64,-19.779],[-19.074,-15.541],[-34.018,-14.645],[-12.764,-0.001]],"v":[[209.182,-358.009],[205.16,-357.481],[55.843,-286.322],[-272.668,-46.506],[-447.996,4.279],[-515.793,144.019],[-493.207,245.755],[-455.541,293.302],[-397.61,331.259],[-357.971,345.965],[-235.953,351.056],[-103.745,263.28],[4.628,196.339],[130.635,186.153],[309.532,157.599],[476.439,24.872],[515.029,-93.886],[471.801,-244.643],[422.165,-298.299],[357.32,-337.471],[250.566,-360.492]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":5,"k":{"a":0,"k":[0.065,0.32,0.724,0.984,0.244,0.217,0.646,0.924,0.423,0.114,0.569,0.863,0.619,0.071,0.339,0.606,0.815,0.027,0.11,0.349],"ix":9}},"s":{"a":0,"k":[336,68],"ix":5},"e":{"a":0,"k":[168,-348],"ix":6},"t":1,"nm":"Relleno de degradado 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[683.417,728.925],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":5,"ix":4},"sa":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":299.00001217852,"s":[-360]}],"ix":5},"nm":"Transform"}],"nm":"sombra_4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[14.95,-1.677],[1.526,-0.244],[63.22,-58.8],[240.559,28.425],[42.003,-37.549],[3.14,-52.191],[-17.541,-31.689],[-15.707,-14.386],[-22.747,-10.486],[-14.239,-4.148],[-33.058,9.152],[-41.774,35.733],[-43.883,14.71],[-33.439,-4.935],[-95.401,40.721],[-32.81,51.836],[-2.136,40.136],[30.588,44.351],[19.353,15.769],[24.064,10.361],[41.108,0.001]],"o":[[-1.362,0.152],[-28.194,4.508],[-98.643,91.746],[-73.438,-8.678],[-40.741,36.42],[-2.092,34.787],[9.465,17.1],[15.938,14.598],[12.196,5.622],[49.886,14.528],[52.928,-14.653],[31.064,-26.574],[59.832,-20.056],[41.215,6.083],[79.618,-33.985],[24.045,-37.987],[2.856,-53.649],[-13.64,-19.779],[-19.074,-15.541],[-34.018,-14.645],[-12.764,-0.001]],"v":[[209.182,-358.009],[205.16,-357.481],[55.843,-286.322],[-272.668,-46.506],[-447.996,4.279],[-515.793,144.019],[-493.207,245.755],[-455.541,293.302],[-397.61,331.259],[-357.971,345.965],[-235.953,351.056],[-103.745,263.28],[4.628,196.339],[130.635,186.153],[309.532,157.599],[476.439,24.872],[515.029,-93.886],[471.801,-244.643],[422.165,-298.299],[357.32,-337.471],[250.566,-360.492]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":5,"k":{"a":0,"k":[0,0.557,0.784,0.929,0.219,0.335,0.676,0.896,0.438,0.114,0.569,0.863,0.644,0.084,0.373,0.69,0.85,0.055,0.176,0.518],"ix":9}},"s":{"a":0,"k":[-4,-348],"ix":5},"e":{"a":0,"k":[-56,484],"ix":6},"t":1,"nm":"Relleno de degradado 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[683.417,728.925],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":5,"ix":4},"sa":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":299.00001217852,"s":[-360]}],"ix":5},"nm":"Transform"}],"nm":"Grupo 4","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.449,-0.727],[45.039,-35.544],[13.981,-19.163],[8.51,-24.426],[-5.013,-50.033],[-4.97,-17.693],[-51.648,-57.122],[-27.475,-20.118],[-48.65,-16.983],[-134.56,26.728],[-31.333,13.436],[-24.746,18.061],[-22.168,55.307],[11.908,46.814],[10.625,15.524],[15.646,9.69],[5.77,2.494],[21.541,-2.035],[173.276,215.351],[3.629,3.776],[64.183,0.003]],"o":[[-55.239,4.756],[-18.075,14.266],[-14.174,19.429],[-13.254,38.032],[1.566,15.631],[15.683,55.832],[21.103,23.338],[36.78,26.931],[90.721,31.672],[38.368,-7.62],[31.655,-13.573],[59.724,-43.592],[22.331,-55.714],[-5.022,-19.749],[-10.478,-15.314],[-5.216,-3.231],[-22.623,-9.781],[-101.843,9.62],[-3.307,-4.111],[-41.357,-43.034],[-8.394,0]],"v":[[-237.767,-354.582],[-393.616,-293.996],[-442.052,-243.845],[-476.445,-178.056],[-490.187,-45.925],[-480.408,4.292],[-380.197,181.028],[-307.384,246.711],[-179.367,313.778],[157.721,328.944],[262.207,297.009],[346.739,249.197],[468.627,95.746],[483.292,-63.264],[459.749,-116.564],[420.492,-154.445],[404.01,-163.045],[338.138,-172.754],[-35.075,-279.507],[-45.484,-291.337],[-212.494,-355.673]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":5,"k":{"a":0,"k":[0,0.557,0.784,0.929,0.229,0.335,0.676,0.896,0.458,0.114,0.569,0.863,0.644,0.084,0.373,0.69,0.83,0.055,0.176,0.518],"ix":9}},"s":{"a":0,"k":[-356,-160],"ix":5},"e":{"a":0,"k":[488,216],"ix":6},"t":2,"h":{"a":0,"k":1.035,"ix":7},"a":{"a":0,"k":37.63,"ix":8},"nm":"Relleno de degradado 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1082.643,1087.576],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":6,"ix":4},"sa":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":299.00001217852,"s":[180]}],"ix":5},"nm":"Transform"}],"nm":"sombra_5","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.449,-0.727],[45.039,-35.544],[13.981,-19.163],[8.51,-24.426],[-5.013,-50.033],[-4.97,-17.693],[-51.648,-57.122],[-27.475,-20.118],[-48.65,-16.983],[-134.56,26.728],[-31.333,13.436],[-24.746,18.061],[-22.168,55.307],[11.908,46.814],[10.625,15.524],[15.646,9.69],[5.77,2.494],[21.541,-2.035],[173.276,215.351],[3.629,3.776],[64.183,0.003]],"o":[[-55.239,4.756],[-18.075,14.266],[-14.174,19.429],[-13.254,38.032],[1.566,15.631],[15.683,55.832],[21.103,23.338],[36.78,26.931],[90.721,31.672],[38.368,-7.62],[31.655,-13.573],[59.724,-43.592],[22.331,-55.714],[-5.022,-19.749],[-10.478,-15.314],[-5.216,-3.231],[-22.623,-9.781],[-101.843,9.62],[-3.307,-4.111],[-41.357,-43.034],[-8.394,0]],"v":[[-237.767,-354.582],[-393.616,-293.996],[-442.052,-243.845],[-476.445,-178.056],[-490.187,-45.925],[-480.408,4.292],[-380.197,181.028],[-307.384,246.711],[-179.367,313.778],[157.721,328.944],[262.207,297.009],[346.739,249.197],[468.627,95.746],[483.292,-63.264],[459.749,-116.564],[420.492,-154.445],[404.01,-163.045],[338.138,-172.754],[-35.075,-279.507],[-45.484,-291.337],[-212.494,-355.673]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":5,"k":{"a":0,"k":[0,0.557,0.784,0.929,0.219,0.335,0.676,0.896,0.438,0.114,0.569,0.863,0.63,0.084,0.373,0.69,0.822,0.055,0.176,0.518],"ix":9}},"s":{"a":0,"k":[-16,-228],"ix":5},"e":{"a":0,"k":[-80,536],"ix":6},"t":1,"nm":"Relleno de degradado 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1082.643,1087.576],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":6,"ix":4},"sa":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":299.00001217852,"s":[180]}],"ix":5},"nm":"Transform"}],"nm":"Grupo 5","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.449,-0.727],[45.038,-35.543],[13.981,-19.163],[8.512,-24.425],[-5.013,-50.033],[-4.97,-17.693],[-51.649,-57.121],[-27.476,-20.117],[-48.65,-16.984],[-134.561,26.727],[-31.333,13.434],[-24.745,18.06],[-22.169,55.307],[11.908,46.814],[10.624,15.525],[15.646,9.691],[5.769,2.494],[21.54,-2.035],[173.275,215.351],[3.628,3.774],[64.184,0.002]],"o":[[-55.238,4.756],[-18.077,14.265],[-14.174,19.428],[-13.252,38.031],[1.566,15.63],[15.684,55.832],[21.102,23.339],[36.781,26.931],[90.721,31.672],[38.367,-7.622],[31.654,-13.573],[59.724,-43.593],[22.332,-55.714],[-5.022,-19.748],[-10.479,-15.313],[-5.217,-3.229],[-22.624,-9.78],[-101.843,9.621],[-3.308,-4.112],[-41.358,-43.034],[-8.395,0]],"v":[[-237.768,-354.581],[-393.615,-293.996],[-442.052,-243.845],[-476.447,-178.056],[-490.187,-45.924],[-480.408,4.293],[-380.197,181.028],[-307.385,246.711],[-179.368,313.779],[157.722,328.946],[262.207,297.01],[346.739,249.198],[468.626,95.746],[483.292,-63.264],[459.75,-116.564],[420.491,-154.445],[404.01,-163.046],[338.139,-172.754],[-35.074,-279.507],[-45.484,-291.336],[-212.493,-355.672]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":5,"k":{"a":0,"k":[0,0.557,0.784,0.929,0.226,0.335,0.676,0.896,0.452,0.114,0.569,0.863,0.677,0.084,0.373,0.69,0.902,0.055,0.176,0.518],"ix":9}},"s":{"a":0,"k":[-332,-188],"ix":5},"e":{"a":0,"k":[-32,-252],"ix":6},"t":2,"h":{"a":0,"k":0,"ix":7},"a":{"a":0,"k":0,"ix":8},"nm":"Relleno de degradado 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1514.38,803.215],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":4,"ix":4},"sa":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":299.00001217852,"s":[360]}],"ix":5},"nm":"Transform"}],"nm":"sombra_6","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.449,-0.727],[45.038,-35.543],[13.981,-19.163],[8.512,-24.425],[-5.013,-50.033],[-4.97,-17.693],[-51.649,-57.121],[-27.476,-20.117],[-48.65,-16.984],[-134.561,26.727],[-31.333,13.434],[-24.745,18.06],[-22.169,55.307],[11.908,46.814],[10.624,15.525],[15.646,9.691],[5.769,2.494],[21.54,-2.035],[173.275,215.351],[3.628,3.774],[64.184,0.002]],"o":[[-55.238,4.756],[-18.077,14.265],[-14.174,19.428],[-13.252,38.031],[1.566,15.63],[15.684,55.832],[21.102,23.339],[36.781,26.931],[90.721,31.672],[38.367,-7.622],[31.654,-13.573],[59.724,-43.593],[22.332,-55.714],[-5.022,-19.748],[-10.479,-15.313],[-5.217,-3.229],[-22.624,-9.78],[-101.843,9.621],[-3.308,-4.112],[-41.358,-43.034],[-8.395,0]],"v":[[-237.768,-354.581],[-393.615,-293.996],[-442.052,-243.845],[-476.447,-178.056],[-490.187,-45.924],[-480.408,4.293],[-380.197,181.028],[-307.385,246.711],[-179.368,313.779],[157.722,328.946],[262.207,297.01],[346.739,249.198],[468.626,95.746],[483.292,-63.264],[459.75,-116.564],[420.491,-154.445],[404.01,-163.046],[338.139,-172.754],[-35.074,-279.507],[-45.484,-291.336],[-212.493,-355.672]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":5,"k":{"a":0,"k":[0,0.557,0.784,0.929,0.228,0.335,0.676,0.896,0.455,0.114,0.569,0.863,0.666,0.084,0.373,0.69,0.877,0.055,0.176,0.518],"ix":9}},"s":{"a":0,"k":[52,-364],"ix":5},"e":{"a":0,"k":[68,584],"ix":6},"t":1,"nm":"Relleno de degradado 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1514.38,803.215],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":4,"ix":4},"sa":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":299.00001217852,"s":[360]}],"ix":5},"nm":"Transform"}],"nm":"Grupo 6","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[44.713,-29.896],[19.542,-48.244],[3.377,-27.019],[-0.099,-16.528],[-2.909,-13.54],[-20.481,-26.733],[-62.6,-20.882],[-109.929,26.168],[-83.689,-34.773],[-58.207,6.971],[-22.266,15.982],[-14.268,22.516],[-5.935,22.992],[1.395,21.851],[40.09,33.247],[27.849,-1.008],[162.403,162.755],[57.186,10.656],[18.835,0.001]],"o":[[-38.334,25.631],[-8.975,22.158],[-1.877,15.012],[0.082,13.883],[6.651,30.945],[32.325,42.191],[74.754,24.936],[66.743,-15.887],[36.661,15.232],[27.668,-3.314],[21.029,-15.094],[12.643,-19.956],[5.526,-21.412],[-2.906,-45.544],[-58.447,-43.994],[-69.274,2.509],[-42.471,-42.562],[-18.669,-3.479],[-54.637,-0.001]],"v":[[-372.522,-263.895],[-461.99,-153.229],[-480.777,-79.478],[-483.488,-32.171],[-478.973,9.036],[-437.951,96.396],[-294.286,194.318],[-15.088,198.107],[177.409,284.279],[316.925,301.534],[392.385,271.471],[445.801,214.112],[473.996,149.034],[482.192,80.37],[420.103,-42.614],[276.315,-87.885],[-8.414,-223.172],[-162.859,-303.276],[-219.291,-308.504]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":5,"k":{"a":0,"k":[0,0.557,0.784,0.929,0.209,0.335,0.676,0.896,0.417,0.114,0.569,0.863,0.56,0.084,0.373,0.69,0.702,0.055,0.176,0.518],"ix":9}},"s":{"a":0,"k":[200,-88],"ix":5},"e":{"a":0,"k":[-36,336],"ix":6},"t":1,"nm":"Relleno de degradado 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1235.804,351.077],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":7,"ix":4},"sa":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":299.00001217852,"s":[180]}],"ix":5},"nm":"Transform"}],"nm":"Grupo 7","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300.00001221925,"st":0,"ct":1,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"background 2","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[511.5,518,0],"ix":2,"l":2},"a":{"a":0,"k":[960,960,0],"ix":1,"l":2},"s":{"a":0,"k":[54,54,100],"ix":6,"l":2}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":0,"k":{"i":[[517.447,0],[0,-517.991],[-517.447,0],[0,517.991]],"o":[[-517.447,0],[0,517.991],[517.447,0],[0,-517.991]],"v":[[958.958,21.111],[22.037,959.016],[958.958,1896.921],[1895.88,959.016]],"c":true},"ix":1},"o":{"a":0,"k":100,"ix":3},"x":{"a":0,"k":0,"ix":4},"nm":"Mask 1"}],"w":1920,"h":1920,"ip":0,"op":300.00001221925,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/Tests/__Snapshots__/AutomaticEngineTests/testAutomaticEngineDetection.Issues-issue_2055.txt b/Tests/__Snapshots__/AutomaticEngineTests/testAutomaticEngineDetection.Issues-issue_2055.txt new file mode 100644 index 0000000000..4b816d7353 --- /dev/null +++ b/Tests/__Snapshots__/AutomaticEngineTests/testAutomaticEngineDetection.Issues-issue_2055.txt @@ -0,0 +1 @@ +Supports Core Animation engine \ No newline at end of file diff --git a/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Issues-issue_2055-0.png b/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Issues-issue_2055-0.png new file mode 100644 index 0000000000..a89ac09784 Binary files /dev/null and b/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Issues-issue_2055-0.png differ diff --git a/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Issues-issue_2055-100.png b/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Issues-issue_2055-100.png new file mode 100644 index 0000000000..74f0aac80a Binary files /dev/null and b/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Issues-issue_2055-100.png differ diff --git a/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Issues-issue_2055-25.png b/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Issues-issue_2055-25.png new file mode 100644 index 0000000000..7042da3fe0 Binary files /dev/null and b/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Issues-issue_2055-25.png differ diff --git a/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Issues-issue_2055-50.png b/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Issues-issue_2055-50.png new file mode 100644 index 0000000000..e1deb0adbf Binary files /dev/null and b/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Issues-issue_2055-50.png differ diff --git a/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Issues-issue_2055-75.png b/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Issues-issue_2055-75.png new file mode 100644 index 0000000000..48da8d22f4 Binary files /dev/null and b/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Issues-issue_2055-75.png differ diff --git a/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Issues-issue_2055-0.png b/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Issues-issue_2055-0.png new file mode 100644 index 0000000000..9a9237a1ac Binary files /dev/null and b/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Issues-issue_2055-0.png differ diff --git a/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Issues-issue_2055-100.png b/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Issues-issue_2055-100.png new file mode 100644 index 0000000000..9a9237a1ac Binary files /dev/null and b/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Issues-issue_2055-100.png differ diff --git a/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Issues-issue_2055-25.png b/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Issues-issue_2055-25.png new file mode 100644 index 0000000000..147cb13718 Binary files /dev/null and b/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Issues-issue_2055-25.png differ diff --git a/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Issues-issue_2055-50.png b/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Issues-issue_2055-50.png new file mode 100644 index 0000000000..93216ecf1c Binary files /dev/null and b/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Issues-issue_2055-50.png differ diff --git a/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Issues-issue_2055-75.png b/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Issues-issue_2055-75.png new file mode 100644 index 0000000000..65d98b4c3f Binary files /dev/null and b/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Issues-issue_2055-75.png differ