#!/usr/bin/env python3
from PIL import Image


class Img(object):
    def __init__(self, fn):
        im = Image.open(fn)
        self.w, self.h = im.size
        self.data = list(im.getdata())

    def pixel(self, r, c):
        p = self.data[r + c * self.w]
        if p == (255, 255, 255):
            return "0"
        if p == (0, 0, 0):
            return "1"
        if p == (255, 0, 255):
            return None
        raise Exception("Unknown color", p)


def convert(imgfile, outfile):
    img = Img(imgfile)
    cur = ""
    with open(outfile, "w") as f:
        for i in range(128):
            x = (i % 16) * 10
            y = (i // 16) * 10
            cur = ""
            while img.pixel(x, y) is not None:
                val = "".join(img.pixel(x, y + j) for j in range(8))
                x += 1
                cur += "\\x%02x" % int(val, 2)
            cur = "\\x%02x" % (len(cur) // 4) + cur
            ch = chr(i) if i >= 32 and i <= 126 else "_"
            f.write('\t/* 0x%02x %c */ (uint8_t *)"%s",\n' % (i, ch, cur))


convert("fonts/fontfixed.png", "fontfixed.inc")
convert("fonts/font.png", "font.inc")
