feature (TTY): implemented a cursor

This commit is contained in:
antifallobst 2023-05-01 22:53:23 +02:00
parent ee90b275b2
commit 99cd492570
4 changed files with 13 additions and 0 deletions

View File

@ -45,6 +45,7 @@ typedef struct {
graphics_buffer_T* graphics_buffer_request (uint32_t pos_x, uint32_t pos_y, uint32_t width, uint32_t height, graphics_buffer_layer_E layer);
void graphics_buffer_show (graphics_buffer_T* graphics_buffer);
void graphics_buffer_hide (graphics_buffer_T* graphics_buffer);
void graphics_buffer_move (graphics_buffer_T* graphics_buffer, uint32_t x, uint32_t y);
void graphics_buffer_destruct (graphics_buffer_T* graphics_buffer);
void graphics_buffer_shift_up (graphics_buffer_T* graphics_buffer, uint16_t shift);
void graphics_buffer_set_pixel (graphics_buffer_T* graphics_buffer, uint32_t x, uint32_t y, color_argb_T color);

View File

@ -11,6 +11,7 @@ typedef struct {
graphics_buffer_T* graphics_buffer;
pipe_T* output;
pipe_T input;
graphics_buffer_T* cursor_overlay;
position_T cursor;
color_argb_T color;
} tty_T;

View File

@ -39,6 +39,11 @@ void graphics_buffer_hide (graphics_buffer_T* graphics_buffer) {
graphics_buffer->render = false;
}
void graphics_buffer_move(graphics_buffer_T* graphics_buffer, uint32_t x, uint32_t y) {
graphics_buffer->pos_x = x;
graphics_buffer->pos_y = y;
}
void graphics_buffer_destruct(graphics_buffer_T* graphics_buffer) {
if (graphics_buffer->prev != NULL) {
graphics_buffer->prev->next = graphics_buffer->next;

View File

@ -9,11 +9,14 @@ tty_T* g_tty;
void tty_init() {
g_tty = memory_allocate(sizeof(tty_T));
g_tty->graphics_buffer = graphics_buffer_request(0, 0, graphics_renderer_get_width(), graphics_renderer_get_height(), GRAPHICS_BUFFER_STANDARD);
g_tty->cursor_overlay = graphics_buffer_request(0, 0, 8, 16, GRAPHICS_BUFFER_OVERLAY);
g_tty->cursor.x = 0;
g_tty->cursor.y = 0;
g_tty->color = g_color_palette[COLOR_PAL_GREY_LIGHT];
g_tty->output = NULL;
pipe_init(&g_tty->input, NULL, tty_update);
graphics_buffer_draw_char(g_tty->cursor_overlay, 0, 0, g_color_palette[COLOR_PAL_GREY_DARK], '_');
}
void tty_update() {
@ -25,6 +28,8 @@ void tty_update() {
g_tty->cursor = graphics_buffer_draw_string(g_tty->graphics_buffer, g_tty->cursor.x, g_tty->cursor.y, g_tty->color, buffer);
}
graphics_buffer_move(g_tty->cursor_overlay, g_tty->cursor.x, g_tty->cursor.y);
graphics_renderer_update();
}
@ -32,5 +37,6 @@ uint32_t tty_write(string_t string) {
pipe_write(g_tty->output, string, string_length(string));
g_tty->cursor = graphics_buffer_draw_string(g_tty->graphics_buffer, g_tty->cursor.x, g_tty->cursor.y, g_tty->color, string);
graphics_buffer_move(g_tty->cursor_overlay, g_tty->cursor.x, g_tty->cursor.y);
graphics_renderer_update();
}