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 {
27
28DI_DEFINE_ENUM_BITWISE_OPERATIONS(Feature)
29
30constexpr auto tag_invoke(di::Tag<di::reflect>, di::InPlaceType<Feature>) {
31 using enum Feature;
32 return di::make_enumerators<"Feature">(
33 di::enumerator<"None", None>, di::enumerator<"SyncronizedOutput", SyncronizedOutput>,
34 di::enumerator<"TextSizingWidth", TextSizingWidth>, di::enumerator<"TextSizingFull", TextSizingFull>,
35 di::enumerator<"ThemeDetection", ThemeDetection>, di::enumerator<"InBandSizeReports", InBandSizeReports>,
36 di::enumerator<"GraphemeClusteringMode", GraphemeClusteringMode>,
37 di::enumerator<"KittyKeyProtocol", KittyKeyProtocol>, di::enumerator<"Undercurl", Undercurl>,
38 di::enumerator<"BasicGraphemeClustering", BasicGraphemeClustering>,
39 di::enumerator<"FullGraphemeClustering", FullGraphemeClustering>,
40 di::enumerator<"TextSizingPresentation", TextSizingPresentation>, di::enumerator<"Clipboard", Clipboard>,
41 di::enumerator<"DynamicPalette", DynamicPalette>,
42 di::enumerator<"BackgroundCharacterErase", BackgroundCharacterErase>,
43 di::enumerator<"SeamlessNavigation", SeamlessNavigation>);
44}
45
46auto detect_features(dius::SyncFile& terminal) -> di::Result<Feature>;
47}
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:138
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
@ SeamlessNavigation
Supports seamless navigation protocol (OSC 8671).
Definition features.h:24
@ 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:25
@ 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