TGUI  0.10-dev
CustomWidgetForBindings.hpp
1
2//
3// TGUI - Texus' Graphical User Interface
4// Copyright (C) 2012-2021 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_CUSTOM_WIDGET_FOR_BINDINGS_HPP
27#define TGUI_CUSTOM_WIDGET_FOR_BINDINGS_HPP
28
30
31#include <TGUI/Widget.hpp>
32
34
35namespace tgui
36{
40 class TGUI_API CustomWidgetForBindings : public Widget
41 {
42 public:
43
44 typedef std::shared_ptr<CustomWidgetForBindings> Ptr;
45 typedef std::shared_ptr<const CustomWidgetForBindings> ConstPtr;
46
47
55 CustomWidgetForBindings(const char* typeName = "CustomWidget", bool initRenderer = true);
56
57
63
64
88 void setPosition(const Layout2d& position) override;
89
90
108 void setSize(const Layout2d& size) override;
109
110
119 Vector2f getFullSize() const override;
120
121
128
129
137 Vector2f getWidgetOffset() const override;
138
139
147 void setVisible(bool visible) override;
148
149
157 void setEnabled(bool enabled) override;
158
159
168 void setFocused(bool focused) override;
169
170
175 bool canGainFocus() const override;
176
177
182 bool updateTime(Duration elapsedTime) override;
183
184
189 bool isMouseOnWidget(Vector2f pos) const override;
190
194 void leftMousePressed(Vector2f pos) override;
195
199 void leftMouseReleased(Vector2f pos) override;
200
204 void rightMousePressed(Vector2f pos) override;
205
209 void rightMouseReleased(Vector2f pos) override;
210
214 void mouseMoved(Vector2f pos) override;
215
219 void keyPressed(const Event::KeyEvent& event) override;
220
224 void textEntered(char32_t key) override;
225
230 bool mouseWheelScrolled(float delta, Vector2f pos) override;
231
235 void mouseNoLongerOnWidget() override;
236
240 void leftMouseButtonNoLongerDown() override;
241
242
248 void draw(BackendRenderTarget& target, RenderStates states) const override;
249
250
261 Widget::Ptr clone() const override
262 {
263 return std::make_shared<CustomWidgetForBindings>(*this);
264 }
265
266
268 protected:
269
275 void rendererChanged(const String& property) override;
276
277
281 void mouseEnteredWidget() override;
282
283
287 void mouseLeftWidget() override;
288
289
290 public:
291
292 std::function<void(Vector2f)> implPositionChanged;
293 std::function<void(Vector2f)> implSizeChanged;
294 std::function<void(bool)> implVisibleChanged;
295 std::function<void(bool)> implEnableChanged;
296 std::function<void(bool)> implFocusChanged;
297 std::function<bool()> implCanGainFocus;
298 std::function<Vector2f()> implGetFullSize;
299 std::function<Vector2f()> implGetAbsolutePosition;
300 std::function<Vector2f()> implGetWidgetOffset;
301 std::function<bool(Duration)> implUpdateTimeFunction;
302 std::function<bool(Vector2f)> implMouseOnWidget;
303 std::function<void(Vector2f)> implLeftMousePressed;
304 std::function<void(Vector2f)> implLeftMouseReleased;
305 std::function<void(Vector2f)> implRightMousePressed;
306 std::function<void(Vector2f)> implRightMouseReleased;
307 std::function<void(Vector2f)> implMouseMoved;
308 std::function<void(const Event::KeyEvent&)> implKeyPressed;
309 std::function<void(char32_t)> implTextEntered;
310 std::function<bool(float, Vector2f)> implMouseWheelScrolled;
311 std::function<void()> implMouseNoLongerOnWidget;
312 std::function<void()> implLeftMouseButtonNoLongerDown;
313 std::function<void()> implMouseEnteredWidget;
314 std::function<void()> implMouseLeftWidget;
315 std::function<bool(const String&)> implRendererChanged;
316 std::function<void(BackendRenderTarget&, RenderStates)> implDrawFunction;
317
319 };
320
322}
323
325
326#endif // TGUI_WIDGET_HPP
Base class for render targets.
Definition: BackendRenderTarget.hpp:48
Class used by bindings to implement custom widgets withing these bindings (e.g. a custom C# widget in...
Definition: CustomWidgetForBindings.hpp:41
bool isMouseOnWidget(Vector2f pos) const override
Returns whether the mouse position (which is relative to the parent widget) lies on top of the widget...
Vector2f getWidgetOffset() const override
Returns the distance between the position where the widget is drawn and where the widget is placed.
void setPosition(const Layout2d &position) override
sets the position of the widget
void setEnabled(bool enabled) override
Enables or disables the widget.
void setSize(const Layout2d &size) override
Changes the size of the widget.
std::shared_ptr< const CustomWidgetForBindings > ConstPtr
Shared constant widget pointer.
Definition: CustomWidgetForBindings.hpp:45
void setFocused(bool focused) override
Focus or unfocus the widget.
void rendererChanged(const String &property) override
Function called when one of the properties of the renderer is changed.
Vector2f getAbsolutePosition() const override
Get the absolute position of the widget instead of the relative position to its parent.
void draw(BackendRenderTarget &target, RenderStates states) const override
Draw the widget to a render target.
std::shared_ptr< CustomWidgetForBindings > Ptr
Shared widget pointer.
Definition: CustomWidgetForBindings.hpp:44
Widget::Ptr clone() const override
Makes a copy of the widget if you don't know its exact type.
Definition: CustomWidgetForBindings.hpp:261
void mouseLeftWidget() override
This function is called when the mouse leaves the widget.
void mouseEnteredWidget() override
This function is called when the mouse enters the widget.
void setVisible(bool visible) override
Shows or hides a widget.
Vector2f getFullSize() const override
Returns the entire size that the widget is using.
bool canGainFocus() const override
Returns whether the widget can gain focus.
static CustomWidgetForBindings::Ptr create()
Creates a new widget.
Wrapper for durations.
Definition: Duration.hpp:52
Class to store the position or size of a widget.
Definition: Layout.hpp:262
Wrapper class to store strings.
Definition: String.hpp:79
The parent class for every widget.
Definition: Widget.hpp:70
std::shared_ptr< Widget > Ptr
Shared widget pointer.
Definition: Widget.hpp:73
Namespace that contains all TGUI functions and classes.
Definition: AbsoluteOrRelativeValue.hpp:36
KeyPressed event parameters.
Definition: Event.hpp:167
States used for drawing.
Definition: RenderStates.hpp:39