mirror of
https://github.com/IgorTimofeev/MineOS.git
synced 2025-12-20 19:19:21 +01:00
71 lines
1.7 KiB
Lua
Executable File
71 lines
1.7 KiB
Lua
Executable File
|
|
local args = {...}
|
|
local image = args[1]
|
|
|
|
local unicode = require("unicode")
|
|
local module = {}
|
|
|
|
--------------------------------------------------------------------------------------------------------------
|
|
|
|
function module.load(path)
|
|
local file, reason = io.open(path, "r")
|
|
if file then
|
|
local picture, pictureWidth, lineCounter = {0, 0}, nil, 0
|
|
for line in file:lines() do
|
|
local lineLength = unicode.len(line)
|
|
if not pictureWidth then
|
|
pictureWidth = (lineLength + 1) / 19
|
|
picture[1] = pictureWidth
|
|
end
|
|
|
|
for x = 1, lineLength, 19 do
|
|
table.insert(picture, tonumber("0x" .. unicode.sub(line, x, x + 5)))
|
|
table.insert(picture, tonumber("0x" .. unicode.sub(line, x + 7, x + 12)))
|
|
table.insert(picture, tonumber("0x" .. unicode.sub(line, x + 14, x + 15)))
|
|
table.insert(picture, unicode.sub(line, x + 17, x + 17))
|
|
end
|
|
|
|
lineCounter = lineCounter + 1
|
|
end
|
|
|
|
picture[2] = lineCounter
|
|
file:close()
|
|
return picture
|
|
else
|
|
error("Failed to open file \"" .. tostring(path) .. "\" for reading: " .. tostring(reason))
|
|
end
|
|
end
|
|
|
|
function module.save(path, picture, encodingMethod)
|
|
local file, reason = io.open(path, "w")
|
|
if file then
|
|
local x = 1
|
|
for i = 3, #picture, 4 do
|
|
file:write(
|
|
string.format("%06X", picture[i]), " ",
|
|
string.format("%06X", picture[i + 1]), " ",
|
|
string.format("%02X", picture[i + 2]), " ",
|
|
picture[i + 3]
|
|
)
|
|
|
|
x = x + 1
|
|
if x > picture[1] then
|
|
x = 1
|
|
file:write("\n")
|
|
else
|
|
file:write(" ")
|
|
end
|
|
end
|
|
|
|
file:close()
|
|
else
|
|
error("Failed to open file for writing: " .. tostring(reason))
|
|
end
|
|
end
|
|
|
|
--------------------------------------------------------------------------------------------------------------
|
|
|
|
return module
|
|
|
|
|