#ifndef CLKS_FRAMEBUFFER_H #define CLKS_FRAMEBUFFER_H #include #include struct clks_framebuffer_info { u32 width; u32 height; u32 pitch; u16 bpp; }; void clks_fb_init(const struct limine_framebuffer *fb); clks_bool clks_fb_ready(void); struct clks_framebuffer_info clks_fb_info(void); void clks_fb_clear(u32 rgb); void clks_fb_scroll_up(u32 pixel_rows, u32 fill_rgb); void clks_fb_draw_pixel(u32 x, u32 y, u32 rgb); clks_bool clks_fb_read_pixel(u32 x, u32 y, u32 *out_rgb); void clks_fb_fill_rect(u32 x, u32 y, u32 width, u32 height, u32 rgb); #define CLKS_FB_STYLE_BOLD 0x1U #define CLKS_FB_STYLE_UNDERLINE 0x2U void clks_fb_draw_char(u32 x, u32 y, char ch, u32 fg_rgb, u32 bg_rgb); void clks_fb_draw_char_styled(u32 x, u32 y, char ch, u32 fg_rgb, u32 bg_rgb, u32 style_flags); clks_bool clks_fb_load_psf_font(const void *blob, u64 blob_size); u32 clks_fb_cell_width(void); u32 clks_fb_cell_height(void); #endif