96#ifndef __SDOM_IDISPLAY_OBJECT_HPP__
97#define __SDOM_IDISPLAY_OBJECT_HPP__
171 std::chrono::steady_clock::time_point orphanedAt_ = std::chrono::steady_clock::now();
184 static constexpr const char*
TypeName =
"IDisplayObject";
194 SDL_Color
color = {255, 0, 255, 255};
227 virtual bool onInit()
override;
228 virtual void onQuit()
override;
229 virtual void onUpdate(
float fElapsedTime);
250 void printTree(
int depth = 0,
bool isLast =
true,
const std::vector<bool>& hasMoreSiblings = {})
const;
253 void addEventListener(EventType& type, std::function<
void(Event&)> listener,
bool useCapture =
false,
int priority = 0);
254 void removeEventListener(EventType& type, std::function<
void(Event&)> listener,
bool useCapture =
false);
257 void queue_event(
const EventType& type, std::function<
void(Event&)> init_payload);
260 void addChild(DisplayHandle child,
bool useWorld =
false,
int worldX = 0,
int worldY = 0);
261 DisplayHandle
getChild(std::string name)
const;
264 const std::vector<DisplayHandle>&
getChildren()
const;
267 bool hasChild(DisplayHandle child)
const;
constexpr int ORPHAN_GRACE_PERIOD
Definition SDOM.hpp:78
Definition SDOM_DisplayHandle.hpp:24
Definition SDOM_EventType.hpp:49
Definition SDOM_Event.hpp:55
Definition SDOM_Factory.hpp:43
Definition SDOM_IDataObject.hpp:107
Definition SDOM_IDisplayObject.hpp:153
float getLocalWidth() const
Definition SDOM_IDisplayObject.hpp:353
bool operator>=(const IDisplayObject &other) const
Definition SDOM_IDisplayObject.hpp:182
std::vector< int > getChildrenPriorities() const
Definition SDOM_IDisplayObject.cpp:773
virtual void _registerLuaBindings(const std::string &typeName, sol::state_view lua)
Definition SDOM_IDisplayObject.cpp:1314
IDisplayObject & setPriority(int priority)
Definition SDOM_IDisplayObject.cpp:761
AnchorPoint getAnchorBottom() const
Definition SDOM_IDisplayObject.hpp:333
Bounds getBounds() const
Definition SDOM_IDisplayObject.hpp:283
void addEventListener(EventType &type, std::function< void(Event &)> listener, bool useCapture=false, int priority=0)
Definition SDOM_IDisplayObject.cpp:572
float getLocalY() const
Definition SDOM_IDisplayObject.hpp:352
IDisplayObject & setTop(float p_top)
Definition SDOM_IDisplayObject.cpp:1248
SDL_Color backgroundColor_
Definition SDOM_IDisplayObject.hpp:374
IDisplayObject & setColor(const SDL_Color &color)
Definition SDOM_IDisplayObject.hpp:286
void triggerEventListeners(Event &event, bool useCapture)
Definition SDOM_IDisplayObject.cpp:589
float bottom_
Definition SDOM_IDisplayObject.hpp:368
bool isHidden_
Definition SDOM_IDisplayObject.hpp:387
int getMinPriority() const
Definition SDOM_IDisplayObject.cpp:643
sol::usertype< IDisplayObject > objHandleType_
Definition SDOM_IDisplayObject.hpp:411
IDisplayObject & setParent(const DisplayHandle &parent)
Definition SDOM_IDisplayObject.cpp:443
IDisplayObject & setBounds(const Bounds &b)
Definition SDOM_IDisplayObject.hpp:284
bool removeDescendant(DisplayHandle descendant)
Definition SDOM_IDisplayObject.cpp:880
IDisplayObject & setToLowestPriority()
Definition SDOM_IDisplayObject.cpp:674
bool hasChild(DisplayHandle child) const
Definition SDOM_IDisplayObject.cpp:801
bool isAncestorOf(DisplayHandle descendant) const
Definition SDOM_IDisplayObject.cpp:808
int getHeight() const
Definition SDOM_IDisplayObject.cpp:974
int getMaxPriority() const
Definition SDOM_IDisplayObject.cpp:625
float getTop() const
Definition SDOM_IDisplayObject.cpp:1132
IDisplayObject & setY(int p_y)
Definition SDOM_IDisplayObject.cpp:1023
IDisplayObject & setType(const std::string &newType)
Definition SDOM_IDisplayObject.hpp:282
static constexpr const char * TypeName
Definition SDOM_IDisplayObject.hpp:184
float getLocalBottom() const
Definition SDOM_IDisplayObject.hpp:359
IDisplayObject & setTabEnabled(bool enabled)
Definition SDOM_IDisplayObject.cpp:931
void setKeyboardFocus()
Definition SDOM_IDisplayObject.cpp:951
bool getDirty() const
Definition SDOM_IDisplayObject.hpp:236
bool isClickable_
Definition SDOM_IDisplayObject.hpp:385
IDisplayObject & setLeft(float p_left)
Definition SDOM_IDisplayObject.cpp:1184
std::chrono::milliseconds getOrphanGrace() const
Definition SDOM_IDisplayObject.hpp:166
SDL_Color borderColor_
Definition SDOM_IDisplayObject.hpp:375
bool isDescendantOf(DisplayHandle ancestor) const
Definition SDOM_IDisplayObject.cpp:839
int getZOrder() const
Definition SDOM_IDisplayObject.hpp:298
float right_
Definition SDOM_IDisplayObject.hpp:368
void cleanAll()
Definition SDOM_IDisplayObject.cpp:516
float getLocalX() const
Definition SDOM_IDisplayObject.hpp:351
bool removeChild(DisplayHandle child)
Definition SDOM_IDisplayObject.cpp:397
bool isVisible() const
Definition SDOM_IDisplayObject.hpp:311
void setAnchorLeft(AnchorPoint ap)
Definition SDOM_IDisplayObject.cpp:1043
AnchorPoint anchorRight_
Definition SDOM_IDisplayObject.hpp:382
AnchorPoint anchorLeft_
Definition SDOM_IDisplayObject.hpp:380
float top_
Definition SDOM_IDisplayObject.hpp:368
bool operator==(const IDisplayObject &other) const
Definition SDOM_IDisplayObject.hpp:177
bool tabEnabled_
Definition SDOM_IDisplayObject.hpp:389
bool isEnabled_
Definition SDOM_IDisplayObject.hpp:386
std::unordered_map< EventType, std::vector< ListenerEntry >, EventTypeHash > captureEventListeners
Definition SDOM_IDisplayObject.hpp:399
std::unordered_map< EventType, std::vector< ListenerEntry >, EventTypeHash > bubblingEventListeners
Definition SDOM_IDisplayObject.hpp:400
int getY() const
Definition SDOM_IDisplayObject.cpp:1000
AnchorPoint getAnchorRight() const
Definition SDOM_IDisplayObject.hpp:334
IDisplayObject & moveToTop()
Definition SDOM_IDisplayObject.cpp:783
int getTabPriority() const
Definition SDOM_IDisplayObject.cpp:915
void setAnchorBottom(AnchorPoint ap)
Definition SDOM_IDisplayObject.cpp:1067
bool operator>(const IDisplayObject &other) const
Definition SDOM_IDisplayObject.hpp:180
float getLocalLeft() const
Definition SDOM_IDisplayObject.hpp:356
float getLocalHeight() const
Definition SDOM_IDisplayObject.hpp:354
IDisplayObject & setToHighestPriority()
Definition SDOM_IDisplayObject.cpp:661
float getLeft() const
Definition SDOM_IDisplayObject.cpp:1078
IDisplayObject & setZOrder(int z_order)
Definition SDOM_IDisplayObject.hpp:299
bool bIsDirty_
Definition SDOM_IDisplayObject.hpp:370
IDisplayObject & setLocalTop(float value)
Definition SDOM_IDisplayObject.hpp:363
IDisplayObject & setClickable(bool clickable)
Definition SDOM_IDisplayObject.hpp:306
IDisplayObject & setX(int p_x)
Definition SDOM_IDisplayObject.cpp:1006
IDisplayObject & setOrphanRetentionPolicy(OrphanRetentionPolicy policy)
Definition SDOM_IDisplayObject.hpp:165
void setAnchorRight(AnchorPoint ap)
Definition SDOM_IDisplayObject.cpp:1051
void printTree(int depth=0, bool isLast=true, const std::vector< bool > &hasMoreSiblings={}) const
Definition SDOM_IDisplayObject.cpp:528
std::string type_
Definition SDOM_IDisplayObject.hpp:369
SDL_Color foregroundColor_
Definition SDOM_IDisplayObject.hpp:373
IDisplayObject & setRight(float p_right)
Definition SDOM_IDisplayObject.cpp:1216
IDisplayObject & setDirty()
Definition SDOM_IDisplayObject.hpp:237
float getLocalRight() const
Definition SDOM_IDisplayObject.hpp:357
virtual bool onUnitTest()
Runs unit tests for this object.
Definition SDOM_IDisplayObject.hpp:232
void queue_event(const EventType &type, std::function< void(Event &)> init_payload)
Definition SDOM_IDisplayObject.cpp:612
IDisplayObject & setOrphanGrace(std::chrono::milliseconds grace)
Definition SDOM_IDisplayObject.hpp:167
IDisplayObject & setDirty(bool grime)
Definition SDOM_IDisplayObject.hpp:242
std::string getType() const
Definition SDOM_IDisplayObject.hpp:281
void removeOrphan_(const DisplayHandle &orphan)
Definition SDOM_IDisplayObject.cpp:304
bool operator!=(const IDisplayObject &other) const
Definition SDOM_IDisplayObject.hpp:179
OrphanRetentionPolicy
Definition SDOM_IDisplayObject.hpp:159
OrphanRetentionPolicy getOrphanRetentionPolicy() const
Definition SDOM_IDisplayObject.hpp:164
int priority_
Definition SDOM_IDisplayObject.hpp:384
void addChild(DisplayHandle child, bool useWorld=false, int worldX=0, int worldY=0)
Definition SDOM_IDisplayObject.cpp:357
virtual bool onInit() override
Definition SDOM_IDisplayObject.cpp:195
virtual void onRender()=0
virtual void onUpdate(float fElapsedTime)
Definition SDOM_IDisplayObject.cpp:207
bool removeFromParent()
Definition SDOM_IDisplayObject.cpp:865
const std::vector< DisplayHandle > & getChildren() const
Definition SDOM_IDisplayObject.cpp:440
bool operator<=(const IDisplayObject &other) const
Definition SDOM_IDisplayObject.hpp:181
AnchorPoint anchorTop_
Definition SDOM_IDisplayObject.hpp:379
bool isClickable() const
Definition SDOM_IDisplayObject.hpp:305
IDisplayObject & setEnabled(bool enabled)
Definition SDOM_IDisplayObject.hpp:308
IDisplayObject(const IDisplayObject &other)=delete
DisplayHandle parent_
Definition SDOM_IDisplayObject.hpp:390
AnchorPoint anchorBottom_
Definition SDOM_IDisplayObject.hpp:381
bool operator<(const IDisplayObject &other) const
Definition SDOM_IDisplayObject.hpp:178
IDisplayObject & setLocalRight(float value)
Definition SDOM_IDisplayObject.hpp:362
IDisplayObject & setHidden(bool hidden)
Definition SDOM_IDisplayObject.hpp:310
IDisplayObject & setLocalBottom(float value)
Definition SDOM_IDisplayObject.hpp:364
bool hasEventListeners(const EventType &type, bool useCapture) const
Definition SDOM_IDisplayObject.cpp:603
int getPriority() const
Definition SDOM_IDisplayObject.hpp:291
bool isKeyboardFocused() const
Definition SDOM_IDisplayObject.cpp:955
bool isEnabled() const
Definition SDOM_IDisplayObject.hpp:307
bool isTabEnabled() const
Definition SDOM_IDisplayObject.cpp:926
DisplayHandle getParent() const
Definition SDOM_IDisplayObject.cpp:441
void removeEventListener(EventType &type, std::function< void(Event &)> listener, bool useCapture=false)
Definition SDOM_IDisplayObject.cpp:554
std::vector< DisplayHandle > children_
Definition SDOM_IDisplayObject.hpp:391
SDL_Color color_
Definition SDOM_IDisplayObject.hpp:371
SDL_Color dropshadowColor_
Definition SDOM_IDisplayObject.hpp:377
int getWidth() const
Definition SDOM_IDisplayObject.cpp:967
DisplayHandle getChild(std::string name) const
Definition SDOM_IDisplayObject.cpp:376
IDisplayObject & setBottom(float p_bottom)
Definition SDOM_IDisplayObject.cpp:1280
virtual void onEvent(const Event &event)
Definition SDOM_IDisplayObject.cpp:213
SDL_Color outlineColor_
Definition SDOM_IDisplayObject.hpp:376
float getBottom() const
Definition SDOM_IDisplayObject.cpp:1157
AnchorPoint getAnchorLeft() const
Definition SDOM_IDisplayObject.hpp:332
int z_order_
Definition SDOM_IDisplayObject.hpp:383
IDisplayObject & setVisible(bool visible)
Definition SDOM_IDisplayObject.hpp:312
float getLocalTop() const
Definition SDOM_IDisplayObject.hpp:358
void setAnchorTop(AnchorPoint ap)
Definition SDOM_IDisplayObject.cpp:1059
IDisplayObject & setLocalLeft(float value)
Definition SDOM_IDisplayObject.hpp:361
int getX() const
Definition SDOM_IDisplayObject.cpp:994
IDisplayObject & sortChildrenByPriority()
Definition SDOM_IDisplayObject.cpp:687
int tabPriority_
Definition SDOM_IDisplayObject.hpp:388
IDisplayObject & setWidth(int width)
Definition SDOM_IDisplayObject.cpp:981
bool isDirty() const
Definition SDOM_IDisplayObject.hpp:247
void attachChild_(DisplayHandle child, DisplayHandle parent, bool useWorld=false, int worldX=0, int worldY=0)
Definition SDOM_IDisplayObject.cpp:219
bool isHidden() const
Definition SDOM_IDisplayObject.hpp:309
float getRight() const
Definition SDOM_IDisplayObject.cpp:1107
SDL_Color getColor() const
Definition SDOM_IDisplayObject.hpp:285
AnchorPoint getAnchorTop() const
Definition SDOM_IDisplayObject.hpp:331
IDisplayObject & setTabPriority(int index)
Definition SDOM_IDisplayObject.cpp:920
virtual ~IDisplayObject()
Definition SDOM_IDisplayObject.cpp:189
float left_
Definition SDOM_IDisplayObject.hpp:368
bool isMouseHovered() const
Definition SDOM_IDisplayObject.cpp:961
virtual void onQuit() override
Definition SDOM_IDisplayObject.cpp:202
IDisplayObject & setHeight(int height)
Definition SDOM_IDisplayObject.cpp:987
Contains all core classes and utilities for the SDOM library.
Definition lua_BindHelpers.hpp:7
AnchorPoint
Reference points for anchoring child edges to a parent.
Definition SDOM.hpp:137
@ TOP_LEFT
Top-left corner of the parent.
Represents a rectangle's position and size in 2D space.
Definition SDOM.hpp:307
float left
Left edge coordinate.
Definition SDOM.hpp:308
float top
Top edge coordinate.
Definition SDOM.hpp:309
float right
Right edge coordinate.
Definition SDOM.hpp:310
float bottom
Bottom edge coordinate.
Definition SDOM.hpp:311
Definition SDOM_EventTypeHash.hpp:49
Definition SDOM_IDisplayObject.hpp:187
SDL_Color foregroundColor
Definition SDOM_IDisplayObject.hpp:196
SDL_Color dropshadowColor
Definition SDOM_IDisplayObject.hpp:200
std::string type
Definition SDOM_IDisplayObject.hpp:189
AnchorPoint anchorLeft
Definition SDOM_IDisplayObject.hpp:203
float height
Definition SDOM_IDisplayObject.hpp:193
bool tabEnabled
Definition SDOM_IDisplayObject.hpp:212
std::string name
Definition SDOM_IDisplayObject.hpp:188
AnchorPoint anchorBottom
Definition SDOM_IDisplayObject.hpp:204
AnchorPoint anchorTop
Definition SDOM_IDisplayObject.hpp:202
SDL_Color backgroundColor
Definition SDOM_IDisplayObject.hpp:197
float width
Definition SDOM_IDisplayObject.hpp:192
int z_order
Definition SDOM_IDisplayObject.hpp:206
SDL_Color color
Definition SDOM_IDisplayObject.hpp:194
float x
Definition SDOM_IDisplayObject.hpp:190
int priority
Definition SDOM_IDisplayObject.hpp:207
SDL_Color outlineColor
Definition SDOM_IDisplayObject.hpp:199
float y
Definition SDOM_IDisplayObject.hpp:191
int tabPriority
Definition SDOM_IDisplayObject.hpp:211
bool isClickable
Definition SDOM_IDisplayObject.hpp:208
bool isEnabled
Definition SDOM_IDisplayObject.hpp:209
SDL_Color borderColor
Definition SDOM_IDisplayObject.hpp:198
AnchorPoint anchorRight
Definition SDOM_IDisplayObject.hpp:205
bool isHidden
Definition SDOM_IDisplayObject.hpp:210
Definition SDOM_IDisplayObject.hpp:394
EventType eventType
Definition SDOM_IDisplayObject.hpp:397
std::function< void(Event &)> listener
Definition SDOM_IDisplayObject.hpp:395
int priority
Definition SDOM_IDisplayObject.hpp:396