Fix fmtlib including windows.h everywhere

This commit is contained in:
DankParrot 2020-08-22 16:40:09 -07:00
parent 52d583c4c1
commit 75c1f4ce01
2 changed files with 37 additions and 36 deletions

View File

@ -3,16 +3,9 @@
#include <cstdio> #include <cstdio>
#include <cstdarg> #include <cstdarg>
#ifdef _WIN32 // Instead of defining FMT_HEADER_ONLY or building fmtlib
// we can just include all implementation code in Logger.cpp
#ifndef WIN32_LEAN_AND_MEAN #include "fmt/src/format.cc"
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
#endif
namespace Feather::Log namespace Feather::Log
{ {
@ -36,30 +29,41 @@ namespace Feather::Log
return *s_logger; return *s_logger;
} }
}
namespace
{ #ifdef _WIN32
class LoggingManager
{ #ifndef WIN32_LEAN_AND_MEAN
public: #define WIN32_LEAN_AND_MEAN
LoggingManager() #endif
{
#ifdef _WIN32 #include <windows.h>
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); #define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
if (handle != INVALID_HANDLE_VALUE)
{ #endif
DWORD mode = 0;
if (GetConsoleMode(handle, &mode)) namespace
{ {
// To enable ANSI escape sequences on Windows 10 we need to set this flag class LoggingManager
mode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING; {
SetConsoleMode(handle, mode); public:
} LoggingManager()
} {
#endif #ifdef _WIN32
} HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
}; if (handle != INVALID_HANDLE_VALUE)
{
static LoggingManager s_networkManager; DWORD mode = 0;
} if (GetConsoleMode(handle, &mode))
{
// To enable ANSI escape sequences on Windows 10 we need to set this flag
mode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
SetConsoleMode(handle, mode);
}
}
#endif
}
};
static LoggingManager s_loggingManager;
} }

View File

@ -1,8 +1,5 @@
#pragma once #pragma once
#include <event2/event.h>
#define FMT_HEADER_ONLY
#include <fmt/core.h> #include <fmt/core.h>
#include <fmt/color.h> #include <fmt/color.h>
#include <ostream> #include <ostream>