Zappy GUI
C++ graphic client: renderer, camera, network
Loading...
Searching...
No Matches
ButtonWidget.hpp
Go to the documentation of this file.
1
3
4
#pragma once
5
6
#include <functional>
7
#include <string>
8
9
#include "
IWidget.hpp
"
10
#include "raylib.h"
11
17
class
ButtonWidget
:
public
IWidget
{
18
public
:
20
enum class
Anchor
{
21
TopLeft
,
22
TopCenter
,
23
TopRight
,
24
MiddleLeft
,
25
Center
,
26
MiddleRight
,
27
BottomLeft
,
28
BottomCenter
,
29
BottomRight
,
31
None
32
};
33
34
ButtonWidget
() =
default
;
35
~ButtonWidget
()
override
=
default
;
36
37
// ── Content ────────────────────────────────────────────────────────────
38
ButtonWidget
&
setLabel
(
const
std::string& label);
39
40
// ── Geometry ───────────────────────────────────────────────────────────
42
ButtonWidget
&
setPosition
(
float
x,
float
y);
43
ButtonWidget
&
setSize
(
float
width,
float
height);
46
ButtonWidget
&
setAnchor
(
Anchor
anchor,
float
margin = 10.0f);
47
48
// ── Appearance ─────────────────────────────────────────────────────────
49
ButtonWidget
&
setNormalColor
(Color color);
50
ButtonWidget
&
setHoverColor
(Color color);
51
ButtonWidget
&
setTextColor
(Color color);
52
ButtonWidget
&
setBorderColor
(Color color);
53
ButtonWidget
&
setBorderThickness
(
float
thickness);
54
ButtonWidget
&
setRoundness
(
float
roundness);
55
56
// ── Behaviour ──────────────────────────────────────────────────────────
58
ButtonWidget
&
setOnClick
(std::function<
void
()> callback);
59
60
// ── IWidget ────────────────────────────────────────────────────────────
61
void
draw
(
int
scaledFontSize)
const override
;
63
bool
handleInput
()
override
;
64
65
// ── State polling ──────────────────────────────────────────────────────
67
bool
wasClicked
();
68
70
Rectangle
getBounds
()
const
;
71
72
private
:
73
std::string
_label
;
74
75
float
_x
= 0.0f;
76
float
_y
= 0.0f;
77
float
_width
= 120.0f;
78
float
_height
= 36.0f;
79
80
Anchor
_anchor
=
Anchor::None
;
81
float
_margin
= 10.0f;
82
83
Color
_normalColor
= {60, 70, 90, 220};
84
Color
_hoverColor
= {100, 120, 160, 240};
85
Color
_textColor
= {210, 220, 240, 255};
86
Color
_borderColor
= {60, 70, 90, 200};
87
float
_borderThickness
= 2.0f;
88
float
_roundness
= 0.3f;
89
90
bool
_hovered
=
false
;
91
bool
_clicked
=
false
;
92
93
std::function<void()>
_onClick
;
94
95
Rectangle
_resolvedBounds
()
const
;
96
};
IWidget.hpp
Interface for GUI widgets.
ButtonWidget
A configurable, stateful clickable button.
Definition
ButtonWidget.hpp:17
ButtonWidget::setNormalColor
ButtonWidget & setNormalColor(Color color)
Definition
ButtonWidget.cpp:35
ButtonWidget::_roundness
float _roundness
Definition
ButtonWidget.hpp:88
ButtonWidget::_normalColor
Color _normalColor
Definition
ButtonWidget.hpp:83
ButtonWidget::_margin
float _margin
Definition
ButtonWidget.hpp:81
ButtonWidget::handleInput
bool handleInput() override
Definition
ButtonWidget.cpp:132
ButtonWidget::ButtonWidget
ButtonWidget()=default
ButtonWidget::setOnClick
ButtonWidget & setOnClick(std::function< void()> callback)
Registers a callback invoked when the button is clicked.
Definition
ButtonWidget.cpp:71
ButtonWidget::_anchor
Anchor _anchor
Definition
ButtonWidget.hpp:80
ButtonWidget::setHoverColor
ButtonWidget & setHoverColor(Color color)
Definition
ButtonWidget.cpp:41
ButtonWidget::_textColor
Color _textColor
Definition
ButtonWidget.hpp:85
ButtonWidget::draw
void draw(int scaledFontSize) const override
Draws the widget.
Definition
ButtonWidget.cpp:153
ButtonWidget::_borderColor
Color _borderColor
Definition
ButtonWidget.hpp:86
ButtonWidget::wasClicked
bool wasClicked()
Returns true once per click, then resets.
Definition
ButtonWidget.cpp:146
ButtonWidget::setAnchor
ButtonWidget & setAnchor(Anchor anchor, float margin=10.0f)
Sets anchor: button is auto-positioned relative to screen edges.
Definition
ButtonWidget.cpp:28
ButtonWidget::setRoundness
ButtonWidget & setRoundness(float roundness)
Definition
ButtonWidget.cpp:65
ButtonWidget::_resolvedBounds
Rectangle _resolvedBounds() const
Definition
ButtonWidget.cpp:77
ButtonWidget::setSize
ButtonWidget & setSize(float width, float height)
Definition
ButtonWidget.cpp:21
ButtonWidget::getBounds
Rectangle getBounds() const
Returns the bounding rectangle (after anchor resolution).
Definition
ButtonWidget.cpp:130
ButtonWidget::setBorderColor
ButtonWidget & setBorderColor(Color color)
Definition
ButtonWidget.cpp:53
ButtonWidget::_x
float _x
Definition
ButtonWidget.hpp:75
ButtonWidget::_borderThickness
float _borderThickness
Definition
ButtonWidget.hpp:87
ButtonWidget::_hovered
bool _hovered
Definition
ButtonWidget.hpp:90
ButtonWidget::setPosition
ButtonWidget & setPosition(float x, float y)
Sets the button position directly (requires Anchor::None).
Definition
ButtonWidget.cpp:13
ButtonWidget::Anchor
Anchor
Positioning modes for automatic layout.
Definition
ButtonWidget.hpp:20
ButtonWidget::Anchor::MiddleLeft
@ MiddleLeft
ButtonWidget::Anchor::TopRight
@ TopRight
ButtonWidget::Anchor::MiddleRight
@ MiddleRight
ButtonWidget::Anchor::Center
@ Center
ButtonWidget::Anchor::None
@ None
No anchor: position set directly via setPosition().
ButtonWidget::Anchor::BottomRight
@ BottomRight
ButtonWidget::Anchor::TopCenter
@ TopCenter
ButtonWidget::Anchor::BottomLeft
@ BottomLeft
ButtonWidget::Anchor::TopLeft
@ TopLeft
ButtonWidget::Anchor::BottomCenter
@ BottomCenter
ButtonWidget::_width
float _width
Definition
ButtonWidget.hpp:77
ButtonWidget::setBorderThickness
ButtonWidget & setBorderThickness(float thickness)
Definition
ButtonWidget.cpp:59
ButtonWidget::_hoverColor
Color _hoverColor
Definition
ButtonWidget.hpp:84
ButtonWidget::_height
float _height
Definition
ButtonWidget.hpp:78
ButtonWidget::setTextColor
ButtonWidget & setTextColor(Color color)
Definition
ButtonWidget.cpp:47
ButtonWidget::_clicked
bool _clicked
Definition
ButtonWidget.hpp:91
ButtonWidget::_y
float _y
Definition
ButtonWidget.hpp:76
ButtonWidget::_label
std::string _label
Definition
ButtonWidget.hpp:73
ButtonWidget::~ButtonWidget
~ButtonWidget() override=default
ButtonWidget::_onClick
std::function< void()> _onClick
Definition
ButtonWidget.hpp:93
ButtonWidget::setLabel
ButtonWidget & setLabel(const std::string &label)
Definition
ButtonWidget.cpp:7
IWidget
Interface for GUI widgets.
Definition
IWidget.hpp:11
gui
src
renderer
raylib_helpers
ButtonWidget.hpp
Generated by
1.9.8