summaryrefslogtreecommitdiff
path: root/src/user/include/terminal
diff options
context:
space:
mode:
authorBenji Dial <benji6283@gmail.com>2021-01-24 12:00:11 -0500
committerBenji Dial <benji6283@gmail.com>2021-01-24 12:00:11 -0500
commitbce944d1498eaa3b6940ee234c863b3548a66b37 (patch)
treeea40c087ab4f0f236aee8d158cf68550f5209f72 /src/user/include/terminal
parentca731aa747214919df7b3dfe3478dbe787ce5b68 (diff)
downloadportland-os-bce944d1498eaa3b6940ee234c863b3548a66b37.tar.gz
graphics!
Diffstat (limited to 'src/user/include/terminal')
-rw-r--r--src/user/include/terminal/readline.h10
-rw-r--r--src/user/include/terminal/terminal.h57
2 files changed, 67 insertions, 0 deletions
diff --git a/src/user/include/terminal/readline.h b/src/user/include/terminal/readline.h
new file mode 100644
index 0000000..9046610
--- /dev/null
+++ b/src/user/include/terminal/readline.h
@@ -0,0 +1,10 @@
+#ifndef TERMINAL_READLINE_H
+#define TERMINAL_READLINE_H
+
+#include <stdint.h>
+
+//returns length of string without null terminator
+//max_length doesn't include null terminator
+uint32_t read_line(char *sz, uint32_t max_length, const char *prompt);
+
+#endif \ No newline at end of file
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