TGUI  1.6.1
Loading...
Searching...
No Matches
WidgetRenderer.hpp
1
2//
3// TGUI - Texus' Graphical User Interface
4// Copyright (C) 2012-2024 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#include <TGUI/ObjectConverter.hpp>
30#include <TGUI/Loading/DataIO.hpp>
31
32#if !TGUI_EXPERIMENTAL_USE_STD_MODULE
33 #include <unordered_set>
34 #include <map>
35#endif
36
38
39TGUI_MODULE_EXPORT namespace tgui
40{
41 class Theme;
42 class Widget;
43
47 struct TGUI_API RendererData
48 {
49 RendererData() = default;
50 RendererData(const RendererData& other);
51 RendererData& operator=(const RendererData& other);
52
53 TGUI_NODISCARD static std::shared_ptr<RendererData> create(const std::map<String, ObjectConverter>& init = {});
54
56 TGUI_NODISCARD static std::shared_ptr<RendererData> createFromDataIONode(const DataIO::Node* rendererNode);
57
58 std::map<String, ObjectConverter> propertyValuePairs;
59 std::unordered_set<Widget*> observers;
60 Theme* connectedTheme = nullptr;
61 bool themePropertiesInherited = false;
62 bool shared = true;
63 };
64
68 class TGUI_API WidgetRenderer
69 {
70 public:
71
72 WidgetRenderer() = default;
77
83 WidgetRenderer(const std::shared_ptr<RendererData>& data)
84 {
85 setData(data);
86 }
87
91 virtual ~WidgetRenderer() = default;
92
98 void setOpacity(float opacity);
99
105 TGUI_NODISCARD float getOpacity() const;
106
114 void setOpacityDisabled(float opacity);
115
122 TGUI_NODISCARD float getOpacityDisabled() const;
123
131 void setFont(const Font& font);
132
138 TGUI_NODISCARD Font getFont() const;
139
147 void setTextSize(unsigned int size);
148
157 TGUI_NODISCARD unsigned int getTextSize() const;
158
169 void setTransparentTexture(bool ignoreTransparentParts);
170
176 TGUI_NODISCARD bool getTransparentTexture() const;
177
187 void setProperty(const String& property, ObjectConverter&& value);
188
197 TGUI_NODISCARD ObjectConverter getProperty(const String& property) const;
198
204 TGUI_NODISCARD const std::map<String, ObjectConverter>& getPropertyValuePairs() const;
205
211 void subscribe(Widget* widget);
212
218 void unsubscribe(Widget* widget);
219
226 void setData(std::shared_ptr<RendererData> data);
227
235 TGUI_NODISCARD std::shared_ptr<RendererData> getData() const;
236
242 TGUI_NODISCARD std::shared_ptr<RendererData> clone() const;
243
245 protected:
246
247 std::shared_ptr<RendererData> m_data = RendererData::create();
248
250 };
251
253}
254
256
257#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:58
Implicit converter for settable properties.
Definition ObjectConverter.hpp:46
Wrapper class to store strings.
Definition String.hpp:96
This class can be used to manage the widget renderers.
Definition Theme.hpp:40
Base class for all renderer classes.
Definition WidgetRenderer.hpp:69
virtual ~WidgetRenderer()=default
Virtual destructor.
WidgetRenderer(const std::shared_ptr< RendererData > &data)
Construct the renderer from renderer data.
Definition WidgetRenderer.hpp:83
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:38
Shared data used in renderer classes.
Definition WidgetRenderer.hpp:48