dcpu16/data/png2c.py

41 lines
1006 B
Python
Executable File

#!/usr/bin/env python3
from PIL import Image
FONT_SIZE = (4, 8)
def convert(filename, subset=range(0,128)):
img = Image.open(filename)
print("""#include <stdint.h>
uint16_t default_font[] = {""")
grid = (img.size[0] // FONT_SIZE[0], img.size[1] // FONT_SIZE[1])
ch = 0
for r in range(grid[1]):
for c in range(grid[0]):
v = 0
for x in range(FONT_SIZE[0]):
for y in range(FONT_SIZE[1]-1, -1, -1):
v <<= 1
if img.getpixel((c*FONT_SIZE[0]+x,r*FONT_SIZE[1]+y)):
v |= 1
h = (v >> 16) & 0xffff
l = v & 0xffff
if 32 <= ch < 127:
d = f'"{ch:c}" '
else:
d = ''
if ch in subset:
print(f"\t0x{h:04x}, 0x{l:04x},\t/* {ch:3d} 0x{ch:02x} {d}*/")
ch += 1
print("};")
if __name__ == '__main__':
import sys
for fn in sys.argv[1:]:
convert(fn)