TGUI 1.13
Loading...
Searching...
No Matches
Panel.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_PANEL_HPP
26#define TGUI_PANEL_HPP
27
28#include <TGUI/Renderers/PanelRenderer.hpp>
29#include <TGUI/Widgets/Group.hpp>
30
32
33namespace tgui
34{
38 class TGUI_API Panel : public Group
39 {
40 public:
41 using Ptr = std::shared_ptr<Panel>;
42 using ConstPtr = std::shared_ptr<const Panel>;
43
44 static constexpr char StaticWidgetType[] = "Panel";
45
53 explicit Panel(const char* typeName = StaticWidgetType, bool initRenderer = true);
54
62 [[nodiscard]] static Panel::Ptr create(const Layout2d& size = {"100%", "100%"});
63
71 [[nodiscard]] static Panel::Ptr copy(const Panel::ConstPtr& panel);
72
77 [[nodiscard]] PanelRenderer* getSharedRenderer() override;
78 [[nodiscard]] const PanelRenderer* getSharedRenderer() const override;
79
85 [[nodiscard]] PanelRenderer* getRenderer() override;
86
92 void setSize(const Layout2d& size) override;
93 using Widget::setSize;
94
99 [[nodiscard]] Vector2f getInnerSize() const override;
100
107 [[nodiscard]] Vector2f getChildWidgetsOffset() const override;
108
114 [[nodiscard]] bool isMouseOnWidget(Vector2f pos) const override;
115
119 bool leftMousePressed(Vector2f pos) override;
120
124 void leftMouseReleased(Vector2f pos) override;
125
129 void rightMousePressed(Vector2f pos) override;
130
134 void rightMouseReleased(Vector2f pos) override;
135
139 void rightMouseButtonNoLongerDown() override;
140
147 void draw(BackendRenderTarget& target, RenderStates states) const override;
148
159 static void setEventBubbling(bool useEventBubbling);
160
166 [[nodiscard]] static bool getEventBubbling();
167
169
170 protected:
180 [[nodiscard]] Signal& getSignal(String signalName) override;
181
187 void rendererChanged(const String& property) override;
188
190 // This function is called every frame with the time passed since the last frame.
192 bool updateTime(Duration elapsedTime) override;
193
195 // Makes a copy of the widget
197 [[nodiscard]] Widget::Ptr clone() const override;
198
200
201 public:
203 "MousePressed"};
205 "MouseReleased"};
206 SignalVector2f onClick = {"Clicked"};
207 SignalVector2f onDoubleClick = {"DoubleClicked"};
208
210 "RightMousePressed"};
212 "RightMouseReleased"};
213 SignalVector2f onRightClick = {"RightClicked"};
214
216
217 protected:
218 static bool m_eventBubbling;
219
220 // Cached renderer properties
221 Borders m_bordersCached;
222 Color m_borderColorCached;
223 Color m_backgroundColorCached;
224 Sprite m_spriteBackground;
225
226 float m_roundedBorderRadius = 0;
227
228 bool m_rightMouseDown = false;
229
230 // Will be set to true after the first click, but gets reset to false when the second click does not occur soon after
231 bool m_possibleDoubleClick = false;
232 };
233} // namespace tgui
234
235#endif // TGUI_PANEL_HPP
Base class for render targets.
Definition BackendRenderTarget.hpp:46
Wrapper for colors.
Definition Color.hpp:63
Wrapper for durations.
Definition Duration.hpp:52
Class to store the position or size of a widget.
Definition Layout.hpp:320
Definition PanelRenderer.hpp:35
static void setEventBubbling(bool useEventBubbling)
Changes whether event bubbling is used for the mouse events.
static bool getEventBubbling()
Returns whether event bubbling is used for the mouse events.
PanelRenderer * getSharedRenderer() override
Returns the renderer, which gives access to functions that determine how the widget is displayed.
SignalVector2f onClick
The panel was clicked. Optional parameter: mouse position relative to panel.
Definition Panel.hpp:206
static constexpr char StaticWidgetType[]
Type name of the widget.
Definition Panel.hpp:44
SignalVector2f onDoubleClick
The panel was double clicked. Optional parameter: mouse position relative to panel.
Definition Panel.hpp:207
std::shared_ptr< const Panel > ConstPtr
Shared constant widget pointer.
Definition Panel.hpp:42
Widget::Ptr clone() const override
Makes a copy of the widget if you don't know its exact type.
Vector2f getChildWidgetsOffset() const override
Returns the distance between the position of the container and a widget that would be drawn inside th...
SignalVector2f onRightClick
The panel was right clicked. Optional parameter: mouse position relative to panel.
Definition Panel.hpp:213
std::shared_ptr< Panel > Ptr
Shared widget pointer.
Definition Panel.hpp:41
Vector2f getInnerSize() const override
Returns the space available for widgets inside the container.
void rendererChanged(const String &property) override
Function called when one of the properties of the renderer is changed.
SignalVector2f onRightMouseRelease
The right mouse button was released on top of the panel. Optional parameter: mouse position relative ...
Definition Panel.hpp:211
SignalVector2f onMouseRelease
The mouse was released on top of the panel. Optional parameter: mouse position relative to panel.
Definition Panel.hpp:204
bool isMouseOnWidget(Vector2f pos) const override
Returns whether the mouse position (which is relative to the parent widget) lies on top of the widget...
void setSize(const Layout2d &size) override
Changes the size of the panel.
bool leftMousePressed(Vector2f pos) override
Called by the parent when the left mouse button goes down on top of the widget.
static Panel::Ptr copy(const Panel::ConstPtr &panel)
Makes a copy of another panel.
SignalVector2f onMousePress
The mouse went down on the panel. Optional parameter: mouse position relative to panel.
Definition Panel.hpp:202
void draw(BackendRenderTarget &target, RenderStates states) const override
Draw the widget to a render target.
SignalVector2f onRightMousePress
The right mouse button went down on the panel. Optional parameter: mouse position relative to panel.
Definition Panel.hpp:209
static Panel::Ptr create(const Layout2d &size={"100%", "100%"})
Creates a new panel widget.
PanelRenderer * getRenderer() override
Returns the renderer, which gives access to functions that determine how the widget is displayed.
Signal & getSignal(String signalName) override
Retrieves a signal based on its name.
Signal to which the user can subscribe to get callbacks from.
Definition Signal.hpp:59
Definition Sprite.hpp:45
Wrapper class to store strings.
Definition String.hpp:94
std::shared_ptr< Widget > Ptr
Shared widget pointer.
Definition Widget.hpp:85
virtual void setSize(const Layout2d &size)
Changes the size of the widget.
Namespace that contains all TGUI functions and classes.
Definition AbsoluteOrRelativeValue.hpp:37
SignalTyped< Vector2f > SignalVector2f
Signal with one "Vector2f" as optional unbound parameter.
Definition Signal.hpp:414
States used for drawing.
Definition RenderStates.hpp:38