Sparkle 0.0.1
Loading...
Searching...
No Matches
spk_component.hpp
1#pragma once
2
3#include "structure/design_pattern/spk_activable_object.hpp"
4
5#include "structure/system/event/spk_keyboard_event.hpp"
6#include "structure/system/event/spk_mouse_event.hpp"
7#include "structure/system/event/spk_paint_event.hpp"
8#include "structure/system/event/spk_system_event.hpp"
9#include "structure/system/event/spk_update_event.hpp"
10
11#include <atomic>
12#include <string>
13
14namespace spk
15{
16 class Entity;
17
23 {
24 friend class Entity;
25
26 private:
27 std::atomic<int> _priority = 0;
28 std::wstring _name;
29 Entity *_owner = nullptr;
30
31 protected:
36 virtual void _setOwner(Entity *p_owner);
41 virtual void _onGeometryChange(const spk::Extend2D &p_geometry);
46 virtual void _onPaintEvent(spk::PaintEvent &p_event);
51 virtual void _onKeyPressEvent(spk::KeyPressEvent &p_event);
56 virtual void _onKeyReleaseEvent(spk::KeyReleaseEvent &p_event);
61 virtual void _onGlyphEvent(spk::GlyphEvent &p_event);
66 virtual void _onMousePressEvent(spk::MousePressEvent &p_event);
71 virtual void _onMouseReleaseEvent(spk::MouseReleaseEvent &p_event);
81 virtual void _onMouseMotionEvent(spk::MouseMotionEvent &p_event);
86 virtual void _onMouseWheelEvent(spk::MouseWheelEvent &p_event);
96 virtual void _onResizeEvent(spk::ResizeEvent &p_event);
106 virtual void _onQuitEvent(spk::QuitEvent &p_event);
111 virtual void _onMoveEvent(spk::MoveEvent &p_event);
121 virtual void _onMaximizedModeEvent(spk::MaximizedModeEvent &p_event);
126 virtual void _onFocusEvent(spk::FocusEvent &p_event);
131 virtual void _onUpdateEvent(spk::UpdateEvent &p_event);
132
133 public:
138 Component(const std::wstring &p_name);
139
143 ~Component() override;
144
149 void setName(const std::wstring &p_name);
154 void setPriority(const int &p_priority);
155
160 const std::wstring &name() const;
165 int priority() const;
170 Entity *owner();
175 const Entity *owner() const;
176
180 virtual void start();
184 virtual void awake();
188 virtual void sleep();
192 virtual void stop();
193
198 virtual void handleGeometryChange(const spk::Extend2D &p_geometry);
203 virtual void handlePaintEvent(spk::PaintEvent &p_event);
208 virtual void handleKeyPressEvent(spk::KeyPressEvent &p_event);
213 virtual void handleKeyReleaseEvent(spk::KeyReleaseEvent &p_event);
218 virtual void handleGlyphEvent(spk::GlyphEvent &p_event);
223 virtual void handleMousePressEvent(spk::MousePressEvent &p_event);
228 virtual void handleMouseReleaseEvent(spk::MouseReleaseEvent &p_event);
238 virtual void handleMouseMotionEvent(spk::MouseMotionEvent &p_event);
243 virtual void handleMouseWheelEvent(spk::MouseWheelEvent &p_event);
253 virtual void handleResizeEvent(spk::ResizeEvent &p_event);
263 virtual void handleQuitEvent(spk::QuitEvent &p_event);
268 virtual void handleMoveEvent(spk::MoveEvent &p_event);
283 virtual void handleFocusEvent(spk::FocusEvent &p_event);
288 virtual void handleUpdateEvent(spk::UpdateEvent &p_event);
289 };
290}
Stateful helper toggling between activated/deactivated states.
Definition spk_activable_object.hpp:20
virtual void _onMouseReleaseEvent(spk::MouseReleaseEvent &p_event)
Handles mouse release events before public callbacks.
Definition spk_component.cpp:126
virtual void _onFullScreenModeEvent(spk::FullScreenModeEvent &p_event)
Handles fullscreen mode events before public callbacks.
Definition spk_component.cpp:198
virtual void _onGeometryChange(const spk::Extend2D &p_geometry)
Handles geometry changes before public callbacks.
Definition spk_component.cpp:78
virtual void _onMouseDoubleClickEvent(spk::MouseDoubleClickEvent &p_event)
Handles mouse double-click events before public callbacks.
Definition spk_component.cpp:134
virtual void start()
Called when the component starts.
Definition spk_component.cpp:62
virtual void _onMouseMotionEvent(spk::MouseMotionEvent &p_event)
Handles mouse motion events before public callbacks.
Definition spk_component.cpp:142
virtual void _onExitResizeModeEvent(spk::ExitResizeModeEvent &p_event)
Handles exit resize mode events before public callbacks.
Definition spk_component.cpp:174
virtual void _onUpdateEvent(spk::UpdateEvent &p_event)
Handles update events before public callbacks.
Definition spk_component.cpp:222
virtual void _onMoveEvent(spk::MoveEvent &p_event)
Handles move events before public callbacks.
Definition spk_component.cpp:190
virtual void _onGlyphEvent(spk::GlyphEvent &p_event)
Handles glyph input events before public callbacks.
Definition spk_component.cpp:110
virtual void handleMouseMotionEvent(spk::MouseMotionEvent &p_event)
Handles mouse motion events.
Definition spk_component.cpp:145
virtual void handleQuitEvent(spk::QuitEvent &p_event)
Handles quit events.
Definition spk_component.cpp:185
virtual void _onMaximizedModeEvent(spk::MaximizedModeEvent &p_event)
Handles maximized mode events before public callbacks.
Definition spk_component.cpp:206
virtual void handleFullScreenModeEvent(spk::FullScreenModeEvent &p_event)
Handles fullscreen mode events.
Definition spk_component.cpp:201
const std::wstring & name() const
Returns the component name.
Definition spk_component.cpp:37
virtual void handleUpdateEvent(spk::UpdateEvent &p_event)
Handles update events.
Definition spk_component.cpp:225
virtual void handleMouseWheelEvent(spk::MouseWheelEvent &p_event)
Handles mouse wheel events.
Definition spk_component.cpp:153
virtual void handleMoveEvent(spk::MoveEvent &p_event)
Handles move events.
Definition spk_component.cpp:193
virtual void stop()
Called when the component stops.
Definition spk_component.cpp:74
Component(const std::wstring &p_name)
Builds a component with a name.
Definition spk_component.cpp:7
virtual void _onKeyReleaseEvent(spk::KeyReleaseEvent &p_event)
Handles key release events before public callbacks.
Definition spk_component.cpp:102
virtual void _onPaintEvent(spk::PaintEvent &p_event)
Handles paint events before public callbacks.
Definition spk_component.cpp:86
virtual void sleep()
Called when the component is put to sleep.
Definition spk_component.cpp:70
virtual void handleGeometryChange(const spk::Extend2D &p_geometry)
Handles geometry change events.
Definition spk_component.cpp:81
virtual void handleResizeEvent(spk::ResizeEvent &p_event)
Handles resize events.
Definition spk_component.cpp:169
virtual void handlePaintEvent(spk::PaintEvent &p_event)
Handles paint events.
Definition spk_component.cpp:89
virtual void handleKeyReleaseEvent(spk::KeyReleaseEvent &p_event)
Handles key release events.
Definition spk_component.cpp:105
virtual void awake()
Called when the component becomes active.
Definition spk_component.cpp:66
virtual void _onKeyPressEvent(spk::KeyPressEvent &p_event)
Handles key press events before public callbacks.
Definition spk_component.cpp:94
~Component() override
Virtual destructor.
Definition spk_component.cpp:19
virtual void handleGlyphEvent(spk::GlyphEvent &p_event)
Handles glyph input events.
Definition spk_component.cpp:113
virtual void handleKeyPressEvent(spk::KeyPressEvent &p_event)
Handles key press events.
Definition spk_component.cpp:97
virtual void handleFocusEvent(spk::FocusEvent &p_event)
Handles focus events.
Definition spk_component.cpp:217
int priority() const
Returns the component priority.
Definition spk_component.cpp:42
Entity * owner()
Returns the owning entity.
Definition spk_component.cpp:47
virtual void handleMousePressEvent(spk::MousePressEvent &p_event)
Handles mouse press events.
Definition spk_component.cpp:121
void setPriority(const int &p_priority)
Sets the component priority.
Definition spk_component.cpp:28
virtual void _setOwner(Entity *p_owner)
Assigns the owning entity.
Definition spk_component.cpp:57
virtual void handleMouseDoubleClickEvent(spk::MouseDoubleClickEvent &p_event)
Handles mouse double-click events.
Definition spk_component.cpp:137
virtual void handleExitResizeModeEvent(spk::ExitResizeModeEvent &p_event)
Handles exit resize mode events.
Definition spk_component.cpp:177
virtual void handleEnterResizeModeEvent(spk::EnterResizeModeEvent &p_event)
Handles enter resize mode events.
Definition spk_component.cpp:161
virtual void handleMouseReleaseEvent(spk::MouseReleaseEvent &p_event)
Handles mouse release events.
Definition spk_component.cpp:129
virtual void _onFocusEvent(spk::FocusEvent &p_event)
Handles focus events before public callbacks.
Definition spk_component.cpp:214
virtual void _onMousePressEvent(spk::MousePressEvent &p_event)
Handles mouse press events before public callbacks.
Definition spk_component.cpp:118
virtual void _onResizeEvent(spk::ResizeEvent &p_event)
Handles resize events before public callbacks.
Definition spk_component.cpp:166
virtual void _onQuitEvent(spk::QuitEvent &p_event)
Handles quit events before public callbacks.
Definition spk_component.cpp:182
virtual void _onMouseWheelEvent(spk::MouseWheelEvent &p_event)
Handles mouse wheel events before public callbacks.
Definition spk_component.cpp:150
void setName(const std::wstring &p_name)
Sets the component name.
Definition spk_component.cpp:23
virtual void _onEnterResizeModeEvent(spk::EnterResizeModeEvent &p_event)
Handles enter resize mode events before public callbacks.
Definition spk_component.cpp:158
virtual void handleMaximizedModeEvent(spk::MaximizedModeEvent &p_event)
Handles maximized mode events.
Definition spk_component.cpp:209
Hierarchical game object containing components and children.
Definition spk_entity.hpp:34
Signals the window enters resize mode.
Definition spk_system_event.hpp:16
Signals the window exits resize mode.
Definition spk_system_event.hpp:34
Axis-aligned rectangle defined by an anchor point and size.
Definition spk_extend_2d.hpp:24
Reports focus gain or loss.
Definition spk_system_event.hpp:80
Requests or reports fullscreen state.
Definition spk_system_event.hpp:60
Character input event.
Definition spk_keyboard_event.hpp:38
Keyboard key press event.
Definition spk_keyboard_event.hpp:14
Keyboard key release event.
Definition spk_keyboard_event.hpp:26
Requests or reports maximized state.
Definition spk_system_event.hpp:70
Mouse button double-click event.
Definition spk_mouse_event.hpp:38
Mouse move event carrying current position.
Definition spk_mouse_event.hpp:50
Mouse button press event.
Definition spk_mouse_event.hpp:14
Mouse button release event.
Definition spk_mouse_event.hpp:26
Mouse wheel scroll event.
Definition spk_mouse_event.hpp:62
Reports a window move event.
Definition spk_system_event.hpp:50
Event emitted when a drawable region needs repainting.
Definition spk_paint_event.hpp:19
Signals application quit.
Definition spk_system_event.hpp:42
Reports a window/client-area resize.
Definition spk_system_event.hpp:24
Carries per-frame update timing and input state snapshot.
Definition spk_update_event.hpp:15