mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-06-11 22:03:53 -06:00
Functions4U: New functions to handle console text
git-svn-id: svn://ultimatepp.org/upp/trunk@14791 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
16fff43fe6
commit
73ecddafec
2 changed files with 96 additions and 0 deletions
|
|
@ -2796,4 +2796,59 @@ size_t GetNumLines(Stream &stream) {
|
|||
return res;
|
||||
}
|
||||
|
||||
|
||||
bool SetConsoleColor(CONSOLE_COLOR color) {
|
||||
#ifdef PLATFORM_WIN32
|
||||
static HANDLE hstdout = 0;
|
||||
static CONSOLE_SCREEN_BUFFER_INFO csbiInfo = {};
|
||||
static WORD woldattrs;
|
||||
|
||||
if (hstdout == 0) {
|
||||
hstdout = GetStdHandle(STD_OUTPUT_HANDLE);
|
||||
if (!GetConsoleScreenBufferInfo(hstdout, &csbiInfo)) {
|
||||
hstdout = 0;
|
||||
return false;
|
||||
}
|
||||
woldattrs = csbiInfo.wAttributes;
|
||||
}
|
||||
if (color == RESET)
|
||||
return SetConsoleTextAttribute(hstdout, woldattrs);
|
||||
else
|
||||
return SetConsoleTextAttribute(hstdout, color);
|
||||
#else
|
||||
if (color < 100)
|
||||
printf("\x1b[%dm", color);
|
||||
else
|
||||
printf("\x1b[1;%dm", color-100);
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
|
||||
void ConsoleOutputDisable(bool disable) {
|
||||
#ifdef PLATFORM_WIN32
|
||||
if (disable)
|
||||
freopen("nul", "w", stdout);
|
||||
else
|
||||
freopen("CONOUT$", "w", stdout);
|
||||
#else
|
||||
static int saved_id = Null;
|
||||
static fpos_t saved_pos;
|
||||
|
||||
if (disable) {
|
||||
fflush(stdout);
|
||||
fgetpos(stdout, &saved_pos);
|
||||
saved_id = dup(fileno(stdout));
|
||||
close(fileno(stdout));
|
||||
} else {
|
||||
if (!IsNull(saved_id)) {
|
||||
fflush(stdout);
|
||||
dup2(saved_id, fileno(stdout));
|
||||
close(saved_id);
|
||||
clearerr(stdout);
|
||||
fsetpos(stdout, &saved_pos);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1189,6 +1189,47 @@ protected:
|
|||
}
|
||||
};
|
||||
|
||||
enum CONSOLE_COLOR {
|
||||
#ifdef PLATFORM_WIN32
|
||||
BLACK = 0,
|
||||
BLUE = FOREGROUND_BLUE,
|
||||
GREEN = FOREGROUND_GREEN,
|
||||
CYAN = FOREGROUND_GREEN | FOREGROUND_BLUE,
|
||||
RED = FOREGROUND_RED,
|
||||
MAGENTA = FOREGROUND_RED | FOREGROUND_BLUE,
|
||||
YELLOW = FOREGROUND_RED | FOREGROUND_GREEN,
|
||||
GRAY = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE,
|
||||
LTBLUE = FOREGROUND_INTENSITY | FOREGROUND_BLUE,
|
||||
LTGREEN = FOREGROUND_INTENSITY | FOREGROUND_GREEN,
|
||||
LTCYAN = FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_BLUE,
|
||||
LTRED = FOREGROUND_INTENSITY | FOREGROUND_RED,
|
||||
LTMAGENTA = FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE,
|
||||
LTYELLOW = FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN,
|
||||
WHITE = FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE,
|
||||
RESET
|
||||
#else
|
||||
BLACK = 30,
|
||||
RED = 31,
|
||||
GREEN = 32,
|
||||
YELLOW = 33,
|
||||
BLUE = 34,
|
||||
MAGENTA = 35,
|
||||
CYAN = 36,
|
||||
GRAY = 37,
|
||||
LTRED = 131,
|
||||
LTGREEN = 132,
|
||||
LTYELLOW = 133,
|
||||
LTBLUE = 134,
|
||||
LTMAGENTA = 135,
|
||||
LTCYAN = 136,
|
||||
WHITE = 137,
|
||||
RESET = 0
|
||||
#endif
|
||||
};
|
||||
|
||||
bool SetConsoleColor(CONSOLE_COLOR color);
|
||||
void ConsoleOutputDisable(bool disable);
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue