aboutsummaryrefslogtreecommitdiffstats
path: root/src/font.rs
diff options
context:
space:
mode:
authorLibravatarLarge Libravatar fence <fencedesu-mailmoe>2025-01-09 03:29:36 +0100
committerLibravatarLarge Libravatar fence <fencedesu-mailmoe>2025-01-09 03:29:36 +0100
commitaed7d01b580104d39d38a13589e28ac74c62accb (patch)
tree4ffd1f21955dff05a0b0f6b505d4392e7c364ebc /src/font.rs
parent48127e8566a878340e35dd80569338120a317820 (diff)
downloadcosin25-invite-mountainbytes-aed7d01b580104d39d38a13589e28ac74c62accb.tar.gz
cosin25-invite-mountainbytes-aed7d01b580104d39d38a13589e28ac74c62accb.tar.bz2
cosin25-invite-mountainbytes-aed7d01b580104d39d38a13589e28ac74c62accb.tar.lz
cosin25-invite-mountainbytes-aed7d01b580104d39d38a13589e28ac74c62accb.zip

feat: a better way to font

Diffstat (limited to 'src/font.rs')
-rw-r--r--src/font.rs39
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;