MayaFlux 1.0.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ wire()

void MayaFlux::Portal::Forma::TextField::wire ( Context &  ctx)
private

Definition at line 170 of file TextField.cpp.

171{
172 ctx.on_text(element_id, [sl = slice, s = state, p = params](uint32_t, uint32_t codepoint) mutable {
173 Portal::Text::EditableText edit = s->value;
174 Portal::Text::insert_codepoint(edit, codepoint);
175 s->write(edit);
176 render_text(*sl, edit, *p);
177 render_caret(*sl, edit, *p);
178 });
179
180 ctx.press_and_hold(element_id, IO::Keys::Backspace, [sl = slice, s = state, p = params](uint32_t) mutable {
181 Portal::Text::EditableText edit = s->value;
182 Portal::Text::erase(edit, -1);
183 s->write(edit);
184 render_text(*sl, edit, *p);
185 render_caret(*sl, edit, *p);
186 });
187
188 ctx.press_and_hold(element_id, IO::Keys::Delete, [sl = slice, s = state, p = params](uint32_t) mutable {
189 Portal::Text::EditableText edit = s->value;
190 Portal::Text::erase(edit, 1);
191 s->write(edit);
192 render_text(*sl, edit, *p);
193 render_caret(*sl, edit, *p);
194 });
195
196 ctx.press_and_hold(element_id, IO::Keys::Tab, [sl = slice, s = state, p = params](uint32_t) mutable {
197 Portal::Text::EditableText edit = s->value;
199 s->write(edit);
200 render_text(*sl, edit, *p);
201 render_caret(*sl, edit, *p);
202 });
203
204 ctx.press_and_hold(element_id, IO::Keys::Enter, [sl = slice, s = state, p = params](uint32_t) mutable {
205 Portal::Text::EditableText edit = s->value;
207 s->write(edit);
208 render_text(*sl, edit, *p);
209 render_caret(*sl, edit, *p);
210 });
211
212 ctx.press_and_hold(element_id, IO::Keys::Left, [sl = slice, s = state, p = params](uint32_t) mutable {
213 Portal::Text::EditableText edit = s->value;
214 Portal::Text::move(edit, -1);
215 s->write(edit);
216 render_caret(*sl, edit, *p);
217 });
218
219 ctx.press_and_hold(element_id, IO::Keys::Right, [sl = slice, s = state, p = params](uint32_t) mutable {
220 Portal::Text::EditableText edit = s->value;
221 Portal::Text::move(edit, 1);
222 s->write(edit);
223 render_caret(*sl, edit, *p);
224 });
225
226 ctx.press_and_hold(element_id, IO::Keys::Up, [sl = slice, s = state, p = params](uint32_t) mutable {
227 Portal::Text::EditableText edit = s->value;
228 move_vertical(edit, *sl, -1);
229 s->write(edit);
230 render_caret(*sl, edit, *p);
231 });
232
233 ctx.press_and_hold(element_id, IO::Keys::Down, [sl = slice, s = state, p = params](uint32_t) mutable {
234 Portal::Text::EditableText edit = s->value;
235 move_vertical(edit, *sl, 1);
236 s->write(edit);
237 render_caret(*sl, edit, *p);
238 });
239
241 [sl = slice, s = state, p = params, fb = m_live_bounds](uint32_t, glm::vec2 ndc) mutable {
242 Portal::Text::EditableText edit = s->value;
243 move_to_click(edit, *sl, *fb, ndc);
244 s->write(edit);
245 render_caret(*sl, edit, *p);
246 });
247}
void move(EditableText &s, int n)
Move the cursor by n codepoints.
Definition TextEdit.cpp:20
void erase(EditableText &s, int n)
Erase n codepoints from the cursor.
Definition TextEdit.cpp:31
void insert_codepoint(EditableText &s, uint32_t codepoint)
Insert one codepoint at the cursor, advancing it past the insert.
Definition TextEdit.cpp:5
void insert_literal(EditableText &s, char c)
Insert one raw ASCII byte at the cursor, advancing it past the insert.
Definition TextEdit.cpp:14
std::shared_ptr< MappedState< Portal::Text::EditableText > > state
Live editable text and cursor. Valid after place().
Definition TextField.hpp:97
uint32_t element_id
Element id of the text field. Valid after place().
Definition TextField.hpp:94
std::shared_ptr< Portal::Text::PressParams > params
Shared, mutable render params - every re-render reads this fresh, so a caller can change it once and ...
std::shared_ptr< internal::TextSlice > slice
The text and caret drawn into buf. Valid after place().
std::shared_ptr< Kinesis::AABB2D > m_live_bounds
Same value as field_bounds, behind a shared_ptr so wire()'s already-captured Context closures see a r...

References MayaFlux::IO::Backspace, MayaFlux::IO::Delete, MayaFlux::IO::Down, element_id, MayaFlux::IO::Enter, MayaFlux::Portal::Text::erase(), MayaFlux::Portal::Text::insert_codepoint(), MayaFlux::Portal::Text::insert_literal(), MayaFlux::IO::Left, m_live_bounds, MayaFlux::Portal::Text::move(), MayaFlux::Portal::Forma::Context::on_press(), MayaFlux::Portal::Forma::Context::on_text(), params, MayaFlux::Portal::Forma::Context::press_and_hold(), MayaFlux::IO::Right, slice, state, MayaFlux::IO::Tab, and MayaFlux::IO::Up.

Referenced by place().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: