diff options
| author | Kirill Petrashin <kirill8201@yandex.ru> | 2026-06-29 16:44:27 +0300 |
|---|---|---|
| committer | Kirill Petrashin <kirill8201@yandex.ru> | 2026-06-29 16:44:27 +0300 |
| commit | 948720fba656b25b255297b2142dfaf5fc952e1f (patch) | |
| tree | 0041bb427fc7b131ae2f48ffe9d14ba2ba0942a2 /framebuffer.c | |
| parent | 94e918612723f8d3ef480f158839febf07376a44 (diff) | |
| download | wafflestone-948720fba656b25b255297b2142dfaf5fc952e1f.tar.xz | |
Add functions to output text
Diffstat (limited to 'framebuffer.c')
| -rw-r--r-- | framebuffer.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/framebuffer.c b/framebuffer.c index 01d169c..1b8439d 100644 --- a/framebuffer.c +++ b/framebuffer.c @@ -80,6 +80,29 @@ void fb_vert_line(Framebuffer fb, size_t x, size_t y1, size_t y2, Pixel pixel) { } } +void fb_text(Framebuffer fb, long x, size_t y, char *s, Colour fg, Colour bg) { + if (x >= (long)term_width || y >= term_height) return; /* OOB */ + + while (x < 0 && *s != '\0') { x++, s++; } + + Pixel p = {fg, bg, '\0'}; + for(; *s != '\0' && x < (long)term_width; s++, x++) { + p.ch = *s; + fb.fb[y][x] = p; + } +} + +void fb_text_no_bg(Framebuffer fb, long x, size_t y, char *s, Colour fg) { + if (x >= (long)term_width || y >= term_height) return; /* OOB */ + + while (x < 0 && *s != '\0') { x++, s++; } + + for(; *s != '\0' && x < (long)term_width; s++, x++) { + fb.fb[y][x].ch = *s; + fb.fb[y][x].fg = fg; + } +} + void term_init(void) { tcgetattr(0, &initial_terminal_state); |
