summaryrefslogtreecommitdiff
path: root/config/nvim/lua/theme/colors256.lua
diff options
context:
space:
mode:
Diffstat (limited to 'config/nvim/lua/theme/colors256.lua')
-rw-r--r--config/nvim/lua/theme/colors256.lua110
1 files changed, 0 insertions, 110 deletions
diff --git a/config/nvim/lua/theme/colors256.lua b/config/nvim/lua/theme/colors256.lua
deleted file mode 100644
index 350a2a1..0000000
--- a/config/nvim/lua/theme/colors256.lua
+++ /dev/null
@@ -1,110 +0,0 @@
--- Hex to 256 color conversion utilities
-
-local M = {}
-
--- Convert hex color to RGB values
-local function hex_to_rgb(hex)
- hex = hex:gsub("#", "")
- return {
- r = tonumber(hex:sub(1, 2), 16),
- g = tonumber(hex:sub(3, 4), 16),
- b = tonumber(hex:sub(5, 6), 16),
- }
-end
-
--- Convert RGB to nearest 256 color index
-local function rgb_to_256(r, g, b)
- -- Build full 256 color palette and find nearest
- local palette = {}
-
- -- Gray ramp (232-255)
- for i = 0, 23 do
- local gray = 8 + i * 10
- palette[#palette + 1] = { r = gray, g = gray, b = gray, idx = 232 + i }
- end
-
- -- 6x6x6 color cube (16-231)
- local values = {0, 95, 135, 175, 215, 255}
- for ri = 0, 5 do
- for gi = 0, 5 do
- for bi = 0, 5 do
- local idx = 16 + ri * 36 + gi * 6 + bi
- palette[#palette + 1] = {
- r = values[ri + 1],
- g = values[gi + 1],
- b = values[bi + 1],
- idx = idx
- }
- end
- end
- end
-
- -- Find nearest color (minimum Manhattan distance)
- local min_dist = 100000
- local nearest_idx = 15
-
- for _, color in ipairs(palette) do
- local dist = math.abs(r - color.r) + math.abs(g - color.g) + math.abs(b - color.b)
- if dist < min_dist then
- min_dist = dist
- nearest_idx = color.idx
- end
- end
-
- return nearest_idx
-end
-
--- Convert hex color string to 256 color index
-function M.hex_to_256(hex)
- if not hex or hex == "" or hex == "NONE" then
- return nil
- end
-
- if type(hex) == "number" then
- return hex -- Already a cterm color
- end
-
- local rgb = hex_to_rgb(hex)
- return rgb_to_256(rgb.r, rgb.g, rgb.b)
-end
-
--- Create highlight table with cterm colors from fg and bg hex colors
-function M.convert_theme_theme(theme)
- local cterm_theme = {}
- for group, hl in pairs(theme) do
- local cterm = {}
- if hl.fg then
- cterm.fg = M.hex_to_256(hl.fg)
- end
- -- Include background colors
- if hl.bg then
- cterm.bg = M.hex_to_256(hl.bg)
- end
- if hl.sp then
- cterm.sp = M.hex_to_256(hl.sp)
- end
- if hl.bold then
- cterm.bold = true
- end
- if hl.underline then
- cterm.underline = true
- end
- if hl.undercurl then
- cterm.undercurl = true
- end
- if hl.italic then
- cterm.italic = true
- end
- if hl.reverse then
- cterm.reverse = true
- end
- if hl.standout then
- cterm.standout = true
- end
-
- cterm_theme[group] = cterm
- end
- return cterm_theme
-end
-
-return M