From 4e38beb87e1b454a6849825406737c5b5e662eee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Neuh=C3=A4user?= Date: Tue, 29 Jul 2025 20:32:53 +0200 Subject: [PATCH] Print String --- src/framebuffer.rs | 21 +++++++++++++++++++-- src/main.rs | 2 +- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/framebuffer.rs b/src/framebuffer.rs index f33d643..729d7c8 100644 --- a/src/framebuffer.rs +++ b/src/framebuffer.rs @@ -201,8 +201,25 @@ impl FrameBuffer { } } - pub fn draw_letter(&self, x: u32, y: u32, scale: u32) { - for (y_offset, row) in (&BASIC_LEGACY[0x70]).iter().enumerate() { + //TODO: Scale in pixels + pub fn draw_string(&self, string: &str, x: u32, mut y: u32, scale: u32) { + let mut offset = 0; + for c in string.bytes() { + match c { + b'\n' => { + y += 8 * scale; + offset = 0; + } + _ => { + self.draw_ascii(x + (offset as u32 * 8 * scale), y, c as usize, scale); + offset += 1 + } + } + } + } + + fn draw_ascii(&self, x: u32, y: u32, char: usize, scale: u32) { + for (y_offset, row) in (&BASIC_LEGACY[char]).iter().enumerate() { for bit in 0..8 { match row & (1 << bit) { 0 => {} diff --git a/src/main.rs b/src/main.rs index 270c63d..6e27811 100644 --- a/src/main.rs +++ b/src/main.rs @@ -107,7 +107,7 @@ pub extern "C" fn kernel_main() -> ! { fb.draw_square_fill(800, 800, 900, 900); fb.draw_square_fill(1000, 800, 1200, 700); fb.draw_square_fill(900, 100, 800, 150); - fb.draw_letter(500, 5, 4); + fb.draw_string("Hello World! :D\nTest next Line", 500, 5, 3); loop { let temp = read_soc_temp();