Changed ColorFormat-ByteMapping to use constants

This commit is contained in:
Darth Affe 2024-07-08 23:38:35 +02:00
parent 7a67f77168
commit e34af1fbd3
8 changed files with 19 additions and 21 deletions

View File

@ -44,7 +44,7 @@ internal readonly struct ColorFormatData(string typeName, int bpp, char firstEnt
} }
#endregion #endregion
#region Methods #region Methods
private string CreateByteMapping() private string CreateByteMapping()
@ -52,19 +52,19 @@ internal readonly struct ColorFormatData(string typeName, int bpp, char firstEnt
string[] mapping = new string[Bpp]; string[] mapping = new string[Bpp];
if (Bpp > 0) if (Bpp > 0)
{ {
mapping[0] = GetByteMappingIndex(FirstEntry).ToString(); mapping[0] = "Color." + FirstEntry.ToUpper();
if (Bpp > 1) if (Bpp > 1)
{ {
mapping[1] = GetByteMappingIndex(SecondEntry).ToString(); mapping[1] = "Color." + SecondEntry.ToUpper();
if (Bpp > 2) if (Bpp > 2)
{ {
mapping[2] = GetByteMappingIndex(ThirdEntry).ToString(); mapping[2] = "Color." + ThirdEntry.ToUpper();
if (Bpp > 3) if (Bpp > 3)
{ {
mapping[3] = GetByteMappingIndex(FourthEntry).ToString(); mapping[3] = "Color." + FourthEntry.ToUpper();
} }
} }
} }
@ -83,15 +83,5 @@ internal readonly struct ColorFormatData(string typeName, int bpp, char firstEnt
_ => string.Empty _ => string.Empty
}; };
private static int GetByteMappingIndex(string entry)
=> entry switch
{
"r" => 0,
"g" => 1,
"b" => 2,
"a" => 3,
_ => throw new IndexOutOfRangeException()
};
#endregion #endregion
} }

View File

@ -3,6 +3,14 @@
namespace HPPH; namespace HPPH;
internal static class Color
{
internal const int R = 0;
internal const int G = 1;
internal const int B = 2;
internal const int A = 3;
}
[ColorGenerator] [ColorGenerator]
public readonly partial struct ColorRGB; public readonly partial struct ColorRGB;

View File

@ -10,7 +10,7 @@ public sealed partial class ColorFormatABGR : IColorFormat
public string Name => "ABGR"; public string Name => "ABGR";
ReadOnlySpan<byte> IColorFormat.ByteMapping => [3, 2, 1, 0]; ReadOnlySpan<byte> IColorFormat.ByteMapping => [Color.A, Color.B, Color.G, Color.R];
#endregion #endregion

View File

@ -10,7 +10,7 @@ public sealed partial class ColorFormatARGB : IColorFormat
public string Name => "ARGB"; public string Name => "ARGB";
ReadOnlySpan<byte> IColorFormat.ByteMapping => [3, 0, 1, 2]; ReadOnlySpan<byte> IColorFormat.ByteMapping => [Color.A, Color.R, Color.G, Color.B];
#endregion #endregion

View File

@ -10,7 +10,7 @@ public sealed partial class ColorFormatBGR : IColorFormat
public string Name => "BGR"; public string Name => "BGR";
ReadOnlySpan<byte> IColorFormat.ByteMapping => [2, 1, 0]; ReadOnlySpan<byte> IColorFormat.ByteMapping => [Color.B, Color.G, Color.R];
#endregion #endregion

View File

@ -10,7 +10,7 @@ public sealed partial class ColorFormatBGRA : IColorFormat
public string Name => "BGRA"; public string Name => "BGRA";
ReadOnlySpan<byte> IColorFormat.ByteMapping => [2, 1, 0, 3]; ReadOnlySpan<byte> IColorFormat.ByteMapping => [Color.B, Color.G, Color.R, Color.A];
#endregion #endregion

View File

@ -10,7 +10,7 @@ public sealed partial class ColorFormatRGB : IColorFormat
public string Name => "RGB"; public string Name => "RGB";
ReadOnlySpan<byte> IColorFormat.ByteMapping => [0, 1, 2]; ReadOnlySpan<byte> IColorFormat.ByteMapping => [Color.R, Color.G, Color.B];
#endregion #endregion

View File

@ -10,7 +10,7 @@ public sealed partial class ColorFormatRGBA : IColorFormat
public string Name => "RGBA"; public string Name => "RGBA";
ReadOnlySpan<byte> IColorFormat.ByteMapping => [0, 1, 2, 3]; ReadOnlySpan<byte> IColorFormat.ByteMapping => [Color.R, Color.G, Color.B, Color.A];
#endregion #endregion