From c07aa9f0c068200d80f6635c221dd7480e53766a Mon Sep 17 00:00:00 2001 From: Agathe Porte Date: Sun, 23 Feb 2020 10:30:59 +0100 Subject: custom chars support --- src/custom_char.rs | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/custom_char.rs (limited to 'src/custom_char.rs') diff --git a/src/custom_char.rs b/src/custom_char.rs new file mode 100644 index 0000000..47f99f5 --- /dev/null +++ b/src/custom_char.rs @@ -0,0 +1,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); -- cgit v1.2.3