author | Tero Marttila <terom@paivola.fi> |
Fri, 02 May 2014 00:10:14 +0300 | |
changeset 86 | 61925fb4947e |
parent 39 | d7eac199d323 |
permissions | -rw-r--r-- |
38
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
1 |
def read_block (fh) : |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
2 |
""" |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
3 |
Yield a series of non-empty lines from the given file, ignoring any leading empty lines, and stopping after the first empty line |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
4 |
""" |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
5 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
6 |
leading = True |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
7 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
8 |
for line in fh : |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
9 |
if line.strip() : |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
10 |
leading = False |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
11 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
12 |
# yield non-empty |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
13 |
yield line |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
14 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
15 |
elif leading : |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
16 |
# skip leading empty |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
17 |
continue |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
18 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
19 |
else : |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
20 |
# stop on empty |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
21 |
return |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
22 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
23 |
else : |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
24 |
# EOF |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
25 |
return |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
26 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
27 |
def read_charblock (lines) : |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
28 |
""" |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
29 |
Read in a char from the given lines, returning an |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
30 |
(ascii, rows) |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
31 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
32 |
tuple, or None, if there weren't any more blocks |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
33 |
""" |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
34 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
35 |
# the ascii code as a char |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
36 |
ascii = '' |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
37 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
38 |
# row data as ints |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
39 |
rows = [] |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
40 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
41 |
for line in lines : |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
42 |
line = line.strip() |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
43 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
44 |
if line.startswith(';') : |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
45 |
# set ascii code |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
46 |
ascii = line.replace(';', '').strip() |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
47 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
48 |
if not ascii : |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
49 |
print 'read_charblock', 'empty' |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
50 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
51 |
# skip |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
52 |
return None |
39
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
53 |
|
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
54 |
elif len(ascii) == 1 : |
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
55 |
print 'read_charblock', 'simplechar', ascii |
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
56 |
|
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
57 |
else : |
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
58 |
ascii = ascii.decode('string_escape') |
38
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
59 |
|
39
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
60 |
print 'read_charblock', 'decodechar', ascii |
38
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
61 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
62 |
assert len(ascii) == 1 |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
63 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
64 |
else : |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
65 |
# convert |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
66 |
row = line.replace('#', '1').replace('-', '0') |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
67 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
68 |
print 'read_charblock', 'row', row |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
69 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
70 |
# 6 columns |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
71 |
assert len(row) == 6 |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
72 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
73 |
# from binary |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
74 |
row = int(row, 2) |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
75 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
76 |
rows.append(row) |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
77 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
78 |
# got data? |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
79 |
if ascii and rows : |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
80 |
# 8 rows |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
81 |
assert len(rows) == 8 |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
82 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
83 |
return ascii, rows |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
84 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
85 |
else : |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
86 |
# nope, empty block, EOF |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
87 |
return None |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
88 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
89 |
def read_charblocks (fh) : |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
90 |
""" |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
91 |
Read in all char blocks as (ascii, rows) tuples from given file |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
92 |
""" |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
93 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
94 |
while True : |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
95 |
out = read_charblock(read_block(fh)) |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
96 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
97 |
if out : |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
98 |
yield out |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
99 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
100 |
else : |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
101 |
break |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
102 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
103 |
def decode_rows (inrows) : |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
104 |
""" |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
105 |
Decode char def data from its 6x8 row format into the format we need (6x8 col format) |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
106 |
""" |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
107 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
108 |
outcols = [0x00] * 6 |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
109 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
110 |
for rowidx, row in enumerate(inrows) : |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
111 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
112 |
for colidx, col in enumerate(outcols) : |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
113 |
# get bit from row |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
114 |
bit = (row >> (5 - colidx)) & 1 |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
115 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
116 |
# set bit into column |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
117 |
outcols[colidx] |= (bit << rowidx) |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
118 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
119 |
# ok... |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
120 |
return outcols |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
121 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
122 |
def write_chardef (fh, ascii, cols) : |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
123 |
""" |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
124 |
Write out character definition block to given .def file, using given char code and column data |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
125 |
""" |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
126 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
127 |
fh.write( |
39
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
128 |
("; %r\n" % ascii) |
38
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
129 |
+ (".db %s\n" % (', '.join(bin(col) for col in cols))) |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
130 |
+ ("\n") |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
131 |
) |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
132 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
133 |
def compile_fonts (infh, outf) : |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
134 |
""" |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
135 |
Compile char blocks from infh, writing out definitions to outf |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
136 |
""" |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
137 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
138 |
charmap = dict() |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
139 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
140 |
# decode in |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
141 |
for charblock in read_charblocks(infh) : |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
142 |
# unpack |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
143 |
ascii, rows = charblock |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
144 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
145 |
# convert |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
146 |
cols = decode_rows(rows) |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
147 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
148 |
# map |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
149 |
charmap[ascii] = cols |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
150 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
151 |
print 'compile_fonts', 'read', ascii |
39
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
152 |
|
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
153 |
# detect min/max syms |
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
154 |
syms = charmap.keys() |
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
155 |
font_start = min(syms) |
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
156 |
font_end = max(syms) |
38
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
157 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
158 |
assert(ord(font_start) < ord(font_end)) |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
159 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
160 |
# write out |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
161 |
outf.write( |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
162 |
";; AUTOMATICALLY GENERATED - Do not edit!\n" |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
163 |
";; 8x6 font, '0' - '1', rows-by-col format\n" |
39
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
164 |
+ (".equ FONT_8x6_START = %d ; %r\n" % (ord(font_start), font_start)) |
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
165 |
+ (".equ FONT_8x6_END = %d ; %r\n" % (ord(font_end), font_end)) |
38
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
166 |
+ (".equ FONT_8x6_COLS = %d\n" % (6, )) |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
167 |
+ (".equ FONT_8x6_ROWS = %d\n" % (8, )) |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
168 |
+ "FONT_8x6:\n" |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
169 |
"\n" |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
170 |
) |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
171 |
|
39
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
172 |
# default symbol for unknown chars |
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
173 |
defsym = charmap['\0'] |
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
174 |
|
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
175 |
for char in xrange(ord(font_start), ord(font_end) + 1) : |
38
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
176 |
ascii = chr(char) |
39
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
177 |
cols = charmap.get(ascii, defsym) |
38
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
178 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
179 |
write_chardef(outf, ascii, cols) |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
180 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
181 |
def main () : |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
182 |
import sys, getopt |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
183 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
184 |
opts, args = getopt.getopt(sys.argv[1:], '') |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
185 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
186 |
inpath, outpath = args |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
187 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
188 |
# run |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
189 |
compile_fonts(open(inpath, 'r'), open(outpath, 'w')) |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
190 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
191 |
if __name__ == '__main__' : |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
192 |
main() |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
193 |