From 75341e81722c79e40515725ac6dd333910a20ecc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Tue, 20 Dec 2022 11:37:54 +0800 Subject: [PATCH] Image: make it compile on Windows Doesn't work yet. --- src/logo/image/image.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/logo/image/image.c b/src/logo/image/image.c index 2fb5824d5..e8fde9351 100644 --- a/src/logo/image/image.c +++ b/src/logo/image/image.c @@ -16,7 +16,17 @@ #include #include #include + +#ifndef _WIN32 #include +#else +#include + +inline char* realpath(const char* restrict file_name, char* restrict resolved_name) +{ + return _fullpath(resolved_name, file_name, _MAX_PATH); +} +#endif #ifdef FF_HAVE_ZLIB #include "common/library.h" @@ -498,6 +508,8 @@ static bool printCached(FFinstance* instance, FFLogoRequestData* requestData) static bool getCharacterPixelDimensions(FFLogoRequestData* requestData) { + #ifndef _WIN32 + struct winsize winsize; //Initialize every member to 0, because it isn't guaranteed that every terminal sets them all @@ -517,6 +529,17 @@ static bool getCharacterPixelDimensions(FFLogoRequestData* requestData) requestData->characterPixelWidth = winsize.ws_xpixel / (double) winsize.ws_col; requestData->characterPixelHeight = winsize.ws_ypixel / (double) winsize.ws_row; + #else + + CONSOLE_FONT_INFO cfi; + if(GetCurrentConsoleFont(GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &cfi) == FALSE) // Only works for ConHost + return false; + + requestData->characterPixelWidth = cfi.dwFontSize.X; + requestData->characterPixelHeight = cfi.dwFontSize.Y; + + #endif + return requestData->characterPixelWidth > 1.0 && requestData->characterPixelHeight > 1.0; }