SDOM - Simple SDL Document Object Model
A lightweight, extensible Document Object Model for SDL-based applications.
Loading...
Searching...
No Matches
SDOM_RadioButton.hpp
Go to the documentation of this file.
1// SDOM_RadioButton.hpp
2#pragma once
3
5
6namespace SDOM
7{
8
10
12 {
13 using SUPER = TristateButton;
14
15 public:
16 // --- Type Info --- //
17 static constexpr const char* TypeName = "RadioButton";
18
19 // --- Initialization Struct --- //
21 {
23 {
24 // from IDisplayObject
25 name = TypeName;
26 type = TypeName;
27 color = {96, 0, 96, 255}; // Icon Color
28 tabEnabled = false;
29 isClickable = true;
30 // from TristateButton
31 text = TypeName;
32 font_size = 8; // default font size is 8
33 label_color = {0, 255, 255, 255}; // default label color is white
34 border_color = {0, 0, 0, 128}; // transparent
36 icon_resource = "internal_icon_8x8"; // Default to internal 8x8 sprite sheet
37 // IconIndex icon_index = IconIndex::Checkbox_Empty;
38 icon_width = 8;
39 icon_height = 8;
40 font_resource = "internal_font_8x8";
41 font_width = 8;
42 font_height = 8;
43 border = false; // default to no border
44 }
45 // Additional CheckButton-specific initialization parameters can be added here in the future.
46 bool selected = false; // whether this radio button is selected (checked) initially
47
48 }; // END: InitStruct
49
50
51 protected:
52 // --- Constructors --- //
53 RadioButton(const InitStruct& init);
54 RadioButton(const sol::table& config);
55
56 public:
57 // --- Static Factory Methods --- //
58 static std::unique_ptr<IDisplayObject> CreateFromLua(const sol::table& config) {
59 return std::unique_ptr<IDisplayObject>(new RadioButton(config));
60 }
61 static std::unique_ptr<IDisplayObject> CreateFromInitStruct(const IDisplayObject::InitStruct& baseInit) {
62 const auto& RadioButtonInit = static_cast<const RadioButton::InitStruct&>(baseInit);
63 return std::unique_ptr<IDisplayObject>(new RadioButton(RadioButtonInit));
64 }
65
66 // --- Default Constructor and Virtual Destructor --- //
67 RadioButton() = default;
68 virtual ~RadioButton() {};
69
70 // --- Lifecycle & Core Virtuals --- //
71 virtual bool onInit() override;
72 virtual void onQuit() override;
73 virtual void onUpdate(float fElapsedTime) override;
74 virtual void onEvent(const Event& event) override;
75 virtual void onRender() override;
76 virtual bool onUnitTest() override;
77
78 // --- Virtual State Accessors (From IButtonObject) --- //
79 virtual ButtonState getState() const;
80 virtual void setState(ButtonState state);
81
82 protected:
83 // --- Protected Virtual Methods (From IButtonObject) --- //
84 virtual void onStateChanged(ButtonState oldState, ButtonState newState) override;
85 virtual IconIndex iconIndexForState(ButtonState state) const override;
86
87 // --- Protected Helpers --- //
88 void clearSiblings_();
89
90 // --- Data Members --- //
91 bool selected_ = false; // whether this radio button is selected (checked)
92
93 // --- Lua Registration --- //
94 virtual void _registerLuaBindings(const std::string& typeName, sol::state_view lua);
95
96 }; // END: class RadioButton
97
98} // END: namespace SDOM
Definition SDOM_Event.hpp:55
Definition SDOM_IDisplayObject.hpp:153
Definition SDOM_RadioButton.hpp:12
virtual bool onInit() override
Definition SDOM_RadioButton.cpp:47
static std::unique_ptr< IDisplayObject > CreateFromInitStruct(const IDisplayObject::InitStruct &baseInit)
Definition SDOM_RadioButton.hpp:61
static constexpr const char * TypeName
Definition SDOM_RadioButton.hpp:17
virtual void onEvent(const Event &event) override
Definition SDOM_RadioButton.cpp:72
virtual void _registerLuaBindings(const std::string &typeName, sol::state_view lua)
Definition SDOM_RadioButton.cpp:182
void clearSiblings_()
Definition SDOM_RadioButton.cpp:164
virtual IconIndex iconIndexForState(ButtonState state) const override
Definition SDOM_RadioButton.cpp:152
virtual void setState(ButtonState state)
Definition SDOM_RadioButton.cpp:104
virtual void onUpdate(float fElapsedTime) override
Definition SDOM_RadioButton.cpp:58
bool selected_
Definition SDOM_RadioButton.hpp:91
virtual bool onUnitTest() override
Runs unit tests for this object.
Definition SDOM_RadioButton.cpp:93
virtual void onStateChanged(ButtonState oldState, ButtonState newState) override
Definition SDOM_RadioButton.cpp:147
virtual void onRender() override
Definition SDOM_RadioButton.cpp:87
static std::unique_ptr< IDisplayObject > CreateFromLua(const sol::table &config)
Definition SDOM_RadioButton.hpp:58
virtual void onQuit() override
Definition SDOM_RadioButton.cpp:53
RadioButton()=default
virtual ButtonState getState() const
Definition SDOM_RadioButton.cpp:99
virtual ~RadioButton()
Definition SDOM_RadioButton.hpp:68
Definition SDOM_TristateButton.hpp:16
TristateButton()=default
Contains all core classes and utilities for the SDOM library.
Definition lua_BindHelpers.hpp:7
IconIndex
Definition SDOM_IconIndex.hpp:12
SDOM::IDisplayObject SUPER
Definition SDOM_CheckButton.hpp:9
ButtonState
Definition SDOM_IButtonObject.hpp:13
Definition SDOM_IDisplayObject.hpp:187
std::string type
Definition SDOM_IDisplayObject.hpp:189
bool tabEnabled
Definition SDOM_IDisplayObject.hpp:212
std::string name
Definition SDOM_IDisplayObject.hpp:188
SDL_Color color
Definition SDOM_IDisplayObject.hpp:194
bool isClickable
Definition SDOM_IDisplayObject.hpp:208
Definition SDOM_RadioButton.hpp:21
bool selected
Definition SDOM_RadioButton.hpp:46
InitStruct()
Definition SDOM_RadioButton.hpp:22
Definition SDOM_TristateButton.hpp:25
bool border
Definition SDOM_TristateButton.hpp:48
std::string icon_resource
Definition SDOM_TristateButton.hpp:41
int font_height
Definition SDOM_TristateButton.hpp:47
ButtonState state
Definition SDOM_TristateButton.hpp:40
int font_size
Definition SDOM_TristateButton.hpp:37
int icon_width
Definition SDOM_TristateButton.hpp:43
int icon_height
Definition SDOM_TristateButton.hpp:44
std::string font_resource
Definition SDOM_TristateButton.hpp:45
std::string text
Definition SDOM_TristateButton.hpp:36
SDL_Color label_color
Definition SDOM_TristateButton.hpp:38
int font_width
Definition SDOM_TristateButton.hpp:46
SDL_Color border_color
Definition SDOM_TristateButton.hpp:39