SDOM - Simple SDL Document Object Model
A lightweight, extensible Document Object Model for SDL-based applications.
Loading...
Searching...
No Matches
SDOM_TristateButton.hpp
Go to the documentation of this file.
1// SDOM_TristateButton.hpp
2#pragma once
3
4#include <string>
10#include <SDOM/SDOM_Label.hpp>
11
12namespace SDOM
13{
14
16{
18
19public:
20 // --- Type Info --- //
21 static constexpr const char* TypeName = "TristateButton";
22
23 // --- Initialization Struct --- //
25 {
27 {
28 // from IDisplayObject
29 name = TypeName;
30 type = TypeName;
31 color = {96, 0, 96, 255}; // Icon Color
32 tabEnabled = false;
33 isClickable = true;
34 }
35 // TristateButton Initialization Properties
36 std::string text = TypeName;
37 int font_size = 8; // default font size is 8
38 SDL_Color label_color = {0, 255, 255, 255}; // default label color is white
39 SDL_Color border_color = {0, 0, 0, 128}; // transparent
41 std::string icon_resource = "internal_icon_8x8"; // Default to internal 8x8 sprite sheet
42 // IconIndex icon_index = IconIndex::Checkbox_Empty;
43 int icon_width = 8;
44 int icon_height = 8;
45 std::string font_resource = "internal_font_8x8";
46 int font_width = 8;
47 int font_height = 8;
48 bool border = false; // default to no border
49 }; // END: InitStruct
50
51
52protected:
53 // --- Constructors --- //
54 TristateButton(const InitStruct& init);
55 TristateButton(const sol::table& config);
56
57public:
58 // --- Static Factory Methods --- //
59 static std::unique_ptr<IDisplayObject> CreateFromLua(const sol::table& config) {
60 return std::unique_ptr<IDisplayObject>(new TristateButton(config));
61 }
62 static std::unique_ptr<IDisplayObject> CreateFromInitStruct(const IDisplayObject::InitStruct& baseInit) {
63 const auto& TristateButtonInit = static_cast<const TristateButton::InitStruct&>(baseInit);
64 return std::unique_ptr<IDisplayObject>(new TristateButton(TristateButtonInit));
65 }
66
67 // --- Default Constructor and Virtual Destructor --- //
68 TristateButton() = default;
69 virtual ~TristateButton() {};
70
71 // --- Lifecycle & Core Virtuals --- //
72 virtual bool onInit() override;
73 virtual void onQuit() override;
74 virtual void onUpdate(float fElapsedTime) override;
75 virtual void onEvent(const Event& event) override;
76 virtual void onRender() override;
77 virtual bool onUnitTest() override { return true; }
78
79 // --- Virtual State Accessors (From IButtonObject) --- //
80 virtual ButtonState getState() const;
81 virtual void setState(ButtonState state);
82
83 // --- Public Accessors --- //
85 std::string getText() const { return text_; }
89 Label* getLabel() const;
90 std::string getFontResource() const { return font_resource_; }
91 std::string getIconResource() const { return icon_resource_; }
92 int getFontSize() const { return font_size_; }
93 int getFontWidth() const { return font_width_; }
94 int getFontHeight() const { return font_height_; }
95 bool getUseBorder() const { return use_border_; }
96 SDL_Color getLabelColor() const { return label_color_; }
97 SDL_Color getBorderColor() const { return border_color_; }
98 int getIconWidth() const { return icon_width_; }
99 int getIconHeight() const { return icon_height_; }
101
102 // --- Public Mutators --- //
103 void setText(const std::string& newText);
104 // ... (not sure yet which setters we want to include; which properties are read-only)
105
106protected:
107 // --- Protected Virtual Methods (From IButtonObject) --- //
108 virtual void onStateChanged(ButtonState oldState, ButtonState newState) override;
109 virtual IconIndex iconIndexForState(ButtonState state) const override;
110
111 // --- Data Members --- //
112 DisplayHandle labelObject_; // internal label object for group text
113 std::string text_; // initialized label text
114 std::string font_resource_ = "internal_font_8x8"; // default font resource name
115 std::string icon_resource_ = "internal_icon_8x8"; // default icon resource name
116 int font_size_ = 8; // default font size
117 int font_width_ = 8; // default font width
118 int font_height_ = 8; // default font height
119 bool use_border_ = false;
120 // ButtonState state_ = ButtonState::Unchecked; // current state
121 SDL_Color label_color_ = {255, 255, 255, 255}; // default label color is white
122 SDL_Color border_color_ = {0, 0, 0, 128}; // transparent
123 DisplayHandle iconButtonObject_; // internal icon button object for TriStateCheckbox icon
125 int icon_width_ = 8; // default icon width
126 int icon_height_ = 8; // default icon height
127
128 // --- Lua Registration --- //
129 virtual void _registerLuaBindings(const std::string& typeName, sol::state_view lua);
130};
131
132} // namespace SDOM
Definition SDOM_DisplayHandle.hpp:24
Definition SDOM_Event.hpp:55
Definition SDOM_IButtonObject.hpp:125
Definition SDOM_IDisplayObject.hpp:153
Definition SDOM_IconButton.hpp:14
Definition SDOM_Label.hpp:38
Definition SDOM_SpriteSheet.hpp:13
Definition SDOM_TristateButton.hpp:16
IconButton * getIconButton() const
Definition SDOM_TristateButton.cpp:419
virtual IconIndex iconIndexForState(ButtonState state) const override
Definition SDOM_TristateButton.cpp:488
int font_width_
Definition SDOM_TristateButton.hpp:117
std::string font_resource_
Definition SDOM_TristateButton.hpp:114
std::string getText() const
Definition SDOM_TristateButton.hpp:85
std::string getIconResource() const
Definition SDOM_TristateButton.hpp:91
int font_size_
Definition SDOM_TristateButton.hpp:116
virtual void onQuit() override
Definition SDOM_TristateButton.cpp:308
void setText(const std::string &newText)
Definition SDOM_TristateButton.cpp:504
bool getUseBorder() const
Definition SDOM_TristateButton.hpp:95
DisplayHandle labelObject_
Definition SDOM_TristateButton.hpp:112
SpriteSheet * getIconSpriteSheet() const
Definition SDOM_TristateButton.cpp:435
int icon_height_
Definition SDOM_TristateButton.hpp:126
int getIconHeight() const
Definition SDOM_TristateButton.hpp:99
TristateButton()=default
virtual bool onInit() override
Definition SDOM_TristateButton.cpp:212
virtual ~TristateButton()
Definition SDOM_TristateButton.hpp:69
SDL_Color border_color_
Definition SDOM_TristateButton.hpp:122
static std::unique_ptr< IDisplayObject > CreateFromLua(const sol::table &config)
Definition SDOM_TristateButton.hpp:59
std::string getFontResource() const
Definition SDOM_TristateButton.hpp:90
virtual void _registerLuaBindings(const std::string &typeName, sol::state_view lua)
Definition SDOM_TristateButton.cpp:526
int getFontWidth() const
Definition SDOM_TristateButton.hpp:93
int getIconWidth() const
Definition SDOM_TristateButton.hpp:98
bool use_border_
Definition SDOM_TristateButton.hpp:119
SDL_Color getLabelColor() const
Definition SDOM_TristateButton.hpp:96
virtual bool onUnitTest() override
Runs unit tests for this object.
Definition SDOM_TristateButton.hpp:77
int getFontHeight() const
Definition SDOM_TristateButton.hpp:94
virtual ButtonState getState() const
Definition SDOM_TristateButton.cpp:368
static std::unique_ptr< IDisplayObject > CreateFromInitStruct(const IDisplayObject::InitStruct &baseInit)
Definition SDOM_TristateButton.hpp:62
static constexpr const char * TypeName
Definition SDOM_TristateButton.hpp:21
SDL_Color getBorderColor() const
Definition SDOM_TristateButton.hpp:97
virtual void setState(ButtonState state)
Definition SDOM_TristateButton.cpp:374
SDL_Color label_color_
Definition SDOM_TristateButton.hpp:121
virtual void onRender() override
Definition SDOM_TristateButton.cpp:333
DisplayHandle iconButtonObject_
Definition SDOM_TristateButton.hpp:123
IconIndex icon_index_
Definition SDOM_TristateButton.hpp:124
int font_height_
Definition SDOM_TristateButton.hpp:118
virtual void onUpdate(float fElapsedTime) override
Definition SDOM_TristateButton.cpp:314
std::string icon_resource_
Definition SDOM_TristateButton.hpp:115
DisplayHandle getIconButtonObject() const
Definition SDOM_TristateButton.hpp:86
IconIndex getIconIndex() const
Definition SDOM_TristateButton.hpp:100
virtual void onStateChanged(ButtonState oldState, ButtonState newState) override
Definition SDOM_TristateButton.cpp:483
Label * getLabel() const
Definition SDOM_TristateButton.cpp:455
virtual void onEvent(const Event &event) override
Definition SDOM_TristateButton.cpp:320
std::string text_
Definition SDOM_TristateButton.hpp:113
int icon_width_
Definition SDOM_TristateButton.hpp:125
int getFontSize() const
Definition SDOM_TristateButton.hpp:92
DisplayHandle getLabelObject() const
Definition SDOM_TristateButton.hpp:84
Contains all core classes and utilities for the SDOM library.
Definition lua_BindHelpers.hpp:7
IconIndex
Definition SDOM_IconIndex.hpp:12
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_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
InitStruct()
Definition SDOM_TristateButton.hpp:26
int font_width
Definition SDOM_TristateButton.hpp:46
SDL_Color border_color
Definition SDOM_TristateButton.hpp:39