1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
#pragma once
#include "common/ffdata.h"
#include "common/percent.h"
#include "common/FFstrbuf.h"
#include "common/FFlist.h"
typedef enum FF_A_PACKED FFSizeBinaryPrefixType {
FF_SIZE_BINARY_PREFIX_TYPE_IEC, // 1024 Bytes = 1 KiB, 1024 KiB = 1 MiB, ... (standard)
FF_SIZE_BINARY_PREFIX_TYPE_SI, // 1000 Bytes = 1 kB, 1000 kB = 1 MB, ...
FF_SIZE_BINARY_PREFIX_TYPE_JEDEC, // 1024 Bytes = 1 KB, 1024 KB = 1 MB, ...
} FFSizeBinaryPrefixType;
typedef enum FF_A_PACKED FFTemperatureUnit {
FF_TEMPERATURE_UNIT_DEFAULT,
FF_TEMPERATURE_UNIT_CELSIUS,
FF_TEMPERATURE_UNIT_FAHRENHEIT,
FF_TEMPERATURE_UNIT_KELVIN,
} FFTemperatureUnit;
typedef enum FF_A_PACKED FFSpaceBeforeUnitType {
FF_SPACE_BEFORE_UNIT_DEFAULT,
FF_SPACE_BEFORE_UNIT_ALWAYS,
FF_SPACE_BEFORE_UNIT_NEVER,
} FFSpaceBeforeUnitType;
typedef enum FF_A_PACKED FFFractionTrailingZerosType {
FF_FRACTION_TRAILING_ZEROS_TYPE_DEFAULT,
FF_FRACTION_TRAILING_ZEROS_TYPE_ALWAYS,
FF_FRACTION_TRAILING_ZEROS_TYPE_NEVER,
} FFFractionTrailingZerosType;
typedef struct FFOptionsDisplay {
// If one of those is empty, ffLogoPrint will set them
FFstrbuf colorKeys;
FFstrbuf colorTitle;
FFstrbuf colorOutput;
FFstrbuf colorSeparator;
bool brightColor;
FFstrbuf keyValueSeparator;
int32_t stat; // <0: disable stat; 0: no threshold; >0: threshold in ms
bool pipe; // disables all escape sequences
bool showErrors;
#ifndef NDEBUG
bool debugMode;
#endif
bool disableLinewrap;
bool durationAbbreviation;
FFSpaceBeforeUnitType durationSpaceBeforeUnit;
bool hideCursor;
FFSizeBinaryPrefixType sizeBinaryPrefix;
uint8_t sizeNdigits;
uint8_t sizeMaxPrefix;
FFSpaceBeforeUnitType sizeSpaceBeforeUnit;
FFTemperatureUnit tempUnit;
uint8_t tempNdigits;
FFstrbuf tempColorGreen;
FFstrbuf tempColorYellow;
FFstrbuf tempColorRed;
FFSpaceBeforeUnitType tempSpaceBeforeUnit;
FFstrbuf barCharElapsed;
FFstrbuf barCharTotal;
FFstrbuf barBorderLeft;
FFstrbuf barBorderRight;
FFstrbuf barBorderLeftElapsed;
FFstrbuf barBorderRightElapsed;
FFstrbuf barColorElapsed; // "auto" for auto selection from percent config; empty for no custom color (inherits)
FFstrbuf barColorTotal; // empty for no custom color (inherits)
FFstrbuf barColorBorder; // empty for no custom color (inherits)
uint8_t barWidth;
FFPercentageTypeFlags percentType;
uint8_t percentNdigits;
FFstrbuf percentColorGreen;
FFstrbuf percentColorYellow;
FFstrbuf percentColorRed;
FFSpaceBeforeUnitType percentSpaceBeforeUnit;
uint8_t percentWidth;
bool noBuffer;
FFModuleKeyType keyType;
uint16_t keyWidth;
uint16_t keyPaddingLeft;
int8_t freqNdigits;
FFSpaceBeforeUnitType freqSpaceBeforeUnit;
int8_t fractionNdigits;
FFFractionTrailingZerosType fractionTrailingZeros;
FFlist constants; // list of FFstrbuf
} 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(FFdata* data, FFOptionsDisplay* options);
|