TGUI  1.0-beta
Loading...
Searching...
No Matches
CustomWidgetForBindings.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_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 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
65
66
90 void setPosition(const Layout2d& position) override;
91
92
110 void setSize(const Layout2d& size) override;
111
112
121 Vector2f getFullSize() const override;
122
123
130
131
139 Vector2f getWidgetOffset() const override;
140
141
149 void setVisible(bool visible) override;
150
151
159 void setEnabled(bool enabled) override;
160
161
170 void setFocused(bool focused) override;
171
172
177 bool canGainFocus() const override;
178
179
184 bool updateTime(Duration elapsedTime) override;
185
186
191 bool isMouseOnWidget(Vector2f pos) const override;
192
196 void leftMousePressed(Vector2f pos) override;
197
201 void leftMouseReleased(Vector2f pos) override;
202
206 void rightMousePressed(Vector2f pos) override;
207
211 void rightMouseReleased(Vector2f pos) override;
212
216 void mouseMoved(Vector2f pos) override;
217
221 void keyPressed(const Event::KeyEvent& event) override;
222
226 void textEntered(char32_t key) override;
227
232 bool mouseWheelScrolled(float delta, Vector2f pos) override;
233
237 void mouseNoLongerOnWidget() override;
238
242 void leftMouseButtonNoLongerDown() override;
243
244
250 void draw(BackendRenderTarget& target, RenderStates states) const override;
251
252
263 Widget::Ptr clone() const override;
264
265
267 protected:
268
274 void rendererChanged(const String& property) override;
275
276
280 void mouseEnteredWidget() override;
281
282
286 void mouseLeftWidget() override;
287
288
289 public:
290
291 std::function<void(Vector2f)> implPositionChanged;
292 std::function<void(Vector2f)> implSizeChanged;
293 std::function<void(bool)> implVisibleChanged;
294 std::function<void(bool)> implEnableChanged;
295 std::function<void(bool)> implFocusChanged;
296 std::function<bool()> implCanGainFocus;
297 std::function<Vector2f()> implGetFullSize;
298 std::function<Vector2f()> implGetAbsolutePosition;
299 std::function<Vector2f()> implGetWidgetOffset;
300 std::function<bool(Duration)> implUpdateTimeFunction;
301 std::function<bool(Vector2f)> implMouseOnWidget;
302 std::function<void(Vector2f)> implLeftMousePressed;
303 std::function<void(Vector2f)> implLeftMouseReleased;
304 std::function<void(Vector2f)> implRightMousePressed;
305 std::function<void(Vector2f)> implRightMouseReleased;
306 std::function<void(Vector2f)> implMouseMoved;
307 std::function<void(const Event::KeyEvent&)> implKeyPressed;
308 std::function<void(char32_t)> implTextEntered;
309 std::function<bool(float, Vector2f)> implMouseWheelScrolled;
310 std::function<void()> implMouseNoLongerOnWidget;
311 std::function<void()> implLeftMouseButtonNoLongerDown;
312 std::function<void()> implMouseEnteredWidget;
313 std::function<void()> implMouseLeftWidget;
314 std::function<bool(const String&)> implRendererChanged;
315 std::function<void(BackendRenderTarget&, RenderStates)> implDrawFunction;
316
318 };
319
321}
322
324
325#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
std::shared_ptr< CustomWidgetForBindings > Ptr
Shared widget pointer.
Definition: CustomWidgetForBindings.hpp:44
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.
Widget::Ptr clone() const override
Makes a copy of the widget if you don't know its exact type.
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:284
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