69 lines
2.9 KiB
Python
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 '};'
|
|
|