diff options
Diffstat (limited to 'src/user/include/terminal/terminal.h')
-rw-r--r-- | src/user/include/terminal/terminal.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/user/include/terminal/terminal.h b/src/user/include/terminal/terminal.h new file mode 100644 index 0000000..1782173 --- /dev/null +++ b/src/user/include/terminal/terminal.h @@ -0,0 +1,57 @@ +#ifndef TERMINAL_TERMINAL_H +#define TERMINAL_TERMINAL_H + +#include <libfont/fonts.h> + +#include <pland/syscall.h> + +#include <stdarg.h> +#include <stdint.h> + +struct terminal { + _window_handle_t window; + uint8_t *pixbuf; + uint32_t window_width; + uint32_t window_height; + + struct font_info *font; + + uint32_t cols; + uint32_t rows; + char *charbuf; + + uint32_t cursor_y; + uint32_t cursor_x; + + uint8_t fg; + uint8_t bg; +}; + +struct terminal *make_term(struct font_info *font, uint32_t cols, uint32_t rows); +void del_term(struct terminal *term); + +extern struct terminal *active_term; + +void paint_term(); + +void set_color(uint8_t fg, uint8_t bg); +void clear_term(); + +void move_cursor(uint32_t new_y, uint32_t new_x); + +void cursor_left(); +void cursor_right(); +void cursor_up(); +void cursor_down(); + +void term_newline(); +void term_add_char(char ch); +void term_add_sz_no_ww(const char *sz); +void term_add_sz(const char *sz); + +void term_addf_no_ww_v(const char *fmt, va_list args); +void term_addf_no_ww(const char *fmt, ...); +void term_addf_v(const char *fmt, va_list args); +void term_addf(const char *fmt, ...); + +#endif
\ No newline at end of file |