use std::result::Result;
use bit_field::BitField;
use sdl2::pixels::Color;
use sdl2::rect::Point;
use sdl2::render::Canvas;
use sdl2::video::Window;
use crate::util::Font;
pub fn draw_char(
canvas: &mut Canvas<Window>,
font: &Font,
ch: u8,
x_start: u32,
y_start: u32,
fg_color: Color,
bg_color: Color,
) -> Result<(), String> {
let glyph = font.get_glyph(ch);
for y in y_start..(y_start + font.get_height()) {
let mut data = glyph[(y - y_start) as usize * font.get_width() as usize / 8];
for x in x_start..(x_start + font.get_width()) {
let color = if data.get_bit(7) { fg_color } else { bg_color };
canvas.set_draw_color(color);
canvas.draw_point(Point::new(x as i32, y as i32))?;
data = data << 1;
}
}
Ok(())
}