3#include "di/types/byte.h"
4#include "di/util/to_underlying.h"
5#include "di/vocab/array/array.h"
15constexpr static auto tag_invoke(di::Tag<di::reflect>, di::InPlaceType<ThemeMode>) {
17 return di::make_enumerators<
"ThemeMode">(di::enumerator<
"light",
Light>, di::enumerator<
"dark",
Dark>);
50constexpr static auto tag_invoke(di::Tag<di::reflect>, di::InPlaceType<PaletteIndex>) {
52 return di::make_enumerators<
"PaletteIndex">(
88 m_colors[di::to_underlying(index)] = value;
92 if (color.is_palette()) {
100 if (color.is_default()) {
108 if (color.is_default()) {
131 auto modified() const ->
bool {
return m_modified; }
142 bool m_modified {
false };
auto resolve(Color color) const -> Color
Definition palette.h:91
auto get(PaletteIndex index) const -> Color
Definition palette.h:80
static auto supports_dynamic(PaletteIndex index) -> bool
Definition palette.h:114
void maybe_clear_modifed()
Definition palette.h:132
auto modified() const -> bool
Definition palette.h:131
auto theme_mode() const -> ThemeMode
Definition palette.h:134
static auto default_global() -> Palette
Definition palette.h:71
auto resolve_foreground(Color color) const -> Color
Definition palette.h:98
auto operator==(Palette const &) const -> bool=default
auto resolve_background(Color color) const -> Color
Definition palette.h:106
void set(PaletteIndex index, Color value)
Definition palette.h:81
auto to_string() const -> di::String
Definition palette.cpp:6
void reset()
Definition palette.h:126
Definition absolute_position.h:6
PaletteIndex
Extended palette index which includes dynamic colors.
Definition palette.h:27
@ CursorText
Definition palette.h:42
@ StaticEnd
Definition palette.h:29
@ Foreground
Definition palette.h:39
@ StaticBegin
Definition palette.h:28
@ SelectionForeground
Definition palette.h:44
@ SpecialBold
Definition palette.h:32
@ SpecialItalic
Definition palette.h:36
@ SpecialEnd
Definition palette.h:37
@ SpecialBegin
Definition palette.h:31
@ SpecialReverse
Definition palette.h:35
@ Cursor
Definition palette.h:41
@ Background
Definition palette.h:40
@ SelectionBackground
Definition palette.h:43
@ SpecialUnderline
Definition palette.h:33
@ Count
Definition palette.h:46
@ SpecialBlink
Definition palette.h:34
constexpr auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< Color::Type >)
Definition color.h:92
@ Unknown
Terminal doesn't know this mode.
Definition mode.h:184
ThemeMode
Theme mode (light or dark).
Definition palette.h:10
@ Light
Definition palette.h:11
@ Dark
Definition palette.h:12
auto is_dynamic() const
Compute the perceived brightness of a color.
Definition color.h:55
auto is_default() const
Definition color.h:52
@ Dynamic
Color is dynamic (e.g. for selection use reverse video).
Definition color.h:17
Represents the current cursor position of the terminal.
Definition cursor.h:8