Files
CervusOS/kernel/include/graphics/fb/fb.h
T
alexvoste 1a9fd27a31 push
2026-05-07 02:22:25 +03:00

59 lines
2.0 KiB
C

#ifndef FB_H
#define FB_H
#include <stdint.h>
#include <stddef.h>
#include <limine.h>
#define RGB(r, g, b) (((r) << 16) | ((g) << 8) | (b))
#define COLOR_BLACK RGB( 0, 0, 0)
#define COLOR_WHITE RGB(255, 255, 255)
#define COLOR_RED RGB(255, 0, 0)
#define COLOR_GREEN RGB( 0, 255, 0)
#define COLOR_BLUE RGB( 0, 0, 255)
#define COLOR_CYAN RGB( 0, 255, 255)
#define COLOR_MAGENTA RGB(255, 0, 255)
#define COLOR_YELLOW RGB(255, 255, 0)
#define COLOR_ORANGE RGB(255, 165, 0)
#define COLOR_GRAY RGB(128, 128, 128)
#define COLOR_DARKGRAY RGB( 64, 64, 64)
#define COLOR_BROWN RGB(165, 42, 42)
struct psf_header {
uint32_t magic;
uint32_t version;
uint32_t headersize;
uint32_t flags;
uint32_t numglyph;
uint32_t bytesperglyph;
uint32_t height;
uint32_t width;
} __attribute__((packed));
extern uint8_t _binary_font_psf_start[];
extern uint8_t _binary_font_psf_end[];
static inline const uint8_t* get_font_data(void) {
return (const uint8_t*)&_binary_font_psf_start;
}
static inline size_t get_font_data_size(void) {
return _binary_font_psf_end - _binary_font_psf_start;
}
static inline const struct psf_header* get_psf_header(void) {
return (const struct psf_header*)&_binary_font_psf_start;
}
int psf_validate(void);
void fb_draw_pixel(struct limine_framebuffer *fb, uint32_t x, uint32_t y, uint32_t color);
void fb_fill_rect(struct limine_framebuffer *fb, uint32_t x, uint32_t y, uint32_t w, uint32_t h, uint32_t color);
void fb_clear(struct limine_framebuffer *fb, uint32_t color);
void fb_draw_char(struct limine_framebuffer *fb, char c, uint32_t x, uint32_t y, uint32_t color);
void fb_draw_string(struct limine_framebuffer *fb, const char *str, uint32_t x, uint32_t y, uint32_t color);
void fb_init_backbuffer(struct limine_framebuffer *fb);
void fb_flush(struct limine_framebuffer *fb);
void fb_flush_lines(struct limine_framebuffer *fb, uint32_t y_start, uint32_t y_end);
#endif