From dffb3bc29c831a7d8dcb7beaa595248bbbfb7934 Mon Sep 17 00:00:00 2001 From: "SND\\eagleeyestudios_cp" Date: Tue, 9 Oct 2012 18:24:32 +0000 Subject: [PATCH] - Fixed a bug when using Color.FromNonPremultiplied: Replaced the weird buggy construct of code in Color.FromNonPremultiplied with a working (non complicated) version. Code readability ftw! --- ANX.Framework/Color.cs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/ANX.Framework/Color.cs b/ANX.Framework/Color.cs index 56c6fde6..b8e7aa7f 100644 --- a/ANX.Framework/Color.cs +++ b/ANX.Framework/Color.cs @@ -811,23 +811,33 @@ namespace ANX.Framework { Color color; - r = r * a; - g = g * a; - b = b * a; + r = ClampValue((long)r * a / 255L); + g = ClampValue((long)g * a / 255L); + b = ClampValue((long)b * a / 255L); + /* //What the heck is this? Anyway it does not work! if (((((r | g) | b) | a) & -256) != 0) { r = r < 0 ? 0 : (r > 255 ? 255 : r); g = g < 0 ? 0 : (g > 255 ? 255 : g); b = b < 0 ? 0 : (b > 255 ? 255 : b); a = a < 0 ? 0 : (a > 255 ? 255 : a); - } + }*/ color.packedValue = (uint)(((r | g << 8) | b << 16) | a << 24); return color; } + private static int ClampValue(long value) + { + if (value < 0L) + return 0; + if (value > 255L) + return 255; + return (int) value; + } + public static Color FromNonPremultiplied(Vector4 vector) { Color color;