TGUI  1.1
Loading...
Searching...
No Matches
CustomWidgetForBindings.hpp
1
2//
3// TGUI - Texus' Graphical User Interface
4// Copyright (C) 2012-2023 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
35TGUI_MODULE_EXPORT namespace tgui
36{
40 class TGUI_API CustomWidgetForBindings : public Widget
41 {
42 public:
43
44 using Ptr = std::shared_ptr<CustomWidgetForBindings>;
45 using ConstPtr = std::shared_ptr<const CustomWidgetForBindings>;
46
47 static constexpr const char StaticWidgetType[] = "CustomWidget";
48
49
57 CustomWidgetForBindings(const char* typeName = StaticWidgetType, bool initRenderer = true);
58
59
64 TGUI_NODISCARD static CustomWidgetForBindings::Ptr create();
65
66
90 void setPosition(const Layout2d& position) override;
91
92
110 void setSize(const Layout2d& size) override;
111
112
121 TGUI_NODISCARD Vector2f getFullSize() const override;
122
123
131 TGUI_NODISCARD Vector2f getWidgetOffset() const override;
132
133
141 void setVisible(bool visible) override;
142
143
151 void setEnabled(bool enabled) override;
152
153
162 void setFocused(bool focused) override;
163
164
169 TGUI_NODISCARD bool canGainFocus() const override;
170
171
176 bool updateTime(Duration elapsedTime) override;
177
178
183 TGUI_NODISCARD bool isMouseOnWidget(Vector2f pos) const override;
184
188 bool leftMousePressed(Vector2f pos) override;
189
193 void leftMouseReleased(Vector2f pos) override;
194
198 void rightMousePressed(Vector2f pos) override;
199
203 void rightMouseReleased(Vector2f pos) override;
204
208 void mouseMoved(Vector2f pos) override;
209
213 void keyPressed(const Event::KeyEvent& event) override;
214
218 void textEntered(char32_t key) override;
219
224 bool scrolled(float delta, Vector2f pos, bool touch) override;
225
229 void mouseNoLongerOnWidget() override;
230
234 void leftMouseButtonNoLongerDown() override;
235
236
242 void draw(BackendRenderTarget& target, RenderStates states) const override;
243
244
255 TGUI_NODISCARD Widget::Ptr clone() const override;
256
257
259 protected:
260
266 void rendererChanged(const String& property) override;
267
268
272 void mouseEnteredWidget() override;
273
274
278 void mouseLeftWidget() override;
279
280
281 public:
282
283 std::function<void(Vector2f)> implPositionChanged;
284 std::function<void(Vector2f)> implSizeChanged;
285 std::function<void(bool)> implVisibleChanged;
286 std::function<void(bool)> implEnableChanged;
287 std::function<void(bool)> implFocusChanged;
288 std::function<bool()> implCanGainFocus;
289 std::function<Vector2f()> implGetFullSize;
290 std::function<Vector2f()> implGetWidgetOffset;
291 std::function<bool(Duration)> implUpdateTimeFunction;
292 std::function<bool(Vector2f)> implMouseOnWidget;
293 std::function<bool(Vector2f)> implLeftMousePressed;
294 std::function<void(Vector2f)> implLeftMouseReleased;
295 std::function<void(Vector2f)> implRightMousePressed;
296 std::function<void(Vector2f)> implRightMouseReleased;
297 std::function<void(Vector2f)> implMouseMoved;
298 std::function<void(const Event::KeyEvent&)> implKeyPressed;
299 std::function<void(char32_t)> implTextEntered;
300 std::function<bool(float, Vector2f, bool)> implScrolled;
301 std::function<void()> implMouseNoLongerOnWidget;
302 std::function<void()> implLeftMouseButtonNoLongerDown;
303 std::function<void()> implMouseEnteredWidget;
304 std::function<void()> implMouseLeftWidget;
305 std::function<bool(const String&)> implRendererChanged;
306 std::function<void(BackendRenderTarget&, RenderStates)> implDrawFunction;
307
309 };
310
312}
313
315
316#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
TGUI_NODISCARD bool isMouseOnWidget(Vector2f pos) const override
Returns whether the mouse position (which is relative to the parent widget) lies on top of the widget...
TGUI_NODISCARD Widget::Ptr clone() const override
Makes a copy of the widget if you don't know its exact type.
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
std::shared_ptr< CustomWidgetForBindings > Ptr
Shared widget pointer.
Definition CustomWidgetForBindings.hpp:44
void setFocused(bool focused) override
Focus or unfocus the widget.
bool leftMousePressed(Vector2f pos) override
Called by the parent when the left mouse button goes down on top of the widget.
TGUI_NODISCARD Vector2f getWidgetOffset() const override
Returns the distance between the position where the widget is drawn and where the widget is placed.
void rendererChanged(const String &property) override
Function called when one of the properties of the renderer is changed.
void draw(BackendRenderTarget &target, RenderStates states) const override
Draw the widget to a render target.
TGUI_NODISCARD bool canGainFocus() const override
Returns whether the widget can gain focus.
static TGUI_NODISCARD CustomWidgetForBindings::Ptr create()
Creates a new widget.
bool scrolled(float delta, Vector2f pos, bool touch) override
Called by the parent on scroll event (either from mouse wheel of from two finger scrolling on a touch...
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.
TGUI_NODISCARD Vector2f getFullSize() const override
Returns the entire size that the widget is using.
Wrapper for durations.
Definition Duration.hpp:56
Class to store the position or size of a widget.
Definition Layout.hpp:305
Wrapper class to store strings.
Definition String.hpp:101
The parent class for every widget.
Definition Widget.hpp:84
std::shared_ptr< Widget > Ptr
Shared widget pointer.
Definition Widget.hpp:87
Namespace that contains all TGUI functions and classes.
Definition AbsoluteOrRelativeValue.hpp:39
KeyPressed event parameters.
Definition Event.hpp:169
States used for drawing.
Definition RenderStates.hpp:39