Added HSL_to_RGB function
Originally committed to SVN as r1488.
This commit is contained in:
parent
d130169ed2
commit
8dee40348d
1 changed files with 68 additions and 0 deletions
|
@ -178,6 +178,74 @@ function HSV_to_RGB(H,S,V)
|
||||||
return r,g,b
|
return r,g,b
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Convert HSL (Hue, Saturation, Luminance) to RGB
|
||||||
|
-- Contributed by Gundamn
|
||||||
|
function HSL_to_RGB(H, S, L)
|
||||||
|
local r, g, b;
|
||||||
|
|
||||||
|
-- Make sure input is in range
|
||||||
|
H = H % 360
|
||||||
|
S = clamp(S, 0, 1)
|
||||||
|
L = clamp(L, 0, 1)
|
||||||
|
|
||||||
|
if S == 0 then
|
||||||
|
-- Simple case if saturation is 0, all grey
|
||||||
|
r = L
|
||||||
|
g = L
|
||||||
|
b = L
|
||||||
|
|
||||||
|
else
|
||||||
|
-- More common case, saturated colour
|
||||||
|
if L < 0.5 then
|
||||||
|
Q = L * (1.0 + S)
|
||||||
|
else
|
||||||
|
Q = L + S - (L * S)
|
||||||
|
end
|
||||||
|
|
||||||
|
local P = 2.0 * L - Q
|
||||||
|
|
||||||
|
local Hk = H / 360
|
||||||
|
|
||||||
|
local Tr, Tg, Tb
|
||||||
|
if Hk < 1/3 then
|
||||||
|
Tr = Hk + 1/3
|
||||||
|
Tg = Hk
|
||||||
|
Tb = Hk + 2/3
|
||||||
|
elseif Hk > 2/3 then
|
||||||
|
Tr = Hk - 2/3
|
||||||
|
Tg = Hk
|
||||||
|
Tb = Hk - 1/3
|
||||||
|
else
|
||||||
|
Tr = Hk + 1/3
|
||||||
|
Tg = Hk
|
||||||
|
Tb = Hk - 1/3
|
||||||
|
end
|
||||||
|
|
||||||
|
local function get_component(T)
|
||||||
|
if T < 1/6 then
|
||||||
|
return P + ((Q - P) * 6.0 * T)
|
||||||
|
elseif 1/6 <= T and T < 1/2 then
|
||||||
|
return Q
|
||||||
|
elseif 1/2 <= T and T < 2/3 then
|
||||||
|
return P + ((Q - P) * (2/3 - T) * 6.0)
|
||||||
|
else
|
||||||
|
return P
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
r = get_component(Tr)
|
||||||
|
g = get_component(Tg)
|
||||||
|
b = get_component(Tb)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
r = math.floor(r * 255)
|
||||||
|
g = math.floor(g * 255)
|
||||||
|
b = math.floor(b * 255)
|
||||||
|
|
||||||
|
return r, g, b
|
||||||
|
end
|
||||||
|
|
||||||
-- Removes spaces at the start and end of string
|
-- Removes spaces at the start and end of string
|
||||||
function string.trim(s)
|
function string.trim(s)
|
||||||
return (string.gsub(s, "^%s*(.-)%s*$", "%1"))
|
return (string.gsub(s, "^%s*(.-)%s*$", "%1"))
|
||||||
|
|
Loading…
Reference in a new issue