diff --git a/src/drawing/font.rs b/src/drawing/font.rs index 79f8654..3ee714e 100644 --- a/src/drawing/font.rs +++ b/src/drawing/font.rs @@ -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, -];*/ \ No newline at end of file +];*/ diff --git a/src/drawing/mod.rs b/src/drawing/mod.rs index 0498b8d..3fe2990 100644 --- a/src/drawing/mod.rs +++ b/src/drawing/mod.rs @@ -110,7 +110,7 @@ impl Color { } - +#[allow(dead_code)] pub struct Graphics { width: u16, height: u16, @@ -184,8 +184,10 @@ impl Graphics { } ///TODO: implement! + /// TODO: use Fonts pub fn draw_char(&self, buffer: &mut[u8], x0: u16, y0: u16, input: char, font: &Font, color: &Color) { let mut counter = 0; + let _a = font.get_char(input); for &elem in font::bitmap_8x8(input).iter() { self.draw_byte(buffer, x0, y0 + counter * self.width, elem, color); counter += 1; @@ -202,7 +204,7 @@ impl Graphics { } } - ///TODO: implement! + ///TODO: test! pub fn draw_char_8x8(&self, buffer: &mut[u8], x0: u16, y0: u16, input: char, color: &Color) { let mut counter = 0; for &elem in font::bitmap_8x8(input).iter() { @@ -213,7 +215,7 @@ impl Graphics { } } - ///TODO: implement! + ///TODO: test! /// no autobreak line yet pub fn draw_string_8x8(&self, buffer: &mut[u8], x0: u16, y0: u16, input: &str, color: &Color) { let mut counter = 0;