diff --git a/Lottie.xcodeproj/project.pbxproj b/Lottie.xcodeproj/project.pbxproj index d2550e3603..e55e93d49c 100644 --- a/Lottie.xcodeproj/project.pbxproj +++ b/Lottie.xcodeproj/project.pbxproj @@ -559,6 +559,9 @@ 6DB3BDC328245AA2002A276D /* ParsingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DB3BDBF28245A6A002A276D /* ParsingTests.swift */; }; 6DEF696E2824A76C007D640F /* BundleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DEF696D2824A76C007D640F /* BundleTests.swift */; }; A1D5BAAC27C731A500777D06 /* DataURLTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1D5BAAB27C731A500777D06 /* DataURLTests.swift */; }; + A40460592832C52B00ACFEDC /* BlendMode+Filter.swift in Sources */ = {isa = PBXBuildFile; fileRef = A40460582832C52B00ACFEDC /* BlendMode+Filter.swift */; }; + A404605A2832C52B00ACFEDC /* BlendMode+Filter.swift in Sources */ = {isa = PBXBuildFile; fileRef = A40460582832C52B00ACFEDC /* BlendMode+Filter.swift */; }; + A404605B2832C52B00ACFEDC /* BlendMode+Filter.swift in Sources */ = {isa = PBXBuildFile; fileRef = A40460582832C52B00ACFEDC /* BlendMode+Filter.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -769,6 +772,7 @@ 6DB3BDBF28245A6A002A276D /* ParsingTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParsingTests.swift; sourceTree = ""; }; 6DEF696D2824A76C007D640F /* BundleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BundleTests.swift; sourceTree = ""; }; A1D5BAAB27C731A500777D06 /* DataURLTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataURLTests.swift; sourceTree = ""; }; + A40460582832C52B00ACFEDC /* BlendMode+Filter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "BlendMode+Filter.swift"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -1248,6 +1252,7 @@ 2E9C95C02822F43100677516 /* Extensions */ = { isa = PBXGroup; children = ( + A40460582832C52B00ACFEDC /* BlendMode+Filter.swift */, 2E9C95C12822F43100677516 /* CGFloatExtensions.swift */, 2E9C95C22822F43100677516 /* CGColor+RGB.swift */, 2E9C95C32822F43100677516 /* AnimationKeypathExtension.swift */, @@ -1818,6 +1823,7 @@ 2EAF5AE027A0798700E00531 /* Keyframe.swift in Sources */, 2E9C960F2822F43100677516 /* Animation.swift in Sources */, 2E9C969C2822F43100677516 /* StarNode.swift in Sources */, + A40460592832C52B00ACFEDC /* BlendMode+Filter.swift in Sources */, 2E9C96542822F43100677516 /* ImageCompositionLayer.swift in Sources */, 2EAF5AB327A0798700E00531 /* AnimationImageProvider.swift in Sources */, 2E9C95F12822F43100677516 /* GradientStroke.swift in Sources */, @@ -2023,6 +2029,7 @@ 2EAF5AE127A0798700E00531 /* Keyframe.swift in Sources */, 2E9C96102822F43100677516 /* Animation.swift in Sources */, 2E9C969D2822F43100677516 /* StarNode.swift in Sources */, + A404605A2832C52B00ACFEDC /* BlendMode+Filter.swift in Sources */, 2E9C96552822F43100677516 /* ImageCompositionLayer.swift in Sources */, 2EAF5AB427A0798700E00531 /* AnimationImageProvider.swift in Sources */, 2E9C95F22822F43100677516 /* GradientStroke.swift in Sources */, @@ -2208,6 +2215,7 @@ 2EAF5AE227A0798700E00531 /* Keyframe.swift in Sources */, 2E9C96112822F43100677516 /* Animation.swift in Sources */, 2E9C969E2822F43100677516 /* StarNode.swift in Sources */, + A404605B2832C52B00ACFEDC /* BlendMode+Filter.swift in Sources */, 2E9C96562822F43100677516 /* ImageCompositionLayer.swift in Sources */, 2EAF5AB527A0798700E00531 /* AnimationImageProvider.swift in Sources */, 2E9C95F32822F43100677516 /* GradientStroke.swift in Sources */, diff --git a/Sources/Private/CoreAnimation/Layers/BaseCompositionLayer.swift b/Sources/Private/CoreAnimation/Layers/BaseCompositionLayer.swift index a3096ea632..fed819a738 100644 --- a/Sources/Private/CoreAnimation/Layers/BaseCompositionLayer.swift +++ b/Sources/Private/CoreAnimation/Layers/BaseCompositionLayer.swift @@ -15,6 +15,7 @@ class BaseCompositionLayer: BaseAnimationLayer { super.init() setupSublayers() + compositingFilter = layerModel.blendMode.filterName name = layerModel.name } diff --git a/Sources/Private/MainThread/LayerContainers/CompLayers/CompositionLayer.swift b/Sources/Private/MainThread/LayerContainers/CompLayers/CompositionLayer.swift index 3cd9e8fb22..38c27093b4 100644 --- a/Sources/Private/MainThread/LayerContainers/CompLayers/CompositionLayer.swift +++ b/Sources/Private/MainThread/LayerContainers/CompLayers/CompositionLayer.swift @@ -49,6 +49,7 @@ class CompositionLayer: CALayer, KeypathSearchable { "sublayerTransform" : NSNull(), "hidden" : NSNull(), ] + compositingFilter = layer.blendMode.filterName addSublayer(contentsLayer) if let maskLayer = maskLayer { diff --git a/Sources/Private/Utility/Extensions/BlendMode+Filter.swift b/Sources/Private/Utility/Extensions/BlendMode+Filter.swift new file mode 100644 index 0000000000..ef93a39c25 --- /dev/null +++ b/Sources/Private/Utility/Extensions/BlendMode+Filter.swift @@ -0,0 +1,31 @@ +// +// File.swift +// +// +// Created by Denis Koryttsev on 10.05.2022. +// + +extension BlendMode { + /// The Core Image filter name for this `BlendMode`, that can be applied to a `CALayer`'s `compositingFilter`. + /// Supported compositing filters are defined here: https://developer.apple.com/library/archive/documentation/GraphicsImaging/Reference/CoreImageFilterReference/index.html#//apple_ref/doc/uid/TP30000136-SW71 + var filterName: String? { + switch self { + case .normal: return nil + case .multiply: return "multiplyBlendMode" + case .screen: return "screenBlendMode" + case .overlay: return "overlayBlendMode" + case .darken: return "darkenBlendMode" + case .lighten: return "lightenBlendMode" + case .colorDodge: return "colorDodgeBlendMode" + case .colorBurn: return "colorBurnBlendMode" + case .hardLight: return "hardLightBlendMode" + case .softLight: return "softLightBlendMode" + case .difference: return "differenceBlendMode" + case .exclusion: return "exclusionBlendMode" + case .hue: return "hueBlendMode" + case .saturation: return "saturationBlendMode" + case .color: return "colorBlendMode" + case .luminosity: return "luminosityBlendMode" + } + } +} diff --git a/Tests/Samples/Nonanimating/blend_mode_test.json b/Tests/Samples/Nonanimating/blend_mode_test.json new file mode 100644 index 0000000000..1570af68f2 --- /dev/null +++ b/Tests/Samples/Nonanimating/blend_mode_test.json @@ -0,0 +1 @@ +{"v":"5.9","meta":{"g":"Charlottie"},"ddd":0,"ip":0.000000,"op":1.000000,"fr":60.000000,"w":500,"h":500,"assets":[{"id":"precomp_3","layers":[{"nm":"Shape layer","ind":1,"ty":4,"ddd":0,"ip":0.000000,"op":300.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[-224.765688,-224.565598,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":0,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"shapes":[{"ty":"gr","nm":"Group","hd":false,"it":[{"ty":"rc","nm":"Rectangle","hd":false,"d":1,"p":{"k":[250.104341,250.000000,0.000000]},"s":{"k":[50.000000,50.000000,0.000000]},"r":{"k":0.000000}},{"ty":"fl","nm":"Fill","hd":false,"o":{"k":100.000000},"c":{"k":[0.999456,0.986359,0.253202,1.000000]},"r":2},{"ty":"tr","nm":"Group","hd":false,"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[0.000000,0.000000,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000},"sk":{"k":0.000000},"sa":{"k":0.000000}}]}]},{"nm":"Image layer","ind":2,"ty":2,"ddd":0,"ip":0.000000,"op":300.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[-0.156402,36.758697,0.000000]},"s":{"k":[10.000000,10.000000,0.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":0,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"refId":"image_0"}]},{"id":"precomp_9","layers":[{"nm":"Shape layer","ind":1,"ty":4,"ddd":0,"ip":0.000000,"op":300.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[-224.765688,-224.565598,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":0,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"shapes":[{"ty":"gr","nm":"Group","hd":false,"it":[{"ty":"rc","nm":"Rectangle","hd":false,"d":1,"p":{"k":[250.104341,250.000000,0.000000]},"s":{"k":[50.000000,50.000000,0.000000]},"r":{"k":0.000000}},{"ty":"fl","nm":"Fill","hd":false,"o":{"k":100.000000},"c":{"k":[0.999456,0.986359,0.253202,1.000000]},"r":2},{"ty":"tr","nm":"Group","hd":false,"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[0.000000,0.000000,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000},"sk":{"k":0.000000},"sa":{"k":0.000000}}]}]},{"nm":"Image layer","ind":2,"ty":2,"ddd":0,"ip":0.000000,"op":300.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[-0.156402,36.758697,0.000000]},"s":{"k":[10.000000,10.000000,0.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":0,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"refId":"image_0"}]},{"id":"precomp_11","layers":[{"nm":"Shape layer","ind":1,"ty":4,"ddd":0,"ip":0.000000,"op":300.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[-224.765688,-224.565598,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":0,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"shapes":[{"ty":"gr","nm":"Group","hd":false,"it":[{"ty":"rc","nm":"Rectangle","hd":false,"d":1,"p":{"k":[250.104341,250.000000,0.000000]},"s":{"k":[50.000000,50.000000,0.000000]},"r":{"k":0.000000}},{"ty":"fl","nm":"Fill","hd":false,"o":{"k":100.000000},"c":{"k":[0.999456,0.986359,0.253202,1.000000]},"r":2},{"ty":"tr","nm":"Group","hd":false,"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[0.000000,0.000000,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000},"sk":{"k":0.000000},"sa":{"k":0.000000}}]}]},{"nm":"Image layer","ind":2,"ty":2,"ddd":0,"ip":0.000000,"op":300.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[-0.156402,36.758697,0.000000]},"s":{"k":[10.000000,10.000000,0.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":0,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"refId":"image_0"}]},{"id":"precomp_7","layers":[{"nm":"Shape layer","ind":1,"ty":4,"ddd":0,"ip":0.000000,"op":300.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[-224.765688,-224.565598,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":0,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"shapes":[{"ty":"gr","nm":"Group","hd":false,"it":[{"ty":"rc","nm":"Rectangle","hd":false,"d":1,"p":{"k":[250.104341,250.000000,0.000000]},"s":{"k":[50.000000,50.000000,0.000000]},"r":{"k":0.000000}},{"ty":"fl","nm":"Fill","hd":false,"o":{"k":100.000000},"c":{"k":[0.999456,0.986359,0.253202,1.000000]},"r":2},{"ty":"tr","nm":"Group","hd":false,"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[0.000000,0.000000,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000},"sk":{"k":0.000000},"sa":{"k":0.000000}}]}]},{"nm":"Image layer","ind":2,"ty":2,"ddd":0,"ip":0.000000,"op":300.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[-0.156402,36.758697,0.000000]},"s":{"k":[10.000000,10.000000,0.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":0,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"refId":"image_0"}]},{"id":"precomp_10","layers":[{"nm":"Label layer","ind":1,"ty":5,"ddd":0,"ip":0.000000,"op":1.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[46.205804,124.896042,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":0,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"t":{"d":{"k":[{"s":{"t":"Luminosity","s":15.000000,"f":"Helvetica-Regular","j":2,"tr":0,"lh":24.000000,"ls":0.000000,"fc":[0.000000,0.000000,0.000000,1.000000]},"t":0.000000,"h":1}]},"a":[],"p":{},"m":{"a":{"k":[0.000000,0.000000,0.000000]},"g":1.000000}}},{"nm":"Solid layer","ind":2,"ty":1,"ddd":0,"ip":0.000000,"op":1.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[1.642689,62.457701,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":15,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"sc":"#76ba40","sw":50,"sh":50},{"nm":"Precomp layer","ind":3,"ty":0,"ddd":0,"ip":0.000000,"op":1.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[0.000000,0.000000,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":15,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"refId":"precomp_11","w":100,"h":100},{"nm":"Text layer","ind":4,"ty":5,"ddd":0,"ip":0.000000,"op":300.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[43.590349,54.414657,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":15,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"t":{"d":{"k":[{"s":{"t":"Text","s":24.000000,"f":"Helvetica-Regular","j":0,"tr":0,"lh":24.000000,"ls":0.000000,"fc":[0.000000,0.381363,0.998245,1.000000]},"t":0.000000,"h":1}]},"a":[],"p":{},"m":{"a":{"k":[0.000000,0.000000,0.000000]},"g":1.000000}}},{"nm":"Shape layer","ind":5,"ty":4,"ddd":0,"ip":0.000000,"op":300.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[-195.205281,-199.665312,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":15,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"shapes":[{"ty":"gr","nm":"Group","hd":false,"it":[{"ty":"rc","nm":"Rectangle","hd":false,"d":1,"p":{"k":[250.104341,250.000000,0.000000]},"s":{"k":[50.000000,50.000000,0.000000]},"r":{"k":0.000000}},{"ty":"fl","nm":"Fill","hd":false,"o":{"k":100.000000},"c":{"k":[1.000000,0.252707,0.075909,1.000000]},"r":2},{"ty":"tr","nm":"Group","hd":false,"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[0.000000,0.000000,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000},"sk":{"k":0.000000},"sa":{"k":0.000000}}]}]}]},{"id":"precomp_4","layers":[{"nm":"Label layer","ind":1,"ty":5,"ddd":0,"ip":0.000000,"op":1.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[46.205804,124.896042,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":0,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"t":{"d":{"k":[{"s":{"t":"Overlay","s":15.000000,"f":"Helvetica-Regular","j":2,"tr":0,"lh":24.000000,"ls":0.000000,"fc":[0.000000,0.000000,0.000000,1.000000]},"t":0.000000,"h":1}]},"a":[],"p":{},"m":{"a":{"k":[0.000000,0.000000,0.000000]},"g":1.000000}}},{"nm":"Solid layer","ind":2,"ty":1,"ddd":0,"ip":0.000000,"op":1.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[1.642689,62.457701,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":3,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"sc":"#76ba40","sw":50,"sh":50},{"nm":"Precomp layer","ind":3,"ty":0,"ddd":0,"ip":0.000000,"op":1.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[0.000000,0.000000,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":3,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"refId":"precomp_5","w":500,"h":500},{"nm":"Text layer","ind":4,"ty":5,"ddd":0,"ip":0.000000,"op":300.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[43.590349,54.414657,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":3,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"t":{"d":{"k":[{"s":{"t":"Text","s":24.000000,"f":"Helvetica-Regular","j":0,"tr":0,"lh":24.000000,"ls":0.000000,"fc":[0.000000,0.381363,0.998245,1.000000]},"t":0.000000,"h":1}]},"a":[],"p":{},"m":{"a":{"k":[0.000000,0.000000,0.000000]},"g":1.000000}}},{"nm":"Shape layer","ind":5,"ty":4,"ddd":0,"ip":0.000000,"op":300.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[-195.205281,-199.665312,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":3,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"shapes":[{"ty":"gr","nm":"Group","hd":false,"it":[{"ty":"rc","nm":"Rectangle","hd":false,"d":1,"p":{"k":[250.104341,250.000000,0.000000]},"s":{"k":[50.000000,50.000000,0.000000]},"r":{"k":0.000000}},{"ty":"fl","nm":"Fill","hd":false,"o":{"k":100.000000},"c":{"k":[1.000000,0.252707,0.075909,1.000000]},"r":2},{"ty":"tr","nm":"Group","hd":false,"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[0.000000,0.000000,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000},"sk":{"k":0.000000},"sa":{"k":0.000000}}]}]}]},{"id":"image_0","w":512,"h":512,"u":"","p":"data:image/png;base64,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","e":1},{"id":"precomp_1","layers":[{"nm":"Label layer","ind":1,"ty":5,"ddd":0,"ip":0.000000,"op":1.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[46.205804,124.896042,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":0,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"t":{"d":{"k":[{"s":{"t":"Multiply","s":15.000000,"f":"Helvetica-Regular","j":2,"tr":0,"lh":24.000000,"ls":0.000000,"fc":[0.000000,0.000000,0.000000,1.000000]},"t":0.000000,"h":1}]},"a":[],"p":{},"m":{"a":{"k":[0.000000,0.000000,0.000000]},"g":1.000000}}},{"nm":"Solid layer","ind":4,"ty":1,"ddd":0,"ip":0.000000,"op":1.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[1.642689,62.457701,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":1,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"sc":"#76ba40","sw":50,"sh":50},{"nm":"Precomp layer","ind":3,"ty":0,"ddd":0,"ip":0.000000,"op":300.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[0.000000,0.000000,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":1,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"refId":"precomp_0","w":100,"h":100},{"nm":"Text layer","ind":5,"ty":5,"ddd":0,"ip":0.000000,"op":300.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[43.590349,54.414657,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":1,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"t":{"d":{"k":[{"s":{"t":"Text","s":24.000000,"f":"Helvetica-Regular","j":0,"tr":0,"lh":24.000000,"ls":0.000000,"fc":[0.000000,0.381363,0.998245,1.000000]},"t":0.000000,"h":1}]},"a":[],"p":{},"m":{"a":{"k":[0.000000,0.000000,0.000000]},"g":1.000000}}},{"nm":"Shape layer","ind":2,"ty":4,"ddd":0,"ip":0.000000,"op":300.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[-195.205281,-199.665312,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":2,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"shapes":[{"ty":"gr","nm":"Group","hd":false,"it":[{"ty":"rc","nm":"Rectangle","hd":false,"d":1,"p":{"k":[250.104341,250.000000,0.000000]},"s":{"k":[50.000000,50.000000,0.000000]},"r":{"k":0.000000}},{"ty":"fl","nm":"Fill","hd":false,"o":{"k":100.000000},"c":{"k":[1.000000,0.252707,0.075909,1.000000]},"r":2},{"ty":"tr","nm":"Group","hd":false,"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[0.000000,0.000000,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000},"sk":{"k":0.000000},"sa":{"k":0.000000}}]}]}]},{"id":"precomp_2","layers":[{"nm":"Label layer","ind":1,"ty":5,"ddd":0,"ip":0.000000,"op":1.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[46.205804,124.896042,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":0,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"t":{"d":{"k":[{"s":{"t":"Screen","s":15.000000,"f":"Helvetica-Regular","j":2,"tr":0,"lh":24.000000,"ls":0.000000,"fc":[0.000000,0.000000,0.000000,1.000000]},"t":0.000000,"h":1}]},"a":[],"p":{},"m":{"a":{"k":[0.000000,0.000000,0.000000]},"g":1.000000}}},{"nm":"Solid layer","ind":2,"ty":1,"ddd":0,"ip":0.000000,"op":1.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[1.642689,62.457701,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":2,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"sc":"#76ba40","sw":50,"sh":50},{"nm":"Precomp layer","ind":3,"ty":0,"ddd":0,"ip":0.000000,"op":1.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[0.000000,0.000000,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":2,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"refId":"precomp_3","w":100,"h":100},{"nm":"Text layer","ind":4,"ty":5,"ddd":0,"ip":0.000000,"op":300.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[43.590349,54.414657,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":2,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"t":{"d":{"k":[{"s":{"t":"Text","s":24.000000,"f":"Helvetica-Regular","j":0,"tr":0,"lh":24.000000,"ls":0.000000,"fc":[0.000000,0.381363,0.998245,1.000000]},"t":0.000000,"h":1}]},"a":[],"p":{},"m":{"a":{"k":[0.000000,0.000000,0.000000]},"g":1.000000}}},{"nm":"Shape layer","ind":5,"ty":4,"ddd":0,"ip":0.000000,"op":300.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[-195.205281,-199.665312,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":2,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"shapes":[{"ty":"gr","nm":"Group","hd":false,"it":[{"ty":"rc","nm":"Rectangle","hd":false,"d":1,"p":{"k":[250.104341,250.000000,0.000000]},"s":{"k":[50.000000,50.000000,0.000000]},"r":{"k":0.000000}},{"ty":"fl","nm":"Fill","hd":false,"o":{"k":100.000000},"c":{"k":[1.000000,0.252707,0.075909,1.000000]},"r":2},{"ty":"tr","nm":"Group","hd":false,"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[0.000000,0.000000,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000},"sk":{"k":0.000000},"sa":{"k":0.000000}}]}]}]},{"id":"precomp_6","layers":[{"nm":"Label layer","ind":1,"ty":5,"ddd":0,"ip":0.000000,"op":1.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[46.205804,124.896042,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":0,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"t":{"d":{"k":[{"s":{"t":"Darken","s":15.000000,"f":"Helvetica-Regular","j":2,"tr":0,"lh":24.000000,"ls":0.000000,"fc":[0.000000,0.000000,0.000000,1.000000]},"t":0.000000,"h":1}]},"a":[],"p":{},"m":{"a":{"k":[0.000000,0.000000,0.000000]},"g":1.000000}}},{"nm":"Solid layer","ind":2,"ty":1,"ddd":0,"ip":0.000000,"op":1.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[1.642689,62.457701,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":4,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"sc":"#76ba40","sw":50,"sh":50},{"nm":"Precomp layer","ind":3,"ty":0,"ddd":0,"ip":0.000000,"op":1.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[0.000000,0.000000,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":4,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"refId":"precomp_7","w":100,"h":100},{"nm":"Text layer","ind":4,"ty":5,"ddd":0,"ip":0.000000,"op":300.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[43.590349,54.414657,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":4,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"t":{"d":{"k":[{"s":{"t":"Text","s":24.000000,"f":"Helvetica-Regular","j":0,"tr":0,"lh":24.000000,"ls":0.000000,"fc":[0.000000,0.381363,0.998245,1.000000]},"t":0.000000,"h":1}]},"a":[],"p":{},"m":{"a":{"k":[0.000000,0.000000,0.000000]},"g":1.000000}}},{"nm":"Shape layer","ind":5,"ty":4,"ddd":0,"ip":0.000000,"op":300.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[-195.205281,-199.665312,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":4,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"shapes":[{"ty":"gr","nm":"Group","hd":false,"it":[{"ty":"rc","nm":"Rectangle","hd":false,"d":1,"p":{"k":[250.104341,250.000000,0.000000]},"s":{"k":[50.000000,50.000000,0.000000]},"r":{"k":0.000000}},{"ty":"fl","nm":"Fill","hd":false,"o":{"k":100.000000},"c":{"k":[1.000000,0.252707,0.075909,1.000000]},"r":2},{"ty":"tr","nm":"Group","hd":false,"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[0.000000,0.000000,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000},"sk":{"k":0.000000},"sa":{"k":0.000000}}]}]}]},{"id":"precomp_8","layers":[{"nm":"Label layer","ind":1,"ty":5,"ddd":0,"ip":0.000000,"op":1.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[46.205804,124.896042,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":0,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"t":{"d":{"k":[{"s":{"t":"Difference","s":15.000000,"f":"Helvetica-Regular","j":2,"tr":0,"lh":24.000000,"ls":0.000000,"fc":[0.000000,0.000000,0.000000,1.000000]},"t":0.000000,"h":1}]},"a":[],"p":{},"m":{"a":{"k":[0.000000,0.000000,0.000000]},"g":1.000000}}},{"nm":"Solid layer","ind":2,"ty":1,"ddd":0,"ip":0.000000,"op":1.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[1.642689,62.457701,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":10,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"sc":"#76ba40","sw":50,"sh":50},{"nm":"Precomp layer","ind":3,"ty":0,"ddd":0,"ip":0.000000,"op":1.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[0.000000,0.000000,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":10,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"refId":"precomp_9","w":100,"h":100},{"nm":"Text layer","ind":4,"ty":5,"ddd":0,"ip":0.000000,"op":300.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[43.590349,54.414657,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":10,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"t":{"d":{"k":[{"s":{"t":"Text","s":24.000000,"f":"Helvetica-Regular","j":0,"tr":0,"lh":24.000000,"ls":0.000000,"fc":[0.000000,0.381363,0.998245,1.000000]},"t":0.000000,"h":1}]},"a":[],"p":{},"m":{"a":{"k":[0.000000,0.000000,0.000000]},"g":1.000000}}},{"nm":"Shape layer","ind":5,"ty":4,"ddd":0,"ip":0.000000,"op":300.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[-195.205281,-199.665312,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":10,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"shapes":[{"ty":"gr","nm":"Group","hd":false,"it":[{"ty":"rc","nm":"Rectangle","hd":false,"d":1,"p":{"k":[250.104341,250.000000,0.000000]},"s":{"k":[50.000000,50.000000,0.000000]},"r":{"k":0.000000}},{"ty":"fl","nm":"Fill","hd":false,"o":{"k":100.000000},"c":{"k":[1.000000,0.252707,0.075909,1.000000]},"r":2},{"ty":"tr","nm":"Group","hd":false,"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[0.000000,0.000000,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000},"sk":{"k":0.000000},"sa":{"k":0.000000}}]}]}]},{"id":"precomp_5","layers":[{"nm":"Shape layer","ind":1,"ty":4,"ddd":0,"ip":0.000000,"op":300.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[-224.765688,-224.565598,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":0,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"shapes":[{"ty":"gr","nm":"Group","hd":false,"it":[{"ty":"rc","nm":"Rectangle","hd":false,"d":1,"p":{"k":[250.104341,250.000000,0.000000]},"s":{"k":[50.000000,50.000000,0.000000]},"r":{"k":0.000000}},{"ty":"fl","nm":"Fill","hd":false,"o":{"k":100.000000},"c":{"k":[0.999456,0.986359,0.253202,1.000000]},"r":2},{"ty":"tr","nm":"Group","hd":false,"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[0.000000,0.000000,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000},"sk":{"k":0.000000},"sa":{"k":0.000000}}]}]},{"nm":"Image layer","ind":2,"ty":2,"ddd":0,"ip":0.000000,"op":300.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[-0.156402,36.758697,0.000000]},"s":{"k":[10.000000,10.000000,0.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":0,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"refId":"image_0"}]},{"id":"precomp_0","layers":[{"nm":"Shape layer","ind":1,"ty":4,"ddd":0,"ip":0.000000,"op":300.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[-224.765688,-224.565598,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":0,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"shapes":[{"ty":"gr","nm":"Group","hd":false,"it":[{"ty":"rc","nm":"Rectangle","hd":false,"d":1,"p":{"k":[250.104341,250.000000,0.000000]},"s":{"k":[50.000000,50.000000,0.000000]},"r":{"k":0.000000}},{"ty":"fl","nm":"Fill","hd":false,"o":{"k":100.000000},"c":{"k":[0.999456,0.986359,0.253202,1.000000]},"r":2},{"ty":"tr","nm":"Group","hd":false,"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[0.000000,0.000000,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000},"sk":{"k":0.000000},"sa":{"k":0.000000}}]}]},{"nm":"Image layer","ind":2,"ty":2,"ddd":0,"ip":0.000000,"op":300.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[-0.156402,36.758697,0.000000]},"s":{"k":[10.000000,10.000000,0.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":0,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"refId":"image_0"}]}],"layers":[{"nm":"Precomp layer","ind":1,"ty":0,"ddd":0,"ip":0.000000,"op":1.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[1.787533,133.007088,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":0,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"refId":"precomp_10","w":100,"h":130},{"nm":"Precomp layer","ind":2,"ty":0,"ddd":0,"ip":0.000000,"op":1.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[379.840704,-0.232576,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":0,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"refId":"precomp_8","w":100,"h":130},{"nm":"Precomp layer","ind":3,"ty":0,"ddd":0,"ip":0.000000,"op":1.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[283.046894,-0.115288,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":0,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"refId":"precomp_6","w":100,"h":130},{"nm":"Precomp layer","ind":4,"ty":0,"ddd":0,"ip":0.000000,"op":1.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[187.869433,-0.166732,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":0,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"refId":"precomp_4","w":100,"h":130},{"nm":"Precomp layer","ind":5,"ty":0,"ddd":0,"ip":0.000000,"op":1.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[93.608372,-0.364205,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":0,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"refId":"precomp_2","w":100,"h":130},{"nm":"Precomp layer","ind":6,"ty":0,"ddd":0,"ip":0.000000,"op":1.000000,"st":0.000000,"ks":{"a":{"k":[0.000000,0.000000,0.000000]},"p":{"k":[0.000000,0.000000,0.000000]},"s":{"k":[100.000000,100.000000,100.000000]},"r":{"k":0.000000},"o":{"k":100.000000}},"bm":0,"hasMask":false,"sr":1.000000,"tt":0,"hd":false,"refId":"precomp_1","w":100,"h":130}],"fonts":{"list":[{"fName":"Helvetica-Regular","fFamily":"Helvetica","fStyle":"Regular","ascent":24.000000}]}} \ No newline at end of file diff --git a/Tests/SnapshotConfiguration.swift b/Tests/SnapshotConfiguration.swift index 8b57db205e..020f6d513c 100644 --- a/Tests/SnapshotConfiguration.swift +++ b/Tests/SnapshotConfiguration.swift @@ -43,6 +43,7 @@ extension SnapshotConfiguration { "Issues/issue_1407": .precision(0.9), "Nonanimating/FirstText": .precision(0.99), "Nonanimating/verifyLineHeight": .precision(0.99), + "Nonanimating/blend_mode_test": .precision(0.99), /// Test cases for the `AnimationKeypath` / `AnyValueProvider` system "Nonanimating/keypathTest": .customValueProviders([ diff --git a/Tests/__Snapshots__/AutomaticEngineTests/testAutomaticEngineDetection.Nonanimating-blend_mode_test.txt b/Tests/__Snapshots__/AutomaticEngineTests/testAutomaticEngineDetection.Nonanimating-blend_mode_test.txt new file mode 100644 index 0000000000..4b816d7353 --- /dev/null +++ b/Tests/__Snapshots__/AutomaticEngineTests/testAutomaticEngineDetection.Nonanimating-blend_mode_test.txt @@ -0,0 +1 @@ +Supports Core Animation engine \ No newline at end of file diff --git a/Tests/__Snapshots__/AutomaticEngineTests/testAutomaticEngineDetection.blend_mode_test.txt b/Tests/__Snapshots__/AutomaticEngineTests/testAutomaticEngineDetection.blend_mode_test.txt new file mode 100644 index 0000000000..4b816d7353 --- /dev/null +++ b/Tests/__Snapshots__/AutomaticEngineTests/testAutomaticEngineDetection.blend_mode_test.txt @@ -0,0 +1 @@ +Supports Core Animation engine \ No newline at end of file diff --git a/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Nonanimating-blend_mode_test-0.png b/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Nonanimating-blend_mode_test-0.png new file mode 100644 index 0000000000..ff88d76608 Binary files /dev/null and b/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Nonanimating-blend_mode_test-0.png differ diff --git a/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Nonanimating-blend_mode_test-100.png b/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Nonanimating-blend_mode_test-100.png new file mode 100644 index 0000000000..16279678ef Binary files /dev/null and b/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Nonanimating-blend_mode_test-100.png differ diff --git a/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Nonanimating-blend_mode_test-25.png b/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Nonanimating-blend_mode_test-25.png new file mode 100644 index 0000000000..16279678ef Binary files /dev/null and b/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Nonanimating-blend_mode_test-25.png differ diff --git a/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Nonanimating-blend_mode_test-50.png b/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Nonanimating-blend_mode_test-50.png new file mode 100644 index 0000000000..16279678ef Binary files /dev/null and b/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Nonanimating-blend_mode_test-50.png differ diff --git a/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Nonanimating-blend_mode_test-75.png b/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Nonanimating-blend_mode_test-75.png new file mode 100644 index 0000000000..16279678ef Binary files /dev/null and b/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Nonanimating-blend_mode_test-75.png differ diff --git a/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Nonanimating-blend_mode_test-0.png b/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Nonanimating-blend_mode_test-0.png new file mode 100644 index 0000000000..4625c31ad7 Binary files /dev/null and b/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Nonanimating-blend_mode_test-0.png differ diff --git a/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Nonanimating-blend_mode_test-100.png b/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Nonanimating-blend_mode_test-100.png new file mode 100644 index 0000000000..4625c31ad7 Binary files /dev/null and b/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Nonanimating-blend_mode_test-100.png differ diff --git a/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Nonanimating-blend_mode_test-25.png b/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Nonanimating-blend_mode_test-25.png new file mode 100644 index 0000000000..4625c31ad7 Binary files /dev/null and b/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Nonanimating-blend_mode_test-25.png differ diff --git a/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Nonanimating-blend_mode_test-50.png b/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Nonanimating-blend_mode_test-50.png new file mode 100644 index 0000000000..4625c31ad7 Binary files /dev/null and b/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Nonanimating-blend_mode_test-50.png differ diff --git a/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Nonanimating-blend_mode_test-75.png b/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Nonanimating-blend_mode_test-75.png new file mode 100644 index 0000000000..4625c31ad7 Binary files /dev/null and b/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Nonanimating-blend_mode_test-75.png differ diff --git a/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.TypeFace-B-25.png b/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.TypeFace-B-25.png index a5920c6620..f07ade44b7 100644 Binary files a/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.TypeFace-B-25.png and b/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.TypeFace-B-25.png differ diff --git a/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.TypeFace-B-50.png b/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.TypeFace-B-50.png index 6808e81c17..8ec24cc3e3 100644 Binary files a/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.TypeFace-B-50.png and b/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.TypeFace-B-50.png differ