local cairo = require'cairo' --used to open the file
local bitmap = require'bitmap' --used to read its content

function int_hex(nb)
  if nb < 16 then add = "0"
  else add = "" end
  return [[\x]]..add..string.format("%x", nb)
end

io.write([[from draw import *
]])

for i = 1, 12, 1 do
  do --open image
    path = "spongebob/out-"
    if i < 10 then path = path.."0" end
    path = path..i.."0.png"
    local image = cairo.load_png(path)
    image_infos = {width = image:width(), height = image:height()}
    image_bitmap = image:bitmap()
  end
  local getpixel, setpixel = bitmap.pixel_interface(image_bitmap)

  pallet = {} --will store colors
  pallet_last = 0

  io.write("width=", image_infos.width, "\n", [[data=b"]])

  for j = 1, image_infos.height, 1 do
    for i = 1, image_infos.width, 1 do
      r, g, b = getpixel(i, j)
      if not pallet[r..","..g..","..b] then
        pallet[r..","..g..","..b] = pallet_last
        pallet_last = pallet_last + 1
      end
      io.write(int_hex(pallet[r..","..g..","..b]))
    end
  end

  --let's write the pallet
  io.write("\"\npallet={")
  for i, v in pairs(pallet) do
    io.write(v, ":(", i, "),")
  end

  io.write("}\ndraw(data,pallet,", image_infos.width, ")")
end
