summaryrefslogtreecommitdiffstats
path: root/src/options/logo.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/options/logo.h')
-rw-r--r--src/options/logo.h61
1 files changed, 61 insertions, 0 deletions
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);