24 operating_system operating_system = operating_system::windows;
40 float border_width = 1.0f;
44 float rounding_radius = 4.0f;
52 float large_size = 18.5f;
56 float icon_size = 7.5f;
60 float large_icon_size = 22.5f;
64 float label_icon_size = 15.0f;
67 theme_mode mode = theme_mode::light;
69 theme() noexcept = default;
72 theme &operator=(
theme const &) noexcept = default;
89 [[nodiscard]]
theme transform(
float dpi) const noexcept;
91 [[nodiscard]] hi::
color color(theme_color theme_color,
ssize_t nesting_level = 0) const noexcept;
95 std::array<
std::vector<hi::
color>, num_theme_colors> _colors;
96 std::array<hi::
text_style, num_theme_text_styles> _text_styles;
98 [[nodiscard]]
float parse_float(
datum const &data,
char const *object_name);
99 [[nodiscard]]
bool parse_bool(
datum const &data,
char const *object_name);
100 [[nodiscard]]
std::
string parse_string(
datum const &data,
char const *object_name);
101 [[nodiscard]] hi::
color parse_color_value(
datum const &data);
102 [[nodiscard]] hi::
color parse_color(
datum const &data,
char const *object_name);
103 [[nodiscard]]
std::vector<hi::
color> parse_color_list(
datum const &data,
char const *object_name);
105 [[nodiscard]] font_weight parse_font_weight(
datum const &data,
char const *object_name);
109 [[nodiscard]] friend
std::
string to_string(
theme const &rhs) noexcept
111 return std::format(
"{}:{}", rhs.name, rhs.mode);
116 return lhs << to_string(rhs);