SDOM - Simple SDL Document Object Model
A lightweight, extensible Document Object Model for SDL-based applications.
Loading...
Searching...
No Matches
lua_IDisplayObject.hpp
Go to the documentation of this file.
1// lua_IDisplayObject.hpp
2#pragma once
3
4#include <sol/sol.hpp>
5// #include <SDOM/SDOM.hpp>
6// #include <SDOM/SDOM_IDisplayObject.hpp>
7
8namespace SDOM
9{
10 class IDisplayObject;
11 class EventType;
12 class DisplayHandle;
13 struct Bounds;
14
15 // --- Dirty/State Management --- //
16 void cleanAll_lua(IDisplayObject* obj); // TESTED
17 bool getDirty_lua(const IDisplayObject* obj); // TESTED
18 void setDirty_lua(IDisplayObject* obj); // TESTED
19 bool isDirty_lua(const IDisplayObject* obj); // TESTED
20
21 // --- Debug/Utility --- //
22 void printTree_lua(const IDisplayObject* obj); // TESTED (used in listener_callbacks.lua)
23
24 // --- Event Handling --- //
25 void addEventListener_lua(IDisplayObject* obj, EventType& type, sol::function listener, bool useCapture, int priority); // TESTED (typed form used by event tests)
26 void removeEventListener_lua(IDisplayObject* obj, EventType& type, sol::function listener, bool useCapture); // TESTED (typed form used by event tests)
27 // Flexible variants that accept a Lua table descriptor or multiple-arg form
28 void addEventListener_lua_any(IDisplayObject* obj, const sol::object& descriptor, const sol::object& maybe_listener, const sol::object& maybe_useCapture, const sol::object& maybe_priority); // UNTESTED
29 void removeEventListener_lua_any(IDisplayObject* obj, const sol::object& descriptor, const sol::object& maybe_listener, const sol::object& maybe_useCapture); // UNTESTED
30 // Short variants accepting only the descriptor table (common colon-call)
31 void addEventListener_lua_any_short(IDisplayObject* obj, const sol::object& descriptor); // UNTESTED
32 void removeEventListener_lua_any_short(IDisplayObject* obj, const sol::object& descriptor); // UNTESTED
33
34 // --- Hierarchy Management --- //
35 void addChild_lua(IDisplayObject* obj, DisplayHandle child); // TESTED (GC tests use addChild)
36 DisplayHandle getChild_lua(const IDisplayObject* obj, std::string name); // TESTED
37 bool removeChild_lua(IDisplayObject* obj, DisplayHandle child); // TESTED (GC tests use removeChild by handle)
38 bool removeChild_lua(IDisplayObject* obj, const std::string& name); // TESTED (removeChild by name used in tests)
39 bool hasChild_lua(const IDisplayObject* obj, DisplayHandle child); // TESTED (GC tests check hasChild)
40 DisplayHandle getParent_lua(const IDisplayObject* obj); // TESTED
41 void setParent_lua(IDisplayObject* obj, const DisplayHandle& parent); // TESTED (parent manipulation exercised)
42
43 // Ancestor/Descendant helpers
44 bool isAncestorOf_lua(IDisplayObject* obj, DisplayHandle descendant); // TESTED
45 bool isAncestorOf_lua(IDisplayObject* obj, const std::string& name); // TESTED
46 bool isDescendantOf_lua(IDisplayObject* obj, DisplayHandle ancestor); // TESTED
47 bool isDescendantOf_lua(IDisplayObject* obj, const std::string& name); // TESTED
48 // Remove this object from its parent (convenience). Returns true if removed.
49 bool removeFromParent_lua(IDisplayObject* obj); // TESTED
50 // Recursive descendant removal: search depth-first and remove first match. Returns true if removed.
51 bool removeDescendant_lua(IDisplayObject* obj, DisplayHandle descendant); // TESTED
52 bool removeDescendant_lua(IDisplayObject* obj, const std::string& descendantName); // TESTED
53
54 // --- Type & Property Access --- //
55 std::string getName_lua(const IDisplayObject* obj); // TESTED (used in GC & event tests)
56 void setName_lua(IDisplayObject* obj, const std::string& newName); // TESTED
57
58 std::string getType_lua(const IDisplayObject* obj); // TESTED
59 void setType_lua(IDisplayObject* obj, const std::string& newType); // TESTED
60 Bounds getBounds_lua(const IDisplayObject* obj); // TESTED
61 // Accept either a Bounds userdata or a Lua table describing bounds
62 void setBounds_lua(IDisplayObject* obj, const sol::object& bobj); // TESTED
63 SDL_Color getColor_lua(const IDisplayObject* obj); // TESTED
64 // Accept either an SDL_Color userdata or a Lua table describing color
65 void setColor_lua(IDisplayObject* obj, const sol::object& colorObj); // TESTED
66 // Handle-aware name getter: if underlying object is missing, return the handle's cached name
67 std::string getName_handle_lua(DisplayHandle& self); // TESTED (used to avoid invalid handle errors)
68
69 // --- Priority & Z-Order --- //
70 int getMaxPriority_lua(const IDisplayObject* obj); // TESTED
71 int getMinPriority_lua(const IDisplayObject* obj); // TESTED
72 int getPriority_lua(const IDisplayObject* obj); // TESTED
73 void setToHighestPriority_lua(IDisplayObject* obj); // TESTED
74 void setToLowestPriority_lua(IDisplayObject* obj); // TESTED
75 void sortChildrenByPriority_lua(IDisplayObject* obj); // TESTED
76 void setPriority_lua(IDisplayObject* obj, int priority); // TESTED
77 // Flexible overloads for priorities (descriptor/targeted forms)
78 void setPriority_lua_any(IDisplayObject* obj, const sol::object& descriptor); // TESTED (overloads used by tests)
79 void setPriority_lua_target(IDisplayObject* obj, const sol::object& descriptor, int value); // TESTED
80 std::vector<int> getChildrenPriorities_lua(const IDisplayObject* obj); // TESTED
81 void moveToTop_lua(IDisplayObject* obj); // TESTED
82 void moveToTop_lua_any(IDisplayObject* obj, const sol::object& descriptor); // TESTED
83 int getZOrder_lua(const IDisplayObject* obj); // TESTED
84 void setZOrder_lua(IDisplayObject* obj, int z_order); // TESTED
85 void setZOrder_lua_any(IDisplayObject* obj, const sol::object& descriptor); // TESTED
86 // Descriptor forms for highest/lowest via parent
87 void setToHighestPriority_lua_any(IDisplayObject* obj, const sol::object& descriptor); // TESTED
88 void setToLowestPriority_lua_any(IDisplayObject* obj, const sol::object& descriptor); // TESTED
89
90 // --- Focus & Interactivity --- //
91 void setKeyboardFocus_lua(IDisplayObject* obj); // TESTED
92 bool isKeyboardFocused_lua(const IDisplayObject* obj); // TESTED
93 bool isMouseHovered_lua(const IDisplayObject* obj); // TESTED
94 bool isClickable_lua(const IDisplayObject* obj); // TESTED
95 void setClickable_lua(IDisplayObject* obj, bool clickable); // TESTED
96 bool isEnabled_lua(const IDisplayObject* obj); // TESTED
97 void setEnabled_lua(IDisplayObject* obj, bool enabled); // TESTED
98 bool isHidden_lua(const IDisplayObject* obj); // TESTED
99 void setHidden_lua(IDisplayObject* obj, bool hidden); // TESTED
100 bool isVisible_lua(const IDisplayObject* obj); // TESTED
101 void setVisible_lua(IDisplayObject* obj, bool visible); // TESTED
102
103 // --- Tab Management --- //
104 int getTabPriority_lua(const IDisplayObject* obj); // TESTED
105 void setTabPriority_lua(IDisplayObject* obj, int index); // TESTED
106 bool isTabEnabled_lua(const IDisplayObject* obj); // TESTED
107 void setTabEnabled_lua(IDisplayObject* obj, bool enabled); // TESTED
108
109 // --- Geometry & Layout --- //
110 int getX_lua(const IDisplayObject* obj); // TESTED
111 int getY_lua(const IDisplayObject* obj); // TESTED
112 int getWidth_lua(const IDisplayObject* obj); // TESTED
113 int getHeight_lua(const IDisplayObject* obj); // TESTED
114 void setX_lua(IDisplayObject* obj, int p_x); // TESTED
115 void setY_lua(IDisplayObject* obj, int p_y); // TESTED
116 void setWidth_lua(IDisplayObject* obj, int width); // TESTED
117 void setHeight_lua(IDisplayObject* obj, int height); // TESTED
118
119 // --- Edge Anchors --- //
120 AnchorPoint getAnchorTop_lua(const IDisplayObject* obj); // TESTED
121 AnchorPoint getAnchorLeft_lua(const IDisplayObject* obj); // TESTED
122 AnchorPoint getAnchorBottom_lua(const IDisplayObject* obj); // TESTED
123 AnchorPoint getAnchorRight_lua(const IDisplayObject* obj); // TESTED
124 void setAnchorTop_lua(IDisplayObject* obj, AnchorPoint ap); // TESTED
125 void setAnchorLeft_lua(IDisplayObject* obj, AnchorPoint ap); // TESTED
126 void setAnchorBottom_lua(IDisplayObject* obj, AnchorPoint ap); // TESTED
127 void setAnchorRight_lua(IDisplayObject* obj, AnchorPoint ap); // TESTED
128
129 // --- World Edge Positions --- //
130 float getLeft_lua(const IDisplayObject* obj); // TESTED
131 float getRight_lua(const IDisplayObject* obj); // TESTED
132 float getTop_lua(const IDisplayObject* obj); // TESTED
133 float getBottom_lua(const IDisplayObject* obj); // TESTED
134 void setLeft_lua(IDisplayObject* obj, float p_left); // TESTED
135 void setRight_lua(IDisplayObject* obj, float p_right); // TESTED
136 void setTop_lua(IDisplayObject* obj, float p_top); // TESTED
137 void setBottom_lua(IDisplayObject* obj, float p_bottom); // TESTED
138
139 // --- Local Edge Positions --- //
140 float getLocalLeft_lua(const IDisplayObject* obj);
141 float getLocalRight_lua(const IDisplayObject* obj);
142 float getLocalTop_lua(const IDisplayObject* obj);
143 float getLocalBottom_lua(const IDisplayObject* obj);
144 void setLocalLeft_lua(IDisplayObject* obj, float p_left);
145 void setLocalRight_lua(IDisplayObject* obj, float p_right);
146 void setLocalTop_lua(IDisplayObject* obj, float p_top);
147 void setLocalBottom_lua(IDisplayObject* obj, float p_bottom);
148
149
150
151 // --- Orphan Retention Policy --- //
152 IDisplayObject::OrphanRetentionPolicy orphanPolicyFromString_lua(IDisplayObject* obj, const std::string& s); // TESTED
153 std::string orphanPolicyToString_lua(IDisplayObject* obj, IDisplayObject::OrphanRetentionPolicy p); // TESTED
154 void setOrphanRetentionPolicy_lua(IDisplayObject* obj, const std::string& policyStr); // TESTED (GC tests use string helper)
155 std::string getOrphanRetentionPolicyString_lua(IDisplayObject* obj); // TESTED
156
157 // Lua-accessible accessors for orphan grace (milliseconds)
158 int getOrphanGrace_lua(const IDisplayObject* obj); // TESTED (GC #4 uses getOrphanGrace)
159 void setOrphanGrace_lua(IDisplayObject* obj, std::chrono::milliseconds grace); // TESTED (GC #4 sets grace)
160
161}
OrphanRetentionPolicy
Definition SDOM_IDisplayObject.hpp:159
Contains all core classes and utilities for the SDOM library.
Definition lua_BindHelpers.hpp:7
void printTree_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:19
void setX_lua(IDisplayObject *obj, int p_x)
Definition lua_IDisplayObject.cpp:520
void setHidden_lua(IDisplayObject *obj, bool hidden)
Definition lua_IDisplayObject.cpp:505
float getLocalRight_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:547
void setName_lua(IDisplayObject *obj, const std::string &newName)
Definition lua_IDisplayObject.cpp:174
bool isVisible_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:506
std::string getName_handle_lua(DisplayHandle &self)
Definition lua_IDisplayObject.cpp:293
void setAnchorLeft_lua(IDisplayObject *obj, AnchorPoint ap)
Definition lua_IDisplayObject.cpp:531
void setDirty_lua(IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:15
bool isMouseHovered_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:499
float getRight_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:537
void setAnchorBottom_lua(IDisplayObject *obj, AnchorPoint ap)
Definition lua_IDisplayObject.cpp:532
bool isEnabled_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:502
void setLocalLeft_lua(IDisplayObject *obj, float p_left)
Definition lua_IDisplayObject.cpp:550
int getZOrder_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:408
void setKeyboardFocus_lua(IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:497
void setToLowestPriority_lua(IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:309
int getPriority_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:307
void setToLowestPriority_lua_any(IDisplayObject *obj, const sol::object &descriptor)
Definition lua_IDisplayObject.cpp:472
void setTabPriority_lua(IDisplayObject *obj, int index)
Definition lua_IDisplayObject.cpp:511
void setBottom_lua(IDisplayObject *obj, float p_bottom)
Definition lua_IDisplayObject.cpp:543
int getHeight_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:519
void setLocalTop_lua(IDisplayObject *obj, float p_top)
Definition lua_IDisplayObject.cpp:552
bool getDirty_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:14
float getLeft_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:536
bool removeDescendant_lua(IDisplayObject *obj, DisplayHandle descendant)
Definition lua_IDisplayObject.cpp:169
void setLeft_lua(IDisplayObject *obj, float p_left)
Definition lua_IDisplayObject.cpp:540
bool hasChild_lua(const IDisplayObject *obj, DisplayHandle child)
Definition lua_IDisplayObject.cpp:159
AnchorPoint getAnchorRight_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:529
bool isKeyboardFocused_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:498
void setColor_lua(IDisplayObject *obj, const sol::object &colorObj)
Definition lua_IDisplayObject.cpp:260
void removeEventListener_lua_any(IDisplayObject *obj, const sol::object &descriptor, const sol::object &maybe_listener, const sol::object &maybe_useCapture)
Definition lua_IDisplayObject.cpp:99
std::vector< int > getChildrenPriorities_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:370
std::string orphanPolicyToString_lua(IDisplayObject *obj, IDisplayObject::OrphanRetentionPolicy p)
Definition lua_IDisplayObject.cpp:571
void moveToTop_lua(IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:376
int getWidth_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:518
void setVisible_lua(IDisplayObject *obj, bool visible)
Definition lua_IDisplayObject.cpp:507
float getLocalLeft_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:546
void setRight_lua(IDisplayObject *obj, float p_right)
Definition lua_IDisplayObject.cpp:541
void setLocalBottom_lua(IDisplayObject *obj, float p_bottom)
Definition lua_IDisplayObject.cpp:553
void addEventListener_lua_any_short(IDisplayObject *obj, const sol::object &descriptor)
Definition lua_IDisplayObject.cpp:146
void setPriority_lua_any(IDisplayObject *obj, const sol::object &descriptor)
Definition lua_IDisplayObject.cpp:323
int getMinPriority_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:306
int getMaxPriority_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:305
int getX_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:516
AnchorPoint getAnchorLeft_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:527
void cleanAll_lua(IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:13
void setY_lua(IDisplayObject *obj, int p_y)
Definition lua_IDisplayObject.cpp:521
bool isClickable_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:500
void setZOrder_lua_any(IDisplayObject *obj, const sol::object &descriptor)
Definition lua_IDisplayObject.cpp:412
bool isDescendantOf_lua(IDisplayObject *obj, DisplayHandle ancestor)
Definition lua_IDisplayObject.cpp:166
std::string getType_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:175
void setPriority_lua(IDisplayObject *obj, int priority)
Definition lua_IDisplayObject.cpp:311
void setEnabled_lua(IDisplayObject *obj, bool enabled)
Definition lua_IDisplayObject.cpp:503
float getTop_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:538
void setHeight_lua(IDisplayObject *obj, int height)
Definition lua_IDisplayObject.cpp:523
void setTabEnabled_lua(IDisplayObject *obj, bool enabled)
Definition lua_IDisplayObject.cpp:513
bool isAncestorOf_lua(IDisplayObject *obj, DisplayHandle descendant)
Definition lua_IDisplayObject.cpp:164
DisplayHandle getChild_lua(const IDisplayObject *obj, std::string name)
Definition lua_IDisplayObject.cpp:156
IDisplayObject::OrphanRetentionPolicy orphanPolicyFromString_lua(IDisplayObject *obj, const std::string &s)
Definition lua_IDisplayObject.cpp:556
float getLocalBottom_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:549
bool isTabEnabled_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:512
bool removeChild_lua(IDisplayObject *obj, DisplayHandle child)
Definition lua_IDisplayObject.cpp:157
bool removeFromParent_lua(IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:168
void setPriority_lua_target(IDisplayObject *obj, const sol::object &descriptor, int value)
Definition lua_IDisplayObject.cpp:344
void setToHighestPriority_lua_any(IDisplayObject *obj, const sol::object &descriptor)
Definition lua_IDisplayObject.cpp:448
float getLocalTop_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:548
void setAnchorRight_lua(IDisplayObject *obj, AnchorPoint ap)
Definition lua_IDisplayObject.cpp:533
void removeEventListener_lua_any_short(IDisplayObject *obj, const sol::object &descriptor)
Definition lua_IDisplayObject.cpp:150
int getOrphanGrace_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:596
std::string getName_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:173
void setWidth_lua(IDisplayObject *obj, int width)
Definition lua_IDisplayObject.cpp:522
void setParent_lua(IDisplayObject *obj, const DisplayHandle &parent)
Definition lua_IDisplayObject.cpp:161
bool isDirty_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:16
void setClickable_lua(IDisplayObject *obj, bool clickable)
Definition lua_IDisplayObject.cpp:501
void removeEventListener_lua(IDisplayObject *obj, EventType &type, sol::function listener, bool useCapture)
Definition lua_IDisplayObject.cpp:33
void addEventListener_lua_any(IDisplayObject *obj, const sol::object &descriptor, const sol::object &maybe_listener, const sol::object &maybe_useCapture, const sol::object &maybe_priority)
Definition lua_IDisplayObject.cpp:47
AnchorPoint getAnchorBottom_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:528
void setOrphanGrace_lua(IDisplayObject *obj, std::chrono::milliseconds grace)
Definition lua_IDisplayObject.cpp:602
void addChild_lua(IDisplayObject *obj, DisplayHandle child)
Definition lua_IDisplayObject.cpp:155
void sortChildrenByPriority_lua(IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:310
void setBounds_lua(IDisplayObject *obj, const sol::object &bobj)
Definition lua_IDisplayObject.cpp:216
void setToHighestPriority_lua(IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:308
void setTop_lua(IDisplayObject *obj, float p_top)
Definition lua_IDisplayObject.cpp:542
AnchorPoint
Reference points for anchoring child edges to a parent.
Definition SDOM.hpp:137
Bounds getBounds_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:177
int getY_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:517
SDL_Color getColor_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:258
int getTabPriority_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:510
void setZOrder_lua(IDisplayObject *obj, int z_order)
Definition lua_IDisplayObject.cpp:409
float getBottom_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:539
AnchorPoint getAnchorTop_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:526
void setOrphanRetentionPolicy_lua(IDisplayObject *obj, const std::string &policyStr)
Definition lua_IDisplayObject.cpp:581
void moveToTop_lua_any(IDisplayObject *obj, const sol::object &descriptor)
Definition lua_IDisplayObject.cpp:384
void addEventListener_lua(IDisplayObject *obj, EventType &type, sol::function listener, bool useCapture, int priority)
Definition lua_IDisplayObject.cpp:22
void setLocalRight_lua(IDisplayObject *obj, float p_right)
Definition lua_IDisplayObject.cpp:551
std::string getOrphanRetentionPolicyString_lua(IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:589
DisplayHandle getParent_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:160
void setAnchorTop_lua(IDisplayObject *obj, AnchorPoint ap)
Definition lua_IDisplayObject.cpp:530
bool isHidden_lua(const IDisplayObject *obj)
Definition lua_IDisplayObject.cpp:504
void setType_lua(IDisplayObject *obj, const std::string &newType)
Definition lua_IDisplayObject.cpp:176