ttx 0.1.0
Loading...
Searching...
No Matches
osc_8671.h
Go to the documentation of this file.
1#pragma once
2
3#include "di/reflect/prelude.h"
5
6namespace ttx::terminal {
16
17constexpr auto tag_invoke(di::Tag<di::reflect>, di::InPlaceType<SeamlessNavigationRequestType>) {
19 return di::make_enumerators<"SeamlessNaviagationRequestType">(
20 di::enumerator<"Supported", Supported>, di::enumerator<"Register", Register>,
21 di::enumerator<"Unregister", Unregister>, di::enumerator<"Navigate", Navigate>,
22 di::enumerator<"Acknowledge", Acknowledge>, di::enumerator<"Enter", Enter>);
23}
24
93struct OSC8671 {
94 constexpr static auto max_id_byte_size = 36_usize;
95
97 di::Optional<NavigateDirection> direction {};
98 di::Optional<di::String> id {};
99 di::Optional<di::Tuple<u32, u32>> range {};
101 bool hide_cursor_on_enter { false };
102
103 static auto parse(di::StringView data) -> di::Optional<OSC8671>;
104
105 auto serialize() const -> di::String;
106
107 auto operator==(OSC8671 const& other) const -> bool = default;
108
109 constexpr friend auto tag_invoke(di::Tag<di::reflect>, di::InPlaceType<OSC8671>) {
110 return di::make_fields<"OSC8671">(di::field<"type", &OSC8671::type>,
111 di::field<"direction", &OSC8671::direction>, di::field<"id", &OSC8671::id>,
112 di::field<"range", &OSC8671::range>,
113 di::field<"wrap_mode", &OSC8671::wrap_mode>,
114 di::field<"hide_cursor_on_enter", &OSC8671::hide_cursor_on_enter>);
115 }
116};
117}
Definition absolute_position.h:6
SeamlessNavigationRequestType
Type of OSC 8671 message.
Definition osc_8671.h:8
NavigateWrapMode
Definition navigation_direction.h:19
@ Disallow
Definition navigation_direction.h:21
constexpr auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< AnsiMode >)
Definition mode.h:14
Represents a seamless pane navigation request.
Definition osc_8671.h:93
auto serialize() const -> di::String
Definition osc_8671.cpp:140
di::Optional< di::Tuple< u32, u32 > > range
Definition osc_8671.h:99
di::Optional< di::String > id
Definition osc_8671.h:98
bool hide_cursor_on_enter
Definition osc_8671.h:101
SeamlessNavigationRequestType type
Definition osc_8671.h:96
di::Optional< NavigateDirection > direction
Definition osc_8671.h:97
constexpr friend auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< OSC8671 >)
Definition osc_8671.h:109
static constexpr auto max_id_byte_size
Definition osc_8671.h:94
static auto parse(di::StringView data) -> di::Optional< OSC8671 >
Definition osc_8671.cpp:24
NavigateWrapMode wrap_mode
Definition osc_8671.h:100