#pragma once
#include "util/FFstrbuf.h"
#define FASTFETCH_LOGO_MAX_NAMES 9
#define FASTFETCH_LOGO_MAX_COLORS 9
typedef enum __attribute__((__packed__)) FFLogoType
{
FF_LOGO_TYPE_AUTO, FF_LOGO_TYPE_BUILTIN, FF_LOGO_TYPE_SMALL, FF_LOGO_TYPE_FILE, FF_LOGO_TYPE_FILE_RAW, FF_LOGO_TYPE_DATA, FF_LOGO_TYPE_DATA_RAW, FF_LOGO_TYPE_IMAGE_SIXEL, FF_LOGO_TYPE_IMAGE_KITTY, FF_LOGO_TYPE_IMAGE_KITTY_DIRECT, FF_LOGO_TYPE_IMAGE_KITTY_ICAT, FF_LOGO_TYPE_IMAGE_ITERM, FF_LOGO_TYPE_IMAGE_CHAFA, FF_LOGO_TYPE_IMAGE_RAW, FF_LOGO_TYPE_NONE, } FFLogoType;
typedef enum __attribute__((__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;
bool printRemaining;
bool preserveAspectRatio;
bool recache;
bool chafaFgOnly;
FFstrbuf chafaSymbols;
uint32_t chafaCanvasMode;
uint32_t chafaColorSpace;
uint32_t chafaDitherMode;
} 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(FFOptionsLogo* options, yyjson_mut_doc* doc);