ohmu
·
2026-10-15
1#pragma once
2
3#include "fastfetch.h"
4
5typedef enum FFLogoLineType: uint8_t {
6 FF_LOGO_LINE_TYPE_NORMAL = 0,
7 FF_LOGO_LINE_TYPE_SMALL_BIT = 1 << 0, // The names of small logo must end with `_small` or `-small`
8 FF_LOGO_LINE_TYPE_ALTER_BIT = 1 << 1,
9} FFLogoLineType;
10
11typedef enum FFLogoSize: uint8_t {
12 FF_LOGO_SIZE_UNKNOWN,
13 FF_LOGO_SIZE_NORMAL,
14 FF_LOGO_SIZE_SMALL,
15} FFLogoSize;
16
17typedef struct FFlogo {
18 const char* lines;
19 const char* names[FASTFETCH_LOGO_MAX_NAMES];
20 const char* colors[FASTFETCH_LOGO_MAX_COLORS];
21 const char* colorKeys;
22 const char* colorTitle;
23 FFLogoLineType type;
24} FFlogo;
25
26// logo.c
27enum { FF_LOGO_AUTO_MIN_INFO_WIDTH = 32 };
28
29FFLogoPosition ffLogoSelectPosition(FFLogoPosition configured, uint32_t terminalColumns, uint32_t logoWidth);
30void ffLogoResolveAutoPosition(uint32_t logoWidth);
31void ffLogoPrint(void);
32void ffLogoPrintChars(const char* data, bool doColorReplacement);
33void ffLogoPrintLine(void);
34void ffLogoPrintRemaining(void);
35void ffLogoBuiltinPrint(void);
36void ffLogoBuiltinList(void);
37void ffLogoBuiltinListAutocompletion(void);
38void ffLogoPrintDetected(FFLogoSize size);
39const FFlogo* ffLogoGetBuiltinForName(const FFstrbuf* name, FFLogoSize size);
40const FFlogo* ffLogoGetBuiltinDetected(FFLogoSize size);
41
42// builtin.c
43extern const FFlogo* ffLogoBuiltins[];
44extern const FFlogo ffLogoUnknown;
45
46#if FF_HAVE_IMAGE_LOGO
47// image/image.c
48bool ffLogoPrintImageIfExists(FFLogoType type, bool printError);
49#endif