You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
devices/max7219/glyphs.go

285 lines
16 KiB
Go

// Copyright 2024 The Periph Authors. All rights reserved.
// Use of this source code is governed under the Apache License, Version 2.0
// that can be found in the LICENSE file.
package max7219
// A really basic 8x8 raster font in CP437. Used to display characters on matrix
// type displays.
//
// Refer to: https://www.ascii-codes.com/
var CP437Glyphs = [][]byte{
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x00
{0x7e, 0x81, 0xa5, 0x81, 0x9d, 0xb9, 0x81, 0x7e}, // 0x01
{0x7e, 0xff, 0xdb, 0xff, 0xe3, 0xc7, 0xff, 0x7e}, // 0x02
{0x6c, 0xfe, 0xfe, 0xfe, 0x7c, 0x38, 0x10, 0x00}, // 0x03
{0x10, 0x38, 0x7c, 0xfe, 0x7c, 0x38, 0x10, 0x00}, // 0x04
{0x38, 0x7c, 0x38, 0xfe, 0xfe, 0x10, 0x10, 0x7c}, // 0x05
{0x00, 0x18, 0x3c, 0x7e, 0xff, 0x7e, 0x18, 0x7e}, // 0x06
{0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x00, 0x00}, // 0x07
{0xff, 0xff, 0xe7, 0xc3, 0xc3, 0xe7, 0xff, 0xff}, // 0x08
{0x00, 0x3c, 0x66, 0x42, 0x42, 0x66, 0x3c, 0x00}, // 0x09
{0xff, 0xc3, 0x99, 0xbd, 0xbd, 0x99, 0xc3, 0xff}, // 0x0a
{0x0f, 0x07, 0x0f, 0x7d, 0xcc, 0xcc, 0xcc, 0x78}, // 0x0b
{0x3c, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18}, // 0x0c
{0x3f, 0x33, 0x3f, 0x30, 0x30, 0x70, 0xf0, 0xe0}, // 0x0d
{0x7f, 0x63, 0x7f, 0x63, 0x63, 0x67, 0xe6, 0xc0}, // 0x0e
{0x99, 0x5a, 0x3c, 0xe7, 0xe7, 0x3c, 0x5a, 0x99}, // 0x0f
{0x80, 0xe0, 0xf8, 0xfe, 0xf8, 0xe0, 0x80, 0x00}, // 0x10
{0x02, 0x0e, 0x3e, 0xfe, 0x3e, 0x0e, 0x02, 0x00}, // 0x11
{0x18, 0x3c, 0x7e, 0x18, 0x18, 0x7e, 0x3c, 0x18}, // 0x12
{0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x00}, // 0x13
{0x7f, 0xdb, 0xdb, 0x7b, 0x1b, 0x1b, 0x1b, 0x00}, // 0x14
{0x3f, 0x60, 0x7c, 0x66, 0x66, 0x3e, 0x06, 0xfc}, // 0x15
{0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x7e, 0x00}, // 0x16
{0x18, 0x3c, 0x7e, 0x18, 0x7e, 0x3c, 0x18, 0xff}, // 0x17
{0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x00}, // 0x18
{0x18, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00}, // 0x19
{0x00, 0x18, 0x0c, 0xfe, 0x0c, 0x18, 0x00, 0x00}, // 0x1a
{0x00, 0x30, 0x60, 0xfe, 0x60, 0x30, 0x00, 0x00}, // 0x1b
{0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xfe, 0x00, 0x00}, // 0x1c
{0x00, 0x24, 0x66, 0xff, 0x66, 0x24, 0x00, 0x00}, // 0x1d
{0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff, 0x00, 0x00}, // 0x1e
{0x00, 0xff, 0xff, 0x7e, 0x3c, 0x18, 0x00, 0x00}, // 0x1f
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x20
{0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x00}, // 0x21
{0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x22
{0x6c, 0x6c, 0xfe, 0x6c, 0xfe, 0x6c, 0x6c, 0x00}, // 0x23
{0x18, 0x7e, 0xc0, 0x7c, 0x06, 0xfc, 0x18, 0x00}, // 0x24
{0x00, 0xc6, 0xcc, 0x18, 0x30, 0x66, 0xc6, 0x00}, // 0x25
{0x38, 0x6c, 0x38, 0x76, 0xdc, 0xcc, 0x76, 0x00}, // 0x26
{0x30, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x27
{0x0c, 0x18, 0x30, 0x30, 0x30, 0x18, 0x0c, 0x00}, // 0x28
{0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x18, 0x30, 0x00}, // 0x29
{0x00, 0x66, 0x3c, 0xff, 0x3c, 0x66, 0x00, 0x00}, // 0x2a
{0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00}, // 0x2b
{0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30}, // 0x2c
{0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00}, // 0x2d
{0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00}, // 0x2e
{0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x80, 0x00}, // 0x2f
{0x7c, 0xce, 0xde, 0xf6, 0xe6, 0xc6, 0x7c, 0x00}, // 0x30
{0x18, 0x38, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x00}, // 0x31
{0x7c, 0xc6, 0x06, 0x7c, 0xc0, 0xc0, 0xfe, 0x00}, // 0x32
{0xfc, 0x06, 0x06, 0x3c, 0x06, 0x06, 0xfc, 0x00}, // 0x33
{0x0c, 0xcc, 0xcc, 0xcc, 0xfe, 0x0c, 0x0c, 0x00}, // 0x34
{0xfe, 0xc0, 0xfc, 0x06, 0x06, 0xc6, 0x7c, 0x00}, // 0x35
{0x7c, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0x7c, 0x00}, // 0x36
{0xfe, 0x06, 0x06, 0x0c, 0x18, 0x30, 0x30, 0x00}, // 0x37
{0x7c, 0xc6, 0xc6, 0x7c, 0xc6, 0xc6, 0x7c, 0x00}, // 0x38
{0x7c, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x7c, 0x00}, // 0x39
{0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00}, // 0x3a
{0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x30}, // 0x3b
{0x0c, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0c, 0x00}, // 0x3c
{0x00, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x00, 0x00}, // 0x3d
{0x30, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x00}, // 0x3e
{0x3c, 0x66, 0x0c, 0x18, 0x18, 0x00, 0x18, 0x00}, // 0x3f
{0x7c, 0xc6, 0xde, 0xde, 0xde, 0xc0, 0x7e, 0x00}, // 0x40
{0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x00}, // 0x41
{0xfc, 0xc6, 0xc6, 0xfc, 0xc6, 0xc6, 0xfc, 0x00}, // 0x42
{0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00}, // 0x43
{0xf8, 0xcc, 0xc6, 0xc6, 0xc6, 0xcc, 0xf8, 0x00}, // 0x44
{0xfe, 0xc0, 0xc0, 0xf8, 0xc0, 0xc0, 0xfe, 0x00}, // 0x45
{0xfe, 0xc0, 0xc0, 0xf8, 0xc0, 0xc0, 0xc0, 0x00}, // 0x46
{0x7c, 0xc6, 0xc0, 0xc0, 0xce, 0xc6, 0x7c, 0x00}, // 0x47
{0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00}, // 0x48
{0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x00}, // 0x49
{0x06, 0x06, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00}, // 0x4a
{0xc6, 0xcc, 0xd8, 0xf0, 0xd8, 0xcc, 0xc6, 0x00}, // 0x4b
{0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xfe, 0x00}, // 0x4c
{0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0x00}, // 0x4d
{0xc6, 0xe6, 0xf6, 0xde, 0xce, 0xc6, 0xc6, 0x00}, // 0x4e
{0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00}, // 0x4f
{0xfc, 0xc6, 0xc6, 0xfc, 0xc0, 0xc0, 0xc0, 0x00}, // 0x50
{0x7c, 0xc6, 0xc6, 0xc6, 0xd6, 0xde, 0x7c, 0x06}, // 0x51
{0xfc, 0xc6, 0xc6, 0xfc, 0xd8, 0xcc, 0xc6, 0x00}, // 0x52
{0x7c, 0xc6, 0xc0, 0x7c, 0x06, 0xc6, 0x7c, 0x00}, // 0x53
{0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00}, // 0x54
{0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0x00}, // 0x55
{0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x38, 0x00}, // 0x56
{0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xfe, 0x6c, 0x00}, // 0x57
{0xc6, 0xc6, 0x6c, 0x38, 0x6c, 0xc6, 0xc6, 0x00}, // 0x58
{0xc6, 0xc6, 0xc6, 0x7c, 0x18, 0x30, 0xe0, 0x00}, // 0x59
{0xfe, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xfe, 0x00}, // 0x5a
{0x3c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x00}, // 0x5b
{0xc0, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x02, 0x00}, // 0x5c
{0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c, 0x00}, // 0x5d
{0x10, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00}, // 0x5e
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff}, // 0x5f
{0x18, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x60
{0x00, 0x00, 0x7c, 0x06, 0x7e, 0xc6, 0x7e, 0x00}, // 0x61
{0xc0, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xfc, 0x00}, // 0x62
{0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc6, 0x7c, 0x00}, // 0x63
{0x06, 0x06, 0x06, 0x7e, 0xc6, 0xc6, 0x7e, 0x00}, // 0x64
{0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0x7c, 0x00}, // 0x65
{0x1c, 0x36, 0x30, 0x78, 0x30, 0x30, 0x78, 0x00}, // 0x66
{0x00, 0x00, 0x7e, 0xc6, 0xc6, 0x7e, 0x06, 0xfc}, // 0x67
{0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0x00}, // 0x68
{0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x3c, 0x00}, // 0x69
{0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0xc6, 0x7c}, // 0x6a
{0xc0, 0xc0, 0xcc, 0xd8, 0xf8, 0xcc, 0xc6, 0x00}, // 0x6b
{0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00}, // 0x6c
{0x00, 0x00, 0xcc, 0xfe, 0xfe, 0xd6, 0xd6, 0x00}, // 0x6d
{0x00, 0x00, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0x00}, // 0x6e
{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00}, // 0x6f
{0x00, 0x00, 0xfc, 0xc6, 0xc6, 0xfc, 0xc0, 0xc0}, // 0x70
{0x00, 0x00, 0x7e, 0xc6, 0xc6, 0x7e, 0x06, 0x06}, // 0x71
{0x00, 0x00, 0xfc, 0xc6, 0xc0, 0xc0, 0xc0, 0x00}, // 0x72
{0x00, 0x00, 0x7e, 0xc0, 0x7c, 0x06, 0xfc, 0x00}, // 0x73
{0x18, 0x18, 0x7e, 0x18, 0x18, 0x18, 0x0e, 0x00}, // 0x74
{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x00}, // 0x75
{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x7c, 0x38, 0x00}, // 0x76
{0x00, 0x00, 0xc6, 0xc6, 0xd6, 0xfe, 0x6c, 0x00}, // 0x77
{0x00, 0x00, 0xc6, 0x6c, 0x38, 0x6c, 0xc6, 0x00}, // 0x78
{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0xfc}, // 0x79
{0x00, 0x00, 0xfe, 0x0c, 0x38, 0x60, 0xfe, 0x00}, // 0x7a
{0x0e, 0x18, 0x18, 0x70, 0x18, 0x18, 0x0e, 0x00}, // 0x7b
{0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // 0x7c
{0x70, 0x18, 0x18, 0x0e, 0x18, 0x18, 0x70, 0x00}, // 0x7d
{0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x7e
{0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0x00}, // 0x7f
{0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xd6, 0x7c, 0x30}, // 0x80
{0xc6, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x00}, // 0x81
{0x0e, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0x7c, 0x00}, // 0x82
{0x7e, 0x81, 0x3c, 0x06, 0x7e, 0xc6, 0x7e, 0x00}, // 0x83
{0x66, 0x00, 0x7c, 0x06, 0x7e, 0xc6, 0x7e, 0x00}, // 0x84
{0xe0, 0x00, 0x7c, 0x06, 0x7e, 0xc6, 0x7e, 0x00}, // 0x85
{0x18, 0x18, 0x7c, 0x06, 0x7e, 0xc6, 0x7e, 0x00}, // 0x86
{0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xd6, 0x7c, 0x30}, // 0x87
{0x7e, 0x81, 0x7c, 0xc6, 0xfe, 0xc0, 0x7c, 0x00}, // 0x88
{0x66, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0x7c, 0x00}, // 0x89
{0xe0, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0x7c, 0x00}, // 0x8a
{0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x3c, 0x00}, // 0x8b
{0x7c, 0x82, 0x38, 0x18, 0x18, 0x18, 0x3c, 0x00}, // 0x8c
{0x70, 0x00, 0x38, 0x18, 0x18, 0x18, 0x3c, 0x00}, // 0x8d
{0xc6, 0x10, 0x7c, 0xc6, 0xfe, 0xc6, 0xc6, 0x00}, // 0x8e
{0x38, 0x38, 0x00, 0x7c, 0xc6, 0xfe, 0xc6, 0x00}, // 0x8f
{0x0e, 0x00, 0xfe, 0xc0, 0xf8, 0xc0, 0xfe, 0x00}, // 0x90
{0x00, 0x00, 0x7f, 0x0c, 0x7f, 0xcc, 0x7f, 0x00}, // 0x91
{0x3f, 0x6c, 0xcc, 0xff, 0xcc, 0xcc, 0xcf, 0x00}, // 0x92
{0x7c, 0x82, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00}, // 0x93
{0x66, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00}, // 0x94
{0xe0, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00}, // 0x95
{0x7c, 0x82, 0x00, 0xc6, 0xc6, 0xc6, 0x7e, 0x00}, // 0x96
{0xe0, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x00}, // 0x97
{0x66, 0x00, 0x66, 0x66, 0x66, 0x3e, 0x06, 0x7c}, // 0x98
{0xc6, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00}, // 0x99
{0xc6, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0x00}, // 0x9a
{0x18, 0x18, 0x7e, 0xd8, 0xd8, 0xd8, 0x7e, 0x18}, // 0x9b
{0x38, 0x6c, 0x60, 0xf0, 0x60, 0x66, 0xfc, 0x00}, // 0x9c
{0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, 0x7e, 0x18}, // 0x9d
{0xf8, 0xcc, 0xcc, 0xfa, 0xc6, 0xcf, 0xc6, 0xc3}, // 0x9e
{0x0e, 0x1b, 0x18, 0x3c, 0x18, 0x18, 0xd8, 0x70}, // 0x9f
{0x0e, 0x00, 0x7c, 0x06, 0x7e, 0xc6, 0x7e, 0x00}, // 0xa0
{0x1c, 0x00, 0x38, 0x18, 0x18, 0x18, 0x3c, 0x00}, // 0xa1
{0x0e, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00}, // 0xa2
{0x0e, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x00}, // 0xa3
{0x00, 0xfe, 0x00, 0xfc, 0xc6, 0xc6, 0xc6, 0x00}, // 0xa4
{0xfe, 0x00, 0xc6, 0xe6, 0xf6, 0xde, 0xce, 0x00}, // 0xa5
{0x3c, 0x6c, 0x6c, 0x3e, 0x00, 0x7e, 0x00, 0x00}, // 0xa6
{0x3c, 0x66, 0x66, 0x3c, 0x00, 0x7e, 0x00, 0x00}, // 0xa7
{0x18, 0x00, 0x18, 0x18, 0x30, 0x66, 0x3c, 0x00}, // 0xa8
{0x00, 0x00, 0x00, 0xfc, 0xc0, 0xc0, 0x00, 0x00}, // 0xa9
{0x00, 0x00, 0x00, 0xfc, 0x0c, 0x0c, 0x00, 0x00}, // 0xaa
{0xc6, 0xcc, 0xd8, 0x3f, 0x63, 0xcf, 0x8c, 0x0f}, // 0xab
{0xc3, 0xc6, 0xcc, 0xdb, 0x37, 0x6d, 0xcf, 0x03}, // 0xac
{0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00}, // 0xad
{0x00, 0x33, 0x66, 0xcc, 0x66, 0x33, 0x00, 0x00}, // 0xae
{0x00, 0xcc, 0x66, 0x33, 0x66, 0xcc, 0x00, 0x00}, // 0xaf
{0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88}, // 0xb0
{0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa}, // 0xb1
{0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77}, // 0xb2
{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18}, // 0xb3
{0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0x18, 0x18}, // 0xb4
{0x18, 0x18, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18}, // 0xb5
{0x36, 0x36, 0x36, 0x36, 0xf6, 0x36, 0x36, 0x36}, // 0xb6
{0x00, 0x00, 0x00, 0x00, 0xfe, 0x36, 0x36, 0x36}, // 0xb7
{0x00, 0x00, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18}, // 0xb8
{0x36, 0x36, 0xf6, 0x06, 0xf6, 0x36, 0x36, 0x36}, // 0xb9
{0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36}, // 0xba
{0x00, 0x00, 0xfe, 0x06, 0xf6, 0x36, 0x36, 0x36}, // 0xbb
{0x36, 0x36, 0xf6, 0x06, 0xfe, 0x00, 0x00, 0x00}, // 0xbc
{0x36, 0x36, 0x36, 0x36, 0xfe, 0x00, 0x00, 0x00}, // 0xbd
{0x18, 0x18, 0xf8, 0x18, 0xf8, 0x00, 0x00, 0x00}, // 0xbe
{0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0x18, 0x18}, // 0xbf
{0x18, 0x18, 0x18, 0x18, 0x1f, 0x00, 0x00, 0x00}, // 0xc0
{0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0x00, 0x00}, // 0xc1
{0x00, 0x00, 0x00, 0x00, 0xff, 0x18, 0x18, 0x18}, // 0xc2
{0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x18, 0x18}, // 0xc3
{0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00}, // 0xc4
{0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0x18, 0x18}, // 0xc5
{0x18, 0x18, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18}, // 0xc6
{0x36, 0x36, 0x36, 0x36, 0x37, 0x36, 0x36, 0x36}, // 0xc7
{0x36, 0x36, 0x37, 0x30, 0x3f, 0x00, 0x00, 0x00}, // 0xc8
{0x00, 0x00, 0x3f, 0x30, 0x37, 0x36, 0x36, 0x36}, // 0xc9
{0x36, 0x36, 0xf7, 0x00, 0xff, 0x00, 0x00, 0x00}, // 0xca
{0x00, 0x00, 0xff, 0x00, 0xf7, 0x36, 0x36, 0x36}, // 0xcb
{0x36, 0x36, 0x37, 0x30, 0x37, 0x36, 0x36, 0x36}, // 0xcc
{0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00}, // 0xcd
{0x36, 0x36, 0xf7, 0x00, 0xf7, 0x36, 0x36, 0x36}, // 0xce
{0x18, 0x18, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00}, // 0xcf
{0x36, 0x36, 0x36, 0x36, 0xff, 0x00, 0x00, 0x00}, // 0xd0
{0x00, 0x00, 0xff, 0x00, 0xff, 0x18, 0x18, 0x18}, // 0xd1
{0x00, 0x00, 0x00, 0x00, 0xff, 0x36, 0x36, 0x36}, // 0xd2
{0x36, 0x36, 0x36, 0x36, 0x3f, 0x00, 0x00, 0x00}, // 0xd3
{0x18, 0x18, 0x1f, 0x18, 0x1f, 0x00, 0x00, 0x00}, // 0xd4
{0x00, 0x00, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18}, // 0xd5
{0x00, 0x00, 0x00, 0x00, 0x3f, 0x36, 0x36, 0x36}, // 0xd6
{0x36, 0x36, 0x36, 0x36, 0xff, 0x36, 0x36, 0x36}, // 0xd7
{0x18, 0x18, 0xff, 0x18, 0xff, 0x18, 0x18, 0x18}, // 0xd8
{0x18, 0x18, 0x18, 0x18, 0xf8, 0x00, 0x00, 0x00}, // 0xd9
{0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x18, 0x18}, // 0xda
{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, // 0xdb
{0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff}, // 0xdc
{0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0}, // 0xdd
{0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f}, // 0xde
{0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00}, // 0xdf
{0x00, 0x00, 0x76, 0xdc, 0xc8, 0xdc, 0x76, 0x00}, // 0xe0
{0x38, 0x6c, 0x6c, 0x78, 0x6c, 0x66, 0x6c, 0x60}, // 0xe1
{0x00, 0xfe, 0xc6, 0xc0, 0xc0, 0xc0, 0xc0, 0x00}, // 0xe2
{0x00, 0x00, 0xfe, 0x6c, 0x6c, 0x6c, 0x6c, 0x00}, // 0xe3
{0xfe, 0x60, 0x30, 0x18, 0x30, 0x60, 0xfe, 0x00}, // 0xe4
{0x00, 0x00, 0x7e, 0xd8, 0xd8, 0xd8, 0x70, 0x00}, // 0xe5
{0x00, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0xc0}, // 0xe6
{0x00, 0x76, 0xdc, 0x18, 0x18, 0x18, 0x18, 0x00}, // 0xe7
{0x7e, 0x18, 0x3c, 0x66, 0x66, 0x3c, 0x18, 0x7e}, // 0xe8
{0x3c, 0x66, 0xc3, 0xff, 0xc3, 0x66, 0x3c, 0x00}, // 0xe9
{0x3c, 0x66, 0xc3, 0xc3, 0x66, 0x66, 0xe7, 0x00}, // 0xea
{0x0e, 0x18, 0x0c, 0x7e, 0xc6, 0xc6, 0x7c, 0x00}, // 0xeb
{0x00, 0x00, 0x7e, 0xdb, 0xdb, 0x7e, 0x00, 0x00}, // 0xec
{0x06, 0x0c, 0x7e, 0xdb, 0xdb, 0x7e, 0x60, 0xc0}, // 0xed
{0x38, 0x60, 0xc0, 0xf8, 0xc0, 0x60, 0x38, 0x00}, // 0xee
{0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x00}, // 0xef
{0x00, 0x7e, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x00}, // 0xf0
{0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x7e, 0x00}, // 0xf1
{0x60, 0x30, 0x18, 0x30, 0x60, 0x00, 0xfc, 0x00}, // 0xf2
{0x18, 0x30, 0x60, 0x30, 0x18, 0x00, 0xfc, 0x00}, // 0xf3
{0x0e, 0x1b, 0x1b, 0x18, 0x18, 0x18, 0x18, 0x18}, // 0xf4
{0x18, 0x18, 0x18, 0x18, 0x18, 0xd8, 0xd8, 0x70}, // 0xf5
{0x18, 0x18, 0x00, 0x7e, 0x00, 0x18, 0x18, 0x00}, // 0xf6
{0x00, 0x76, 0xdc, 0x00, 0x76, 0xdc, 0x00, 0x00}, // 0xf7
{0x38, 0x6c, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00}, // 0xf8
{0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00}, // 0xf9
{0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00}, // 0xfa
{0x0f, 0x0c, 0x0c, 0x0c, 0xec, 0x6c, 0x3c, 0x1c}, // 0xfb
{0x78, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00}, // 0xfc
{0x7c, 0x0c, 0x7c, 0x60, 0x7c, 0x00, 0x00, 0x00}, // 0xfd
{0x00, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x00}, // 0xfe
{0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} // 0xff
// reverseGlyphs swaps the endianness of the raster bits to work with the 7219.
// Returns the a new set with the byte values reversed.
func reverseGlyphs(digits [][]byte) [][]byte {
nibbles := [16]byte{0x0, 0x8, 0x4, 0xc, 0x2, 0xa, 0x6, 0xe, 0x1, 0x9, 0x5, 0xc, 0x3, 0xb, 0x7, 0xf}
result := make([][]byte, len(digits))
for i := 0; i < len(digits); i++ {
newChar := make([]byte, 8)
for rasterLine := range len(digits[i]) {
x := digits[i][rasterLine]
y := nibbles[(x>>4)&0xf] | nibbles[x&0xf]<<4
newChar[rasterLine] = y
}
result[i] = newChar
}
return result
}