From 7ccb819f867493f8ec202ea3b39c94c198c64584 Mon Sep 17 00:00:00 2001 From: JustSomePwner Date: Thu, 30 Aug 2018 14:01:54 +0200 Subject: first --- loader/console.h | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 loader/console.h (limited to 'loader/console.h') diff --git a/loader/console.h b/loader/console.h new file mode 100644 index 0000000..1494d94 --- /dev/null +++ b/loader/console.h @@ -0,0 +1,69 @@ +#pragma once +#include + +#define STD_HANDLE GetStdHandle( STD_OUTPUT_HANDLE ) + +namespace con +{ + enum class concol : int { + black = 0, + dark_blue = 1, + dark_green = 2, + dark_aqua, dark_cyan = 3, + dark_red = 4, + dark_purple = 5, dark_pink = 5, dark_magenta = 5, + dark_yellow = 6, + dark_white = 7, + gray = 8, + blue = 9, + green = 10, + aqua = 11, cyan = 11, + red = 12, + purple = 13, pink = 13, magenta = 13, + yellow = 14, + white = 15 + }; + + inline void set_console_cursor( bool cursor ) { + CONSOLE_CURSOR_INFO cursor_info; + cursor_info.bVisible = cursor; + cursor_info.dwSize = 1; + SetConsoleCursorInfo( STD_HANDLE, &cursor_info ); + } + + inline void set_cursor_pos( int x, int y ) { + COORD cursor_pos = { static_cast< short >( x ), static_cast< short >( y ) }; + SetConsoleCursorPosition( STD_HANDLE, cursor_pos ); + } + + inline void set_console_color( concol text, concol bg ) { + SetConsoleTextAttribute( STD_HANDLE, ( ( int )text + ( ( int )bg * 16 ) ) ); + } + + inline void clear_console( ) { + CONSOLE_SCREEN_BUFFER_INFO buf_info; + HANDLE std_out; + DWORD count; + DWORD cell_count; + COORD null_coord{ }; + + std_out = STD_HANDLE; + if ( std_out == INVALID_HANDLE_VALUE ) return; + + if ( !GetConsoleScreenBufferInfo( std_out, &buf_info ) ) return; + cell_count = buf_info.dwSize.X * buf_info.dwSize.Y; + + if ( !FillConsoleOutputCharacter( std_out, ( TCHAR )' ', cell_count, null_coord, &count ) ) return; + if ( !FillConsoleOutputAttribute( std_out, buf_info.wAttributes, cell_count, null_coord, &count ) ) return; + + set_cursor_pos( 0, 0 ); + } + + inline void set_size( int w, int h ) { + auto con = GetConsoleWindow( ); + RECT r; + + GetWindowRect( con, &r ); + MoveWindow( con, r.left, r.top, w, h, 1 ); + } +} \ No newline at end of file -- cgit v1.2.3