Merge pull request #66817 from raulsntos/dotnet/color-span
C#: Use Span in Color to avoid string allocations
This commit is contained in:
commit
208b440398
1 changed files with 13 additions and 13 deletions
|
@ -597,7 +597,7 @@ namespace Godot
|
|||
/// <exception name="ArgumentOutOfRangeException">
|
||||
/// <paramref name="rgba"/> color code is invalid.
|
||||
/// </exception>
|
||||
private static Color FromHTML(string rgba)
|
||||
private static Color FromHTML(ReadOnlySpan<char> rgba)
|
||||
{
|
||||
Color c;
|
||||
if (rgba.Length == 0)
|
||||
|
@ -611,7 +611,7 @@ namespace Godot
|
|||
|
||||
if (rgba[0] == '#')
|
||||
{
|
||||
rgba = rgba.Substring(1);
|
||||
rgba = rgba.Slice(1);
|
||||
}
|
||||
|
||||
// If enabled, use 1 hex digit per channel instead of 2.
|
||||
|
@ -665,22 +665,22 @@ namespace Godot
|
|||
|
||||
if (c.r < 0)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("Invalid color code. Red part is not valid hexadecimal: " + rgba);
|
||||
throw new ArgumentOutOfRangeException($"Invalid color code. Red part is not valid hexadecimal: {rgba}");
|
||||
}
|
||||
|
||||
if (c.g < 0)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("Invalid color code. Green part is not valid hexadecimal: " + rgba);
|
||||
throw new ArgumentOutOfRangeException($"Invalid color code. Green part is not valid hexadecimal: {rgba}");
|
||||
}
|
||||
|
||||
if (c.b < 0)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("Invalid color code. Blue part is not valid hexadecimal: " + rgba);
|
||||
throw new ArgumentOutOfRangeException($"Invalid color code. Blue part is not valid hexadecimal: {rgba}");
|
||||
}
|
||||
|
||||
if (c.a < 0)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("Invalid color code. Alpha part is not valid hexadecimal: " + rgba);
|
||||
throw new ArgumentOutOfRangeException($"Invalid color code. Alpha part is not valid hexadecimal: {rgba}");
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
@ -817,9 +817,9 @@ namespace Godot
|
|||
value = max;
|
||||
}
|
||||
|
||||
private static int ParseCol4(string str, int ofs)
|
||||
private static int ParseCol4(ReadOnlySpan<char> str, int index)
|
||||
{
|
||||
char character = str[ofs];
|
||||
char character = str[index];
|
||||
|
||||
if (character >= '0' && character <= '9')
|
||||
{
|
||||
|
@ -836,9 +836,9 @@ namespace Godot
|
|||
return -1;
|
||||
}
|
||||
|
||||
private static int ParseCol8(string str, int ofs)
|
||||
private static int ParseCol8(ReadOnlySpan<char> str, int index)
|
||||
{
|
||||
return ParseCol4(str, ofs) * 16 + ParseCol4(str, ofs + 1);
|
||||
return ParseCol4(str, index) * 16 + ParseCol4(str, index + 1);
|
||||
}
|
||||
|
||||
private static string ToHex32(float val)
|
||||
|
@ -847,16 +847,16 @@ namespace Godot
|
|||
return b.HexEncode();
|
||||
}
|
||||
|
||||
internal static bool HtmlIsValid(string color)
|
||||
internal static bool HtmlIsValid(ReadOnlySpan<char> color)
|
||||
{
|
||||
if (string.IsNullOrEmpty(color))
|
||||
if (color.IsEmpty)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (color[0] == '#')
|
||||
{
|
||||
color = color.Substring(1);
|
||||
color = color.Slice(1);
|
||||
}
|
||||
|
||||
// Check if the amount of hex digits is valid.
|
||||
|
|
Loading…
Reference in a new issue