-- [ʞ] termcolors.lua
-- ~ lexi hale <lexi@hale.su>
-- © EUPL v1.2
-- ? print grids comparing truecolor output to 256-color output
function conv(a)
return 16 + math.floor(a.r*5)*36 + math.floor(a.g*5)*6 + math.floor(a.b*5)
end
local S = 32
local M = 33 * 4
local grid = {}
local X,Y = 0,0
for R=0,S do for G=0,S do
for B=0,S do
local r,g,b = R/S, G/S, B/S
grid[Y*M + X] = {r=r,g=g,b=b}
X = X + 1
if X == M then
X = 0
Y = Y + 1
end
end
end end
local function show(setcolor)
for y=0,#grid/M - 1,2 do
for x=0,M - 1 do
local top,bot = grid[y*M + x], grid[(y+1)*M + x]
setcolor(top, false)
setcolor(bot, true)
io.write(string.format('▀'))
end print('\27[m') end
end
print "-- using 256-color escapes"
show(function(clr,bottom)
local tpl
if clr then
if bottom then tpl = '\27[48;5;%um'
else tpl = '\27[38;5;%um' end
io.write(string.format(tpl, conv(clr)))
else
if bottom
then io.write('\27[49m')
else io.write('\27[39m')
end
end
end)
print "-- using truecolor escapes"
-- if false then
show(function(clr,bottom)
local tpl
if clr then
if bottom then tpl = '\27[48;2;%u;%u;%um'
else tpl = '\27[38;2;%u;%u;%um' end
io.write(string.format(tpl,
math.floor(clr.r*0xff),
math.floor(clr.g*0xff),
math.floor(clr.b*0xff)))
else
if bottom
then io.write('\27[49m')
else io.write('\27[39m')
end
end
end)
-- end
-- for R=0,S do for G=0,S do for B=0,S do
-- local r,g,b = R/S, G/S, B/S
-- io.write(string.format('\27[48;2;%u;%u;%um ', math.ceil(r*0xff), math.ceil(g*0xff), math.ceil(b*0xff)))
-- end print('\27[m') end end
--
-- print()