summaryrefslogtreecommitdiff
path: root/src/user/include/terminal/terminal.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/user/include/terminal/terminal.h')
-rw-r--r--src/user/include/terminal/terminal.h57
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