diff options
Diffstat (limited to 'src/font.rs')
-rw-r--r-- | src/font.rs | 39 |
1 files changed, 36 insertions, 3 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; |