}
[Test]
+ public void TestToHex()
+ {
+ var colorRgb = Color.FromRgb(138, 43, 226);
+ Assert.AreEqual(Color.FromHex(colorRgb.ToHex()), colorRgb);
+ var colorRgba = Color.FromRgba(138, 43, 226,.2);
+ Assert.AreEqual(Color.FromHex(colorRgba.ToHex()), colorRgba);
+ var colorHsl = Color.FromHsla(240, 1, 1);
+ Assert.AreEqual(Color.FromHex(colorHsl.ToHex()),colorHsl);
+ var colorHsla = Color.FromHsla(240, 1, 1,.1);
+ var hexFromHsla = Color.FromHex(colorHsla.ToHex());
+ Assert.That(hexFromHsla.A, Is.EqualTo(colorHsla.A).Within(0.002));
+ Assert.That(hexFromHsla.R, Is.EqualTo(colorHsla.R).Within(0.001));
+ Assert.That(hexFromHsla.G, Is.EqualTo(colorHsla.G).Within(0.001));
+ Assert.That(hexFromHsla.B, Is.EqualTo(colorHsla.B).Within(0.001));
+ }
+
+ [Test]
public void FromRGBDouble ()
{
var color = Color.FromRgb (0.2, 0.3, 0.4);
return string.Format(CultureInfo.InvariantCulture, "[Color: A={0}, R={1}, G={2}, B={3}, Hue={4}, Saturation={5}, Luminosity={6}]", A, R, G, B, Hue, Saturation, Luminosity);
}
+ public string ToHex()
+ {
+ var red = (uint)(R * 255);
+ var green = (uint)(G * 255);
+ var blue = (uint)(B * 255);
+ var alpha = (uint)(A * 255);
+ return $"#{alpha:X2}{red:X2}{green:X2}{blue:X2}";
+ }
+
static uint ToHex (char c)
{
ushort x = (ushort)c;
if (x >= 'a' && x <= 'f')
return (uint)(x - 'a' + 10);
return 0;
- }
+ }
static uint ToHexD (char c)
{