ttx 0.1.0
Loading...
Searching...
No Matches
multi_cell_info.h
Go to the documentation of this file.
1#pragma once
2
3#include "di/reflect/prelude.h"
4#include "di/types/prelude.h"
5
6namespace ttx::terminal {
9 u8 scale { 1 };
10 u8 width { 0 };
15
16 constexpr auto compute_width() const -> u8 { return scale * width; }
17
18 auto operator==(MultiCellInfo const&) const -> bool = default;
19 auto operator<=>(MultiCellInfo const&) const = default;
20
21 constexpr friend auto tag_invoke(di::Tag<di::reflect>, di::InPlaceType<MultiCellInfo>) {
22 return di::make_fields<"Hyperlink">(
23 di::field<"scale", &MultiCellInfo::scale>, di::field<"width", &MultiCellInfo::width>,
24 di::field<"fractional_scale_numerator", &MultiCellInfo::fractional_scale_numerator>,
25 di::field<"fractional_scale_denominator", &MultiCellInfo::fractional_scale_denominator>,
26 di::field<"vertical_alignment", &MultiCellInfo::vertical_alignment>,
27 di::field<"horizontal_alignment", &MultiCellInfo::horizontal_alignment>);
28 }
29};
30
31// Strictly speaking, this isn't a multicell. However, its a reasonable default value.
32constexpr inline auto narrow_multi_cell_info = MultiCellInfo { 1, 1 };
33
34constexpr inline auto wide_multi_cell_info = MultiCellInfo { 1, 2 };
35}
Definition capability.h:8
constexpr auto wide_multi_cell_info
Definition multi_cell_info.h:34
constexpr auto narrow_multi_cell_info
Definition multi_cell_info.h:32
Shared information for cells linked via text sizing protocol (OSC 66) or double width characters.
Definition multi_cell_info.h:8
constexpr auto compute_width() const -> u8
Definition multi_cell_info.h:16
u8 horizontal_alignment
Horizontal fractional scale alignment.
Definition multi_cell_info.h:14
constexpr friend auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< MultiCellInfo >)
Definition multi_cell_info.h:21
auto operator==(MultiCellInfo const &) const -> bool=default
u8 fractional_scale_numerator
Fractional scale numerator.
Definition multi_cell_info.h:11
u8 width
Width in cells. When specified as 0 via OSC 66, the width is inferred.
Definition multi_cell_info.h:10
auto operator<=>(MultiCellInfo const &) const =default
u8 vertical_alignment
Vertical fractional scale alignment.
Definition multi_cell_info.h:13
u8 fractional_scale_denominator
Fractional scale denominator.
Definition multi_cell_info.h:12
u8 scale
Vertiacl scale for the cell. This is applied multiplicatively to the width.
Definition multi_cell_info.h:9