diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/font.rs | 39 | ||||
| -rw-r--r-- | src/main.rs | 7 | 
2 files changed, 42 insertions, 4 deletions
| diff --git a/src/font.rs b/src/font.rs index c88b9c3..c97ac8f 100644 --- a/src/font.rs +++ b/src/font.rs @@ -1,9 +1,36 @@  pub const UWU_HEIGHT: u32 = 24;  pub const UWU_WIDTH: u32 = 16; -pub const UWU_SHEET_RAW: &[u8] = include_bytes!("../assets/uwu-logo-font-20px.png"); + +use std::sync::LazyLock; + +pub struct Glyph { +  x: i32, +} +fn insert_value(arr: &mut Vec<*const Glyph>, idx: usize, glyph: *const Glyph) { +  if arr.len() <= idx { +    while arr.len() <= idx { +      arr.push(0 as *const Glyph); +    } +  } +  arr[idx] = glyph; +} + +pub struct Font<'a> { +  pub texture: &'a [u8], +  pub glyphs: Vec<*const Glyph>, +} + +pub const MEOW_FONT: LazyLock<Font> = LazyLock::new(|| Font { +  texture: include_bytes!("../assets/uwu-logo-font-20px.png"), +  glyphs: { +    let a: &mut Vec<*const Glyph> = &mut Vec::new(); +    insert_value(a, 32, &Glyph { x: 2 }); +    a.to_vec() +  }, +});  mod sprite_sheets { -  use super::{UWU_HEIGHT, UWU_SHEET_RAW, UWU_WIDTH}; +  use super::{MEOW_FONT, UWU_HEIGHT, UWU_WIDTH};    use sdl2::{      image::LoadTexture,      pixels::PixelFormatEnum, @@ -61,7 +88,7 @@ mod sprite_sheets {        let surface = Surface::new(112, 24, PixelFormatEnum::RGB24).unwrap();        let mut canvas = Canvas::from_surface(surface).unwrap();        let tc = canvas.texture_creator(); -      let tx = tc.load_texture_bytes(UWU_SHEET_RAW).unwrap(); +      let tx = tc.load_texture_bytes(MEOW_FONT.texture).unwrap();        canvas.copy(&tx, None, None).unwrap();        canvas.present();        let sheet = canvas.into_surface(); @@ -89,7 +116,13 @@ mod sprite_sheets {      pub fn w_surface(&self) -> Surface {        return self.char_to_surface(uwu_w());      } + +    pub fn p_surface(&self) -> Surface { +      return self.char_to_surface(uwu_p()); +    }    }  } +use std::str::Bytes; +  pub use sprite_sheets::UwUFont; diff --git a/src/main.rs b/src/main.rs index c0a58a5..c3f434a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -27,6 +27,7 @@ pub fn main() {    let uwu_font = font::UwUFont::new(&texture_creator);    let u_char = uwu_font.u_surface().as_texture(&texture_creator).unwrap();    let w_char = uwu_font.w_surface().as_texture(&texture_creator).unwrap(); +  let p_char = uwu_font.p_surface().as_texture(&texture_creator).unwrap();    canvas      .copy(&u_char, None, UwUFont::pos_to_rect(0, 0)) @@ -37,9 +38,13 @@ pub fn main() {    canvas      .copy(&u_char, None, UwUFont::pos_to_rect(UWU_WIDTH as i32 * 2, 0))      .unwrap(); +  canvas +    .copy(&p_char, None, UwUFont::pos_to_rect(UWU_WIDTH as i32 * 2, 0)) +    .unwrap(); +    //canvas.clear();    let tc = canvas.texture_creator(); -  let sheet = tc.load_texture_bytes(font::UWU_SHEET_RAW).unwrap(); +  let sheet = tc.load_texture_bytes(font::MEOW_FONT.texture).unwrap();    /*    canvas.copy(      &sheet, |