7#include "structure/container/spk_task_result.hpp"
8#include "structure/design_pattern/spk_observable_value.hpp"
9#include "structure/graphics/painter/spk_color_painter.hpp"
10#include "structure/system/event/spk_system_event.hpp"
11#include "structure/system/time/spk_duration.hpp"
12#include "structure/system/time/spk_timestamp.hpp"
13#include "structure/widget/components/spk_nine_slice_background.hpp"
14#include "structure/widget/components/spk_text_region.hpp"
15#include "structure/widget/spk_widget.hpp"
69 spk::Color _cursorColor{1.0f, 1.0f, 1.0f, 1.0f};
70 size_t _cursorWidth = 2;
71 spk::Duration _cursorBlinkDuration{500, spk::TimeUnit::Millisecond};
72 bool _cursorVisible =
true;
75 spk::ObservableValue<std::wstring> _text;
76 std::wstring _placeholder;
77 size_t _cursorPosition = 0;
78 bool _obscured =
false;
83 void _updateLayoutFromGeometry();
84 void _updateDisplayedText();
87 void _refreshCursor();
88 void _resetCursorBlinkState();
89 void _updateCursorBlinkState();
93 void _applyTextNoValidation(
const std::wstring &p_text,
size_t p_cursorPosition);
94 ValidationStatus _applyValidatedText(
const std::wstring &p_text,
size_t p_cursorPosition);
145 TextEdit(
const std::wstring &p_name, spk::Widget *p_parent);
162 void setTexture(
const spk::SpriteSheet *p_spriteSheet);
167 const spk::SpriteSheet *
texture()
const;
173 void setFont(spk::Font *p_font);
178 spk::Font *
font()
const;
189 const spk::Font::Size &
fontSize()
const;
196 void setColors(
const spk::Color &p_glyphColor,
const spk::Color &p_outlineColor);
241 const std::wstring &
text()
const;
262 void setAlignment(HorizontalAlignment p_horizontalAlignment, VerticalAlignment p_verticalAlignment);
Helper used to build ColorMesh instances from primitives.
Definition spk_color_painter.hpp:63
Mesh specialization for colored vertices.
Definition spk_color_painter.hpp:41
Painter that renders ColorMesh instances.
Definition spk_color_painter.hpp:169
Strongly-typed time span with cached conversions between ns/ms/s.
Definition spk_duration.hpp:15
Renders a scalable nine-slice background using a sprite sheet.
Definition spk_nine_slice_background.hpp:25
spk::TContractProvider< TType >::Contract Contract
Contract type for subscriptions.
Definition spk_observable_value.hpp:27
spk::TContractProvider< TType >::Job Job
Job type dispatched on updates.
Definition spk_observable_value.hpp:31
Wraps a value with an optional status message for task reporting.
Definition spk_task_result.hpp:21
spk::Font * font() const
Returns the font used for text rendering.
Definition spk_text_edit.cpp:487
const ValidationCallback & validationCallback() const
Returns the validation callback.
Definition spk_text_edit.cpp:541
void setColors(const spk::Color &p_glyphColor, const spk::Color &p_outlineColor)
Sets glyph and outline colors.
Definition spk_text_edit.cpp:508
TextEdit(const std::wstring &p_name, spk::Widget *p_parent)
Builds a text edit widget.
Definition spk_text_edit.cpp:188
spk::ObservableValue< std::wstring >::Contract EditionContract
Edition contract type for text changes.
Definition spk_text_edit.hpp:54
void setFontSize(const spk::Font::Size &p_size)
Sets the font size used for text rendering.
Definition spk_text_edit.cpp:492
void placeCursor(size_t p_position)
Places the cursor at a position.
Definition spk_text_edit.cpp:584
void setTexture(const spk::SpriteSheet *p_spriteSheet)
Sets the background texture.
Definition spk_text_edit.cpp:466
bool obscured() const
Returns whether text is obscured.
Definition spk_text_edit.cpp:647
void clear()
Clears the text content.
Definition spk_text_edit.cpp:618
void _onFocusEvent(spk::FocusEvent &p_event) override
Handles focus events.
Definition spk_text_edit.cpp:433
ValidationState
Validation state of the text content.
Definition spk_text_edit.hpp:36
void _onPaintEvent(spk::PaintEvent &p_event) override
Paints the text edit visuals.
Definition spk_text_edit.cpp:276
void setFont(spk::Font *p_font)
Sets the font used for text rendering.
Definition spk_text_edit.cpp:476
void _onMouseMotionEvent(spk::MouseMotionEvent &p_event) override
Handles mouse motion events.
Definition spk_text_edit.cpp:305
ValidationStatus setText(const std::wstring &p_text)
Sets the text content.
Definition spk_text_edit.cpp:556
void _onMouseReleaseEvent(spk::MouseReleaseEvent &p_event) override
Handles mouse release events.
Definition spk_text_edit.cpp:326
const spk::SpriteSheet * texture() const
Returns the background texture.
Definition spk_text_edit.cpp:471
void moveCursor(int p_delta)
Moves the cursor by a delta.
Definition spk_text_edit.cpp:598
const std::wstring & placeholder() const
Returns the placeholder text.
Definition spk_text_edit.cpp:531
const spk::Color & glyphColor() const
Returns the glyph color.
Definition spk_text_edit.cpp:514
const spk::Color & outlineColor() const
Returns the outline color.
Definition spk_text_edit.cpp:519
void setPlaceholder(const std::wstring &p_placeholder)
Sets the placeholder text.
Definition spk_text_edit.cpp:524
void _onMousePressEvent(spk::MousePressEvent &p_event) override
Handles mouse press events.
Definition spk_text_edit.cpp:317
void _onGeometryChange() override
Updates layout when geometry changes.
Definition spk_text_edit.cpp:270
size_t cursorPosition() const
Returns the cursor position.
Definition spk_text_edit.cpp:613
const spk::Font::Size & fontSize() const
Returns the font size used for text rendering.
Definition spk_text_edit.cpp:503
spk::TaskResult< ValidationState > ValidationStatus
Validation status result type.
Definition spk_text_edit.hpp:44
const spk::Duration & cursorBlinkDuration() const
Returns the cursor blink duration.
Definition spk_text_edit.cpp:658
void setObscured(bool p_obscured)
Enables or disables obscured rendering.
Definition spk_text_edit.cpp:635
void setCursorBlinkDuration(const spk::Duration &p_duration)
Sets the cursor blink duration.
Definition spk_text_edit.cpp:652
EditionContract subscribeToEdition(const EditionJob &p_job)
Subscribes to text edition notifications.
Definition spk_text_edit.cpp:571
void setAlignment(HorizontalAlignment p_horizontalAlignment, VerticalAlignment p_verticalAlignment)
Sets text alignment.
Definition spk_text_edit.cpp:576
std::function< ValidationStatus(const std::wstring &)> ValidationCallback
Validation callback signature.
Definition spk_text_edit.hpp:49
const spk::Vector2UInt & cornerSize() const
Returns background corner size.
Definition spk_text_edit.cpp:461
ValidationStatus checkTextValidity(const std::wstring &p_text) const
Checks text validity with the current callback.
Definition spk_text_edit.cpp:546
void _onKeyPressEvent(spk::KeyPressEvent &p_event) override
Handles key press events.
Definition spk_text_edit.cpp:370
void _onGlyphEvent(spk::GlyphEvent &p_event) override
Handles glyph input events.
Definition spk_text_edit.cpp:347
const std::wstring & text() const
Returns the current text.
Definition spk_text_edit.cpp:551
void setCornerSize(const spk::Vector2UInt &p_cornerSize)
Sets background corner size.
Definition spk_text_edit.cpp:454
spk::ObservableValue< std::wstring >::Job EditionJob
Edition job type for text changes.
Definition spk_text_edit.hpp:58
void setValidationCallback(ValidationCallback p_callback)
Sets the validation callback.
Definition spk_text_edit.cpp:536
Renders formatted text within a geometry region.
Definition spk_text_region.hpp:24
Point in time with conversion helpers and arithmetic with Duration.
Definition spk_timestamp.hpp:16
RGBA color utility storing normalized floating components.
Definition spk_color.hpp:18