Browse Source

changed In and Out composition functions to always produce "transparent black"

af/merge-core
Vicente Penades 8 years ago
parent
commit
92d28aba40
  1. 17
      src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.cs

17
src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.cs

@ -214,17 +214,24 @@ namespace SixLabors.ImageSharp.PixelFormats.PixelBlenders
public static Vector4 In(Vector4 dst, Vector4 src, Vector4 blend)
{
blend.W = dst.W * src.W;
float alpha = dst.W * src.W;
return blend;
Vector4 color = src * alpha; // premultiply
color /= MathF.Max(alpha, Constants.Epsilon); // unpremultiply
color.W = alpha;
return color;
}
public static Vector4 Out(Vector4 dst, Vector4 src)
{
// calculate final alpha
src.W = (1 - dst.W) * src.W;
float alpha = (1 - dst.W) * src.W;
return src;
Vector4 color = src * alpha; // premultiply
color /= MathF.Max(alpha, Constants.Epsilon); // unpremultiply
color.W = alpha;
return color;
}
public static Vector4 Xor(Vector4 dst, Vector4 src)

Loading…
Cancel
Save