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;