3#include "di/container/tree/tree_set.h"
4#include "di/reflect/prelude.h"
5#include "di/vocab/pointer/box.h"
28 constexpr friend auto tag_invoke(di::Tag<di::reflect>, di::InPlaceType<LayoutEntry>) {
29 return di::make_fields<
"LayoutEntry">(
54 constexpr friend auto tag_invoke(di::Tag<di::reflect>, di::InPlaceType<LayoutNode>) {
55 return di::make_fields<
"LayoutNode">(
71 di::Optional<di::Path>
cwd {};
82constexpr auto tag_invoke(di::Tag<di::reflect>, di::InPlaceType<ResizeDirection>) {
84 return di::make_enumerators<
"ResizeDirection">(di::enumerator<
"Left",
Left>, di::enumerator<
"Right",
Right>,
85 di::enumerator<
"Top",
Top>, di::enumerator<
"Bottom",
Bottom>);
94 constexpr auto empty() const ->
bool {
return m_children.empty(); }
95 constexpr auto single() const ->
bool {
return m_children.size() == 1; }
101 di::FunctionRef<di::Result<di::Box<Pane>>(u64, di::Optional<di::Path>,
Size const&)> make_pane)
102 -> di::Result<LayoutGroup>;
108 -> di::Tuple<di::Box<LayoutNode>, di::Optional<LayoutEntry&>, di::Optional<di::Box<Pane>&>>;
119 auto layout(
Size const& size, u32 row_offset, u32 col_offset) -> di::Box<LayoutNode>;
130 i64 original_size_available, i64 new_size_available);
131 void validate_layout();
constexpr auto empty() const -> bool
Definition layout.h:94
auto resize(LayoutNode &root, Pane *pane, ResizeDirection direction, i32 amount_in_cells) -> bool
Definition layout.cpp:405
auto split(Size const &size, u32 row_offset, u32 col_offset, Pane *reference, Direction direction) -> di::Tuple< di::Box< LayoutNode >, di::Optional< LayoutEntry & >, di::Optional< di::Box< Pane > & > >
Definition layout.cpp:230
friend struct FromJsonV1
Definition layout.h:126
constexpr auto relative_size() -> i64 &
Definition layout.h:96
constexpr auto relative_size() const -> i64
Definition layout.h:97
constexpr auto direction() const -> Direction
Definition layout.h:93
static auto from_json_v1(json::v1::PaneLayoutNode const &json, Size const &size, di::FunctionRef< di::Result< di::Box< Pane > >(u64, di::Optional< di::Path >, Size const &)> make_pane) -> di::Result< LayoutGroup >
Definition layout.cpp:665
friend struct FindPaneInLayoutGroup
Definition layout.h:124
friend struct MakePane
Definition layout.h:127
auto as_json_v1() const -> json::v1::PaneLayoutNode
Definition layout.cpp:604
auto layout(Size const &size, u32 row_offset, u32 col_offset) -> di::Box< LayoutNode >
Definition layout.cpp:486
friend struct ToJsonV1
Definition layout.h:125
auto remove_pane(Pane *pane) -> di::Box< Pane >
Definition layout.cpp:299
constexpr auto single() const -> bool
Definition layout.h:95
Definition layout_json.h:10
Definition clipboard.h:10
Direction
Definition direction.h:7
@ None
Definition direction.h:8
constexpr auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< ClipboardMode >)
Definition clipboard.h:21
@ Right
Definition key.h:70
@ Left
Definition key.h:69
constexpr auto max_layout_precision
Definition layout.h:64
ResizeDirection
Definition layout.h:75
@ Bottom
Definition layout.h:79
@ Top
Definition layout.h:78
LayoutNode * parent
Definition layout.h:22
LayoutPane const * ref
Definition layout.h:23
Size size
Definition layout.h:21
u32 row
Definition layout.h:19
auto operator==(LayoutEntry const &) const -> bool=default
Pane * pane
Definition layout.h:24
u32 col
Definition layout.h:20
constexpr friend auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< LayoutEntry >)
Definition layout.h:28
Direction direction
Definition layout.h:45
auto hit_test_horizontal_line(u32 row, u32 col_start, u32 col_end) -> di::TreeSet< LayoutEntry * >
Definition layout.cpp:143
LayoutGroup * group
Definition layout.h:44
u32 row
Definition layout.h:39
auto find_pane_by_id(u64 id) -> di::Optional< LayoutEntry & >
Definition layout.cpp:75
di::Vector< di::Variant< di::Box< LayoutNode >, LayoutEntry > > children
Definition layout.h:42
auto hit_test_vertical_line(u32 col, u32 row_start, u32 row_end) -> di::TreeSet< LayoutEntry * >
Definition layout.cpp:122
auto hit_test(u32 row, u32 col) -> di::Optional< LayoutEntry & >
Definition layout.cpp:98
LayoutNode * parent
Definition layout.h:43
constexpr friend auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< LayoutNode >)
Definition layout.h:54
u32 col
Definition layout.h:40
auto find_pane(Pane *pane) -> di::Optional< LayoutEntry & >
Definition layout.cpp:55
Size size
Definition layout.h:41
u64 pane_id
Definition layout.h:70
i64 relative_size
Definition layout.h:72
di::Optional< di::Path > cwd
Definition layout.h:71
di::Box< Pane > pane
Definition layout.h:69
Definition layout_json.h:36