TGUI  0.8.9
Panel.hpp
1
2//
3// TGUI - Texus' Graphical User Interface
4// Copyright (C) 2012-2020 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 typedef std::shared_ptr<Panel> Ptr;
45 typedef std::shared_ptr<const Panel> ConstPtr;
46
47
54 Panel(const Layout2d& size = {"100%", "100%"});
55
56
65 static Panel::Ptr create(Layout2d size = {"100%", "100%"});
66
67
77
78
84 const PanelRenderer* getSharedRenderer() const;
85
92 const PanelRenderer* getRenderer() const;
93
94
101 void setSize(const Layout2d& size) override;
102 using Widget::setSize;
103
104
109 Vector2f getInnerSize() const override;
110
111
120
121
128 bool mouseOnWidget(Vector2f pos) const override;
129
133 void leftMousePressed(Vector2f pos) override;
134
138 void leftMouseReleased(Vector2f pos) override;
139
143 void rightMousePressed(Vector2f pos) override;
144
148 void rightMouseReleased(Vector2f pos) override;
149
153 void rightMouseButtonNoLongerDown() override;
154
155
163 void draw(sf::RenderTarget& target, sf::RenderStates states) const override;
164
165
167 protected:
168
178 Signal& getSignal(std::string signalName) override;
179
180
187 void rendererChanged(const std::string& property) override;
188
189
191 // Makes a copy of the widget
193 Widget::Ptr clone() const override
194 {
195 return std::make_shared<Panel>(*this);
196 }
197
198
200 public:
201
202 SignalVector2f onMousePress = {"MousePressed"};
203 SignalVector2f onMouseRelease = {"MouseReleased"};
204 SignalVector2f onClick = {"Clicked"};
205
206 SignalVector2f onRightMousePress = {"RightMousePressed"};
207 SignalVector2f onRightMouseRelease = {"RightMouseReleased"};
208 SignalVector2f onRightClick = {"RightClicked"};
209
210
212 protected:
213
214 // Cached renderer properties
215 Borders m_bordersCached;
216 Color m_borderColorCached;
217 Color m_backgroundColorCached;
218 Sprite m_spriteBackground;
219
220 bool m_rightMouseDown = false;
221
223 };
224
226}
227
229
230#endif // TGUI_PANEL_HPP
Wrapper for colors.
Definition: Color.hpp:49
Group widget.
Definition: Group.hpp:44
Class to store the position or size of a widget.
Definition: Layout.hpp:260
Definition: Outline.hpp:39
Definition: PanelRenderer.hpp:37
Group of widgets that has a background color and optional borders.
Definition: Panel.hpp:41
static Panel::Ptr copy(Panel::ConstPtr panel)
Makes a copy of another panel.
std::shared_ptr< Panel > Ptr
Shared widget pointer.
Definition: Panel.hpp:44
Signal & getSignal(std::string signalName) override
Retrieves a signal based on its name.
Widget::Ptr clone() const override
Makes a copy of the widget if you don't know its exact type.
Definition: Panel.hpp:193
Vector2f getChildWidgetsOffset() const override
Returns the distance between the position of the container and a widget that would be drawn inside th...
void draw(sf::RenderTarget &target, sf::RenderStates states) const override
Draw the widget to a render target.
Vector2f getInnerSize() const override
Returns the space available for widgets inside the container.
void setSize(const Layout2d &size) override
Changes the size of the panel.
Panel(const Layout2d &size={"100%", "100%"})
Default constructor.
void rendererChanged(const std::string &property) override
Function called when one of the properties of the renderer is changed.
bool mouseOnWidget(Vector2f pos) const override
Returns whether the mouse position (which is relative to the parent widget) lies on top of the widget...
static Panel::Ptr create(Layout2d size={"100%", "100%"})
Creates a new panel widget.
std::shared_ptr< const Panel > ConstPtr
Shared constant widget pointer.
Definition: Panel.hpp:45
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 to which the user can subscribe to get callbacks from.
Definition: Signal.hpp:231
Definition: Sprite.hpp:46
Definition: Vector2f.hpp:39
std::shared_ptr< Widget > Ptr
Shared widget pointer.
Definition: Widget.hpp:77
virtual void setSize(const Layout2d &size)
Changes the size of the widget.
Namespace that contains all TGUI functions and classes.
Definition: AbsoluteOrRelativeValue.hpp:37