35class ButtonBase :
public ComponentBase,
public ButtonOption {
41 const bool active = Active();
42 const bool focused = Focused();
46 if (
target != animator_background_.to()) {
50 const EntryState state{
56 element |= AnimatedColorStyle();
64 if (animated_colors.background.enabled) {
67 animated_colors.background.inactive,
68 animated_colors.background.active));
70 if (animated_colors.foreground.enabled) {
73 animated_colors.foreground.inactive,
74 animated_colors.foreground.active));
80 if (animated_colors.foreground.enabled) {
81 animator_foreground_ = animation::Animator(
82 &animation_foreground_,
target, animated_colors.foreground.duration,
83 animated_colors.foreground.function);
85 if (animated_colors.background.enabled) {
86 animator_background_ = animation::Animator(
87 &animation_background_,
target, animated_colors.background.duration,
88 animated_colors.background.function);
92 void OnAnimation(animation::Params& p)
override {
93 animator_background_.OnAnimation(p);
94 animator_foreground_.OnAnimation(p);
98 animation_background_ = 0.5F;
99 animation_foreground_ = 0.5F;
107 bool OnEvent(Event
event)
override {
108 if (
event.is_mouse()) {
109 return OnMouseEvent(
event);
119 bool OnMouseEvent(Event
event) {
140 bool mouse_hover_ =
false;
142 ButtonOption option_;
143 float animation_background_ = 0;
144 float animation_foreground_ = 0;
145 animation::Animator animator_background_ =
146 animation::Animator(&animation_background_);
147 animation::Animator animator_foreground_ =
148 animation::Animator(&animation_foreground_);
205 std::function<
void()> on_click,
207 option.label = std::move(label);
208 option.on_click = std::move(on_click);
static Color Interpolate(float t, const Color &a, const Color &b)
An adapter. Own or reference a constant string. For convenience, this class convert multiple immutabl...
Decorator bgcolor(Color)
Decorate using a background color.
std::function< Element(Element)> Decorator
Element nothing(Element element)
A decoration doing absolutely nothing.
std::shared_ptr< Node > Element
std::shared_ptr< T > Make(Args &&... args)
std::shared_ptr< ComponentBase > Component
Element bold(Element)
Use a bold font, for elements with more emphasis.
Component Button(ButtonOption options)
Draw a button. Execute a function when clicked.
Element inverted(Element)
Add a filter that will invert the foreground and the background colors.
Element text(std::wstring text)
Display a piece of unicode text.
Element focus(Element)
Set the child to be the one focused among its siblings.
Decorator reflect(Box &box)
Element border(Element)
Draw a border around the element.
Decorator color(Color)
Decorate using a foreground color.
static const Event Return