Commit 4855f867 authored by Ramiro Polla's avatar Ramiro Polla

Add win32 console color output.

Based on patches by James Darnley <james dot darnley at gmail dot com>.

Originally committed as revision 23554 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 6e34a558
...@@ -34,13 +34,33 @@ static ...@@ -34,13 +34,33 @@ static
#endif #endif
int av_log_level = AV_LOG_INFO; int av_log_level = AV_LOG_INFO;
#ifdef _WIN32
#include <windows.h>
static const uint8_t color[] = {12,12,12,14,7,7,7};
static int16_t background, attr_orig;
static HANDLE con;
#define set_color(x) SetConsoleTextAttribute(con, background | color[level])
#define reset_color() SetConsoleTextAttribute(con, attr_orig)
#else
static const uint8_t color[]={0x41,0x41,0x11,0x03,9,9,9}; static const uint8_t color[]={0x41,0x41,0x11,0x03,9,9,9};
#define set_color(x) fprintf(stderr, "\033[%d;3%dm", color[x]>>4, color[x]&15)
#define reset_color() fprintf(stderr, "\033[0m")
#endif
static int use_color=-1; static int use_color=-1;
#undef fprintf #undef fprintf
static void colored_fputs(int level, const char *str){ static void colored_fputs(int level, const char *str){
if(use_color<0){ if(use_color<0){
#if HAVE_ISATTY && !defined(_WIN32) #ifdef _WIN32
CONSOLE_SCREEN_BUFFER_INFO con_info;
con = GetStdHandle(STD_ERROR_HANDLE);
use_color = (con != INVALID_HANDLE_VALUE) && !getenv("NO_COLOR");
if (use_color) {
GetConsoleScreenBufferInfo(con, &con_info);
attr_orig = con_info.wAttributes;
background = attr_orig & 0xF0;
}
#elif HAVE_ISATTY
use_color= getenv("TERM") && !getenv("NO_COLOR") && isatty(2); use_color= getenv("TERM") && !getenv("NO_COLOR") && isatty(2);
#else #else
use_color= 0; use_color= 0;
...@@ -48,11 +68,11 @@ static void colored_fputs(int level, const char *str){ ...@@ -48,11 +68,11 @@ static void colored_fputs(int level, const char *str){
} }
if(use_color){ if(use_color){
fprintf(stderr, "\033[%d;3%dm", color[level]>>4, color[level]&15); set_color(level);
} }
fputs(str, stderr); fputs(str, stderr);
if(use_color){ if(use_color){
fprintf(stderr, "\033[0m"); reset_color();
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment