#ifndef CORE_TERMINAL_H #define CORE_TERMINAL_H #include "core/Vector.h" #define ESC "\33[" #define TERMINAL_RESET ESC "0m" #define TERMINAL_BOLD ESC "1m" #define TERMINAL_BLACK ESC "30m" #define TERMINAL_RED ESC "31m" #define TERMINAL_GREEN ESC "32m" #define TERMINAL_YELLOW ESC "33m" #define TERMINAL_BLUE ESC "34m" #define TERMINAL_MAGENTA ESC "35m" #define TERMINAL_CYAN ESC "36m" #define TERMINAL_WHITE ESC "37m" #define TERMINAL_BRIGHT_BLACK ESC "90m" #define TERMINAL_BRIGHT_RED ESC "91m" #define TERMINAL_BRIGHT_GREEN ESC "92m" #define TERMINAL_BRIGHT_YELLOW ESC "93m" #define TERMINAL_BRIGHT_BLUE ESC "94m" #define TERMINAL_BRIGHT_MAGENTA ESC "95m" #define TERMINAL_BRIGHT_CYAN ESC "96m" #define TERMINAL_BRIGHT_WHITE ESC "97m" #define TERMINAL_FG_BLACK TERMINAL_BLACK #define TERMINAL_FG_RED TERMINAL_RED #define TERMINAL_FG_GREEN TERMINAL_GREEN #define TERMINAL_FG_YELLOW TERMINAL_YELLOW #define TERMINAL_FG_BLUE TERMINAL_BLUE #define TERMINAL_FG_MAGENTA TERMINAL_MAGENTA #define TERMINAL_FG_CYAN TERMINAL_CYAN #define TERMINAL_FG_WHITE TERMINAL_WHITE #define TERMINAL_FG_BRIGHT_BLACK TERMINAL_BRIGHT_BLACK #define TERMINAL_FG_BRIGHT_RED TERMINAL_BRIGHT_RED #define TERMINAL_FG_BRIGHT_GREEN TERMINAL_BRIGHT_GREEN #define TERMINAL_FG_BRIGHT_YELLOW TERMINAL_BRIGHT_YELLOW #define TERMINAL_FG_BRIGHT_BLUE TERMINAL_BRIGHT_BLUE #define TERMINAL_FG_BRIGHT_MAGENTA TERMINAL_BRIGHT_MAGENTA #define TERMINAL_FG_BRIGHT_CYAN TERMINAL_BRIGHT_CYAN #define TERMINAL_FG_BRIGHT_WHITE TERMINAL_BRIGHT_WHITE #define TERMINAL_BG_BLACK ESC "40m" #define TERMINAL_BG_RED ESC "41m" #define TERMINAL_BG_GREEN ESC "42m" #define TERMINAL_BG_YELLOW ESC "43m" #define TERMINAL_BG_BLUE ESC "44m" #define TERMINAL_BG_MAGENTA ESC "45m" #define TERMINAL_BG_CYAN ESC "46m" #define TERMINAL_BG_WHITE ESC "47m" #define TERMINAL_BG_BRIGHT_BLACK ESC "100m" #define TERMINAL_BG_BRIGHT_RED ESC "101m" #define TERMINAL_BG_BRIGHT_GREEN ESC "102m" #define TERMINAL_BG_BRIGHT_YELLOW ESC "103m" #define TERMINAL_BG_BRIGHT_BLUE ESC "104m" #define TERMINAL_BG_BRIGHT_MAGENTA ESC "105m" #define TERMINAL_BG_BRIGHT_CYAN ESC "106m" #define TERMINAL_BG_BRIGHT_WHITE ESC "107m" #define TERMINAL_KEY_UNKNOWN 0x1'0000'0000lu #define TERMINAL_KEY_ARROW_LEFT 0x2'0000'0000lu #define TERMINAL_KEY_ARROW_RIGHT 0x3'0000'0000lu #define TERMINAL_KEY_ARROW_UP 0x4'0000'0000lu #define TERMINAL_KEY_ARROW_DOWN 0x5'0000'0000lu #define TERMINAL_KEY_ARROW_DELETE 0x6'0000'0000lu void enterAlternativeTerminal(); void leaveAlternativeTerminal(); IntVector2 getTerminalSize(); void clearTerminal(); void hideCursor(); void showCursor(); void resetCursor(); void moveCursorLeft(int i); void moveCursorRight(int i); void moveCursorUp(int i); void moveCursorDown(int i); bool enterRawTerminal(); bool leaveRawTerminal(); u64 getRawChar(); #endif