Logo: fix while chars not visible in terminal of light theme

This commit is contained in:
李通洲
2024-06-04 14:23:30 +08:00
parent 2557b0033d
commit 899f176f21
6 changed files with 22 additions and 12 deletions
+9
View File
@@ -2,6 +2,7 @@
#include "common/parsing.h"
#include "common/thread.h"
#include "detection/displayserver/displayserver.h"
#include "detection/terminaltheme/terminaltheme.h"
#include "util/textModifier.h"
#include "logo/logo.h"
@@ -22,10 +23,18 @@ static void initState(FFstate* state)
state->logoWidth = 0;
state->logoHeight = 0;
state->keysHeight = 0;
state->terminalLightTheme = false;
ffPlatformInit(&state->platform);
state->configDoc = NULL;
state->resultDoc = NULL;
{
// don't enable bright color if the terminal is in light mode
FFTerminalThemeResult result;
if (ffDetectTerminalTheme(&result, true /* forceEnv for performance */) && !result.bg.dark)
state->terminalLightTheme = true;
}
}
static void defaultConfig(void)
+4 -4
View File
@@ -74,17 +74,17 @@ static bool detectByEnv(FFTerminalThemeResult* result)
return true;
}
static inline bool detectColor(FFTerminalThemeResult* result)
static inline bool detectColor(FFTerminalThemeResult* result, bool forceEnv)
{
if (detectByEscapeCode(result))
if (!forceEnv && detectByEscapeCode(result))
return true;
return detectByEnv(result);
}
bool ffDetectTerminalTheme(FFTerminalThemeResult* result)
bool ffDetectTerminalTheme(FFTerminalThemeResult* result, bool forceEnv)
{
if (!detectColor(result)) return false;
if (!detectColor(result, forceEnv)) return false;
result->fg.dark = result->fg.r * 299 + result->fg.g * 587 + result->fg.b * 114 < 128000;
result->bg.dark = result->bg.r * 299 + result->bg.g * 587 + result->bg.b * 114 < 128000;
return true;
+1 -1
View File
@@ -16,4 +16,4 @@ typedef struct FFTerminalThemeResult
FFTerminalThemeColor bg;
} FFTerminalThemeResult;
bool ffDetectTerminalTheme(FFTerminalThemeResult* result);
bool ffDetectTerminalTheme(FFTerminalThemeResult* result, bool forceEnv);
+1
View File
@@ -43,6 +43,7 @@ typedef struct FFstate
uint32_t logoWidth;
uint32_t logoHeight;
uint32_t keysHeight;
bool terminalLightTheme;
FFPlatform platform;
yyjson_doc* configDoc;
+2 -2
View File
@@ -13,7 +13,7 @@ void ffPrintTerminalTheme(FFTerminalThemeOptions* options)
{
FFTerminalThemeResult result = {};
if(!ffDetectTerminalTheme(&result))
if(!ffDetectTerminalTheme(&result, false))
{
ffPrintError(FF_TERMINALTHEME_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Failed to detect terminal theme");
}
@@ -81,7 +81,7 @@ void ffGenerateTerminalThemeJsonResult(FF_MAYBE_UNUSED FFTerminalOptions* option
{
FFTerminalThemeResult result = {};
if(!ffDetectTerminalTheme(&result))
if(!ffDetectTerminalTheme(&result, false))
{
yyjson_mut_obj_add_str(doc, module, "error", "Failed to detect terminal theme");
return;
+5 -5
View File
@@ -364,7 +364,7 @@ void ffOptionsInitDisplay(FFOptionsDisplay* options)
ffStrbufInit(&options->colorTitle);
ffStrbufInit(&options->colorOutput);
ffStrbufInit(&options->colorSeparator);
options->brightColor = true;
options->brightColor = !instance.state.terminalLightTheme;
ffStrbufInitStatic(&options->keyValueSeparator, ": ");
options->showErrors = false;
@@ -387,8 +387,8 @@ void ffOptionsInitDisplay(FFOptionsDisplay* options)
options->tempUnit = FF_TEMPERATURE_UNIT_CELSIUS;
options->tempNdigits = 1;
ffStrbufInitStatic(&options->tempColorGreen, FF_COLOR_FG_GREEN);
ffStrbufInitStatic(&options->tempColorYellow, FF_COLOR_FG_LIGHT_YELLOW);
ffStrbufInitStatic(&options->tempColorRed, FF_COLOR_FG_LIGHT_RED);
ffStrbufInitStatic(&options->tempColorYellow, instance.state.terminalLightTheme ? FF_COLOR_FG_YELLOW : FF_COLOR_FG_LIGHT_YELLOW);
ffStrbufInitStatic(&options->tempColorRed, instance.state.terminalLightTheme ? FF_COLOR_FG_RED : FF_COLOR_FG_LIGHT_RED);
ffStrbufInitStatic(&options->barCharElapsed, "");
ffStrbufInitStatic(&options->barCharTotal, "-");
@@ -397,8 +397,8 @@ void ffOptionsInitDisplay(FFOptionsDisplay* options)
options->percentType = 9;
options->percentNdigits = 0;
ffStrbufInitStatic(&options->percentColorGreen, FF_COLOR_FG_GREEN);
ffStrbufInitStatic(&options->percentColorYellow, FF_COLOR_FG_LIGHT_YELLOW);
ffStrbufInitStatic(&options->percentColorRed, FF_COLOR_FG_LIGHT_RED);
ffStrbufInitStatic(&options->percentColorYellow, instance.state.terminalLightTheme ? FF_COLOR_FG_YELLOW : FF_COLOR_FG_LIGHT_YELLOW);
ffStrbufInitStatic(&options->percentColorRed, instance.state.terminalLightTheme ? FF_COLOR_FG_RED : FF_COLOR_FG_LIGHT_RED);
options->tsVersion = true;
}