diff options
author | Adam <adamdharrison@gmail.com> | 2023-10-10 16:20:03 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-10 16:20:03 -0400 |
commit | 7db1dfb381912b4335779246f6f11ed405c6583e (patch) | |
tree | b360e69a9459d6f38c50ccb7b4181f1fdca397bc /scripts | |
parent | 1857097d36394054b4b3943febc88496ea2f5b44 (diff) | |
parent | bc75163b8b0dac536b1ccccf9d4325537a8ce4eb (diff) | |
download | lite-xl-colors-7db1dfb381912b4335779246f6f11ed405c6583e.tar.gz lite-xl-colors-7db1dfb381912b4335779246f6f11ed405c6583e.zip |
Merge pull request #26 from lite-xl/PR/add-in-autogeneration
Add in Auto-Generation/Stub Support with LPM
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/make_preview_image.lua | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/scripts/make_preview_image.lua b/scripts/make_preview_image.lua new file mode 100755 index 0000000..d1d48be --- /dev/null +++ b/scripts/make_preview_image.lua @@ -0,0 +1,50 @@ +#!/usr/bin/lua + +for i, filename in ipairs({ ... }) do + local name = filename:match("([^\\/]+)%..*$") + + -- get colors + local text = io.open(filename):read("*a") + local colors = {} + for r, g, b in text:gmatch("#(%x%x)(%x%x)(%x%x)") do + r = tonumber(r, 16) + g = tonumber(g, 16) + b = tonumber(b, 16) + table.insert(colors, { r, g, b }) + end + + table.sort(colors, function(a, b) + return a[1] + a[2] + a[3] < b[1] + b[2] + b[3] + end) + + local function eq(a, b) + return a[1] == b[1] and a[2] == b[2] and a[3] == b[3] + end + + local prev = {} + for i = #colors, 1, -1 do + if eq(colors[i], prev) then + table.remove(colors, i) + else + prev = colors[i] + end + end + + + --generate svg file + local w = 200 + local h = 16 + local fp = io.open("previews/" .. name .. ".svg", "wb") + + fp:write('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'..w..'" height="'..h..'" shape-rendering="crispEdges"> \n') + + for i = 1, #colors do + local width = w/#colors + local r, g, b = table.unpack(colors[i]) + local rect = '<rect x="'..(i-1)*width..'" width="'..width..'" height="'..h..'" fill="rgb('..r..', '..g..', '..b..')"></rect> \n' + fp:write(rect) + end + + fp:write('</svg>') + fp:close() +end |