|
|
|
@ -1,109 +1,212 @@
|
|
|
|
|
//width must be multiple of 8
|
|
|
|
|
//
|
|
|
|
|
//chars are build in the bitmap like this example of a width 16, height 2 font:
|
|
|
|
|
//12
|
|
|
|
|
//34
|
|
|
|
|
// first char is the first ascii letter you want
|
|
|
|
|
#[allow(dead_code)]
|
|
|
|
|
pub struct Font<'a> {
|
|
|
|
|
width: u8,
|
|
|
|
|
height: u8,
|
|
|
|
|
first_char: u8,
|
|
|
|
|
last_char: u8,
|
|
|
|
|
bitmap: &'a [u8],
|
|
|
|
|
widthmap: &'a [u8]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl<'a> Font<'a> {
|
|
|
|
|
/// Panics if either Bitmap or Widthmap of the Font are to small for the amount and size of chars
|
|
|
|
|
pub fn new(width: u8, height: u8, first_char: u8, last_char: u8, bitmap: &'a [u8], widthmap: &'a [u8]) -> Font<'a> {
|
|
|
|
|
//Assertion so it shouldn't be able to panic later
|
|
|
|
|
let length_of_char = width as usize / 8 * height as usize;
|
|
|
|
|
let amount_of_chars = last_char as usize - first_char as usize + 1;
|
|
|
|
|
assert!(bitmap.len() >= amount_of_chars * length_of_char);
|
|
|
|
|
assert!(widthmap.len() >= amount_of_chars);
|
|
|
|
|
|
|
|
|
|
Font {width, height, first_char, last_char, bitmap, widthmap }
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn get_length_of_char(&self) -> usize {
|
|
|
|
|
self.width as usize / 8 * self.height as usize
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn get_char_pos(&self, input: char) -> usize {
|
|
|
|
|
(input as usize - self.first_char as usize)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// Can panic, when end_pos > bitmap.len, should be caught in Font::new already
|
|
|
|
|
pub(crate) fn get_char(&'a self, input: char) -> &'a [u8] {
|
|
|
|
|
let start_pos = self.get_char_pos(input) * self.get_length_of_char();
|
|
|
|
|
let end_pos = start_pos + self.get_length_of_char();
|
|
|
|
|
|
|
|
|
|
&self.bitmap[start_pos .. end_pos]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// Can panic, when get_char_pos > widthmap.len(), should be caught in Font::new already
|
|
|
|
|
pub(crate) fn get_char_width(&self, input: char) -> u8 {
|
|
|
|
|
self.widthmap[self.get_char_pos(input)]
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#[cfg(test)]
|
|
|
|
|
mod tests {
|
|
|
|
|
use super::*;
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn fonts_test() {
|
|
|
|
|
let bitmap = [
|
|
|
|
|
0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, // '!'
|
|
|
|
|
0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, // '"'
|
|
|
|
|
0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, 0x00, 0x00, // '#'
|
|
|
|
|
0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, 0x00, 0x00]; // '$'
|
|
|
|
|
|
|
|
|
|
let widthmap = [8,8,8,8];
|
|
|
|
|
|
|
|
|
|
let font = Font::new(8, 8, '!' as u8, '$' as u8, &bitmap, &widthmap);
|
|
|
|
|
|
|
|
|
|
let hashtag = [0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, 0x00, 0x00];
|
|
|
|
|
|
|
|
|
|
assert_eq!(font.get_char('#'), hashtag);
|
|
|
|
|
|
|
|
|
|
assert_eq!(font.get_char('$')[7], 0x00);
|
|
|
|
|
|
|
|
|
|
assert_eq!(font.get_char_width('#'), widthmap[2]);
|
|
|
|
|
assert_eq!(font.get_char_width('$'), widthmap[3]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn bitmap_8x8_test() {
|
|
|
|
|
let and = [0x36, 0x49, 0x55, 0x22, 0x50, 0x00, 0x00, 0x00];
|
|
|
|
|
let zero = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];
|
|
|
|
|
let first_value = [0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00];
|
|
|
|
|
let last_value = [0x00, 0x41, 0x36, 0x08, 0x00, 0x00, 0x00, 0x00];
|
|
|
|
|
|
|
|
|
|
assert_eq!(bitmap_8x8('&'), and);
|
|
|
|
|
|
|
|
|
|
assert_eq!(bitmap_8x8('ß'), zero);
|
|
|
|
|
assert_eq!(bitmap_8x8('°'), zero);
|
|
|
|
|
|
|
|
|
|
assert_eq!(bitmap_8x8('!'), first_value);
|
|
|
|
|
assert_eq!(bitmap_8x8('}'), last_value);
|
|
|
|
|
|
|
|
|
|
assert_eq!(bitmap_8x8('0')[1], 0x3E);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pub(crate) fn to_bitmap(input: char) -> [u8; 8] {
|
|
|
|
|
// Populate the array with the data from the character array at the right index
|
|
|
|
|
match input {
|
|
|
|
|
'!' => [0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'"' => [0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'#' => [0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, 0x00, 0x00],
|
|
|
|
|
'$' => [0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, 0x00, 0x00],
|
|
|
|
|
'%' => [0x23, 0x13, 0x08, 0x64, 0x62, 0x00, 0x00, 0x00],
|
|
|
|
|
'&' => [0x36, 0x49, 0x55, 0x22, 0x50, 0x00, 0x00, 0x00],
|
|
|
|
|
'\'' => [0x00, 0x05, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'(' => [0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
')' => [0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'*' => [0x08, 0x2A, 0x1C, 0x2A, 0x08, 0x00, 0x00, 0x00],
|
|
|
|
|
'+' => [0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, 0x00, 0x00],
|
|
|
|
|
',' => [0x00, 0x50, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'-' => [0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00],
|
|
|
|
|
'.' => [0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'/' => [0x20, 0x10, 0x08, 0x04, 0x02, 0x00, 0x00, 0x00],
|
|
|
|
|
'0' => [0x1C, 0x3E, 0x61, 0x41, 0x43, 0x3E, 0x1C, 0x00],
|
|
|
|
|
'1' => [0x40, 0x42, 0x7F, 0x7F, 0x40, 0x40, 0x00, 0x00],
|
|
|
|
|
'2' => [0x62, 0x73, 0x79, 0x59, 0x5D, 0x4F, 0x46, 0x00],
|
|
|
|
|
'3' => [0x20, 0x61, 0x49, 0x4D, 0x4F, 0x7B, 0x31, 0x00],
|
|
|
|
|
'4' => [0x18, 0x1C, 0x16, 0x13, 0x7F, 0x7F, 0x10, 0x00],
|
|
|
|
|
'5' => [0x27, 0x67, 0x45, 0x45, 0x45, 0x7D, 0x38, 0x00],
|
|
|
|
|
'6' => [0x3C, 0x7E, 0x4B, 0x49, 0x49, 0x79, 0x30, 0x00],
|
|
|
|
|
'7' => [0x03, 0x03, 0x71, 0x79, 0x0D, 0x07, 0x03, 0x00],
|
|
|
|
|
'8' => [0x36, 0x7F, 0x49, 0x49, 0x49, 0x7F, 0x36, 0x00],
|
|
|
|
|
'9' => [0x06, 0x4F, 0x49, 0x49, 0x69, 0x3F, 0x1E, 0x00],
|
|
|
|
|
':' => [0x00, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
';' => [0x00, 0x56, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'<' => [0x00, 0x08, 0x14, 0x22, 0x41, 0x00, 0x00, 0x00],
|
|
|
|
|
'=' => [0x14, 0x14, 0x14, 0x14, 0x14, 0x00, 0x00, 0x00],
|
|
|
|
|
'>' => [0x41, 0x22, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'?' => [0x02, 0x01, 0x51, 0x09, 0x06, 0x00, 0x00, 0x00],
|
|
|
|
|
'@' => [0x32, 0x49, 0x79, 0x41, 0x3E, 0x00, 0x00, 0x00],
|
|
|
|
|
'A' => [0x7E, 0x11, 0x11, 0x11, 0x7E, 0x00, 0x00, 0x00],
|
|
|
|
|
'B' => [0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, 0x00, 0x00],
|
|
|
|
|
'C' => [0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, 0x00, 0x00],
|
|
|
|
|
'D' => [0x7F, 0x7F, 0x41, 0x41, 0x63, 0x3E, 0x1C, 0x00],
|
|
|
|
|
'E' => [0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, 0x00, 0x00],
|
|
|
|
|
'F' => [0x7F, 0x09, 0x09, 0x01, 0x01, 0x00, 0x00, 0x00],
|
|
|
|
|
'G' => [0x3E, 0x41, 0x41, 0x51, 0x32, 0x00, 0x00, 0x00],
|
|
|
|
|
'H' => [0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, 0x00, 0x00],
|
|
|
|
|
'I' => [0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'J' => [0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, 0x00, 0x00],
|
|
|
|
|
'K' => [0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, 0x00, 0x00],
|
|
|
|
|
'L' => [0x7F, 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00],
|
|
|
|
|
'M' => [0x7F, 0x02, 0x04, 0x02, 0x7F, 0x00, 0x00, 0x00],
|
|
|
|
|
'N' => [0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, 0x00, 0x00],
|
|
|
|
|
'O' => [0x3E, 0x7F, 0x41, 0x41, 0x41, 0x7F, 0x3E, 0x00],
|
|
|
|
|
'P' => [0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, 0x00, 0x00],
|
|
|
|
|
'Q' => [0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, 0x00, 0x00],
|
|
|
|
|
'R' => [0x7F, 0x7F, 0x11, 0x31, 0x79, 0x6F, 0x4E, 0x00],
|
|
|
|
|
'S' => [0x46, 0x49, 0x49, 0x49, 0x31, 0x00, 0x00, 0x00],
|
|
|
|
|
'T' => [0x01, 0x01, 0x7F, 0x01, 0x01, 0x00, 0x00, 0x00],
|
|
|
|
|
'U' => [0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, 0x00, 0x00],
|
|
|
|
|
'V' => [0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, 0x00, 0x00],
|
|
|
|
|
'W' => [0x7F, 0x7F, 0x38, 0x1C, 0x38, 0x7F, 0x7F, 0x00],
|
|
|
|
|
'X' => [0x63, 0x14, 0x08, 0x14, 0x63, 0x00, 0x00, 0x00],
|
|
|
|
|
'Y' => [0x03, 0x04, 0x78, 0x04, 0x03, 0x00, 0x00, 0x00],
|
|
|
|
|
'Z' => [0x61, 0x51, 0x49, 0x45, 0x43, 0x00, 0x00, 0x00],
|
|
|
|
|
'[' => [0x00, 0x00, 0x7F, 0x41, 0x41, 0x00, 0x00, 0x00],
|
|
|
|
|
'\\' => [0x02, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, 0x00],
|
|
|
|
|
']' => [0x41, 0x41, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'^' => [0x04, 0x02, 0x01, 0x02, 0x04, 0x00, 0x00, 0x00],
|
|
|
|
|
'_' => [0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00],
|
|
|
|
|
'`' => [0x00, 0x01, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'a' => [0x20, 0x54, 0x54, 0x54, 0x78, 0x00, 0x00, 0x00],
|
|
|
|
|
'b' => [0x7F, 0x48, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00],
|
|
|
|
|
'c' => [0x38, 0x44, 0x44, 0x44, 0x20, 0x00, 0x00, 0x00],
|
|
|
|
|
'd' => [0x38, 0x44, 0x44, 0x48, 0x7F, 0x00, 0x00, 0x00],
|
|
|
|
|
'e' => [0x38, 0x54, 0x54, 0x54, 0x18, 0x00, 0x00, 0x00],
|
|
|
|
|
'f' => [0x08, 0x7E, 0x09, 0x01, 0x02, 0x00, 0x00, 0x00],
|
|
|
|
|
'g' => [0x08, 0x14, 0x54, 0x54, 0x3C, 0x00, 0x00, 0x00],
|
|
|
|
|
'h' => [0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, 0x00, 0x00],
|
|
|
|
|
'i' => [0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'j' => [0x20, 0x40, 0x44, 0x3D, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'k' => [0x00, 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, 0x00],
|
|
|
|
|
'l' => [0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'm' => [0x7C, 0x04, 0x18, 0x04, 0x78, 0x00, 0x00, 0x00],
|
|
|
|
|
'n' => [0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, 0x00, 0x00],
|
|
|
|
|
'o' => [0x38, 0x44, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00],
|
|
|
|
|
'p' => [0x7C, 0x14, 0x14, 0x14, 0x08, 0x00, 0x00, 0x00],
|
|
|
|
|
'q' => [0x08, 0x14, 0x14, 0x18, 0x7C, 0x00, 0x00, 0x00],
|
|
|
|
|
'r' => [0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, 0x00, 0x00],
|
|
|
|
|
's' => [0x48, 0x54, 0x54, 0x54, 0x20, 0x00, 0x00, 0x00],
|
|
|
|
|
't' => [0x04, 0x3F, 0x44, 0x40, 0x20, 0x00, 0x00, 0x00],
|
|
|
|
|
'u' => [0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, 0x00, 0x00],
|
|
|
|
|
'v' => [0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, 0x00, 0x00],
|
|
|
|
|
'w' => [0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, 0x00, 0x00],
|
|
|
|
|
'x' => [0x00, 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, 0x00],
|
|
|
|
|
'y' => [0x0C, 0x50, 0x50, 0x50, 0x3C, 0x00, 0x00, 0x00],
|
|
|
|
|
'z' => [0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, 0x00, 0x00],
|
|
|
|
|
'{' => [0x00, 0x08, 0x36, 0x41, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'|' => [0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'}' => [0x00, 0x41, 0x36, 0x08, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
_ => [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
}
|
|
|
|
|
pub(crate) fn bitmap_8x8(input: char) -> [u8; 8] {
|
|
|
|
|
// Populate the array with the data from the character array at the right index
|
|
|
|
|
match input {
|
|
|
|
|
'!' => [0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'"' => [0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'#' => [0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, 0x00, 0x00],
|
|
|
|
|
'$' => [0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, 0x00, 0x00],
|
|
|
|
|
'%' => [0x23, 0x13, 0x08, 0x64, 0x62, 0x00, 0x00, 0x00],
|
|
|
|
|
'&' => [0x36, 0x49, 0x55, 0x22, 0x50, 0x00, 0x00, 0x00],
|
|
|
|
|
'\'' => [0x00, 0x05, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'(' => [0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
')' => [0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'*' => [0x08, 0x2A, 0x1C, 0x2A, 0x08, 0x00, 0x00, 0x00],
|
|
|
|
|
'+' => [0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, 0x00, 0x00],
|
|
|
|
|
',' => [0x00, 0x50, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'-' => [0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00],
|
|
|
|
|
'.' => [0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'/' => [0x20, 0x10, 0x08, 0x04, 0x02, 0x00, 0x00, 0x00],
|
|
|
|
|
'0' => [0x1C, 0x3E, 0x61, 0x41, 0x43, 0x3E, 0x1C, 0x00],
|
|
|
|
|
'1' => [0x40, 0x42, 0x7F, 0x7F, 0x40, 0x40, 0x00, 0x00],
|
|
|
|
|
'2' => [0x62, 0x73, 0x79, 0x59, 0x5D, 0x4F, 0x46, 0x00],
|
|
|
|
|
'3' => [0x20, 0x61, 0x49, 0x4D, 0x4F, 0x7B, 0x31, 0x00],
|
|
|
|
|
'4' => [0x18, 0x1C, 0x16, 0x13, 0x7F, 0x7F, 0x10, 0x00],
|
|
|
|
|
'5' => [0x27, 0x67, 0x45, 0x45, 0x45, 0x7D, 0x38, 0x00],
|
|
|
|
|
'6' => [0x3C, 0x7E, 0x4B, 0x49, 0x49, 0x79, 0x30, 0x00],
|
|
|
|
|
'7' => [0x03, 0x03, 0x71, 0x79, 0x0D, 0x07, 0x03, 0x00],
|
|
|
|
|
'8' => [0x36, 0x7F, 0x49, 0x49, 0x49, 0x7F, 0x36, 0x00],
|
|
|
|
|
'9' => [0x06, 0x4F, 0x49, 0x49, 0x69, 0x3F, 0x1E, 0x00],
|
|
|
|
|
':' => [0x00, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
';' => [0x00, 0x56, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'<' => [0x00, 0x08, 0x14, 0x22, 0x41, 0x00, 0x00, 0x00],
|
|
|
|
|
'=' => [0x14, 0x14, 0x14, 0x14, 0x14, 0x00, 0x00, 0x00],
|
|
|
|
|
'>' => [0x41, 0x22, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'?' => [0x02, 0x01, 0x51, 0x09, 0x06, 0x00, 0x00, 0x00],
|
|
|
|
|
'@' => [0x32, 0x49, 0x79, 0x41, 0x3E, 0x00, 0x00, 0x00],
|
|
|
|
|
'A' => [0x7E, 0x11, 0x11, 0x11, 0x7E, 0x00, 0x00, 0x00],
|
|
|
|
|
'B' => [0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, 0x00, 0x00],
|
|
|
|
|
'C' => [0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, 0x00, 0x00],
|
|
|
|
|
'D' => [0x7F, 0x7F, 0x41, 0x41, 0x63, 0x3E, 0x1C, 0x00],
|
|
|
|
|
'E' => [0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, 0x00, 0x00],
|
|
|
|
|
'F' => [0x7F, 0x09, 0x09, 0x01, 0x01, 0x00, 0x00, 0x00],
|
|
|
|
|
'G' => [0x3E, 0x41, 0x41, 0x51, 0x32, 0x00, 0x00, 0x00],
|
|
|
|
|
'H' => [0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, 0x00, 0x00],
|
|
|
|
|
'I' => [0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'J' => [0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, 0x00, 0x00],
|
|
|
|
|
'K' => [0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, 0x00, 0x00],
|
|
|
|
|
'L' => [0x7F, 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00],
|
|
|
|
|
'M' => [0x7F, 0x02, 0x04, 0x02, 0x7F, 0x00, 0x00, 0x00],
|
|
|
|
|
'N' => [0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, 0x00, 0x00],
|
|
|
|
|
'O' => [0x3E, 0x7F, 0x41, 0x41, 0x41, 0x7F, 0x3E, 0x00],
|
|
|
|
|
'P' => [0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, 0x00, 0x00],
|
|
|
|
|
'Q' => [0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, 0x00, 0x00],
|
|
|
|
|
'R' => [0x7F, 0x7F, 0x11, 0x31, 0x79, 0x6F, 0x4E, 0x00],
|
|
|
|
|
'S' => [0x46, 0x49, 0x49, 0x49, 0x31, 0x00, 0x00, 0x00],
|
|
|
|
|
'T' => [0x01, 0x01, 0x7F, 0x01, 0x01, 0x00, 0x00, 0x00],
|
|
|
|
|
'U' => [0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, 0x00, 0x00],
|
|
|
|
|
'V' => [0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, 0x00, 0x00],
|
|
|
|
|
'W' => [0x7F, 0x7F, 0x38, 0x1C, 0x38, 0x7F, 0x7F, 0x00],
|
|
|
|
|
'X' => [0x63, 0x14, 0x08, 0x14, 0x63, 0x00, 0x00, 0x00],
|
|
|
|
|
'Y' => [0x03, 0x04, 0x78, 0x04, 0x03, 0x00, 0x00, 0x00],
|
|
|
|
|
'Z' => [0x61, 0x51, 0x49, 0x45, 0x43, 0x00, 0x00, 0x00],
|
|
|
|
|
'[' => [0x00, 0x00, 0x7F, 0x41, 0x41, 0x00, 0x00, 0x00],
|
|
|
|
|
'\\' => [0x02, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, 0x00],
|
|
|
|
|
']' => [0x41, 0x41, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'^' => [0x04, 0x02, 0x01, 0x02, 0x04, 0x00, 0x00, 0x00],
|
|
|
|
|
'_' => [0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00],
|
|
|
|
|
'`' => [0x00, 0x01, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'a' => [0x20, 0x54, 0x54, 0x54, 0x78, 0x00, 0x00, 0x00],
|
|
|
|
|
'b' => [0x7F, 0x48, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00],
|
|
|
|
|
'c' => [0x38, 0x44, 0x44, 0x44, 0x20, 0x00, 0x00, 0x00],
|
|
|
|
|
'd' => [0x38, 0x44, 0x44, 0x48, 0x7F, 0x00, 0x00, 0x00],
|
|
|
|
|
'e' => [0x38, 0x54, 0x54, 0x54, 0x18, 0x00, 0x00, 0x00],
|
|
|
|
|
'f' => [0x08, 0x7E, 0x09, 0x01, 0x02, 0x00, 0x00, 0x00],
|
|
|
|
|
'g' => [0x08, 0x14, 0x54, 0x54, 0x3C, 0x00, 0x00, 0x00],
|
|
|
|
|
'h' => [0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, 0x00, 0x00],
|
|
|
|
|
'i' => [0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'j' => [0x20, 0x40, 0x44, 0x3D, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'k' => [0x00, 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, 0x00],
|
|
|
|
|
'l' => [0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'm' => [0x7C, 0x04, 0x18, 0x04, 0x78, 0x00, 0x00, 0x00],
|
|
|
|
|
'n' => [0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, 0x00, 0x00],
|
|
|
|
|
'o' => [0x38, 0x44, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00],
|
|
|
|
|
'p' => [0x7C, 0x14, 0x14, 0x14, 0x08, 0x00, 0x00, 0x00],
|
|
|
|
|
'q' => [0x08, 0x14, 0x14, 0x18, 0x7C, 0x00, 0x00, 0x00],
|
|
|
|
|
'r' => [0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, 0x00, 0x00],
|
|
|
|
|
's' => [0x48, 0x54, 0x54, 0x54, 0x20, 0x00, 0x00, 0x00],
|
|
|
|
|
't' => [0x04, 0x3F, 0x44, 0x40, 0x20, 0x00, 0x00, 0x00],
|
|
|
|
|
'u' => [0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, 0x00, 0x00],
|
|
|
|
|
'v' => [0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, 0x00, 0x00],
|
|
|
|
|
'w' => [0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, 0x00, 0x00],
|
|
|
|
|
'x' => [0x00, 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, 0x00],
|
|
|
|
|
'y' => [0x0C, 0x50, 0x50, 0x50, 0x3C, 0x00, 0x00, 0x00],
|
|
|
|
|
'z' => [0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, 0x00, 0x00],
|
|
|
|
|
'{' => [0x00, 0x08, 0x36, 0x41, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'|' => [0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
'}' => [0x00, 0x41, 0x36, 0x08, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
_ => [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/*
|
|
|
|
|
pub(crate) const VCR_OSD_MONO_Bitmap = [
|
|
|
|
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
|
|
|
|
|
af afa 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
|
|
|
|
|
0xFF, 0xFF, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F,
|
|
|
|
|
0xFC, 0x3F, 0x30, 0x0C, 0x30, 0x0C, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x0F,
|
|
|
|
|
0x0F, 0x00, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xFF, 0x0F, 0xFF, 0xF0,
|
|
|
|
|
aaa 0x0F, 0x00, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xFF, 0x0F, 0xFF, 0xF0,
|
|
|
|
|
0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xF0, 0xFF, 0x0F, 0x0F, 0xF0, 0xF0,
|
|
|
|
|
0x0F, 0x0F, 0x00, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xFF, 0x0F, 0xFF,
|
|
|
|
|
0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xF0, 0xFF, 0x0F, 0x0F, 0xF0,
|
|
|
|
@ -641,4 +744,4 @@ pub(crate) const LUT_VCOM0_QUICK: [u8; 44] = [
|
|
|
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
|
|
];*/
|
|
|
|
|
];*/
|
|
|
|
|