Merge pull request #15537 from PJB3005/18-01-09-fix-color-string-constructor-mono

Fixes Mono color creation from string being 0-255 instead of 0-1.
This commit is contained in:
Rémi Verschelde 2018-01-10 14:50:26 +01:00 committed by GitHub
commit a60896869e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -336,7 +336,7 @@ namespace Godot
this.r = (rgba & 0xFF) / 255.0f; this.r = (rgba & 0xFF) / 255.0f;
} }
private static float _parse_col(string str, int ofs) private static int _parse_col(string str, int ofs)
{ {
int ig = 0; int ig = 0;
@ -415,17 +415,17 @@ namespace Godot
if (alpha) if (alpha)
{ {
if ((int)_parse_col(color, 0) < 0) if (_parse_col(color, 0) < 0)
return false; return false;
} }
int from = alpha ? 2 : 0; int from = alpha ? 2 : 0;
if ((int)_parse_col(color, from + 0) < 0) if (_parse_col(color, from + 0) < 0)
return false; return false;
if ((int)_parse_col(color, from + 2) < 0) if (_parse_col(color, from + 2) < 0)
return false; return false;
if ((int)_parse_col(color, from + 4) < 0) if (_parse_col(color, from + 4) < 0)
return false; return false;
return true; return true;
@ -467,10 +467,10 @@ namespace Godot
if (alpha) if (alpha)
{ {
a = _parse_col(rgba, 0); a = _parse_col(rgba, 0) / 255f;
if (a < 0) if (a < 0)
throw new ArgumentOutOfRangeException("Invalid color code. Alpha is " + a + " but zero or greater is expected: " + rgba); throw new ArgumentOutOfRangeException("Invalid color code. Alpha part is not valid hexadecimal: " + rgba);
} }
else else
{ {
@ -479,20 +479,20 @@ namespace Godot
int from = alpha ? 2 : 0; int from = alpha ? 2 : 0;
r = _parse_col(rgba, from + 0); r = _parse_col(rgba, from + 0) / 255f;
if (r < 0) if (r < 0)
throw new ArgumentOutOfRangeException("Invalid color code. Red is " + r + " but zero or greater is expected: " + rgba); throw new ArgumentOutOfRangeException("Invalid color code. Red part is not valid hexadecimal: " + rgba);
g = _parse_col(rgba, from + 2); g = _parse_col(rgba, from + 2) / 255f;
if (g < 0) if (g < 0)
throw new ArgumentOutOfRangeException("Invalid color code. Green is " + g + " but zero or greater is expected: " + rgba); throw new ArgumentOutOfRangeException("Invalid color code. Green part is not valid hexadecimal: " + rgba);
b = _parse_col(rgba, from + 4); b = _parse_col(rgba, from + 4) / 255f;
if (b < 0) if (b < 0)
throw new ArgumentOutOfRangeException("Invalid color code. Blue is " + b + " but zero or greater is expected: " + rgba); throw new ArgumentOutOfRangeException("Invalid color code. Blue part is not valid hexadecimal: " + rgba);
} }
public static bool operator ==(Color left, Color right) public static bool operator ==(Color left, Color right)