mirror of
https://github.com/IgorTimofeev/MineOS.git
synced 2026-01-07 19:52:40 +01:00
Create colorlib.lua
This commit is contained in:
parent
2a1ab3ce9a
commit
1582e92944
88
lib/colorlib.lua
Normal file
88
lib/colorlib.lua
Normal file
@ -0,0 +1,88 @@
|
||||
local colorlib = {}
|
||||
|
||||
--utils
|
||||
local function check(tVal, tMaxVal, tMinVal, tType)
|
||||
|
||||
end
|
||||
|
||||
local function isNan(x)
|
||||
return x~=x
|
||||
end
|
||||
|
||||
--RGB model
|
||||
function colorlib.HEXtoRGB(color)
|
||||
color = math.ceil(color)
|
||||
|
||||
local rr = bit32.rshift( color, 16 )
|
||||
local gg = bit32.rshift( bit32.band(color, 0x00ff00), 8 )
|
||||
local bb = bit32.band(color, 0x0000ff)
|
||||
|
||||
return rr, gg, bb
|
||||
end
|
||||
|
||||
function colorlib.RGBtoHEX(rr, gg, bb)
|
||||
return bit32.lshift(rr, 16) + bit32.lshift(gg, 8) + bb
|
||||
end
|
||||
|
||||
--HSB model
|
||||
function colorlib.RGBtoHSB(rr, gg, bb)
|
||||
local max = math.max(rr, math.max(gg, bb))
|
||||
local min = math.min(rr, math.min(gg, bb))
|
||||
local delta = max - min
|
||||
|
||||
local h = 0
|
||||
if ( max == rr and gg >= bb) then h = 60*(gg-bb)/delta end
|
||||
if ( max == rr and gg <= bb ) then h = 60*(gg-bb)/delta + 360 end
|
||||
if ( max == gg ) then h = 60*(bb-rr)/delta + 120 end
|
||||
if ( max == bb ) then h = 60*(rr-gg)/delta + 240 end
|
||||
|
||||
local s = 0
|
||||
if ( max ~= 0 ) then s = 1-(min/max) end
|
||||
|
||||
local b = max*100/255
|
||||
|
||||
if isNan(h) then h = 0 end
|
||||
|
||||
return h, s*100, b
|
||||
end
|
||||
|
||||
function colorlib.HSBtoRGB(h, s, v)
|
||||
if h >359 then h = 0 end
|
||||
local rr, gg, bb = 0, 0, 0
|
||||
local const = 255
|
||||
|
||||
s = s/100
|
||||
v = v/100
|
||||
|
||||
local i = math.floor(h/60)
|
||||
local f = h/60 - i
|
||||
|
||||
local p = v*(1-s)
|
||||
local q = v*(1-s*f)
|
||||
local t = v*(1-(1-f)*s)
|
||||
|
||||
if ( i == 0 ) then rr, gg, bb = v, t, p end
|
||||
if ( i == 1 ) then rr, gg, bb = q, v, p end
|
||||
if ( i == 2 ) then rr, gg, bb = p, v, t end
|
||||
if ( i == 3 ) then rr, gg, bb = p, q, v end
|
||||
if ( i == 4 ) then rr, gg, bb = t, p, v end
|
||||
if ( i == 5 ) then rr, gg, bb = v, p, q end
|
||||
|
||||
return rr*const, gg*const, bb*const
|
||||
end
|
||||
|
||||
function colorlib.HEXtoHSB(color)
|
||||
local rr, gg, bb = colorlib.HEXtoRGB(color)
|
||||
local h, s, b = colorlib.RGBtoHSB( rr, gg, bb )
|
||||
|
||||
return h, s, b
|
||||
end
|
||||
|
||||
function colorlib.HSBtoHEX(h, s, b)
|
||||
local rr, gg, bb = colorlib.HSBtoRGB(h, s, b)
|
||||
local color = colorlib.RGBtoHEX(rr, gg, bb)
|
||||
|
||||
return color
|
||||
end
|
||||
|
||||
return colorlib
|
||||
Loading…
x
Reference in New Issue
Block a user