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 adaptateur. Possède ou référence une chaîne constante. Par commodité, cette classe convertit plusi...
std::function< void()> on_click
static const Event Return
Component Button(ButtonOption options)
Dessine un bouton. Exécute une fonction lors d'un clic.
Decorator bgcolor(Color)
Décore en utilisant une couleur d'arrière-plan.
Element nothing(Element element)
Une décoration qui ne fait absolument rien.
Element bold(Element)
Utilise une police en gras, pour les éléments avec plus d'emphase.
Element inverted(Element)
Ajoute un filtre qui inversera les couleurs de premier plan et d'arrière-plan.
Element text(std::wstring text)
Affiche un morceau de texte unicode.
Element focus(Element)
Définit l'élément child comme étant celui qui est focalisé parmi ses frères.
Element border(Element)
Dessine une bordure autour de l'élément.
Decorator color(Color)
Décore en utilisant une couleur de premier plan.
static Color Interpolate(float t, const Color &a, const Color &b)
L'espace de noms FTXUI 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