#pragma once #include "gp/array.hpp" using display_char = gp::array; constexpr display_char ascii_tr(unsigned char c) { display_char whitespace{ 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000 }; display_char invalid{ 0b11111111, c, 0b10101011, 0b10101011, 0b10011001, 0b10100101, 0b11000011, 0b11111111 }; switch(c) { case '\0': return whitespace; case ' ': return whitespace; case '!': return { 0b00000000, 0b00010000, 0b00010000, 0b00010000, 0b00010000, 0b00000000, 0b00010000, 0b00000000 }; case '"': return { 0b00000000, 0b00101000, 0b00101000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000 }; case '#': return { 0b00010010, 0b00100100, 0b11111110, 0b00100100, 0b01001000, 0b11111110, 0b01001000, 0b10010000 }; case '$': return { 0b01111000, 0b10100100, 0b10100000, 0b01111000, 0b00100100, 0b00100100, 0b01111000, 0b00100000 }; case '%': return { 0b11100001, 0b10100010, 0b11100100, 0b00001000, 0b00010000, 0b00100111, 0b01000101, 0b10000111 }; case '&': return { 0b00011000, 0b00100100, 0b01000000, 0b00100000, 0b01010100, 0b10001000, 0b01110100, 0b00000000 }; case '\'': return { 0b00000000, 0b00010000, 0b00010000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000 }; case '(': return { 0b00100000, 0b01000000, 0b10000000, 0b10000000, 0b10000000, 0b01000000, 0b00100000, 0b00000000 }; case ')': return { 0b00100000, 0b00010000, 0b00001000, 0b00001000, 0b00001000, 0b00010000, 0b00100000, 0b00000000 }; case '*': return { 0b00000000, 0b00010000, 0b01111100, 0b00101000, 0b00000000, 0b00000000, 0b00000000, 0b00000000 }; case '+': return { 0b00000000, 0b00000000, 0b00010000, 0b00010000, 0b01111100, 0b00010000, 0b00010000, 0b00000000 }; case ',': return { 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00001000, 0b00010000, 0b00000000 }; case '-': return { 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b01111100, 0b00000000, 0b00000000, 0b00000000 }; case '.': return { 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00011000, 0b00011000, 0b00000000 }; case '/': return { 0b00000100, 0b00001000, 0b00001000, 0b00010000, 0b00100000, 0b00100000, 0b01000000, 0b00000000 }; case '0': return { 0b00111000, 0b01000100, 0b10001010, 0b10010010, 0b10100010, 0b01000100, 0b00111000, 0b00000000 }; case '1': return { 0b00100000, 0b01100000, 0b00100000, 0b00100000, 0b00100000, 0b00100000, 0b00100000, 0b00000000 }; case '2': return { 0b00111000, 0b01000100, 0b00000100, 0b00001000, 0b00010000, 0b00100000, 0b11111100, 0b00000000 }; case '3': return { 0b00111000, 0b01000100, 0b00000100, 0b00011000, 0b00000100, 0b01000100, 0b00111000, 0b00000000 }; case '4': return { 0b00001000, 0b00011000, 0b00101000, 0b01001000, 0b11111100, 0b00001000, 0b00001000, 0b00000000 }; case '5': return { 0b01111110, 0b01000000, 0b00111100, 0b00000010, 0b00000010, 0b00000010, 0b01111100, 0b00000000 }; default: return invalid; } }