private static IEnumerable<QuantumType> ParseQ8(string value)
{
byte red;
byte green;
byte blue;
byte alpha;
if (value.Length == 3)
{
yield return Quantum.Convert((byte)ParseHex(value, 1, 2));
}
else if (value.Length == 4 || value.Length == 5)
{
red = (byte)ParseHex(value, 1, 1);
red += (byte)(red * 16);
yield return Quantum.Convert(red);
green = (byte)ParseHex(value, 2, 1);
green += (byte)(green * 16);
yield return Quantum.Convert(green);
blue = (byte)ParseHex(value, 3, 1);
blue += (byte)(blue * 16);
yield return Quantum.Convert(blue);
if (value.Length == 5)
{
alpha = (byte)ParseHex(value, 4, 1);
alpha += (byte)(alpha * 16);
yield return Quantum.Convert(alpha);
}
}
else if (value.Length == 7 || value.Length == 9)
{
red = (byte)ParseHex(value, 1, 2);
yield return Quantum.Convert(red);
green = (byte)ParseHex(value, 3, 2);
yield return Quantum.Convert(green);
blue = (byte)ParseHex(value, 5, 2);
yield return Quantum.Convert(blue);
if (value.Length == 9)
{
alpha = (byte)ParseHex(value, 7, 2);
yield return Quantum.Convert(alpha);
}
}
else
throw new ArgumentException("Invalid hex value.", nameof(value));
}