#pragma once
#include "util/FFstrbuf.h"
typedef enum __attribute__((__packed__)) FFSizeBinaryPrefixType
{
FF_SIZE_BINARY_PREFIX_TYPE_IEC, FF_SIZE_BINARY_PREFIX_TYPE_SI, FF_SIZE_BINARY_PREFIX_TYPE_JEDEC, } FFSizeBinaryPrefixType;
typedef enum __attribute__((__packed__)) FFTemperatureUnit
{
FF_TEMPERATURE_UNIT_DEFAULT,
FF_TEMPERATURE_UNIT_CELSIUS,
FF_TEMPERATURE_UNIT_FAHRENHEIT,
FF_TEMPERATURE_UNIT_KELVIN,
} FFTemperatureUnit;
typedef struct FFOptionsDisplay
{
FFstrbuf colorKeys;
FFstrbuf colorTitle;
FFstrbuf colorOutput;
FFstrbuf colorSeparator;
bool brightColor;
FFstrbuf keyValueSeparator;
int32_t stat; bool pipe; bool showErrors;
#ifndef NDEBUG
bool debugMode;
#endif
bool disableLinewrap;
bool hideCursor;
FFSizeBinaryPrefixType sizeBinaryPrefix;
uint8_t sizeNdigits;
uint8_t sizeMaxPrefix;
FFTemperatureUnit tempUnit;
uint8_t tempNdigits;
FFstrbuf tempColorGreen;
FFstrbuf tempColorYellow;
FFstrbuf tempColorRed;
FFstrbuf barCharElapsed;
FFstrbuf barCharTotal;
FFstrbuf barBorderLeft;
FFstrbuf barBorderRight;
uint8_t barWidth;
FFPercentageTypeFlags percentType;
uint8_t percentNdigits;
FFstrbuf percentColorGreen;
FFstrbuf percentColorYellow;
FFstrbuf percentColorRed;
bool noBuffer;
FFModuleKeyType keyType;
uint16_t keyWidth;
uint16_t keyPaddingLeft;
int8_t freqNdigits;
FFlist constants; } FFOptionsDisplay;
const char* ffOptionsParseDisplayJsonConfig(FFOptionsDisplay* options, yyjson_val* root);
bool ffOptionsParseDisplayCommandLine(FFOptionsDisplay* options, const char* key, const char* value);
void ffOptionsInitDisplay(FFOptionsDisplay* options);
void ffOptionsDestroyDisplay(FFOptionsDisplay* options);
void ffOptionsGenerateDisplayJsonConfig(FFOptionsDisplay* options, yyjson_mut_doc* doc);