TGUI  1.6.1
Loading...
Searching...
No Matches
Panel.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_PANEL_HPP
26#define TGUI_PANEL_HPP
27
28#include <TGUI/Widgets/Group.hpp>
29#include <TGUI/Renderers/PanelRenderer.hpp>
30
32
33TGUI_MODULE_EXPORT namespace tgui
34{
38 class TGUI_API Panel : public Group
39 {
40 public:
41
42 using Ptr = std::shared_ptr<Panel>;
43 using ConstPtr = std::shared_ptr<const Panel>;
44
45 static constexpr const char StaticWidgetType[] = "Panel";
46
54 Panel(const char* typeName = StaticWidgetType, bool initRenderer = true);
55
63 TGUI_NODISCARD static Panel::Ptr create(const Layout2d& size = {"100%", "100%"});
64
72 TGUI_NODISCARD static Panel::Ptr copy(const Panel::ConstPtr& panel);
73
78 TGUI_NODISCARD PanelRenderer* getSharedRenderer() override;
79 TGUI_NODISCARD const PanelRenderer* getSharedRenderer() const override;
80
86 TGUI_NODISCARD PanelRenderer* getRenderer() override;
87
93 void setSize(const Layout2d& size) override;
94 using Widget::setSize;
95
100 TGUI_NODISCARD Vector2f getInnerSize() const override;
101
108 TGUI_NODISCARD Vector2f getChildWidgetsOffset() const override;
109
115 TGUI_NODISCARD bool isMouseOnWidget(Vector2f pos) const override;
116
120 bool leftMousePressed(Vector2f pos) override;
121
125 void leftMouseReleased(Vector2f pos) override;
126
130 void rightMousePressed(Vector2f pos) override;
131
135 void rightMouseReleased(Vector2f pos) override;
136
140 void rightMouseButtonNoLongerDown() override;
141
148 void draw(BackendRenderTarget& target, RenderStates states) const override;
149
160 static void setEventBubbling(bool useEventBubbling);
161
167 TGUI_NODISCARD static bool getEventBubbling();
168
170 protected:
171
181 TGUI_NODISCARD Signal& getSignal(String signalName) override;
182
188 void rendererChanged(const String& property) override;
189
191 // This function is called every frame with the time passed since the last frame.
193 bool updateTime(Duration elapsedTime) override;
194
196 // Makes a copy of the widget
198 TGUI_NODISCARD Widget::Ptr clone() const override;
199
201 public:
202
203 SignalVector2f onMousePress = {"MousePressed"};
204 SignalVector2f onMouseRelease = {"MouseReleased"};
205 SignalVector2f onClick = {"Clicked"};
206 SignalVector2f onDoubleClick = {"DoubleClicked"};
207
208 SignalVector2f onRightMousePress = {"RightMousePressed"};
209 SignalVector2f onRightMouseRelease = {"RightMouseReleased"};
210 SignalVector2f onRightClick = {"RightClicked"};
211
213 protected:
214
215 static bool m_eventBubbling;
216
217 // Cached renderer properties
218 Borders m_bordersCached;
219 Color m_borderColorCached;
220 Color m_backgroundColorCached;
221 Sprite m_spriteBackground;
222
223 float m_roundedBorderRadius = 0;
224
225 bool m_rightMouseDown = false;
226
227 // Will be set to true after the first click, but gets reset to false when the second click does not occur soon after
228 bool m_possibleDoubleClick = false;
229
231 };
232
234}
235
237
238#endif // TGUI_PANEL_HPP
Base class for render targets.
Definition BackendRenderTarget.hpp:46
Wrapper for colors.
Definition Color.hpp:73
Wrapper for durations.
Definition Duration.hpp:55
Group widget.
Definition Group.hpp:42
Class to store the position or size of a widget.
Definition Layout.hpp:323
Definition Outline.hpp:38
Definition PanelRenderer.hpp:35
Group of widgets that has a background color and optional borders.
Definition Panel.hpp:39
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.
std::shared_ptr< const Panel > ConstPtr
Shared constant widget pointer.
Definition Panel.hpp:43
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...
std::shared_ptr< Panel > Ptr
Shared widget pointer.
Definition Panel.hpp:42
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.
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.
void draw(BackendRenderTarget &target, RenderStates states) const override
Draw the widget to a render target.
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:61
Definition Sprite.hpp:47
Wrapper class to store strings.
Definition String.hpp:96
std::shared_ptr< Widget > Ptr
Shared widget pointer.
Definition Widget.hpp:86
Namespace that contains all TGUI functions and classes.
Definition AbsoluteOrRelativeValue.hpp:38
States used for drawing.
Definition RenderStates.hpp:38