Loading...
Searching...
No Matches
25#ifndef TGUI_RENDERER_DEFINES_HPP
26#define TGUI_RENDERER_DEFINES_HPP
28#include <TGUI/Loading/Theme.hpp>
32#define TGUI_RENDERER_PROPERTY_OUTLINE(CLASS, NAME) \
33 tgui::Outline CLASS::get##NAME() const \
35 const auto it = m_data->propertyValuePairs.find(tgui::String(#NAME)); \
36 if (it != m_data->propertyValuePairs.end()) \
37 return it->second.getOutline(); \
40 void CLASS::set##NAME(const tgui::Outline& outline) \
42 setProperty(tgui::String(#NAME), {outline}); \
47#define TGUI_RENDERER_PROPERTY_COLOR(CLASS, NAME, DEFAULT) \
48 tgui::Color CLASS::get##NAME() const \
50 const auto it = m_data->propertyValuePairs.find(tgui::String(#NAME)); \
51 if (it != m_data->propertyValuePairs.end()) \
52 return it->second.getColor(); \
55 void CLASS::set##NAME(tgui::Color color) \
57 setProperty(tgui::String(#NAME), {color}); \
62#define TGUI_RENDERER_PROPERTY_TEXT_STYLE(CLASS, NAME, DEFAULT) \
63 tgui::TextStyles CLASS::get##NAME() const \
65 const auto it = m_data->propertyValuePairs.find(tgui::String(#NAME)); \
66 if (it != m_data->propertyValuePairs.end()) \
67 return it->second.getTextStyle(); \
70 void CLASS::set##NAME(tgui::TextStyles style) \
72 setProperty(tgui::String(#NAME), tgui::ObjectConverter{style}); \
77#define TGUI_RENDERER_PROPERTY_GET_NUMBER(CLASS, NAME, DEFAULT) \
78 float CLASS::get##NAME() const \
80 const auto it = m_data->propertyValuePairs.find(tgui::String(#NAME)); \
81 if (it != m_data->propertyValuePairs.end()) \
82 return it->second.getNumber(); \
86#define TGUI_RENDERER_PROPERTY_NUMBER(CLASS, NAME, DEFAULT) \
87 TGUI_RENDERER_PROPERTY_GET_NUMBER(CLASS, NAME, DEFAULT) \
88 void CLASS::set##NAME(float number) \
90 setProperty(tgui::String(#NAME), tgui::ObjectConverter{number}); \
95#define TGUI_RENDERER_PROPERTY_GET_BOOL(CLASS, NAME, DEFAULT) \
96 bool CLASS::get##NAME() const \
98 const auto it = m_data->propertyValuePairs.find(tgui::String(#NAME)); \
99 if (it != m_data->propertyValuePairs.end()) \
100 return it->second.getBool(); \
104#define TGUI_RENDERER_PROPERTY_BOOL(CLASS, NAME, DEFAULT) \
105 TGUI_RENDERER_PROPERTY_GET_BOOL(CLASS, NAME, DEFAULT) \
106 void CLASS::set##NAME(bool flag) \
108 setProperty(tgui::String(#NAME), tgui::ObjectConverter{flag}); \
113#define TGUI_RENDERER_PROPERTY_TEXTURE(CLASS, NAME) \
114 const tgui::Texture& CLASS::get##NAME() const \
116 const auto it = m_data->propertyValuePairs.find(tgui::String(#NAME)); \
117 if (it != m_data->propertyValuePairs.end()) \
118 return it->second.getTexture(); \
119 m_data->propertyValuePairs[tgui::String(#NAME)] = {tgui::Texture{}}; \
120 return m_data->propertyValuePairs[tgui::String(#NAME)].getTexture(); \
122 void CLASS::set##NAME(const tgui::Texture& texture) \
124 setProperty(tgui::String(#NAME), {texture}); \
129#define TGUI_RENDERER_PROPERTY_RENDERER_WITH_DEFAULT(CLASS, NAME, RENDERER, DEFAULT) \
130 std::shared_ptr<tgui::RendererData> CLASS::get##NAME() const \
132 const auto it = m_data->propertyValuePairs.find(tgui::String(#NAME)); \
133 if (it != m_data->propertyValuePairs.end()) \
134 return it->second.getRenderer(); \
135 const auto& renderer = tgui::Theme::getDefault()->getRendererNoThrow(RENDERER); \
136 m_data->propertyValuePairs[tgui::String(#NAME)] = {renderer ? renderer : (DEFAULT)}; \
139 void CLASS::set##NAME(std::shared_ptr<tgui::RendererData> renderer) \
142 setProperty(tgui::String(#NAME), {std::move(renderer)}); \
144 setProperty(tgui::String(#NAME), {tgui::RendererData::create()}); \
147#define TGUI_RENDERER_PROPERTY_RENDERER(CLASS, NAME, RENDERER) \
148 TGUI_RENDERER_PROPERTY_RENDERER_WITH_DEFAULT(CLASS, NAME, RENDERER, tgui::RendererData::create())