ttx 0.1.0
Loading...
Searching...
No Matches
graphics_rendition.h
Go to the documentation of this file.
1#pragma once
2
3#include "di/container/string/prelude.h"
4#include "di/reflect/prelude.h"
5#include "di/types/integers.h"
6#include "di/vocab/optional/prelude.h"
7#include "di/vocab/span/prelude.h"
8#include "ttx/features.h"
9#include "ttx/params.h"
10#include "ttx/terminal/color.h"
11
12namespace ttx::terminal {
13enum class BlinkMode : u8 {
17};
18
19constexpr auto tag_invoke(di::Tag<di::reflect>, di::InPlaceType<BlinkMode>) {
20 using enum BlinkMode;
21 return di::make_enumerators<"BlinkMode">(di::enumerator<"None", None>, di::enumerator<"Normal", Normal>,
22 di::enumerator<"Rapid", Rapid>);
23}
24
25enum class FontWeight : u8 {
29};
30
31constexpr auto tag_invoke(di::Tag<di::reflect>, di::InPlaceType<FontWeight>) {
32 using enum FontWeight;
33 return di::make_enumerators<"FontWeight">(di::enumerator<"None", None>, di::enumerator<"Bold", Bold>,
34 di::enumerator<"Dim", Dim>);
35}
36
37enum class UnderlineMode : u8 {
38 None = 0,
39 Normal = 1,
40 Double = 2,
41 Curly = 3,
42 Dotted = 4,
43 Dashed = 5,
44};
45
46constexpr auto tag_invoke(di::Tag<di::reflect>, di::InPlaceType<UnderlineMode>) {
47 using enum UnderlineMode;
48 return di::make_enumerators<"UnderlineMode">(di::enumerator<"None", None>, di::enumerator<"Normal", Normal>,
49 di::enumerator<"Double", Double>, di::enumerator<"Curly", Curly>,
50 di::enumerator<"Dotted", Dotted>, di::enumerator<"Dashed", Dashed>);
51}
52
57
61 bool italic { false };
62 bool overline { false };
63 bool inverted { false };
64 bool invisible { false };
65 bool strike_through { false };
66
67 static auto from_csi_params(Params const& params) {
68 auto result = GraphicsRendition {};
69 result.update_with_csi_params(params);
70 return result;
71 }
72 void update_with_csi_params(Params const& params);
73
74 auto as_csi_params(Feature features = Feature::None, di::Optional<GraphicsRendition const&> prev = {}) const
75 -> di::Vector<Params>;
76
77 auto operator==(GraphicsRendition const& other) const -> bool = default;
78 auto operator<=>(GraphicsRendition const& other) const = default;
79
80 constexpr friend auto tag_invoke(di::Tag<di::reflect>, di::InPlaceType<GraphicsRendition>) {
81 return di::make_fields<"GraphicsRendition">(
82 di::field<"fg", &GraphicsRendition::fg>, di::field<"bg", &GraphicsRendition::bg>,
83 di::field<"underline_color", &GraphicsRendition::underline_color>,
84 di::field<"font_weight", &GraphicsRendition::font_weight>,
85 di::field<"blink_mode", &GraphicsRendition::blink_mode>,
86 di::field<"underline_mode", &GraphicsRendition::underline_mode>,
87 di::field<"italic", &GraphicsRendition::italic>, di::field<"overline", &GraphicsRendition::overline>,
88 di::field<"inverted", &GraphicsRendition::inverted>, di::field<"invisible", &GraphicsRendition::invisible>,
89 di::field<"strike_through", &GraphicsRendition::strike_through>);
90 }
91};
92}
Definition params.h:67
Definition absolute_position.h:6
BlinkMode
Definition graphics_rendition.h:13
@ None
Definition graphics_rendition.h:14
@ Normal
Definition graphics_rendition.h:15
@ Rapid
Definition graphics_rendition.h:16
UnderlineMode
Definition graphics_rendition.h:37
@ None
Definition graphics_rendition.h:38
@ Dotted
Definition graphics_rendition.h:42
@ Double
Definition graphics_rendition.h:40
@ Curly
Definition graphics_rendition.h:41
@ Dashed
Definition graphics_rendition.h:43
constexpr auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< Color::Type >)
Definition color.h:92
FontWeight
Definition graphics_rendition.h:25
@ Bold
Definition graphics_rendition.h:27
@ None
Definition graphics_rendition.h:26
@ Dim
Definition graphics_rendition.h:28
@ None
Definition mode.h:11
Feature
Definition features.h:9
@ None
Definition features.h:10
Definition color.h:10
Definition graphics_rendition.h:53
Color underline_color
Definition graphics_rendition.h:56
FontWeight font_weight
Definition graphics_rendition.h:58
bool inverted
Definition graphics_rendition.h:63
Color fg
Definition graphics_rendition.h:54
bool strike_through
Definition graphics_rendition.h:65
Color bg
Definition graphics_rendition.h:55
constexpr friend auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< GraphicsRendition >)
Definition graphics_rendition.h:80
BlinkMode blink_mode
Definition graphics_rendition.h:59
auto operator==(GraphicsRendition const &other) const -> bool=default
void update_with_csi_params(Params const &params)
Definition graphics_rendition.cpp:88
static auto from_csi_params(Params const &params)
Definition graphics_rendition.h:67
auto operator<=>(GraphicsRendition const &other) const =default
UnderlineMode underline_mode
Definition graphics_rendition.h:60
auto as_csi_params(Feature features=Feature::None, di::Optional< GraphicsRendition const & > prev={}) const -> di::Vector< Params >
Definition graphics_rendition.cpp:281
bool italic
Definition graphics_rendition.h:61
bool overline
Definition graphics_rendition.h:62
bool invisible
Definition graphics_rendition.h:64