1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
/// X axis mirror of a custom LCD character
pub const fn mirror_x(src: [u8; 8]) -> [u8; 8] {
// const fn do not support for loops currently, hence manual unroll
[
src[0].reverse_bits() >> 3,
src[1].reverse_bits() >> 3,
src[2].reverse_bits() >> 3,
src[3].reverse_bits() >> 3,
src[4].reverse_bits() >> 3,
src[5].reverse_bits() >> 3,
src[6].reverse_bits() >> 3,
src[7].reverse_bits() >> 3,
]
}
/// Y axis mirror of a custom LCD character
pub const fn mirror_y(src: [u8; 8]) -> [u8; 8] {
// const fn do not support for loops currently, hence manual unroll
[
src[7], src[6], src[5], src[4], src[3], src[2], src[1], src[0],
]
}
#[cfg_attr(rustfmt, rustfmt_skip)]
pub const RIGHT_ARROW: [u8; 8] = [
0b00000,
0b01000,
0b01100,
0b01110,
0b01100,
0b01000,
0b00000,
0b00000,
];
pub const LEFT_ARROW: [u8; 8] = mirror_x(RIGHT_ARROW);
#[cfg_attr(rustfmt, rustfmt_skip)]
pub const UP_ARROW: [u8; 8] = [
0b00000,
0b00000,
0b00100,
0b01110,
0b11111,
0b00000,
0b00000,
0b00000,
];
pub const DOWN_ARROW: [u8; 8] = mirror_y(UP_ARROW);
|