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