|
Sparkle 0.0.1
|
Base class for interactive UI elements handling focus and events. More...
#include <spk_widget.hpp>


Classes | |
| struct | Style |
| Collection of default assets used by widgets when no overrides are supplied. More... | |
Public Types | |
| enum class | FocusType { Keyboard = 0 , Mouse = 1 } |
| Types of focus a widget can own. | |
| Public Types inherited from spk::ActivableObject | |
| using | Contract = StatefulObject<ActivationStatus>::Contract |
| Subscription handle controlling callback lifetime. | |
| using | Job = StatefulObject<ActivationStatus>::Job |
| Callback signature executed on activation state changes. | |
| Public Types inherited from spk::StatefulObject< ActivationStatus > | |
| using | Contract |
| Handle allowing subscribers to manage callback lifetimes. | |
| using | Job |
| Callable invoked when the object transitions to a state. | |
Public Member Functions | |
| void | takeFocus (FocusType p_focusType) |
| Grants this widget ownership of the requested focus type. | |
| void | releaseFocus (FocusType p_focusType) |
| Releases a previously acquired focus type. | |
| bool | hasFocus (FocusType p_focusType) const |
| Checks if this widget currently owns a focus type. | |
| void | takeAllFocus () |
| Acquires both keyboard and mouse focus. | |
| void | releaseAllFocus () |
| Releases both keyboard and mouse focus types. | |
| Widget (const std::wstring &p_name, Widget *p_parent) | |
| Builds a widget optionally attached to a parent. | |
| void | addChild (Widget *p_child) override |
| Adds a child widget and sorts the hierarchy by layer. | |
| const float & | layer () const |
| Current rendering layer of the widget. | |
| void | setLayer (const float &p_newLayer) |
| Updates the widget layer and propagates relative offsets to children. | |
| const std::wstring & | name () const |
| Retrieves the widget name. | |
| void | setName (const std::wstring &p_name) |
| Sets the widget name. | |
| void | setGeometry (const spk::Extend2D &p_geometry) override |
| Requests a specific viewport and scissor region for the widget. | |
| const spk::Extend2D & | geometry () const |
| Returns the current widget geometry. | |
| const spk::OpenGL::ViewRegion & | viewRegion () const |
| Accesses the computed view region. | |
| const spk::OpenGL::FrameBufferObject & | frameBufferObject () const |
| Returns the frame buffer object used for widget rendering. | |
| const spk::OpenGL::FrameBufferObject & | fbo () const |
| Alias for frameBufferObject(). | |
| void | requireGeometryChange () |
| Marks the widget view region as needing recomputation. | |
| Public Member Functions inherited from spk::InherenceObject< Widget > | |
| virtual void | removeChild (Widget *p_child) |
| Removes a child from this node. | |
| Widget * | parent () const |
| Returns the parent pointer. | |
| virtual std::vector< Widget * > & | children () |
| Returns the children vector. | |
| void | clearChildren () |
| Clears the children list and resets each child's parent pointer. | |
| Public Member Functions inherited from spk::ActivableObject | |
| ActivableObject () | |
| Builds a deactivated object. | |
| ActivableObject (ActivationStatus p_initial) | |
| Builds with a custom initial activation state. | |
| void | activate () |
| Sets the state to Activated. | |
| void | deactivate () |
| Sets the state to Deactivated. | |
| void | toggle () |
| Toggles between activated and deactivated states. | |
| bool | isActive () const |
| Checks whether the object is currently activated. | |
| Contract | addActivationCallback (const Job &p_callback) |
| Registers a callback executed when the object activates. | |
| Contract | addDeactivationCallback (const Job &p_callback) |
| Registers a callback executed when the object deactivates. | |
| Public Member Functions inherited from spk::StatefulObject< ActivationStatus > | |
| StatefulObject (const ActivationStatus &p_initialState) | |
| Builds with an initial state. | |
| StatefulObject & | operator= (const StatefulObject &p_other)=delete |
| void | setState (const ActivationStatus &p_newState) |
| Sets a new state and triggers callbacks registered for it. | |
| ActivationStatus | state () const |
| Returns the current state. | |
| Contract | addCallback (const ActivationStatus &p_state, const Job &p_callback) |
| Subscribes a callback for a specific state. | |
| Public Member Functions inherited from spk::ResizableElement | |
| SizeHint & | sizeHint () |
| Returns mutable size hint data. | |
| const SizeHint & | sizeHint () const |
| Returns const size hint data. | |
Static Public Member Functions | |
| static Widget * | focusedWidget (FocusType p_focusType) |
| Retrieves the widget currently owning a focus type. | |
Static Public Attributes | |
| static const size_t | NbFocusType = 2 |
| Number of focus slots tracked at runtime. | |
Protected Member Functions | |
| virtual void | _onPaintEvent (spk::PaintEvent &p_event) |
| Paint event hook for derived widgets. | |
| virtual void | _onKeyPressEvent (spk::KeyPressEvent &p_event) |
| Keyboard press handler for derived widgets. | |
| virtual void | _onKeyReleaseEvent (spk::KeyReleaseEvent &p_event) |
| Keyboard release handler for derived widgets. | |
| virtual void | _onGlyphEvent (spk::GlyphEvent &p_event) |
| Text glyph input handler for derived widgets. | |
| virtual void | _onMousePressEvent (spk::MousePressEvent &p_event) |
| Mouse button press handler for derived widgets. | |
| virtual void | _onMouseReleaseEvent (spk::MouseReleaseEvent &p_event) |
| Mouse button release handler for derived widgets. | |
| virtual void | _onMouseDoubleClickEvent (spk::MouseDoubleClickEvent &p_event) |
| Mouse double click handler for derived widgets. | |
| virtual void | _onMouseMotionEvent (spk::MouseMotionEvent &p_event) |
| Mouse motion handler for derived widgets. | |
| virtual void | _onMouseWheelEvent (spk::MouseWheelEvent &p_event) |
| Mouse wheel handler for derived widgets. | |
| virtual void | _onEnterResizeModeEvent (spk::EnterResizeModeEvent &p_event) |
| Callback for entering resize mode. | |
| virtual void | _onResizeEvent (spk::ResizeEvent &p_event) |
| Resize handling hook. | |
| virtual void | _onExitResizeModeEvent (spk::ExitResizeModeEvent &p_event) |
| Callback invoked when leaving resize mode. | |
| virtual void | _onQuitEvent (spk::QuitEvent &p_event) |
| Quit event handler hook. | |
| virtual void | _onMoveEvent (spk::MoveEvent &p_event) |
| Window move handler hook. | |
| virtual void | _onFullScreenModeEvent (spk::FullScreenModeEvent &p_event) |
| Full screen toggle handler hook. | |
| virtual void | _onMaximizedModeEvent (spk::MaximizedModeEvent &p_event) |
| Maximized mode change handler. | |
| virtual void | _onFocusEvent (spk::FocusEvent &p_event) |
| Focus change handler hook. | |
| virtual void | _onUpdateEvent (spk::UpdateEvent &p_event) |
| Frame update handler hook. | |
| virtual void | _onGeometryChange () |
| Notifies derived widgets that the view region changed. | |
Friends | |
| class | Module::KeyboardModule |
| class | Module::MouseModule |
| class | Module::SystemModule |
| class | Module::UpdateModule |
| class | Module::PaintModule |
Base class for interactive UI elements handling focus and events.
| spk::Widget::Widget | ( | const std::wstring & | p_name, |
| Widget * | p_parent ) |
Builds a widget optionally attached to a parent.
| p_name | Display name of the widget. |
| p_parent | Parent widget to attach to; can be nullptr. |


|
protectedvirtual |
Callback for entering resize mode.
| p_event | Event carrying the current window metrics when resizing starts. |
Reimplemented in spk::GameEngineWidget.
|
protectedvirtual |
Callback invoked when leaving resize mode.
| p_event | Event carrying the final window metrics after resizing. |
Reimplemented in spk::GameEngineWidget.
|
protectedvirtual |
Focus change handler hook.
| p_event | Event containing the new focus state. |
Reimplemented in spk::GameEngineWidget, and spk::TextEdit.
|
protectedvirtual |
Full screen toggle handler hook.
| p_event | Event describing the new full screen state. |
Reimplemented in spk::GameEngineWidget.
|
protectedvirtual |
Notifies derived widgets that the view region changed.
Reimplemented in spk::ColorPicker, spk::ComboBox, spk::CommandPanel, spk::Frame, spk::GameEngineWidget, spk::IconButton, spk::NumericSpinBox< TType >, spk::NumericSpinBox< float >, spk::NumericSpinBox< int >, spk::NumericSpinBox< unsigned int >, spk::PromptPanel, spk::PushButton, spk::ScrolableArea< TContent >, spk::ScrolableArea< ListContent >, spk::ScrollBar, spk::Slider, spk::TabWidget, spk::TextEdit, and spk::TextLabel.
|
protectedvirtual |
Text glyph input handler for derived widgets.
| p_event | Unicode glyph information for text entry. |
Reimplemented in spk::GameEngineWidget, and spk::TextEdit.
|
protectedvirtual |
Keyboard press handler for derived widgets.
| p_event | Key code and modifiers associated with the press. |
Reimplemented in spk::GameEngineWidget, and spk::TextEdit.
|
protectedvirtual |
Keyboard release handler for derived widgets.
| p_event | Key code and modifiers associated with the release. |
Reimplemented in spk::GameEngineWidget.
|
protectedvirtual |
Maximized mode change handler.
| p_event | Event describing the new maximized state. |
Reimplemented in spk::GameEngineWidget.
|
protectedvirtual |
Mouse double click handler for derived widgets.
| p_event | Button identifier and cursor position for the double click. |
Reimplemented in spk::GameEngineWidget, spk::IconButton, and spk::PushButton.
|
protectedvirtual |
Mouse motion handler for derived widgets.
| p_event | Cursor position delta and absolute coordinates. |
Reimplemented in spk::GameEngineWidget, spk::IconButton, spk::PushButton, spk::Slider, and spk::TextEdit.
|
protectedvirtual |
Mouse button press handler for derived widgets.
| p_event | Button identifier and cursor position for the press. |
Reimplemented in spk::GameEngineWidget, spk::IconButton, spk::PushButton, spk::Slider, and spk::TextEdit.
|
protectedvirtual |
Mouse button release handler for derived widgets.
| p_event | Button identifier and cursor position for the release. |
Reimplemented in spk::GameEngineWidget, spk::IconButton, spk::PushButton, spk::Slider, and spk::TextEdit.
|
protectedvirtual |
Mouse wheel handler for derived widgets.
| p_event | Scrolling delta and cursor position. |
Reimplemented in spk::GameEngineWidget, spk::ScrolableArea< TContent >, and spk::ScrolableArea< ListContent >.
|
protectedvirtual |
Window move handler hook.
| p_event | New window position. |
Reimplemented in spk::GameEngineWidget.
|
protectedvirtual |
Paint event hook for derived widgets.
| p_event | Event describing the paint request region and target. |
Reimplemented in spk::Frame, spk::GameEngineWidget, spk::IconButton, spk::PromptPanel, spk::PushButton, spk::Slider, spk::TextEdit, and spk::TextLabel.
|
protectedvirtual |
Quit event handler hook.
| p_event | Event signifying shutdown. |
Reimplemented in spk::GameEngineWidget.
|
protectedvirtual |
Resize handling hook.
| p_event | New viewport dimensions. |
Reimplemented in spk::GameEngineWidget.
|
protectedvirtual |
Frame update handler hook.
| p_event | Event emitted each frame for logic updates. |
Reimplemented in spk::ColorPicker, spk::DynamicTextLabel, and spk::GameEngineWidget.

|
overridevirtual |
Adds a child widget and sorts the hierarchy by layer.
| p_child | Child widget to insert. |
Reimplemented from spk::InherenceObject< Widget >.


| const spk::OpenGL::FrameBufferObject & spk::Widget::fbo | ( | ) | const |
Alias for frameBufferObject().

Retrieves the widget currently owning a focus type.
| p_focusType | Focus lane to inspect. |


| const spk::OpenGL::FrameBufferObject & spk::Widget::frameBufferObject | ( | ) | const |
| const spk::Extend2D & spk::Widget::geometry | ( | ) | const |
Returns the current widget geometry.

| bool spk::Widget::hasFocus | ( | FocusType | p_focusType | ) | const |
Checks if this widget currently owns a focus type.
| p_focusType | Focus lane to test. |

| const float & spk::Widget::layer | ( | ) | const |
Current rendering layer of the widget.

| const std::wstring & spk::Widget::name | ( | ) | const |
Retrieves the widget name.

| void spk::Widget::releaseFocus | ( | FocusType | p_focusType | ) |
Releases a previously acquired focus type.
| p_focusType | Focus lane to free. |
| std::runtime_error | When the widget does not own the focus. |

|
overridevirtual |
Requests a specific viewport and scissor region for the widget.
| p_geometry | Desired view region in parent coordinates. |
Implements spk::ResizableElement.


| void spk::Widget::setLayer | ( | const float & | p_newLayer | ) |
Updates the widget layer and propagates relative offsets to children.
| p_newLayer | New layer value to apply. |


| void spk::Widget::setName | ( | const std::wstring & | p_name | ) |
Sets the widget name.
| p_name | New label for the widget. |
| void spk::Widget::takeFocus | ( | FocusType | p_focusType | ) |
Grants this widget ownership of the requested focus type.
| p_focusType | Focus lane to occupy. |

| const spk::OpenGL::ViewRegion & spk::Widget::viewRegion | ( | ) | const |
Accesses the computed view region.