37class NEFORCE_API element {
76 NEFORCE_NODISCARD
kind kind() const noexcept;
77 NEFORCE_NODISCARD
size_t key() const noexcept;
78 NEFORCE_NODISCARD const
vector<element>& children() const;
79 NEFORCE_NODISCARD
vector<element>& children();
80 NEFORCE_NODISCARD const tui::style& style() const;
81 NEFORCE_NODISCARD const
box_props& layout() const;
82 NEFORCE_NODISCARD const
string& text() const;
83 NEFORCE_NODISCARD const
function<
void()>& on_click() const;
84 NEFORCE_NODISCARD
int flex() const noexcept;
85 NEFORCE_NODISCARD
void* state_ref() const noexcept;
86 NEFORCE_NODISCARD style::variant variant() const noexcept;
87 NEFORCE_NODISCARD const
function<
void(
int,
int,
int,
int)>& draw_function() const;
89 NEFORCE_NODISCARD
void* owner() const noexcept;
90 void set_owner(
void* o);
92 NEFORCE_NODISCARD
int scroll_x() const noexcept;
93 NEFORCE_NODISCARD
int scroll_y() const noexcept;
95 NEFORCE_NODISCARD
int grid_columns() const noexcept;
97 NEFORCE_NODISCARD const
string& placeholder() const noexcept;
99 NEFORCE_NODISCARD
bool cursor_visible() const noexcept;
100 element& with_cursor_visible(
bool v);
102 NEFORCE_NODISCARD
size_t cursor_pos() const noexcept;
103 element& with_cursor_pos(
size_t pos);
105 NEFORCE_NODISCARD style::wrap_mode wrap_mode() const noexcept;
107 NEFORCE_NODISCARD
void* scroll_x_state() const noexcept;
108 element& with_scroll_x_state(
void* s);
109 NEFORCE_NODISCARD
void* scroll_y_state() const noexcept;
110 element& with_scroll_y_state(
void* s);
112 NEFORCE_NODISCARD
bool is_layout_dirty() const noexcept;
113 void set_layout_dirty(
bool dirty);
116 void set_cached_layout(const
vector<
layout_rect>& layout,
int constraint_w,
int constraint_h) const;
117 NEFORCE_NODISCARD
int cached_constraint_w() const noexcept;
118 NEFORCE_NODISCARD
int cached_constraint_h() const noexcept;
120 static element empty();
124 static element text(
string content,
tui::style style = {}, style::wrap_mode wrap = style::wrap_mode::none);
125 static element spacer(
int flex = 1);
126 static element separator();
127 static element button(
string label, function<
void()> on_click, tui::style style = {},
128 tui::style::variant variant = tui::style::variant::default_);
129 static element
text_input(state<string>& text, tui::style style = {},
string placeholder =
"");
130 static element checkbox(
string label, state<bool>& checked, tui::style style = {});
131 static element
scroll_view(element child, tui::style style = {},
int scroll_x = 0,
int scroll_y = 0);
176 template <
typename T>
180 el.reserve_children(items.
size());
181 for (
size_t i = 0; i < items.
size(); ++i) {
182 el.add_child(render(items[i], i));
192 void init_kind(
enum kind k);
193 void reserve_children(
size_t n);
constexpr Iterator2 move(Iterator1 first, Iterator1 last, Iterator2 result) noexcept(noexcept(inner::__move_aux(first, last, result)))
移动范围元素