painting-cd2025/functions.lua

58 lines
1.3 KiB
Lua

-- painting - in-game painting for minetest
function painting.compress(string)
return minetest.encode_base64(minetest.compress(string, "deflate"))
end
function painting.decompress(string)
return minetest.decompress(minetest.decode_base64(string), "deflate")
end
function painting.to_imagestring(data, res)
if not data then
minetest.log("error", "[painting] missing data")
return
end
local cols = {}
for y = 0, res - 1 do
local xs = data[y]
for x = 0, res - 1 do
local col = xs[x]
--if col ~= "white" then
cols[col] = cols[col] or {}
cols[col][#cols[col]+1] = {y, x}
--end
end
end
local t,n = {},1
local groupopen = "([combine:"..res.."x"..res
for hexcolour,ps in pairs(cols) do
t[n] = groupopen
n = n+1
for _,p in pairs(ps) do
local y,x = unpack(p)
t[n] = ":"..p[1]..","..p[2].."=w.png"
n = n+1
end
t[n] = "^[colorize:#"..hexcolour..")^"
n = n+1
end
n = n-1
if n == 0 then
minetest.log("error", "[painting] no texels")
return "w.png"
end
t[n] = t[n]:sub(1,-2)
--print("Image string len: "..string.len(table.concat(t)))
return table.concat(t)
end
function painting.old_compress(string)
return minetest.compress(string, "deflate")
end
function painting.old_decompress(string)
return minetest.decompress(string, "deflate")
end