diff --git a/src/ImageSharp/PixelFormats/PixelBlenders/DefaultPixelBlenders.Generated.cs b/src/ImageSharp/PixelFormats/PixelBlenders/DefaultPixelBlenders.Generated.cs index 409938f6e..aa261c1f0 100644 --- a/src/ImageSharp/PixelFormats/PixelBlenders/DefaultPixelBlenders.Generated.cs +++ b/src/ImageSharp/PixelFormats/PixelBlenders/DefaultPixelBlenders.Generated.cs @@ -44,7 +44,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.NormalSrc(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.NormalSrc(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -77,7 +79,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.MultiplySrc(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.MultiplySrc(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -110,7 +114,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.AddSrc(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.AddSrc(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -143,7 +149,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.SubtractSrc(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.SubtractSrc(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -176,7 +184,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.ScreenSrc(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.ScreenSrc(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -209,7 +219,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.DarkenSrc(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.DarkenSrc(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -242,7 +254,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.LightenSrc(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.LightenSrc(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -275,7 +289,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.OverlaySrc(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.OverlaySrc(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -308,7 +324,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.HardLightSrc(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.HardLightSrc(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -341,7 +359,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.NormalSrcAtop(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.NormalSrcAtop(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -374,7 +394,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.MultiplySrcAtop(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.MultiplySrcAtop(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -407,7 +429,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.AddSrcAtop(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.AddSrcAtop(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -440,7 +464,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.SubtractSrcAtop(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.SubtractSrcAtop(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -473,7 +499,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.ScreenSrcAtop(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.ScreenSrcAtop(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -506,7 +534,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.DarkenSrcAtop(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.DarkenSrcAtop(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -539,7 +569,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.LightenSrcAtop(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.LightenSrcAtop(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -572,7 +604,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.OverlaySrcAtop(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.OverlaySrcAtop(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -605,7 +639,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.HardLightSrcAtop(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.HardLightSrcAtop(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -638,7 +674,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.NormalSrcOver(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.NormalSrcOver(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -671,7 +709,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.MultiplySrcOver(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.MultiplySrcOver(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -704,7 +744,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.AddSrcOver(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.AddSrcOver(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -737,7 +779,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.SubtractSrcOver(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.SubtractSrcOver(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -770,7 +814,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.ScreenSrcOver(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.ScreenSrcOver(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -803,7 +849,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.DarkenSrcOver(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.DarkenSrcOver(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -836,7 +884,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.LightenSrcOver(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.LightenSrcOver(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -869,7 +919,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.OverlaySrcOver(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.OverlaySrcOver(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -902,7 +954,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.HardLightSrcOver(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.HardLightSrcOver(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -935,7 +989,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.NormalSrcIn(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.NormalSrcIn(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -968,7 +1024,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.MultiplySrcIn(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.MultiplySrcIn(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1001,7 +1059,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.AddSrcIn(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.AddSrcIn(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1034,7 +1094,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.SubtractSrcIn(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.SubtractSrcIn(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1067,7 +1129,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.ScreenSrcIn(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.ScreenSrcIn(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1100,7 +1164,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.DarkenSrcIn(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.DarkenSrcIn(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1133,7 +1199,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.LightenSrcIn(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.LightenSrcIn(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1166,7 +1234,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.OverlaySrcIn(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.OverlaySrcIn(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1199,7 +1269,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.HardLightSrcIn(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.HardLightSrcIn(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1232,7 +1304,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.NormalSrcOut(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.NormalSrcOut(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1265,7 +1339,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.MultiplySrcOut(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.MultiplySrcOut(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1298,7 +1374,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.AddSrcOut(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.AddSrcOut(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1331,7 +1409,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.SubtractSrcOut(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.SubtractSrcOut(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1364,7 +1444,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.ScreenSrcOut(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.ScreenSrcOut(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1397,7 +1479,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.DarkenSrcOut(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.DarkenSrcOut(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1430,7 +1514,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.LightenSrcOut(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.LightenSrcOut(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1463,7 +1549,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.OverlaySrcOut(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.OverlaySrcOut(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1496,7 +1584,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.HardLightSrcOut(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.HardLightSrcOut(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1529,7 +1619,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.NormalDest(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.NormalDest(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1562,7 +1654,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.MultiplyDest(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.MultiplyDest(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1595,7 +1689,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.AddDest(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.AddDest(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1628,7 +1724,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.SubtractDest(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.SubtractDest(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1661,7 +1759,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.ScreenDest(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.ScreenDest(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1694,7 +1794,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.DarkenDest(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.DarkenDest(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1727,7 +1829,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.LightenDest(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.LightenDest(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1760,7 +1864,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.OverlayDest(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.OverlayDest(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1793,7 +1899,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.HardLightDest(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.HardLightDest(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1826,7 +1934,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.NormalDestAtop(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.NormalDestAtop(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1859,7 +1969,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.MultiplyDestAtop(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.MultiplyDestAtop(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1892,7 +2004,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.AddDestAtop(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.AddDestAtop(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1925,7 +2039,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.SubtractDestAtop(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.SubtractDestAtop(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1958,7 +2074,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.ScreenDestAtop(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.ScreenDestAtop(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -1991,7 +2109,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.DarkenDestAtop(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.DarkenDestAtop(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2024,7 +2144,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.LightenDestAtop(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.LightenDestAtop(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2057,7 +2179,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.OverlayDestAtop(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.OverlayDestAtop(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2090,7 +2214,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.HardLightDestAtop(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.HardLightDestAtop(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2123,7 +2249,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.NormalDestOver(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.NormalDestOver(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2156,7 +2284,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.MultiplyDestOver(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.MultiplyDestOver(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2189,7 +2319,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.AddDestOver(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.AddDestOver(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2222,7 +2354,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.SubtractDestOver(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.SubtractDestOver(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2255,7 +2389,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.ScreenDestOver(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.ScreenDestOver(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2288,7 +2424,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.DarkenDestOver(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.DarkenDestOver(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2321,7 +2459,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.LightenDestOver(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.LightenDestOver(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2354,7 +2494,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.OverlayDestOver(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.OverlayDestOver(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2387,7 +2529,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.HardLightDestOver(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.HardLightDestOver(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2420,7 +2564,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.NormalDestIn(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.NormalDestIn(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2453,7 +2599,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.MultiplyDestIn(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.MultiplyDestIn(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2486,7 +2634,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.AddDestIn(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.AddDestIn(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2519,7 +2669,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.SubtractDestIn(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.SubtractDestIn(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2552,7 +2704,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.ScreenDestIn(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.ScreenDestIn(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2585,7 +2739,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.DarkenDestIn(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.DarkenDestIn(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2618,7 +2774,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.LightenDestIn(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.LightenDestIn(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2651,7 +2809,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.OverlayDestIn(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.OverlayDestIn(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2684,7 +2844,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.HardLightDestIn(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.HardLightDestIn(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2717,7 +2879,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.NormalDestOut(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.NormalDestOut(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2750,7 +2914,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.MultiplyDestOut(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.MultiplyDestOut(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2783,7 +2949,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.AddDestOut(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.AddDestOut(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2816,7 +2984,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.SubtractDestOut(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.SubtractDestOut(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2849,7 +3019,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.ScreenDestOut(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.ScreenDestOut(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2882,7 +3054,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.DarkenDestOut(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.DarkenDestOut(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2915,7 +3089,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.LightenDestOut(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.LightenDestOut(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2948,7 +3124,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.OverlayDestOut(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.OverlayDestOut(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -2981,7 +3159,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.HardLightDestOut(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.HardLightDestOut(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -3014,7 +3194,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.NormalClear(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.NormalClear(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -3047,7 +3229,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.MultiplyClear(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.MultiplyClear(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -3080,7 +3264,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.AddClear(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.AddClear(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -3113,7 +3299,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.SubtractClear(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.SubtractClear(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -3146,7 +3334,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.ScreenClear(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.ScreenClear(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -3179,7 +3369,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.DarkenClear(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.DarkenClear(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -3212,7 +3404,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.LightenClear(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.LightenClear(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -3245,7 +3439,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.OverlayClear(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.OverlayClear(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -3278,7 +3474,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.HardLightClear(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.HardLightClear(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -3311,7 +3509,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.NormalXor(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.NormalXor(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -3344,7 +3544,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.MultiplyXor(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.MultiplyXor(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -3377,7 +3579,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.AddXor(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.AddXor(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -3410,7 +3614,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.SubtractXor(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.SubtractXor(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -3443,7 +3649,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.ScreenXor(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.ScreenXor(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -3476,7 +3684,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.DarkenXor(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.DarkenXor(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -3509,7 +3719,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.LightenXor(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.LightenXor(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -3542,7 +3754,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.OverlayXor(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.OverlayXor(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// @@ -3575,7 +3789,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.HardLightXor(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.HardLightXor(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// diff --git a/src/ImageSharp/PixelFormats/PixelBlenders/DefaultPixelBlenders.Generated.tt b/src/ImageSharp/PixelFormats/PixelBlenders/DefaultPixelBlenders.Generated.tt index a61041c86..2152862dc 100644 --- a/src/ImageSharp/PixelFormats/PixelBlenders/DefaultPixelBlenders.Generated.tt +++ b/src/ImageSharp/PixelFormats/PixelBlenders/DefaultPixelBlenders.Generated.tt @@ -80,7 +80,9 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders /// public override TPixel Blend(TPixel background, TPixel source, float amount) { - return PorterDuffFunctions.<#=blender_composer#>(background, source, amount.Clamp(0,1)); + TPixel dest = default; + dest.PackFromVector4(PorterDuffFunctions.<#=blender_composer#>(background.ToVector4(),source.ToVector4(),amount.Clamp(0,1))); + return dest; } /// diff --git a/src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.Generated.cs b/src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.Generated.cs index 841f6ea85..73f6867e2 100644 --- a/src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.Generated.cs +++ b/src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.Generated.cs @@ -19,9 +19,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 NormalSrc(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return source; } @@ -29,9 +27,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 NormalSrcAtop(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Atop(backdrop, source, Normal(backdrop, source)); } @@ -39,9 +35,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 NormalSrcOver(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Over(backdrop, source, Normal(backdrop, source)); } @@ -49,9 +43,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 NormalSrcIn(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return In(backdrop, source, Normal(backdrop, source)); } @@ -59,9 +51,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 NormalSrcOut(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Out(backdrop, source); } @@ -75,9 +65,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 NormalDestAtop(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Atop(source, backdrop, Normal(source, backdrop)); } @@ -85,9 +73,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 NormalDestOver(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Over(source, backdrop, Normal(source, backdrop)); } @@ -95,9 +81,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 NormalDestIn(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return In(source, backdrop, Normal(source, backdrop)); } @@ -105,9 +89,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 NormalDestOut(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Out(source, backdrop); } @@ -115,9 +97,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 NormalXor(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Xor(backdrop, source); } @@ -125,9 +105,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 NormalClear(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Clear(backdrop, source); } @@ -267,9 +245,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 MultiplySrc(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return source; } @@ -277,9 +253,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 MultiplySrcAtop(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Atop(backdrop, source, Multiply(backdrop, source)); } @@ -287,9 +261,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 MultiplySrcOver(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Over(backdrop, source, Multiply(backdrop, source)); } @@ -297,9 +269,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 MultiplySrcIn(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return In(backdrop, source, Multiply(backdrop, source)); } @@ -307,9 +277,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 MultiplySrcOut(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Out(backdrop, source); } @@ -323,9 +291,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 MultiplyDestAtop(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Atop(source, backdrop, Multiply(source, backdrop)); } @@ -333,9 +299,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 MultiplyDestOver(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Over(source, backdrop, Multiply(source, backdrop)); } @@ -343,9 +307,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 MultiplyDestIn(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return In(source, backdrop, Multiply(source, backdrop)); } @@ -353,9 +315,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 MultiplyDestOut(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Out(source, backdrop); } @@ -363,9 +323,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 MultiplyXor(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Xor(backdrop, source); } @@ -373,9 +331,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 MultiplyClear(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Clear(backdrop, source); } @@ -515,9 +471,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 AddSrc(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return source; } @@ -525,9 +479,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 AddSrcAtop(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Atop(backdrop, source, Add(backdrop, source)); } @@ -535,9 +487,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 AddSrcOver(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Over(backdrop, source, Add(backdrop, source)); } @@ -545,9 +495,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 AddSrcIn(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return In(backdrop, source, Add(backdrop, source)); } @@ -555,9 +503,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 AddSrcOut(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Out(backdrop, source); } @@ -571,9 +517,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 AddDestAtop(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Atop(source, backdrop, Add(source, backdrop)); } @@ -581,9 +525,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 AddDestOver(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Over(source, backdrop, Add(source, backdrop)); } @@ -591,9 +533,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 AddDestIn(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return In(source, backdrop, Add(source, backdrop)); } @@ -601,9 +541,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 AddDestOut(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Out(source, backdrop); } @@ -611,9 +549,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 AddXor(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Xor(backdrop, source); } @@ -621,9 +557,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 AddClear(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Clear(backdrop, source); } @@ -763,9 +697,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 SubtractSrc(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return source; } @@ -773,9 +705,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 SubtractSrcAtop(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Atop(backdrop, source, Subtract(backdrop, source)); } @@ -783,9 +713,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 SubtractSrcOver(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Over(backdrop, source, Subtract(backdrop, source)); } @@ -793,9 +721,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 SubtractSrcIn(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return In(backdrop, source, Subtract(backdrop, source)); } @@ -803,9 +729,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 SubtractSrcOut(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Out(backdrop, source); } @@ -819,9 +743,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 SubtractDestAtop(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Atop(source, backdrop, Subtract(source, backdrop)); } @@ -829,9 +751,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 SubtractDestOver(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Over(source, backdrop, Subtract(source, backdrop)); } @@ -839,9 +759,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 SubtractDestIn(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return In(source, backdrop, Subtract(source, backdrop)); } @@ -849,9 +767,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 SubtractDestOut(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Out(source, backdrop); } @@ -859,9 +775,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 SubtractXor(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Xor(backdrop, source); } @@ -869,9 +783,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 SubtractClear(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Clear(backdrop, source); } @@ -1011,9 +923,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 ScreenSrc(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return source; } @@ -1021,9 +931,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 ScreenSrcAtop(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Atop(backdrop, source, Screen(backdrop, source)); } @@ -1031,9 +939,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 ScreenSrcOver(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Over(backdrop, source, Screen(backdrop, source)); } @@ -1041,9 +947,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 ScreenSrcIn(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return In(backdrop, source, Screen(backdrop, source)); } @@ -1051,9 +955,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 ScreenSrcOut(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Out(backdrop, source); } @@ -1067,9 +969,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 ScreenDestAtop(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Atop(source, backdrop, Screen(source, backdrop)); } @@ -1077,9 +977,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 ScreenDestOver(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Over(source, backdrop, Screen(source, backdrop)); } @@ -1087,9 +985,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 ScreenDestIn(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return In(source, backdrop, Screen(source, backdrop)); } @@ -1097,9 +993,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 ScreenDestOut(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Out(source, backdrop); } @@ -1107,9 +1001,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 ScreenXor(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Xor(backdrop, source); } @@ -1117,9 +1009,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 ScreenClear(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Clear(backdrop, source); } @@ -1259,9 +1149,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 DarkenSrc(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return source; } @@ -1269,9 +1157,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 DarkenSrcAtop(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Atop(backdrop, source, Darken(backdrop, source)); } @@ -1279,9 +1165,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 DarkenSrcOver(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Over(backdrop, source, Darken(backdrop, source)); } @@ -1289,9 +1173,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 DarkenSrcIn(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return In(backdrop, source, Darken(backdrop, source)); } @@ -1299,9 +1181,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 DarkenSrcOut(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Out(backdrop, source); } @@ -1315,9 +1195,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 DarkenDestAtop(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Atop(source, backdrop, Darken(source, backdrop)); } @@ -1325,9 +1203,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 DarkenDestOver(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Over(source, backdrop, Darken(source, backdrop)); } @@ -1335,9 +1211,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 DarkenDestIn(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return In(source, backdrop, Darken(source, backdrop)); } @@ -1345,9 +1219,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 DarkenDestOut(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Out(source, backdrop); } @@ -1355,9 +1227,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 DarkenXor(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Xor(backdrop, source); } @@ -1365,9 +1235,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 DarkenClear(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Clear(backdrop, source); } @@ -1507,9 +1375,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 LightenSrc(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return source; } @@ -1517,9 +1383,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 LightenSrcAtop(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Atop(backdrop, source, Lighten(backdrop, source)); } @@ -1527,9 +1391,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 LightenSrcOver(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Over(backdrop, source, Lighten(backdrop, source)); } @@ -1537,9 +1399,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 LightenSrcIn(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return In(backdrop, source, Lighten(backdrop, source)); } @@ -1547,9 +1407,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 LightenSrcOut(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Out(backdrop, source); } @@ -1563,9 +1421,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 LightenDestAtop(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Atop(source, backdrop, Lighten(source, backdrop)); } @@ -1573,9 +1429,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 LightenDestOver(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Over(source, backdrop, Lighten(source, backdrop)); } @@ -1583,9 +1437,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 LightenDestIn(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return In(source, backdrop, Lighten(source, backdrop)); } @@ -1593,9 +1445,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 LightenDestOut(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Out(source, backdrop); } @@ -1603,9 +1453,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 LightenXor(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Xor(backdrop, source); } @@ -1613,9 +1461,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 LightenClear(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Clear(backdrop, source); } @@ -1755,9 +1601,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 OverlaySrc(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return source; } @@ -1765,9 +1609,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 OverlaySrcAtop(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Atop(backdrop, source, Overlay(backdrop, source)); } @@ -1775,9 +1617,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 OverlaySrcOver(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Over(backdrop, source, Overlay(backdrop, source)); } @@ -1785,9 +1625,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 OverlaySrcIn(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return In(backdrop, source, Overlay(backdrop, source)); } @@ -1795,9 +1633,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 OverlaySrcOut(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Out(backdrop, source); } @@ -1811,9 +1647,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 OverlayDestAtop(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Atop(source, backdrop, Overlay(source, backdrop)); } @@ -1821,9 +1655,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 OverlayDestOver(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Over(source, backdrop, Overlay(source, backdrop)); } @@ -1831,9 +1663,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 OverlayDestIn(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return In(source, backdrop, Overlay(source, backdrop)); } @@ -1841,9 +1671,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 OverlayDestOut(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Out(source, backdrop); } @@ -1851,9 +1679,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 OverlayXor(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Xor(backdrop, source); } @@ -1861,9 +1687,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 OverlayClear(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Clear(backdrop, source); } @@ -2003,9 +1827,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 HardLightSrc(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return source; } @@ -2013,9 +1835,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 HardLightSrcAtop(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Atop(backdrop, source, HardLight(backdrop, source)); } @@ -2023,9 +1843,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 HardLightSrcOver(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Over(backdrop, source, HardLight(backdrop, source)); } @@ -2033,9 +1851,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 HardLightSrcIn(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return In(backdrop, source, HardLight(backdrop, source)); } @@ -2043,9 +1859,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 HardLightSrcOut(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Out(backdrop, source); } @@ -2059,9 +1873,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 HardLightDestAtop(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Atop(source, backdrop, HardLight(source, backdrop)); } @@ -2069,9 +1881,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 HardLightDestOver(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Over(source, backdrop, HardLight(source, backdrop)); } @@ -2079,9 +1889,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 HardLightDestIn(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return In(source, backdrop, HardLight(source, backdrop)); } @@ -2089,9 +1897,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 HardLightDestOut(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Out(source, backdrop); } @@ -2099,9 +1905,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 HardLightXor(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Xor(backdrop, source); } @@ -2109,9 +1913,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 HardLightClear(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Clear(backdrop, source); } diff --git a/src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.Generated.tt b/src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.Generated.tt index 7d5b8663d..e4a55abb8 100644 --- a/src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.Generated.tt +++ b/src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.Generated.tt @@ -27,9 +27,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 <#=blender#>Src(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return source; } @@ -37,9 +35,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 <#=blender#>SrcAtop(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Atop(backdrop, source, <#=blender#>(backdrop, source)); } @@ -47,9 +43,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 <#=blender#>SrcOver(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Over(backdrop, source, <#=blender#>(backdrop, source)); } @@ -57,9 +51,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 <#=blender#>SrcIn(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return In(backdrop, source, <#=blender#>(backdrop, source)); } @@ -67,9 +59,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 <#=blender#>SrcOut(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Out(backdrop, source); } @@ -83,9 +73,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 <#=blender#>DestAtop(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Atop(source, backdrop, <#=blender#>(source, backdrop)); } @@ -93,9 +81,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 <#=blender#>DestOver(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Over(source, backdrop, <#=blender#>(source, backdrop)); } @@ -103,9 +89,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 <#=blender#>DestIn(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return In(source, backdrop, <#=blender#>(source, backdrop)); } @@ -113,9 +97,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 <#=blender#>DestOut(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Out(source, backdrop); } @@ -123,9 +105,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 <#=blender#>Xor(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Xor(backdrop, source); } @@ -133,9 +113,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 <#=blender#>Clear(Vector4 backdrop, Vector4 source, float opacity) { - DebugGuard.MustBeBetweenOrEqualTo(opacity, 0, 1, nameof(opacity)); - - source.W *= opacity; + source.W *= opacity.Clamp(0,1); return Clear(backdrop, source); } @@ -186,7 +164,7 @@ string[] blenders = new []{ foreach(var blender in blenders) { - GeneratePixelBlenders(blender); + GeneratePixelBlenders(blender); foreach(var composer in composers) { diff --git a/src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.cs b/src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.cs index e10c8fe91..9d0e9d04d 100644 --- a/src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.cs +++ b/src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.cs @@ -8,7 +8,7 @@ using System.Runtime.CompilerServices; namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders { /// - /// Collection of Porter Duff alpha blending functions applying an the 'Over' composition model. + /// Collection of Porter Duff Color Blending and Alpha Composition Functions. /// /// /// These functions are designed to be a general solution for all color cases, @@ -148,31 +148,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders return backdrop <= 0.5f ? (2 * backdrop * source) : 1 - ((2 * (1 - source)) * (1 - backdrop)); } - /// - /// General composition function for all modes, with a general solution for alpha channel - /// - /// Original Backdrop color - /// Original source color - /// Desired transformed color, without taking Alpha channel in account - /// The final color [MethodImpl(MethodImplOptions.AggressiveInlining)] - private static Vector4 SrcOverReference(Vector4 backdrop, Vector4 source, Vector4 xform) - { - // calculate weights - float xw = backdrop.W * source.W; - float bw = backdrop.W - xw; - float sw = source.W - xw; - - // calculate final alpha - float a = xw + bw + sw; - - // calculate final value - xform = ((xform * xw) + (backdrop * bw) + (source * sw)) / MathF.Max(a, Constants.Epsilon); - xform.W = a; - - return xform; - } - public static Vector4 Over(Vector4 dst, Vector4 src, Vector4 blend) { // calculate weights @@ -193,6 +169,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders return color; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 Atop(Vector4 dst, Vector4 src, Vector4 blend) { // calculate weights @@ -212,6 +189,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders return color; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 In(Vector4 dst, Vector4 src, Vector4 blend) { float alpha = dst.W * src.W; @@ -223,6 +201,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders return color; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 Out(Vector4 dst, Vector4 src) { float alpha = (1 - dst.W) * src.W; @@ -234,6 +213,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders return color; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 Xor(Vector4 dst, Vector4 src) { float srcW = 1 - dst.W; @@ -249,6 +229,7 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders return color; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] private static Vector4 Clear(Vector4 backdrop, Vector4 source) { return Vector4.Zero;