GitOS
Loading...
Searching...
No Matches
text_mode.hpp
Go to the documentation of this file.
1#pragma once
2
4
6{
7 public:
8 // Returns the singleton instance implementing Graphics
9 static Graphics* the();
10
11 void print_char(char c) override;
12 void print_char_color(char c, TEXT_MODE_COLOR color) override;
13
14 void print_string(const char* str) override;
15 void print_string_color(const char* str, TEXT_MODE_COLOR color) override;
16
17 void clear_screen() override;
18
19 void set_text_color(TEXT_MODE_COLOR color) override;
20 void set_cursor(uint32_t x, uint32_t y) override;
21
22 uint32_t get_cursor_x() override;
23 uint32_t get_cursor_y() override;
25
26 private:
27 // Helper function to convert a character + color into a 16-bit entry
28 uint16_t make_char(char c, TEXT_MODE_COLOR color);
29
30 // Scroll the screen by 'amount' lines
31 void scroll_screen(int amount);
32
33 public:
34 ~TextModeGraphics() override {};
35
36 private:
37 // We assume 80x25 text mode
38 static constexpr int TEXT_MODE_WIDTH = 80;
39 static constexpr int TEXT_MODE_HEIGHT = 25;
40
41 // Pointer to the VGA text-mode buffer
42 uint16_t* video_mem = reinterpret_cast<uint16_t*>(0xB8000);
43
44 // Current cursor position and current color
45 uint32_t current_x = 0;
46 uint32_t current_y = 0;
47 TEXT_MODE_COLOR current_fg = WHITE;
48};
Definition graphics.hpp:10
TEXT_MODE_COLOR
Definition graphics.hpp:15
@ WHITE
Definition graphics.hpp:31
Definition text_mode.hpp:6
void clear_screen() override
Clears screen.
Definition text_mode.cpp:35
void print_string(const char *str) override
Prints string to screen.
Definition text_mode.cpp:94
uint32_t get_cursor_y() override
Definition text_mode.cpp:165
void print_char(char c) override
Prints char to screen.
Definition text_mode.cpp:47
TEXT_MODE_COLOR get_current_color() override
Definition text_mode.cpp:149
void print_string_color(const char *str, TEXT_MODE_COLOR color) override
Prints string to screen with specified color.
Definition text_mode.cpp:105
void set_text_color(TEXT_MODE_COLOR color) override
Sets new framebuffer color to print.
Definition text_mode.cpp:118
void print_char_color(char c, TEXT_MODE_COLOR color) override
Prints char to screen with specified color.
Definition text_mode.cpp:58
uint32_t get_cursor_x() override
Definition text_mode.cpp:157
~TextModeGraphics() override
Definition text_mode.hpp:34
static Graphics * the()
Definition text_mode.cpp:12
void set_cursor(uint32_t x, uint32_t y) override
Sets framebuffer cursor to specified values.
Definition text_mode.cpp:129