24Element DefaultTransform(EntryState params) {
35class ButtonBase :
public ComponentBase,
public ButtonOption {
37 explicit ButtonBase(ButtonOption option) : ButtonOption(std::move(option)) {}
41 const bool active = Active();
42 const bool focused = Focused();
43 const bool focused_or_hover = focused || mouse_hover_;
45 float target = focused_or_hover ? 1.f : 0.f;
46 if (target != animator_background_.to()) {
47 SetAnimationTarget(target);
50 const EntryState state{
51 *label,
false, active, focused_or_hover, Index(),
54 auto element = (transform ? transform : DefaultTransform)
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));
79 void SetAnimationTarget(
float target) {
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;
100 SetAnimationTarget(1.F);
107 bool OnEvent(Event event)
override {
108 if (event.is_mouse()) {
109 return OnMouseEvent(event);
119 bool OnMouseEvent(Event event) {
121 box_.Contain(event.mouse().x, event.mouse().y) && CaptureMouse(event);
137 bool Focusable() const final {
return true; }
140 bool mouse_hover_ =
false;
142 float animation_background_ = 0;
143 float animation_foreground_ = 0;
144 animation::Animator animator_background_ =
145 animation::Animator(&animation_background_);
146 animation::Animator animator_foreground_ =
147 animation::Animator(&animation_foreground_);
204 std::function<
void()> on_click,
206 option.
label = std::move(label);
207 option.
on_click = std::move(on_click);
Un adaptador. Posee o referencia una cadena constante. Para mayor comodidad, esta clase convierte múl...
std::function< void()> on_click
static const Event Return
Component Button(ButtonOption options)
Dibuja un botón. Ejecuta una función al hacer clic.
Decorator bgcolor(Color)
Decora usando un color de fondo.
Element nothing(Element element)
Una decoración que no hace absolutamente nada.
Element bold(Element)
Utiliza una fuente en negrita, para elementos con más énfasis.
Element inverted(Element)
Agrega un filtro que invertirá los colores de primer plano y de fondo. colores.
Element text(std::wstring text)
Muestra un fragmento de texto Unicode.
Element focus(Element)
Establece que child sea el elemento enfocado entre sus hermanos.
Element border(Element)
Draw a border around the element.
Decorator color(Color)
Decora usando un color de primer plano.
static Color Interpolate(float t, const Color &a, const Color &b)
El espacio de nombres ftxui:: de FTXUI.
std::function< Element(Element)> Decorator
std::shared_ptr< T > Make(Args &&... args)
std::shared_ptr< Node > Element
Decorator reflect(Box &box)
std::shared_ptr< ComponentBase > Component