ttx 0.1.0
Loading...
Searching...
No Matches
features.h
Go to the documentation of this file.
1#pragma once
2
3#include "di/reflect/prelude.h"
4#include "di/util/bitwise_enum.h"
5#include "dius/sync_file.h"
6
7namespace ttx {
8enum class Feature : u64 {
9 None = 0,
11 TextSizingWidth = 1 << 1,
12 TextSizingFull = 1 << 2,
13 ThemeDetection = 1 << 3,
17 Undercurl = 1 << 7,
21 Clipboard = 1 << 11,
22 DynamicPalette = 1 << 12,
24 All = u64(-1),
25};
26
27DI_DEFINE_ENUM_BITWISE_OPERATIONS(Feature)
28
29constexpr auto tag_invoke(di::Tag<di::reflect>, di::InPlaceType<Feature>) {
30 using enum Feature;
31 return di::make_enumerators<"Feature">(
32 di::enumerator<"None", None>, di::enumerator<"SyncronizedOutput", SyncronizedOutput>,
33 di::enumerator<"TextSizingWidth", TextSizingWidth>, di::enumerator<"TextSizingFull", TextSizingFull>,
34 di::enumerator<"ThemeDetection", ThemeDetection>, di::enumerator<"InBandSizeReports", InBandSizeReports>,
35 di::enumerator<"GraphemeClusteringMode", GraphemeClusteringMode>,
36 di::enumerator<"KittyKeyProtocol", KittyKeyProtocol>, di::enumerator<"Undercurl", Undercurl>,
37 di::enumerator<"BasicGraphemeClustering", BasicGraphemeClustering>,
38 di::enumerator<"FullGraphemeClustering", FullGraphemeClustering>,
39 di::enumerator<"TextSizingPresentation", TextSizingPresentation>, di::enumerator<"Clipboard", Clipboard>,
40 di::enumerator<"DynamicPalette", DynamicPalette>,
41 di::enumerator<"BackgroundCharacterErase", BackgroundCharacterErase>);
42}
43
44auto detect_features(dius::SyncFile& terminal) -> di::Result<Feature>;
45}
Implementation of clipboard handling for ttx.
Definition clipboard.h:33
Definition clipboard.h:10
@ None
Definition direction.h:8
constexpr auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< ClipboardMode >)
Definition clipboard.h:21
auto detect_features(dius::SyncFile &terminal) -> di::Result< Feature >
Definition feature.cpp:135
Feature
Definition features.h:8
@ KittyKeyProtocol
Supports kitty key protocol.
Definition features.h:16
@ Undercurl
Supports undercurl (fancy underline) and underline colors.
Definition features.h:17
@ TextSizingPresentation
Supports text-sizing with scale=1 but fractional scale and alignment.
Definition features.h:20
@ GraphemeClusteringMode
Supports grapheme clustering mode via mode 2027.
Definition features.h:15
@ TextSizingWidth
Supports using the text sizing protocol to specify explicit text width.
Definition features.h:11
@ BackgroundCharacterErase
Clearing the screen sets the current SGR background color.
Definition features.h:23
@ InBandSizeReports
Supports in-band size reports via mode 2048.
Definition features.h:14
@ DynamicPalette
Supports changing the color palette dynamically.
Definition features.h:22
@ ThemeDetection
Supports light/dark mode detection via mode 2031.
Definition features.h:13
@ BasicGraphemeClustering
Supports grapheme clustering, but may not match the kitty spec.
Definition features.h:18
@ FullGraphemeClustering
Grapheme clustering behavior matches kitty spec.
Definition features.h:19
@ All
Definition features.h:24
@ SyncronizedOutput
Allow using DEC mode 2026 to synchronize screen updates.
Definition features.h:10
@ TextSizingFull
Supports using the text sizing protocol to multi-height cells.
Definition features.h:12