Sunteți pe pagina 1din 2

from sys import argv, stdout

script, file_name = argv


line_of_text = 0
data_begin_line = 0
data_end_line = 0
input = open(file_name)
def find_data_pos():
#print str.upper()
global data_begin_line
global data_end_line
if not data_begin_line:
if "{" in line:
data_begin_line = line_of_text
if not data_end_line:
if "}" in line:
data_end_line = line_of_text
while True:
line=input.readline()
if not line or data_end_line: break
line_of_text += 1
find_data_pos()
# goto begin of file
input.seek(0)
#test only 4bytes font
data_begin_line = 34
data_end_line = 47
print "Font region: "
print "Begin line: ", data_begin_line
print "End line: ", data_end_line
print "Decoding font ..."
line = 0
while True:
input.readline()
line += 1
if line == data_begin_line: break
# Using line to count font line
line = 0
# Read one fonts line
while True:
line_data = input.readline()
line += 1
# Strip space
line_data.strip()
# Split in bytes
line_data_in_bytes = line_data.split(',')
# Remove fuking waste: first byte and last comment
#line_data_in_bytes.pop(0)
line_data_in_bytes.pop()
# 36 bytes slide
# slice to 12 parts, each parts contain 3 bytes
for i in range(0, 22):
data_3bytes = line_data_in_bytes[(i * 4):(i * 4) + 4]
data_3bytes.reverse()
stdout.write('|')
for Hbytes in data_3bytes:
#print Hbytes
number = int(Hbytes, 16)
for idx in range(0,8):
mask = 1 << (7 - idx)
if mask == (number & mask):
stdout.write('*')
else:
stdout.write(' ')
stdout.write('|\n')
print '-' * 26
print "Next character: %s\n" % line
print '-' * 26
if (line == data_end_line - data_begin_line): break
input.close()

S-ar putea să vă placă și