60 lines
1.8 KiB
Lua
60 lines
1.8 KiB
Lua
palfade = {
|
|
original = {},
|
|
reddish = {},
|
|
|
|
init = function ()
|
|
for i=1,32 do
|
|
palfade.reddish[i] = {r=palfade.original[i].r, g=palfade.original[i].g, b=palfade.original[i].b}
|
|
end
|
|
end,
|
|
|
|
luminance = function(r, g, b)
|
|
return (0.2126*r + 0.7152*g + 0.0722*b)/255
|
|
end,
|
|
|
|
reddish_limit = function(r, g, b)
|
|
local t = palfade.luminance(r, g, b) / 255
|
|
|
|
local R = 255 * t
|
|
local G = g * (1 - t)
|
|
local B = b * (1 - t)
|
|
|
|
return R, G, B
|
|
end,
|
|
|
|
fade_reddish_color = function(r, g, b, f)
|
|
--local Rr, Gr, Br = palfade.reddish_limit(r, g, b)
|
|
local ff = math.min(1, f+palfade.luminance(r,g,b))
|
|
local R = math.floor(r*ff)--math.floor(r + (Rr - r) * f)
|
|
local G = math.floor(g*f)--math.floor(g + (Gr - g) * f)
|
|
local B = math.floor(b*f)--math.floor(b + (Br - b) * f)
|
|
-- local R = math.floor(r + (Rr - r) * f)
|
|
-- local G = math.floor(g + (Gr - g) * f)
|
|
-- local B = math.floor(b + (Br - b) * f)
|
|
|
|
return R, G, B
|
|
end,
|
|
|
|
fade_reddish = function(f)
|
|
for i=1,32 do
|
|
local r, g, b = palfade.fade_reddish_color(palfade.original[i].r, palfade.original[i].g, palfade.original[i].b, f)
|
|
palfade.reddish[i].r, palfade.reddish[i].g, palfade.reddish[i].b = r, g, b
|
|
pal.color(i-1,r,g,b)
|
|
end
|
|
end,
|
|
|
|
fade_red = function(f)
|
|
for i=1,32 do
|
|
local r = math.floor(palfade.reddish[i].r + (255-palfade.reddish[i].r)*f)
|
|
local g = math.floor(palfade.reddish[i].g - (palfade.reddish[i].g)*f)
|
|
local b = math.floor(palfade.reddish[i].b - (palfade.reddish[i].b)*f)
|
|
pal.color(i-1,r,g,b)
|
|
end
|
|
|
|
end,
|
|
|
|
restore = function()
|
|
pal.set(palfade.original)
|
|
end
|
|
|
|
} |