TGUI  1.0-beta
Loading...
Searching...
No Matches
Panel.hpp
1
2//
3// TGUI - Texus' Graphical User Interface
4// Copyright (C) 2012-2022 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
26#ifndef TGUI_PANEL_HPP
27#define TGUI_PANEL_HPP
28
29
30#include <TGUI/Widgets/Group.hpp>
31#include <TGUI/Renderers/PanelRenderer.hpp>
32
34
35namespace tgui
36{
40 class TGUI_API Panel : public Group
41 {
42 public:
43
44 using Ptr = std::shared_ptr<Panel>;
45 using ConstPtr = std::shared_ptr<const Panel>;
46
47 static constexpr const char StaticWidgetType[] = "Panel";
48
49
57 Panel(const char* typeName = StaticWidgetType, bool initRenderer = true);
58
59
68 static Panel::Ptr create(const Layout2d& size = {"100%", "100%"});
69
70
79 static Panel::Ptr copy(const Panel::ConstPtr& panel);
80
81
87 const PanelRenderer* getSharedRenderer() const;
88
95
96
103 void setSize(const Layout2d& size) override;
104 using Widget::setSize;
105
106
111 Vector2f getInnerSize() const override;
112
113
122
123
130 bool isMouseOnWidget(Vector2f pos) const override;
131
135 void leftMousePressed(Vector2f pos) override;
136
140 void leftMouseReleased(Vector2f pos) override;
141
145 void rightMousePressed(Vector2f pos) override;
146
150 void rightMouseReleased(Vector2f pos) override;
151
155 void rightMouseButtonNoLongerDown() override;
156
157
165 void draw(BackendRenderTarget& target, RenderStates states) const override;
166
167
169 protected:
170
180 Signal& getSignal(String signalName) override;
181
182
189 void rendererChanged(const String& property) override;
190
191
193 // This function is called every frame with the time passed since the last frame.
195 bool updateTime(Duration elapsedTime) override;
196
197
199 // Makes a copy of the widget
201 Widget::Ptr clone() const override;
202
203
205 public:
206
207 SignalVector2f onMousePress = {"MousePressed"};
208 SignalVector2f onMouseRelease = {"MouseReleased"};
209 SignalVector2f onClick = {"Clicked"};
210 SignalVector2f onDoubleClick = {"DoubleClicked"};
211
212 SignalVector2f onRightMousePress = {"RightMousePressed"};
213 SignalVector2f onRightMouseRelease = {"RightMouseReleased"};
214 SignalVector2f onRightClick = {"RightClicked"};
215
216
218 protected:
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
234 };
235
237}
238
240
241#endif // TGUI_PANEL_HPP
Base class for render targets.
Definition: BackendRenderTarget.hpp:48
Wrapper for colors.
Definition: Color.hpp:63
Wrapper for durations.
Definition: Duration.hpp:52
Group widget.
Definition: Group.hpp:44
Class to store the position or size of a widget.
Definition: Layout.hpp:284
Definition: Outline.hpp:39
Definition: PanelRenderer.hpp:37
Group of widgets that has a background color and optional borders.
Definition: Panel.hpp:41
std::shared_ptr< const Panel > ConstPtr
Shared constant widget pointer.
Definition: Panel.hpp:45
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:44
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.
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()
Returns the renderer, which gives access to functions that determine how the widget is displayed.
PanelRenderer * getSharedRenderer()
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:58
Definition: Sprite.hpp:45
Wrapper class to store strings.
Definition: String.hpp:79
std::shared_ptr< Widget > Ptr
Shared widget pointer.
Definition: Widget.hpp:73
Namespace that contains all TGUI functions and classes.
Definition: AbsoluteOrRelativeValue.hpp:36
States used for drawing.
Definition: RenderStates.hpp:39