font-compile.py
author Tero Marttila <terom@paivola.fi>
Thu, 01 May 2014 23:44:42 +0300
changeset 84 9ebf1a2cee3a
parent 39 d7eac199d323
permissions -rw-r--r--
qmsk.dmx.web: basic dmx update/output
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