diff options
Diffstat (limited to 'src/vgatext.h')
-rw-r--r-- | src/vgatext.h | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/vgatext.h b/src/vgatext.h new file mode 100644 index 0000000..499e3d8 --- /dev/null +++ b/src/vgatext.h @@ -0,0 +1,68 @@ +#ifndef VGA_TEXT_H +#define VGA_TEXT_H + +#include <stdbool.h> + +#include "port.h" + +enum { + VGA_TEXT_DEFAULT_RES_X = 80, + VGA_TEXT_DEFAULT_RES_Y = 25 +}; + +typedef enum { + VGA_TEXT_COLOR_BLACK = 0, + VGA_TEXT_COLOR_BLUE = 1, + VGA_TEXT_COLOR_GREEN = 2, + VGA_TEXT_COLOR_CYAN = 3, + VGA_TEXT_COLOR_RED = 4, + VGA_TEXT_COLOR_MAGENTA = 5, + VGA_TEXT_COLOR_BROWN = 6, + VGA_TEXT_COLOR_LIGHT_GREY = 7, + VGA_TEXT_COLOR_DARK_GREY = 8, + VGA_TEXT_COLOR_LIGHT_BLUE = 9, + VGA_TEXT_COLOR_LIGHT_GREEN = 10, + VGA_TEXT_COLOR_LIGHT_CYAN = 11, + VGA_TEXT_COLOR_LIGHT_RED = 12, + VGA_TEXT_COLOR_LIGHT_MAGENTA = 13, + VGA_TEXT_COLOR_LIGHT_BROWN = 14, + VGA_TEXT_COLOR_WHITE = 15 +} vga_text_color_t; + +typedef struct { + int res_x; // resolution, default 80 + int res_y; // resolution, default 25 + int cursor_x; // current cursor position X + int cursor_y; // current cursor position Y + vga_text_color_t color; + vga_text_color_t background_color; + port8_t crtc_misc_port; + port8_t crtc_index_port; + port8_t crtc_data_port; + bool show_mouse_cursor; + int mouse_cursor_x; + int mouse_cursor_y; +} vga_text_t; + +void vga_text_init( vga_text_t *vga_text ); +void vga_text_clear_screen( vga_text_t *vga_text ); +void vga_text_set_cursor( vga_text_t *vga_text, const int x, const int y ); +void vga_text_set_cursor_from_hardware( vga_text_t *vga_text ); +void vga_text_set_cursor_on_hardware( vga_text_t *vga_text ); +int vga_text_get_cursor_x( vga_text_t *vga_text ); +int vga_text_get_cursor_y( vga_text_t *vga_text ); +void vga_text_set_color( vga_text_t *vga_text, const vga_text_color_t color ); +void vga_text_set_background_color( vga_text_t *vga_text, const vga_text_color_t color ); +void vga_text_put_char_at( vga_text_t *vga_text, const int x, const int y, const char c ); +void vga_text_put_string_at( vga_text_t *vga_text, const int x, const int y, const char *s ); +void vga_text_put_char( vga_text_t *vga_text, const char c ); +void vga_text_put_string( vga_text_t *vga_text, const char *s ); +void vga_text_put_newline( vga_text_t *vga_text ); +void vga_text_set_background_color_at( vga_text_t *vga_text, const int x, const int y, vga_text_color_t color ); +vga_text_color_t vga_text_get_background_color_at( vga_text_t *vga_text, const int x, const int y ); +void vga_text_inverse_colors_at( vga_text_t *vga_text, const int x, const int y ); +void vga_text_show_mouse_cursor( vga_text_t *vga_text ); +void vga_text_move_mouse_cursor( vga_text_t *vga_text, const int x, const int y ); +void vga_text_hide_mouse_cursor( vga_text_t *vga_text ); + +#endif /* VGA_TEXT_H */ |