-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathColor.lua
More file actions
96 lines (76 loc) · 2.37 KB
/
Copy pathColor.lua
File metadata and controls
96 lines (76 loc) · 2.37 KB
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
ColorMixin = ColorMixin or {}
function CreateColor(r, g, b, a)
local color = CreateFromMixins(ColorMixin)
color:OnLoad(r, g, b, a)
return color
end
function ColorMixin:OnLoad(r, g, b, a)
self:SetRGBA(r, g, b, a)
end
function ColorMixin:IsRGBEqualTo(otherColor)
return self.r == otherColor.r
and self.g == otherColor.g
and self.b == otherColor.b
end
function ColorMixin:IsEqualTo(otherColor)
return self:IsRGBEqualTo(otherColor) and self.a == otherColor.a
end
function ColorMixin:GetRGB()
return self.r, self.g, self.b
end
function ColorMixin:GetHSL()
local r, g, b, a = self.r, self.g, self.b, self.a
local h, s, l = C_ColorUtil.ConvertHSVToHSL(C_ColorUtil.ConvertRGBToHSV(r, g, b))
return h, s, l, a or 1
end
function ColorMixin:GetRGBAsBytes()
return Round(self.r * 255), Round(self.g * 255), Round(self.b * 255)
end
function ColorMixin:GetRGBA()
return self.r, self.g, self.b, self.a
end
function ColorMixin:GetRGBAAsBytes()
return Round(self.r * 255), Round(self.g * 255), Round(self.b * 255), Round((self.a or 1) * 255)
end
function ColorMixin:SetRGBA(r, g, b, a)
self.r = r
self.g = g
self.b = b
self.a = a or 1
end
function ColorMixin:SetRGB(r, g, b)
self:SetRGBA(r, g, b, nil)
end
function ColorMixin:GenerateHexColor()
return C_ColorUtil.GenerateTextColorCode(self)
end
function ColorMixin:GenerateHexColorNoAlpha()
return string.format("%.2X%.2X%.2X", self:GetRGBAsBytes())
end
function ColorMixin:GenerateHexColorMarkup()
return "|c"..self:GenerateHexColor()
end
function ColorMixin:WrapTextInColorCode(text)
return C_ColorUtil.WrapTextInColor(text, self)
end
function WrapTextInColorCode(text, colorHexString)
return C_ColorUtil.WrapTextInColorCode(text, colorHexString)
end
function ColorMixin:WrapTextInColorTableCode(text)
return WrapTextInColorCode(text, self:GenerateHexColor())
end
function WrapTextInColor(text, color)
return C_ColorUtil.WrapTextInColor(text, color)
end
for _, v in pairs(ITEM_QUALITY_COLORS) do
v.color = CreateColor(v.r, v.g, v.b, 1)
end
do
local envTbl = _G
local DBColors = C_UIColor.GetColors();
for _, dbColor in ipairs(DBColors) do
local color = CreateColor(dbColor.color.r, dbColor.color.g, dbColor.color.b, dbColor.color.a);
envTbl[dbColor.baseTag] = color;
envTbl[dbColor.baseTag.."_CODE"] = color:GenerateHexColorMarkup();
end
end