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
26struct OSC8671 {
27 constexpr static auto max_id_byte_size = 36_usize;
28
30 di::Optional<NavigateDirection> direction {};
31 di::Optional<di::String> id {};
32 di::Optional<di::Tuple<u32, u32>> range {};
34 bool hide_cursor_on_enter { false };
35
36 static auto parse(di::StringView data) -> di::Optional<OSC8671>;
37
38 auto serialize() const -> di::String;
39
40 auto operator==(OSC8671 const& other) const -> bool = default;
41
42 constexpr friend auto tag_invoke(di::Tag<di::reflect>, di::InPlaceType<OSC8671>) {
43 return di::make_fields<"OSC8671">(di::field<"type", &OSC8671::type>,
44 di::field<"direction", &OSC8671::direction>, di::field<"id", &OSC8671::id>,
45 di::field<"range", &OSC8671::range>,
46 di::field<"wrap_mode", &OSC8671::wrap_mode>,
47 di::field<"hide_cursor_on_enter", &OSC8671::hide_cursor_on_enter>);
48 }
49};
50}
Definition absolute_position.h:6
SeamlessNavigationRequestType
Type of OSC 8671 message.
Definition osc_8671.h:8
constexpr auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< Color::Type >)
Definition color.h:92
NavigateWrapMode
Definition navigation_direction.h:19
@ Disallow
Definition navigation_direction.h:21
Represents a seamless pane navigation request.
Definition osc_8671.h:26
auto serialize() const -> di::String
Definition osc_8671.cpp:140
di::Optional< di::Tuple< u32, u32 > > range
Definition osc_8671.h:32
di::Optional< di::String > id
Definition osc_8671.h:31
bool hide_cursor_on_enter
Definition osc_8671.h:34
SeamlessNavigationRequestType type
Definition osc_8671.h:29
di::Optional< NavigateDirection > direction
Definition osc_8671.h:30
constexpr friend auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< OSC8671 >)
Definition osc_8671.h:42
static constexpr auto max_id_byte_size
Definition osc_8671.h:27
static auto parse(di::StringView data) -> di::Optional< OSC8671 >
Definition osc_8671.cpp:24
NavigateWrapMode wrap_mode
Definition osc_8671.h:33