SDOM - Simple SDL Document Object Model
A lightweight, extensible Document Object Model for SDL-based applications.
Loading...
Searching...
No Matches
SDOM_IconButton.hpp
Go to the documentation of this file.
1// SDOM_IconButton.hpp
2
3#pragma once
4
8
9namespace SDOM
10{
11
12
14 {
16
17 public:
18 // --- Type Info --- //
19 static constexpr const char* TypeName = "IconButton";
20
21 // --- Initialization Struct --- //
23 {
25 {
26 // from IDisplayObject
27 x = 0;
28 y = 0;
29 width = 8; // default width is 8
30 height = 8; // default height is 8
31 name = TypeName;
32 type = TypeName;
33 color = {96, 0, 96, 255}; // IconButton color
34 tabEnabled = false; // IconButtons are not tab-enabled by default
35 isClickable = false; // IconButtons are not clickable by default
36 }
37 IconIndex icon_index = IconIndex::Hamburger; // default icon is Hamburger menu
38 std::string icon_resource = "internal_icon_8x8"; // Default to internal 8x8 sprite sheet
39 int icon_width = 8; // default icon width is 8
40 int icon_height = 8; // default icon height is 8
41
42 }; // END: InitStruct
43 protected:
44 // --- Constructors --- //
45 IconButton(const InitStruct& init);
46 IconButton(const sol::table& config);
47
48 public:
49
50 // --- Static Factory Methods --- //
51 static std::unique_ptr<IDisplayObject> CreateFromLua(const sol::table& config) {
52 return std::unique_ptr<IDisplayObject>(new IconButton(config));
53 }
54 static std::unique_ptr<IDisplayObject> CreateFromInitStruct(const IDisplayObject::InitStruct& baseInit) {
55 const auto& IconButtonInit = static_cast<const IconButton::InitStruct&>(baseInit);
56 return std::unique_ptr<IDisplayObject>(new IconButton(IconButtonInit));
57 }
58
59 IconButton() = default;
60 virtual ~IconButton() = default;
61
62 // --- Virtual Methods --- //
63 virtual bool onInit() override; // Called when the display object is initialized
64 virtual void onRender() override; // Called to render the display object
65 virtual void onQuit() override; // Called when the display object is being destroyed
66 virtual void onUpdate(float fElapsedTime) override; // Called every frame to update the display object
67 virtual void onEvent(const Event& event) override; // Called when an event occurs
68
70
72 void setIconIndex(IconIndex index) { icon_index_ = index; }
73
74 // Return the raw AssetHandle for the internal SpriteSheet so callers
75 // can manipulate the asset handle without reaching into internals.
77
78 // Convenience: return raw SpriteSheet* (or nullptr) for quick checks.
80
81 protected:
82 AssetHandle iconSpriteSheet_; // internal icon SpriteSheet object for IconButton
83 std::string icon_resource_ = "internal_icon_8x8"; // default icon resource name
84 IconIndex icon_index_ = IconIndex::Hamburger; // default icon is Hamburger menu
85 int icon_width_ = 8; // default icon width is 8
86 int icon_height_ = 8; // default icon height is 8
87
88 // --- Lua Registration --- //
89 virtual void _registerLuaBindings(const std::string& typeName, sol::state_view lua);
90
91 }; // END: class IconButton : public IDisplayObject
92
93} // END namespace SDOM
Definition SDOM_AssetHandle.hpp:13
T * as() const
Definition SDOM_AssetHandle.hpp:38
Definition SDOM_Event.hpp:55
Definition SDOM_IButtonObject.hpp:125
Definition SDOM_IDisplayObject.hpp:153
Definition SDOM_IconButton.hpp:14
static std::unique_ptr< IDisplayObject > CreateFromLua(const sol::table &config)
Definition SDOM_IconButton.hpp:51
static std::unique_ptr< IDisplayObject > CreateFromInitStruct(const IDisplayObject::InitStruct &baseInit)
Definition SDOM_IconButton.hpp:54
IconIndex getIconIndex() const
Definition SDOM_IconButton.hpp:71
IconIndex icon_index_
Definition SDOM_IconButton.hpp:84
static constexpr const char * TypeName
Definition SDOM_IconButton.hpp:19
virtual void _registerLuaBindings(const std::string &typeName, sol::state_view lua)
Definition SDOM_IconButton.cpp:162
AssetHandle iconSpriteSheet_
Definition SDOM_IconButton.hpp:82
AssetHandle getIconObject() const
Definition SDOM_IconButton.hpp:69
virtual void onEvent(const Event &event) override
Definition SDOM_IconButton.cpp:142
virtual void onRender() override
Definition SDOM_IconButton.cpp:119
std::string icon_resource_
Definition SDOM_IconButton.hpp:83
int icon_height_
Definition SDOM_IconButton.hpp:86
virtual bool onInit() override
Definition SDOM_IconButton.cpp:90
SpriteSheet * getSpriteSheet() const
Definition SDOM_IconButton.hpp:79
virtual void onUpdate(float fElapsedTime) override
Definition SDOM_IconButton.cpp:137
IconButton()=default
virtual ~IconButton()=default
int icon_width_
Definition SDOM_IconButton.hpp:85
void setIconIndex(IconIndex index)
Definition SDOM_IconButton.hpp:72
virtual void onQuit() override
Definition SDOM_IconButton.cpp:113
AssetHandle getSpriteSheetHandle() const
Definition SDOM_IconButton.hpp:76
Definition SDOM_SpriteSheet.hpp:13
Contains all core classes and utilities for the SDOM library.
Definition lua_BindHelpers.hpp:7
IconIndex
Definition SDOM_IconIndex.hpp:12
Definition SDOM_IDisplayObject.hpp:187
std::string type
Definition SDOM_IDisplayObject.hpp:189
float height
Definition SDOM_IDisplayObject.hpp:193
bool tabEnabled
Definition SDOM_IDisplayObject.hpp:212
std::string name
Definition SDOM_IDisplayObject.hpp:188
float width
Definition SDOM_IDisplayObject.hpp:192
SDL_Color color
Definition SDOM_IDisplayObject.hpp:194
float x
Definition SDOM_IDisplayObject.hpp:190
float y
Definition SDOM_IDisplayObject.hpp:191
bool isClickable
Definition SDOM_IDisplayObject.hpp:208
Definition SDOM_IconButton.hpp:23
InitStruct()
Definition SDOM_IconButton.hpp:24
int icon_height
Definition SDOM_IconButton.hpp:40
IconIndex icon_index
Definition SDOM_IconButton.hpp:37
int icon_width
Definition SDOM_IconButton.hpp:39
std::string icon_resource
Definition SDOM_IconButton.hpp:38