mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-09-12 10:22:12 +02:00
Logo: support builtin small logo
Also improve performance of builtin logo finding Assume you are running macOS * default -> macos * `-l small` -> macos_small * `--logo-type small` -> macos_small * `-l macos` -> macos * `-l macos --logo-type small` -> macos_small * `-l macos_small` -> macos_small * `-l macos_small --logo-type small` -> error, because Logo `macos_small_small` doesn't exist
This commit is contained in:
@@ -25,7 +25,7 @@ Currently, the performance difference is measurable, but too small to be recogni
|
||||
|
||||
There are some premade config files in [`presets`](presets), including the ones used for the screenshots above. You can load them using `--load-config <filename>`. They may also serve as a good example for format arguments.
|
||||
|
||||
Logos can be heavily customized too; see the [logo documentation](doc/logo.md) for more information.
|
||||
Logos can be heavily customized too; see the [logo documentation](https://github.com/fastfetch-cli/fastfetch/wiki/Logo-options) for more information.
|
||||
|
||||
## Dependencies
|
||||
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
"enum": [
|
||||
"auto",
|
||||
"builtin",
|
||||
"small",
|
||||
"file",
|
||||
"file-raw",
|
||||
"data",
|
||||
|
||||
+67
-29
@@ -1,6 +1,8 @@
|
||||
#include "logo.h"
|
||||
|
||||
#define FF_LOGO_INIT static FFlogo logo; static bool init = false; if(init) return &logo; init = true;
|
||||
// The names of small logo must end with `_small` or `-small`
|
||||
#define FF_LOGO_INIT_SMALL FF_LOGO_INIT logo.small = true;
|
||||
#define FF_LOGO_NAMES(...) static const char* names[] = (const char*[]) { __VA_ARGS__, NULL }; logo.names = names;
|
||||
#define FF_LOGO_LINES(x) logo.data = x;
|
||||
#define FF_LOGO_COLORS(...) static const char* colors[] = (const char*[]) { __VA_ARGS__, NULL }; logo.builtinColors = colors;
|
||||
@@ -112,7 +114,7 @@ static const FFlogo* getLogoAlpine(void)
|
||||
|
||||
static const FFlogo* getLogoAlpineSmall(void)
|
||||
{
|
||||
FF_LOGO_INIT
|
||||
FF_LOGO_INIT_SMALL
|
||||
FF_LOGO_NAMES("alpine_small", "alpine-linux-small")
|
||||
FF_LOGO_LINES(
|
||||
" /\\ /\\\n"
|
||||
@@ -165,7 +167,7 @@ static const FFlogo* getLogoAndroid(void)
|
||||
|
||||
static const FFlogo* getLogoAndroidSmall(void)
|
||||
{
|
||||
FF_LOGO_INIT
|
||||
FF_LOGO_INIT_SMALL
|
||||
FF_LOGO_NAMES("android-small", "android_small")
|
||||
FF_LOGO_LINES(
|
||||
" ;, ,;\n"
|
||||
@@ -219,7 +221,7 @@ static const FFlogo* getLogoArch(void)
|
||||
|
||||
static const FFlogo* getLogoArchSmall(void)
|
||||
{
|
||||
FF_LOGO_INIT
|
||||
FF_LOGO_INIT_SMALL
|
||||
FF_LOGO_NAMES("arch_small", "archlinux_small", "arch-linux-small")
|
||||
FF_LOGO_LINES(
|
||||
" /\\\n"
|
||||
@@ -274,7 +276,7 @@ static const FFlogo* getLogoArtix(void)
|
||||
|
||||
static const FFlogo* getLogoArtixSmall(void)
|
||||
{
|
||||
FF_LOGO_INIT
|
||||
FF_LOGO_INIT_SMALL
|
||||
FF_LOGO_NAMES("artix_small", "artixlinux_small", "artix-linux-small")
|
||||
FF_LOGO_LINES(
|
||||
" /\\\n"
|
||||
@@ -437,7 +439,7 @@ static const FFlogo* getLogoCachyOS(void)
|
||||
|
||||
static const FFlogo* getLogoCachyOSSmall(void)
|
||||
{
|
||||
FF_LOGO_INIT
|
||||
FF_LOGO_INIT_SMALL
|
||||
FF_LOGO_NAMES("cachy_small", "cachyos_small", "cachy-linux-small", "cachyos-linux-small")
|
||||
FF_LOGO_LINES(
|
||||
" /''''''''''''/\n"
|
||||
@@ -527,7 +529,7 @@ static const FFlogo* getLogoCentOS(void)
|
||||
|
||||
static const FFlogo* getLogoCentOSSmall(void)
|
||||
{
|
||||
FF_LOGO_INIT
|
||||
FF_LOGO_INIT_SMALL
|
||||
FF_LOGO_NAMES("cent_small", "centos_small", "cent-linux_small", "cent-linux-small", "centos-linux-small")
|
||||
FF_LOGO_LINES(
|
||||
" $2____$1^$4____\n"
|
||||
@@ -653,7 +655,7 @@ static const FFlogo* getLogoDebian(void)
|
||||
|
||||
static const FFlogo* getLogoDebianSmall(void)
|
||||
{
|
||||
FF_LOGO_INIT
|
||||
FF_LOGO_INIT_SMALL
|
||||
FF_LOGO_NAMES("debian_small", "debian-linux-small")
|
||||
FF_LOGO_LINES(
|
||||
" _____\n"
|
||||
@@ -702,7 +704,7 @@ static const FFlogo* getLogoDevuan(void)
|
||||
|
||||
static const FFlogo* getLogoDevuanSmall(void)
|
||||
{
|
||||
FF_LOGO_INIT
|
||||
FF_LOGO_INIT_SMALL
|
||||
FF_LOGO_NAMES("devuan_small", "devuan-linux-small")
|
||||
FF_LOGO_LINES(
|
||||
" ..:::.\n"
|
||||
@@ -853,7 +855,7 @@ static const FFlogo* getLogoFedora(void)
|
||||
|
||||
static const FFlogo* getLogoFedoraSmall(void)
|
||||
{
|
||||
FF_LOGO_INIT
|
||||
FF_LOGO_INIT_SMALL
|
||||
FF_LOGO_NAMES("fedora_small", "fedora-linux-small")
|
||||
FF_LOGO_LINES(
|
||||
" ,'''''.\n"
|
||||
@@ -938,7 +940,7 @@ static const FFlogo* getLogoFreeBSD(void)
|
||||
|
||||
static const FFlogo* getLogoFreeBSDSmall(void)
|
||||
{
|
||||
FF_LOGO_INIT
|
||||
FF_LOGO_INIT_SMALL
|
||||
FF_LOGO_NAMES("freebsd_small")
|
||||
FF_LOGO_LINES(
|
||||
"$1/\\,-'''''-,/\\\n"
|
||||
@@ -990,7 +992,7 @@ static const FFlogo* getLogoGaruda(void)
|
||||
|
||||
static const FFlogo* getLogoGarudaSmall(void)
|
||||
{
|
||||
FF_LOGO_INIT
|
||||
FF_LOGO_INIT_SMALL
|
||||
FF_LOGO_NAMES("garuda_small", "garudalinux_small", "garuda-linux-small")
|
||||
FF_LOGO_LINES(
|
||||
" .----.\n"
|
||||
@@ -1042,7 +1044,7 @@ static const FFlogo* getLogoGentoo(void)
|
||||
|
||||
static const FFlogo* getLogoGentooSmall(void)
|
||||
{
|
||||
FF_LOGO_INIT
|
||||
FF_LOGO_INIT_SMALL
|
||||
FF_LOGO_NAMES("gentoo_small", "gentoo-linux-small")
|
||||
FF_LOGO_LINES(
|
||||
" _-----_\n"
|
||||
@@ -1243,7 +1245,7 @@ static const FFlogo* getLogoMacOS(void)
|
||||
FF_LOGO_INIT
|
||||
FF_LOGO_NAMES("macos", "mac", "apple", "darwin", "osx")
|
||||
FF_LOGO_LINES(
|
||||
" $1c.'\n"
|
||||
" $1..'\n"
|
||||
" ,xNMM.\n"
|
||||
" .OMMMMo\n"
|
||||
" lMM\"\n"
|
||||
@@ -1275,7 +1277,7 @@ static const FFlogo* getLogoMacOS(void)
|
||||
|
||||
static const FFlogo* getLogoMacOSSmall(void)
|
||||
{
|
||||
FF_LOGO_INIT
|
||||
FF_LOGO_INIT_SMALL
|
||||
FF_LOGO_NAMES("macos_small", "mac_small", "apple_small", "darwin_small", "osx_small")
|
||||
FF_LOGO_LINES(
|
||||
"$1 .:'\n"
|
||||
@@ -1298,10 +1300,45 @@ static const FFlogo* getLogoMacOSSmall(void)
|
||||
FF_LOGO_RETURN
|
||||
}
|
||||
|
||||
static const FFlogo* getLogoMacOSSmall2(void)
|
||||
static const FFlogo* getLogoMacOS2(void)
|
||||
{
|
||||
FF_LOGO_INIT
|
||||
FF_LOGO_NAMES("macos_small2", "mac_small2", "apple_small2", "darwin_small2", "osx_small2")
|
||||
FF_LOGO_NAMES("macos2", "mac2", "apple2", "darwin2", "osx2")
|
||||
FF_LOGO_LINES(
|
||||
" $1..'\n"
|
||||
" ,xN .\n"
|
||||
" .O o\n"
|
||||
" l \"\n"
|
||||
" .;loddo:. .olloddol;.\n"
|
||||
" cK NW 0:\n"
|
||||
" $2.K Wd.\n"
|
||||
" X X.\n"
|
||||
"$3; :\n"
|
||||
": :\n"
|
||||
". X.\n"
|
||||
" k Wd.\n"
|
||||
" $4'X k\n"
|
||||
" 'X K.\n"
|
||||
" $5k d\n"
|
||||
" ;K WXXW k.\n"
|
||||
" \"cooc*\" \"*coo'\""
|
||||
)
|
||||
FF_LOGO_COLORS(
|
||||
"32", //green
|
||||
"33", //yellow
|
||||
"31", //red
|
||||
"35", //magenta
|
||||
"34" //blue
|
||||
)
|
||||
FF_LOGO_COLOR_KEYS("33"); //yellow
|
||||
FF_LOGO_COLOR_TITLE("32"); //green
|
||||
FF_LOGO_RETURN
|
||||
}
|
||||
|
||||
static const FFlogo* getLogoMacOS2Small(void)
|
||||
{
|
||||
FF_LOGO_INIT_SMALL
|
||||
FF_LOGO_NAMES("macos2_small", "mac2_small", "apple2_small", "darwin2_small", "osx2_small")
|
||||
FF_LOGO_LINES(
|
||||
"$1 .:'\n"
|
||||
" __ :'__\n"
|
||||
@@ -1353,7 +1390,7 @@ static const FFlogo* getLogoManjaro(void)
|
||||
|
||||
static const FFlogo* getLogoManjaroSmall(void)
|
||||
{
|
||||
FF_LOGO_INIT
|
||||
FF_LOGO_INIT_SMALL
|
||||
FF_LOGO_NAMES("manjaro_small", "manjaro-linux-small")
|
||||
FF_LOGO_LINES(
|
||||
"||||||||| ||||\n"
|
||||
@@ -1408,7 +1445,7 @@ static const FFlogo* getLogoMint(void)
|
||||
|
||||
static const FFlogo* getLogoMintSmall(void)
|
||||
{
|
||||
FF_LOGO_INIT
|
||||
FF_LOGO_INIT_SMALL
|
||||
FF_LOGO_NAMES("mint_small", "linuxmint_small", "mint-linux-small")
|
||||
FF_LOGO_LINES(
|
||||
" __________\n"
|
||||
@@ -1536,7 +1573,7 @@ static const FFlogo* getLogoWindows11(void)
|
||||
|
||||
static const FFlogo* getLogoWindows11Small(void)
|
||||
{
|
||||
FF_LOGO_INIT
|
||||
FF_LOGO_INIT_SMALL
|
||||
FF_LOGO_NAMES("Windows 11_small", "Windows 11-small")
|
||||
FF_LOGO_LINES(
|
||||
"$1lllllllll $2lllllllll\n"
|
||||
@@ -1706,7 +1743,7 @@ static const FFlogo* getLogoNixOsOld(void)
|
||||
|
||||
static const FFlogo* getLogoNixOsSmall(void)
|
||||
{
|
||||
FF_LOGO_INIT
|
||||
FF_LOGO_INIT_SMALL
|
||||
FF_LOGO_NAMES("nixos_small", "nix-small", "nixos-small", "nix_small", "nix-os-small", "nix_os_small")
|
||||
FF_LOGO_LINES(
|
||||
"$1 \\\\ \\\\ //\n"
|
||||
@@ -1791,7 +1828,7 @@ static const FFlogo* getLogoOpenSuse(void)
|
||||
|
||||
static const FFlogo* getLogoOpenSuseSmall(void)
|
||||
{
|
||||
FF_LOGO_INIT
|
||||
FF_LOGO_INIT_SMALL
|
||||
FF_LOGO_NAMES("suse_small", "opensuse_small", "open_suse_small", "open-suse_small")
|
||||
FF_LOGO_LINES(
|
||||
" _______\n"
|
||||
@@ -1973,7 +2010,7 @@ static const FFlogo* getLogoParabola(void)
|
||||
|
||||
static const FFlogo* getLogoParabolaSmall(void)
|
||||
{
|
||||
FF_LOGO_INIT
|
||||
FF_LOGO_INIT_SMALL
|
||||
FF_LOGO_NAMES("parabola_small", "parabola-gnulinux_small")
|
||||
FF_LOGO_LINES(
|
||||
" __ __ __ _\n"
|
||||
@@ -1993,7 +2030,7 @@ static const FFlogo* getLogoParabolaSmall(void)
|
||||
|
||||
static const FFlogo* getLogoPopSmall(void)
|
||||
{
|
||||
FF_LOGO_INIT
|
||||
FF_LOGO_INIT_SMALL
|
||||
FF_LOGO_NAMES("pop_small", "popos_small", "pop_os_small", "pop-linux-small")
|
||||
FF_LOGO_LINES(
|
||||
"______\n"
|
||||
@@ -2052,7 +2089,7 @@ static const FFlogo* getLogoRaspbian(void)
|
||||
|
||||
static const FFlogo* getLogoRaspbianSmall(void)
|
||||
{
|
||||
FF_LOGO_INIT
|
||||
FF_LOGO_INIT_SMALL
|
||||
FF_LOGO_NAMES("raspbian_small", "raspi_small", "raspberrypi_small" "raspberrypios_small" "pios_small")
|
||||
FF_LOGO_LINES(
|
||||
" $2.~~. .~~.\n"
|
||||
@@ -2112,7 +2149,7 @@ static const FFlogo* getLogoReborn(void)
|
||||
|
||||
static const FFlogo* getLogoRebornSmall(void)
|
||||
{
|
||||
FF_LOGO_INIT
|
||||
FF_LOGO_INIT_SMALL
|
||||
FF_LOGO_NAMES("reborn_small", "reborn-os-small", "rebornos_small", "rebornos-linux-small", "reborn-os-linux-small")
|
||||
FF_LOGO_LINES(
|
||||
" _______________\n"
|
||||
@@ -2304,7 +2341,7 @@ static const FFlogo* getLogoSlackware(void)
|
||||
|
||||
static const FFlogo* getLogoSlackwareSmall(void)
|
||||
{
|
||||
FF_LOGO_INIT
|
||||
FF_LOGO_INIT_SMALL
|
||||
FF_LOGO_NAMES("slackware-small", "slackware-linux-small", "slackware_small", "slackwarelinux_small")
|
||||
FF_LOGO_LINES(
|
||||
" ________\n"
|
||||
@@ -2464,7 +2501,7 @@ static const FFlogo* getLogoUbuntuOld(void)
|
||||
|
||||
static const FFlogo* getLogoUbuntuSmall(void)
|
||||
{
|
||||
FF_LOGO_INIT
|
||||
FF_LOGO_INIT_SMALL
|
||||
FF_LOGO_NAMES("ubuntu_small", "ubuntu-linux-small")
|
||||
FF_LOGO_LINES(
|
||||
" _\n"
|
||||
@@ -2550,7 +2587,7 @@ static const FFlogo* getLogoVoid(void)
|
||||
|
||||
static const FFlogo* getLogoVoidSmall(void)
|
||||
{
|
||||
FF_LOGO_INIT
|
||||
FF_LOGO_INIT_SMALL
|
||||
FF_LOGO_NAMES("void_small", "void-linux-small")
|
||||
FF_LOGO_LINES(
|
||||
" _______\n"
|
||||
@@ -2647,7 +2684,8 @@ GetLogoMethod* ffLogoBuiltinGetAll(void)
|
||||
getLogoLinux,
|
||||
getLogoMacOS,
|
||||
getLogoMacOSSmall,
|
||||
getLogoMacOSSmall2,
|
||||
getLogoMacOS2,
|
||||
getLogoMacOS2Small,
|
||||
getLogoManjaro,
|
||||
getLogoManjaroSmall,
|
||||
getLogoMint,
|
||||
|
||||
+55
-30
@@ -4,10 +4,18 @@
|
||||
#include "detection/os/os.h"
|
||||
#include "detection/terminalshell/terminalshell.h"
|
||||
#include "util/textModifier.h"
|
||||
#include "util/stringUtils.h"
|
||||
|
||||
#include <ctype.h>
|
||||
#include <string.h>
|
||||
|
||||
typedef enum FFLogoSize
|
||||
{
|
||||
FF_LOGO_SIZE_UNKNOWN,
|
||||
FF_LOGO_SIZE_NORMAL,
|
||||
FF_LOGO_SIZE_SMALL,
|
||||
} FFLogoSize;
|
||||
|
||||
static void ffLogoPrintCharsRaw(const char* data, size_t length)
|
||||
{
|
||||
FFLogoOptions* options = &instance.config.logo;
|
||||
@@ -177,58 +185,71 @@ static void logoApplyColors(const FFlogo* logo)
|
||||
ffStrbufAppendS(&instance.config.colorTitle, logo->colorTitle);
|
||||
}
|
||||
|
||||
static bool logoHasName(const FFlogo* logo, const char* name)
|
||||
static bool logoHasName(const FFlogo* logo, const FFstrbuf* name, bool small)
|
||||
{
|
||||
const char** logoName = logo->names;
|
||||
|
||||
while(*logoName != NULL)
|
||||
for(const char** logoName = logo->names; *logoName != NULL; ++logoName)
|
||||
{
|
||||
if(strcasecmp(*logoName, name) == 0)
|
||||
if(small)
|
||||
{
|
||||
uint32_t logoNameLength = (uint32_t) (strlen(*logoName) - strlen("_small"));
|
||||
if(name->length == logoNameLength && strncasecmp(*logoName, name->chars, logoNameLength) == 0) return true;
|
||||
}
|
||||
if(ffStrbufIgnCaseEqualS(name, *logoName))
|
||||
return true;
|
||||
++logoName;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static const FFlogo* logoGetBuiltin(const char* name)
|
||||
static const FFlogo* logoGetBuiltin(const FFstrbuf* name, FFLogoSize size)
|
||||
{
|
||||
GetLogoMethod* methods = ffLogoBuiltinGetAll();
|
||||
if (name->length == 0)
|
||||
return NULL;
|
||||
|
||||
while(*methods != NULL)
|
||||
for(GetLogoMethod* methods = ffLogoBuiltinGetAll(); *methods; ++methods)
|
||||
{
|
||||
const FFlogo* logo = (*methods)();
|
||||
|
||||
if(logoHasName(logo, name))
|
||||
return logo;
|
||||
switch (size)
|
||||
{
|
||||
case FF_LOGO_SIZE_NORMAL:
|
||||
if(logo->small) continue;
|
||||
break;
|
||||
case FF_LOGO_SIZE_SMALL:
|
||||
if(!logo->small) continue;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
++methods;
|
||||
if(logoHasName(logo, name, size == FF_LOGO_SIZE_SMALL))
|
||||
return logo;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static const FFlogo* logoGetBuiltinDetected(void)
|
||||
static const FFlogo* logoGetBuiltinDetected(FFLogoSize size)
|
||||
{
|
||||
const FFOSResult* os = ffDetectOS();
|
||||
|
||||
const FFlogo* logo = logoGetBuiltin(os->id.chars);
|
||||
const FFlogo* logo = logoGetBuiltin(&os->id, size);
|
||||
if(logo != NULL)
|
||||
return logo;
|
||||
|
||||
logo = logoGetBuiltin(os->name.chars);
|
||||
logo = logoGetBuiltin(&os->name, size);
|
||||
if(logo != NULL)
|
||||
return logo;
|
||||
|
||||
logo = logoGetBuiltin(os->prettyName.chars);
|
||||
logo = logoGetBuiltin(&os->prettyName, size);
|
||||
if(logo != NULL)
|
||||
return logo;
|
||||
|
||||
logo = logoGetBuiltin(os->idLike.chars);
|
||||
logo = logoGetBuiltin(&os->idLike, size);
|
||||
if(logo != NULL)
|
||||
return logo;
|
||||
|
||||
logo = logoGetBuiltin(instance.state.platform.systemName.chars);
|
||||
logo = logoGetBuiltin(&instance.state.platform.systemName, size);
|
||||
if(logo != NULL)
|
||||
return logo;
|
||||
|
||||
@@ -237,7 +258,7 @@ static const FFlogo* logoGetBuiltinDetected(void)
|
||||
|
||||
static inline void logoApplyColorsDetected(void)
|
||||
{
|
||||
logoApplyColors(logoGetBuiltinDetected());
|
||||
logoApplyColors(logoGetBuiltinDetected(FF_LOGO_SIZE_NORMAL));
|
||||
}
|
||||
|
||||
static void logoPrintStruct(const FFlogo* logo)
|
||||
@@ -263,15 +284,15 @@ static void logoPrintNone(void)
|
||||
instance.state.logoWidth = 0;
|
||||
}
|
||||
|
||||
static bool logoPrintBuiltinIfExists(const char* name)
|
||||
static bool logoPrintBuiltinIfExists(const FFstrbuf* name, FFLogoSize size)
|
||||
{
|
||||
if(strcasecmp(name, "none") == 0)
|
||||
if(ffStrbufIgnCaseEqualS(name, "none"))
|
||||
{
|
||||
logoPrintNone();
|
||||
return true;
|
||||
}
|
||||
|
||||
const FFlogo* logo = logoGetBuiltin(name);
|
||||
const FFlogo* logo = logoGetBuiltin(name, size);
|
||||
if(logo == NULL)
|
||||
return false;
|
||||
|
||||
@@ -280,12 +301,13 @@ static bool logoPrintBuiltinIfExists(const char* name)
|
||||
return true;
|
||||
}
|
||||
|
||||
static inline void logoPrintDetected(void)
|
||||
static inline void logoPrintDetected(FFLogoSize size)
|
||||
{
|
||||
logoPrintStruct(logoGetBuiltinDetected());
|
||||
logoPrintStruct(logoGetBuiltinDetected(size));
|
||||
}
|
||||
|
||||
static bool logoPrintData(bool doColorReplacement) {
|
||||
static bool logoPrintData(bool doColorReplacement)
|
||||
{
|
||||
FFLogoOptions* options = &instance.config.logo;
|
||||
if(options->source.length == 0)
|
||||
return false;
|
||||
@@ -360,7 +382,10 @@ static bool logoTryKnownType(void)
|
||||
}
|
||||
|
||||
if(options->type == FF_LOGO_TYPE_BUILTIN)
|
||||
return logoPrintBuiltinIfExists(options->source.chars);
|
||||
return logoPrintBuiltinIfExists(&options->source, FF_LOGO_SIZE_NORMAL);
|
||||
|
||||
if(options->type == FF_LOGO_TYPE_SMALL)
|
||||
return logoPrintBuiltinIfExists(&options->source, FF_LOGO_SIZE_SMALL);
|
||||
|
||||
if(options->type == FF_LOGO_TYPE_DATA)
|
||||
return logoPrintData(true);
|
||||
@@ -393,7 +418,7 @@ static bool logoTryKnownType(void)
|
||||
static void logoPrintKnownType(void)
|
||||
{
|
||||
if(!logoTryKnownType())
|
||||
logoPrintDetected();
|
||||
logoPrintDetected(FF_LOGO_SIZE_UNKNOWN);
|
||||
}
|
||||
|
||||
void ffLogoPrint(void)
|
||||
@@ -419,7 +444,7 @@ void ffLogoPrint(void)
|
||||
//If the source is not set, we can directly print the detected logo.
|
||||
if(options->source.length == 0)
|
||||
{
|
||||
logoPrintDetected();
|
||||
logoPrintDetected(options->type == FF_LOGO_TYPE_SMALL ? FF_LOGO_SIZE_SMALL : FF_LOGO_SIZE_NORMAL);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -431,7 +456,7 @@ void ffLogoPrint(void)
|
||||
}
|
||||
|
||||
//If source matches the name of a builtin logo, print it and return.
|
||||
if(logoPrintBuiltinIfExists(options->source.chars))
|
||||
if(logoPrintBuiltinIfExists(&options->source, FF_LOGO_SIZE_UNKNOWN))
|
||||
return;
|
||||
|
||||
//Make sure the logo path is set correctly.
|
||||
@@ -454,7 +479,7 @@ void ffLogoPrint(void)
|
||||
if(logoPrintFileIfExists(true, false))
|
||||
return;
|
||||
|
||||
logoPrintDetected();
|
||||
logoPrintDetected(FF_LOGO_SIZE_UNKNOWN);
|
||||
}
|
||||
|
||||
void ffLogoPrintLine(void)
|
||||
|
||||
@@ -12,6 +12,7 @@ typedef struct FFlogo
|
||||
const char** builtinColors; //Null terminated
|
||||
const char* colorKeys;
|
||||
const char* colorTitle;
|
||||
bool small;
|
||||
} FFlogo;
|
||||
|
||||
typedef const FFlogo*(*GetLogoMethod)();
|
||||
|
||||
+8
-2
@@ -35,8 +35,6 @@ bool ffParseLogoCommandOptions(FFLogoOptions* options, const char* key, const ch
|
||||
if (subKey[0] == '\0')
|
||||
{
|
||||
logoType:
|
||||
ffOptionParseString(key, value, &options->source);
|
||||
|
||||
//this is usally wanted when using the none logo
|
||||
if(strcasecmp(value, "none") == 0)
|
||||
{
|
||||
@@ -45,12 +43,19 @@ logoType:
|
||||
options->paddingLeft = 0;
|
||||
options->type = FF_LOGO_TYPE_NONE;
|
||||
}
|
||||
else if(strcasecmp(value, "small") == 0)
|
||||
{
|
||||
options->type = FF_LOGO_TYPE_SMALL;
|
||||
}
|
||||
else
|
||||
ffOptionParseString(key, value, &options->source);
|
||||
}
|
||||
else if(strcasecmp(subKey, "type") == 0)
|
||||
{
|
||||
options->type = (FFLogoType) ffOptionParseEnum(key, value, (FFKeyValuePair[]) {
|
||||
{ "auto", FF_LOGO_TYPE_AUTO },
|
||||
{ "builtin", FF_LOGO_TYPE_BUILTIN },
|
||||
{ "small", FF_LOGO_TYPE_SMALL },
|
||||
{ "file", FF_LOGO_TYPE_FILE },
|
||||
{ "file-raw", FF_LOGO_TYPE_FILE_RAW },
|
||||
{ "data", FF_LOGO_TYPE_DATA },
|
||||
@@ -231,6 +236,7 @@ const char* ffParseLogoJsonConfig(void)
|
||||
const char* error = ffJsonConfigParseEnum(val, &value, (FFKeyValuePair[]) {
|
||||
{ "auto", FF_LOGO_TYPE_AUTO },
|
||||
{ "builtin", FF_LOGO_TYPE_BUILTIN },
|
||||
{ "small", FF_LOGO_TYPE_SMALL },
|
||||
{ "file", FF_LOGO_TYPE_FILE },
|
||||
{ "file-raw", FF_LOGO_TYPE_FILE_RAW },
|
||||
{ "data", FF_LOGO_TYPE_DATA },
|
||||
|
||||
@@ -8,6 +8,7 @@ typedef enum FFLogoType
|
||||
{
|
||||
FF_LOGO_TYPE_AUTO, //if something is given, first try builtin, then file. Otherwise detect logo
|
||||
FF_LOGO_TYPE_BUILTIN, //builtin ascii art
|
||||
FF_LOGO_TYPE_SMALL, //builtin ascii art, small version
|
||||
FF_LOGO_TYPE_FILE, //text file, printed with color code replacement
|
||||
FF_LOGO_TYPE_FILE_RAW, //text file, printed as is
|
||||
FF_LOGO_TYPE_DATA, //text data, printed with color code replacement
|
||||
|
||||
Reference in New Issue
Block a user