Changeset

7203:be8b88ad35a3

util.termcolours: Add 256 color support
author Kim Alvefur <zash@zash.se>
date Sat, 27 Feb 2016 16:47:12 +0100
parents 7202:5bf0ff3882aa
children 7204:ab2b7496a617
files util/termcolours.lua
diffstat 1 files changed, 25 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/util/termcolours.lua	Sat Feb 27 15:29:56 2016 +0100
+++ b/util/termcolours.lua	Sat Feb 27 16:47:12 2016 +0100
@@ -14,6 +14,7 @@
 local tonumber = tonumber;
 local ipairs = ipairs;
 local io_write = io.write;
+local m_floor = math.floor;
 
 local windows;
 if os.getenv("WINDIR") then
@@ -55,6 +56,30 @@
 	end
 end
 
+local function gray(n)
+	return m_floor(n*3/32)+0xe8;
+end
+local function color(r,g,b)
+	if r == g and g == b then
+		return gray(r);
+	end
+	r = m_floor(r*3/128);
+	g = m_floor(g*3/128);
+	b = m_floor(b*3/128);
+	return 0x10 + ( r * 36 ) + ( g * 6 ) + ( b );
+end
+local function hex2rgb(hex)
+	local r = tonumber(hex:sub(1,2),16);
+	local g = tonumber(hex:sub(3,4),16);
+	local b = tonumber(hex:sub(5,6),16);
+	return r,g,b;
+end
+
+setmetatable(stylemap, { __index = function(_, style)
+	local g = style:sub(7) == " background" and "48;5;" or "38;5;";
+	return g .. color(hex2rgb(style));
+end } );
+
 local function getstyle(...)
 	local styles, result = { ... }, {};
 	for i, style in ipairs(styles) do