Fix hex color parsing

This commit is contained in:
Wojtek Figat
2022-08-01 17:13:29 +02:00
parent 3601d36955
commit 4915e9fea0

View File

@@ -294,25 +294,12 @@ namespace FlaxEngine
public static bool TryParseHex(string hexString, out Color value) public static bool TryParseHex(string hexString, out Color value)
{ {
value = Black; value = Black;
if (string.IsNullOrEmpty(hexString)) if (string.IsNullOrEmpty(hexString))
return false; return false;
int r, g, b, a = 255; int r, g, b, a = 255;
int startIndex = hexString[0] == '#' ? 1 : 0; int startIndex = hexString[0] == '#' ? 1 : 0;
if (hexString.Length == 6 + startIndex)
if (hexString.Length == 3 + startIndex)
{
r = StringUtils.HexDigit(hexString[startIndex++]);
g = StringUtils.HexDigit(hexString[startIndex++]);
b = StringUtils.HexDigit(hexString[startIndex]);
r = (r << 4) + r;
g = (g << 4) + g;
b = (b << 4) + b;
}
else if (hexString.Length == 6 + startIndex)
{ {
r = (StringUtils.HexDigit(hexString[startIndex + 0]) << 4) + StringUtils.HexDigit(hexString[startIndex + 1]); r = (StringUtils.HexDigit(hexString[startIndex + 0]) << 4) + StringUtils.HexDigit(hexString[startIndex + 1]);
g = (StringUtils.HexDigit(hexString[startIndex + 2]) << 4) + StringUtils.HexDigit(hexString[startIndex + 3]); g = (StringUtils.HexDigit(hexString[startIndex + 2]) << 4) + StringUtils.HexDigit(hexString[startIndex + 3]);