- Fixed missing alpha clamp in Color.cs/FromNonPremultiplied

- Added TestCase for Random Color generation using Random.
This commit is contained in:
SND\eagleeyestudios_cp 2012-10-10 15:12:25 +00:00 committed by Konstantin Koch
parent 9f4369c05d
commit 82b717c008
2 changed files with 28 additions and 4 deletions

View File

@ -404,6 +404,20 @@ namespace ANX.Framework.TestCenter.Strukturen
AssertHelper.ConvertEquals(xna, anx, "FromNonPremultipliedIntStatic2");
}
[Test]
public void FromNonPremultipliedIntRandom()
{
Random rand = new Random();
int r = rand.Next(255);
int g = rand.Next(255);
int b = rand.Next(255);
int a = 255;
XNAColor xna = XNAColor.FromNonPremultiplied(r, g, b, a);
ANXColor anx = ANXColor.FromNonPremultiplied(r, g, b, a);
AssertHelper.ConvertEquals(xna, anx, "FromNonPremultipliedIntStatic2");
}
[Test, TestCaseSource("fourfloats")]
public void FromNonPremultipliedVector4Static(float r, float g, float b, float a)
{

View File

@ -811,9 +811,10 @@ namespace ANX.Framework
{
Color color;
r = ClampValue((long)r * a / 255L);
g = ClampValue((long)g * a / 255L);
b = ClampValue((long)b * a / 255L);
r = ClampValue64((long)r * a / 255L);
g = ClampValue64((long)g * a / 255L);
b = ClampValue64((long)b * a / 255L);
a = ClampValue32(a);
/* //What the heck is this? Anyway it does not work!
if (((((r | g) | b) | a) & -256) != 0)
@ -829,7 +830,7 @@ namespace ANX.Framework
return color;
}
private static int ClampValue(long value)
private static int ClampValue64(long value)
{
if (value < 0L)
return 0;
@ -838,6 +839,15 @@ namespace ANX.Framework
return (int) value;
}
public static int ClampValue32(int value)
{
if (value < 0)
return 0;
if (value > 255)
return 255;
return value;
}
public static Color FromNonPremultiplied(Vector4 vector)
{
Color color;