TGUI 1.13
Loading...
Searching...
No Matches
WidgetRenderer.hpp
1
2//
3// TGUI - Texus' Graphical User Interface
4// Copyright (C) 2012-2026 Bruno Van de Velde (vdv_b@tgui.eu)
5//
6// This software is provided 'as-is', without any express or implied warranty.
7// In no event will the authors be held liable for any damages arising from the use of this software.
8//
9// Permission is granted to anyone to use this software for any purpose,
10// including commercial applications, and to alter it and redistribute it freely,
11// subject to the following restrictions:
12//
13// 1. The origin of this software must not be misrepresented;
14// you must not claim that you wrote the original software.
15// If you use this software in a product, an acknowledgment
16// in the product documentation would be appreciated but is not required.
17//
18// 2. Altered source versions must be plainly marked as such,
19// and must not be misrepresented as being the original software.
20//
21// 3. This notice may not be removed or altered from any source distribution.
22//
24
25#ifndef TGUI_WIDGET_RENDERER_HPP
26#define TGUI_WIDGET_RENDERER_HPP
27
28#include <TGUI/Config.hpp>
29
30#include <TGUI/Loading/DataIO.hpp>
31#include <TGUI/ObjectConverter.hpp>
32
33#include <map>
34#include <unordered_set>
35
37
38namespace tgui
39{
40 class Theme;
41 class Widget;
42
46 struct TGUI_API RendererData
47 {
48 RendererData() = default;
49 RendererData(const RendererData& other);
50 RendererData& operator=(const RendererData& other);
51
52 [[nodiscard]] static std::shared_ptr<RendererData> create(const std::map<String, ObjectConverter>& init = {});
53
55 [[nodiscard]] static std::shared_ptr<RendererData> createFromDataIONode(const DataIO::Node* rendererNode);
56
57 std::map<String, ObjectConverter> propertyValuePairs;
58 std::unordered_set<Widget*> observers;
59 Theme* connectedTheme = nullptr;
60 bool themePropertiesInherited = false;
61 bool shared = true;
62 };
63
67 class TGUI_API WidgetRenderer
68 {
69 public:
70 WidgetRenderer() = default;
75
81 WidgetRenderer(const std::shared_ptr<RendererData>& data)
82 {
83 setData(data);
84 }
85
89 virtual ~WidgetRenderer() = default;
90
96 void setOpacity(float opacity);
97
103 [[nodiscard]] float getOpacity() const;
104
112 void setOpacityDisabled(float opacity);
113
120 [[nodiscard]] float getOpacityDisabled() const;
121
129 void setFont(const Font& font);
130
136 [[nodiscard]] Font getFont() const;
137
145 void setTextSize(unsigned int size);
146
155 [[nodiscard]] unsigned int getTextSize() const;
156
167 void setTransparentTexture(bool ignoreTransparentParts);
168
174 [[nodiscard]] bool getTransparentTexture() const;
175
185 void setProperty(const String& property, ObjectConverter&& value);
186
195 [[nodiscard]] ObjectConverter getProperty(const String& property) const;
196
202 [[nodiscard]] const std::map<String, ObjectConverter>& getPropertyValuePairs() const;
203
209 void subscribe(Widget* widget);
210
216 void unsubscribe(Widget* widget);
217
224 void setData(std::shared_ptr<RendererData> data);
225
233 [[nodiscard]] std::shared_ptr<RendererData> getData() const;
234
240 [[nodiscard]] std::shared_ptr<RendererData> clone() const;
241
243
244 protected:
245 std::shared_ptr<RendererData> m_data = RendererData::create();
246 };
247} // namespace tgui
248
249#endif // TGUI_WIDGETS_HPP
Wrapper around the backend-specific font. All copies of the font will share the same internal font re...
Definition Font.hpp:54
Implicit converter for settable properties.
Definition ObjectConverter.hpp:47
Wrapper class to store strings.
Definition String.hpp:94
This class can be used to manage the widget renderers.
Definition Theme.hpp:40
virtual ~WidgetRenderer()=default
Virtual destructor.
WidgetRenderer(const std::shared_ptr< RendererData > &data)
Construct the renderer from renderer data.
Definition WidgetRenderer.hpp:81
void setProperty(const String &property, ObjectConverter &&value)
Changes a property of the renderer.
void setFont(const Font &font)
Changes the font used for the text in the widget.
void unsubscribe(Widget *widget)
Subscribes a callback function to changes in the renderer.
bool getTransparentTexture() const
Returns whether mouse events should be ignored on transparent parts of the texture of the widget.
void subscribe(Widget *widget)
Subscribes a callback function to changes in the renderer.
std::shared_ptr< RendererData > getData() const
Returns the renderer data.
float getOpacity() const
Returns the opacity of the widget.
Font getFont() const
Returns the font associated with the widget (if any).
WidgetRenderer(const WidgetRenderer &)
Copy constructor.
WidgetRenderer & operator=(const WidgetRenderer &)
Copy assignment operator.
float getOpacityDisabled() const
Returns the opacity of the widget when it is disabled.
std::shared_ptr< RendererData > clone() const
Gets a clone of the renderer data.
ObjectConverter getProperty(const String &property) const
Retrieves the value of a certain property.
WidgetRenderer & operator=(WidgetRenderer &&)=default
Default move assignment operator.
void setTextSize(unsigned int size)
Changes the text size of the widget that is specified by the renderer.
void setOpacityDisabled(float opacity)
Changes the opacity of the widget when it is disabled.
WidgetRenderer()=default
Default constructor.
void setTransparentTexture(bool ignoreTransparentParts)
Sets whether mouse events should be ignored on transparent parts of the texture of the widget in norm...
unsigned int getTextSize() const
Returns text size of the widget that is specified by the renderer.
WidgetRenderer(WidgetRenderer &&)=default
Default move constructor.
void setOpacity(float opacity)
Changes the opacity of the widget.
const std::map< String, ObjectConverter > & getPropertyValuePairs() const
Gets a map with all properties and their values.
The parent class for every widget.
Definition Widget.hpp:83
Namespace that contains all TGUI functions and classes.
Definition AbsoluteOrRelativeValue.hpp:37