-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAsColor.cs
80 lines (58 loc) · 1.56 KB
/
AsColor.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
using System;
using System.Drawing;
namespace AsTrend.Library.Colors
{
public readonly struct AsColor : IEquatable<AsColor>
{
public readonly byte R;
public readonly byte G;
public readonly byte B;
public string Hex => ToString();
public AsColor(byte aR, byte aG, byte aB)
{
R = aR;
G = aG;
B = aB;
}
public AsColor(Color aColor) : this(aColor.R, aColor.G, aColor.B)
{
}
public AsColor(string aHtmlHexColor)
{
Color color = ColorTranslator.FromHtml(aHtmlHexColor);
R = color.R;
G = color.G;
B = color.B;
}
public override string ToString()
{
return $"#{R:X2}{G:X2}{B:X2}";
}
public string Serialize()
{
return $"{R},{G},{B}";
}
public override bool Equals(object? aObj)
{
return aObj is AsColor color && Equals(color);
}
public bool Equals(AsColor aOther)
{
return R == aOther.R &&
G == aOther.G &&
B == aOther.B;
}
public static bool operator ==(AsColor aLeft, AsColor aRight)
{
return aLeft.Equals(aRight);
}
public static bool operator !=(AsColor aLeft, AsColor aRight)
{
return !(aLeft == aRight);
}
public override int GetHashCode()
{
return HashCode.Combine(R, G, B, Hex);
}
}
}