From 76424950e373d3b04ac3dd13019151bfba3e8423 Mon Sep 17 00:00:00 2001 From: sumuel Date: Mon, 17 Aug 2026 20:44:55 +0000 Subject: Add the files --- src/options/logo.h | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 src/options/logo.h (limited to 'src/options/logo.h') diff --git a/src/options/logo.h b/src/options/logo.h new file mode 100644 index 0000000..c77c678 --- /dev/null +++ b/src/options/logo.h @@ -0,0 +1,61 @@ +#pragma once + +#include "common/ffdata.h" + +#define FASTFETCH_LOGO_MAX_NAMES 9 +#define FASTFETCH_LOGO_MAX_COLORS 9 // two digits would make parsing much more complicated (index 1 - 9) + +typedef enum FF_A_PACKED 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 + FF_LOGO_TYPE_DATA_RAW, // text data, printed as is + FF_LOGO_TYPE_COMMAND_RAW, // command to generate text data, printed as is + FF_LOGO_TYPE_IMAGE_SIXEL, // image file, printed as sixel codes + FF_LOGO_TYPE_IMAGE_KITTY, // image file, printed as kitty graphics protocol + FF_LOGO_TYPE_IMAGE_KITTY_DIRECT, // image file, tell the terminal emulator to read image data from the specified file (Supported by kitty and wezterm) + FF_LOGO_TYPE_IMAGE_KITTY_ICAT, // image file, use `kitten icat` to display the image. Requires binary `kitten` to be installed" + FF_LOGO_TYPE_IMAGE_ITERM, // image file, printed as iterm graphics protocol + FF_LOGO_TYPE_IMAGE_CHAFA, // image file, printed as ascii art using libchafa + FF_LOGO_TYPE_IMAGE_RAW, // image file, printed as raw binary string + FF_LOGO_TYPE_NONE, // `--logo none`, but still applies colors to the system information output (unless `--pipe` is set) +} FFLogoType; + +typedef enum FF_A_PACKED FFLogoPosition { + FF_LOGO_POSITION_LEFT, + FF_LOGO_POSITION_TOP, + FF_LOGO_POSITION_RIGHT, +} FFLogoPosition; + +typedef struct FFOptionsLogo { + FFstrbuf source; + FFLogoType type; + FFLogoPosition position; + FFstrbuf colors[FASTFETCH_LOGO_MAX_COLORS]; + uint32_t width; + uint32_t height; + uint32_t paddingTop; + uint32_t paddingLeft; + uint32_t paddingRight; + uint32_t paddingBottom; + bool printRemaining; + bool preserveAspectRatio; + bool recache; + +#if FF_HAVE_CHAFA + bool chafaFgOnly; + FFstrbuf chafaSymbols; + uint32_t chafaCanvasMode; + uint32_t chafaColorSpace; + uint32_t chafaDitherMode; +#endif +} FFOptionsLogo; + +void ffOptionsInitLogo(FFOptionsLogo* options); +bool ffOptionsParseLogoCommandLine(FFOptionsLogo* options, const char* key, const char* value); +void ffOptionsDestroyLogo(FFOptionsLogo* options); +const char* ffOptionsParseLogoJsonConfig(FFOptionsLogo* options, yyjson_val* root); +void ffOptionsGenerateLogoJsonConfig(FFdata* data, FFOptionsLogo* options); -- cgit v1.2.3