Files
topicchi 0b6afad8fe
2023-09-22 06:03:48 +00:00

69 lines
2.9 KiB
Python

import binascii
import sys
filename = 'c16.bin'
#filename=sys.argv[0]
with open(filename, 'rb') as f:
content = f.read()
print '/****************************************************************'
print '* Font from BIN exported'
print '*****************************************************************/'
print
print '#include <avr/pgmspace.h>'
# Vertical - Left-Right
print '// converted from',filename
print '// Vertical --> LEFT-RIGHT'
print 'static const byte PROGMEM font_'+filename.split('.')[0]+'[][8] ='
print '{'
i=0
EOF=len(content)
while i<EOF:
b0=ord(content[i])
b1=ord(content[i+1])
b2=ord(content[i+2])
b3=ord(content[i+3])
b4=ord(content[i+4])
b5=ord(content[i+5])
b6=ord(content[i+6])
b7=ord(content[i+7])
print ' {',
sys.stdout.write('0x'+ binascii.hexlify(chr((b0 & 128==128)*1 | (b1 & 128==128)*2 | (b2 & 128==128)*4 | (b3 & 128==128)*8 | (b4 & 128==128)*16 | (b5 & 128==128)*32 | (b6 & 128==128)*64 | (b7 & 128==128)*128))+',')
sys.stdout.write('0x'+ binascii.hexlify(chr((b0 & 64==64)*1 | (b1 & 64==64)*2 | (b2 & 64==64)*4 | (b3 & 64==64)*8 | (b4 & 64==64)*16 | (b5 & 64==64)*32 | (b6 & 64==64)*64 | (b7 & 64==64)*128))+',')
sys.stdout.write('0x'+ binascii.hexlify(chr((b0 & 32==32)*1 | (b1 & 32==32)*2 | (b2 & 32==32)*4 | (b3 & 32==32)*8 | (b4 & 32==32)*16 | (b5 & 32==32)*32 | (b6 & 32==32)*64 | (b7 & 32==32)*128))+',')
sys.stdout.write('0x'+ binascii.hexlify(chr((b0 & 16==16)*1 | (b1 & 16==16)*2 | (b2 & 16==16)*4 | (b3 & 16==16)*8 | (b4 & 16==16)*16 | (b5 & 16==16)*32 | (b6 & 16==16)*64 | (b7 & 16==16)*128))+',')
sys.stdout.write('0x'+ binascii.hexlify(chr((b0 & 8==8)*1 | (b1 & 8==8)*2 | (b2 & 8==8)*4 | (b3 & 8==8)*8 | (b4 & 8==8)*16 | (b5 & 8==8)*32 | (b6 & 8==8)*64 | (b7 & 8==8)*128))+',')
sys.stdout.write('0x'+ binascii.hexlify(chr((b0 & 4==4)*1 | (b1 & 4==4)*2 | (b2 & 4==4)*4 | (b3 & 4==4)*8 | (b4 & 4==4)*16 | (b5 & 4==4)*32 | (b6 & 4==4)*64 | (b7 & 4==4)*128))+',')
sys.stdout.write('0x'+ binascii.hexlify(chr((b0 & 2==2)*1 | (b1 & 2==2)*2 | (b2 & 2==2)*4 | (b3 & 2==2)*8 | (b4 & 2==2)*16 | (b5 & 2==2)*32 | (b6 & 2==2)*64 | (b7 & 2==2)*128))+',')
sys.stdout.write('0x'+ binascii.hexlify(chr((b0 & 1==1)*1 | (b1 & 1==1)*2 | (b2 & 1==1)*4 | (b3 & 1==1)*8 | (b4 & 1==1)*16 | (b5 & 1==1)*32 | (b6 & 1==1)*64 | (b7 & 1==1)*128))+',')
print '}, // ',hex(i/8),
if (i/8)>31 and (i/8)<132:
print ' ',chr(i/8)
else:
print
i=i+8
print '};'
# Horizontal - Top-Down
print
print '// converted from',filename
print '// Horizontal --> TOP-DOWN'
print 'static const byte PROGMEM font_H_'+filename.split('.')[0]+'[][8] ='
print '{'
for index in range(len(content)):
if (index%8)==0:
print ' {',
sys.stdout.write('0x'+binascii.hexlify(content[index]))
if (index%8)<7:
print ',',
else:
print '}, // ',hex(index/8),
if (index/8)>31 and (index/8)<132:
print ' ',chr(index/8)
else:
print
print '};'