use ab_glyph::{Font, FontRef, Glyph}; use alloc::string::String; use vga::{ colors::Color16, writers::{Graphics640x480x16, GraphicsWriter}, }; lazy_static::lazy_static! { pub static ref VGAE: spin::Mutex = { let xyz = Graphics640x480x16::new(); xyz.set_mode(); spin::Mutex::new(xyz) }; } pub const FONT: &[u8; 1279380] = include_bytes!("../../ableos/assets/fonts/MesloLGS NF Regular.ttf"); pub fn test_it_fucko() { let mode = Graphics640x480x16::new(); mode.set_mode(); mode.clear_screen(Color16::Black); mode.draw_line((80, 60), (80, 420), Color16::White); mode.draw_line((80, 60), (540, 60), Color16::White); { let offset = 110; mode.draw_character(offset - 15 - 4, 60 + 15 - 4, 'x', Color16::Red); mode.draw_line( (offset.try_into().unwrap(), 60), (offset.try_into().unwrap(), 90), Color16::White, ); } mode.draw_line((80, 420), (540, 420), Color16::White); mode.draw_line((540, 420), (540, 60), Color16::White); mode.draw_line((80, 90), (540, 90), Color16::White); for (offset, character) in "ableOS".chars().enumerate() { mode.draw_character(270 + offset * 8, 72, character, Color16::White) } } pub trait GraphicsAPI { fn add_shader() {} } pub struct Buffer { label: String, resolution: (u64, u64), } // #[deprecated(note = "Deprecated because you should use the damn graphics api")] pub fn draw_char(character: char, offset: usize) { let mode = *VGAE.lock(); let font = FontRef::try_from_slice(FONT).unwrap(); // Get a glyph for 'q' with a scale & position. let q_glyph: Glyph = font.glyph_id(character).with_scale(100.0); // Draw it. if let Some(q) = font.outline_glyph(q_glyph) { q.draw(|x, y, c| { // info!("{}", c); if c > 0.2 { mode.set_pixel( x as usize + (offset * 50), // y as usize, Color16::LightBlue, ); } }); } }