22class ResizableSplitBase :
public ComponentBase,
public ResizableSplitOption {
24 explicit ResizableSplitBase(ResizableSplitOption options)
25 : ResizableSplitOption(std::move(options)) {
26 switch (direction()) {
42 bool OnEvent(Event event)
final {
43 if (event.is_mouse()) {
44 return OnMouseEvent(std::move(event));
49 bool OnMouseEvent(Event event) {
51 captured_mouse_.reset();
57 separator_box_.Contain(event.mouse().x, event.mouse().y) &&
59 captured_mouse_ = CaptureMouse(event);
63 if (!captured_mouse_) {
67 switch (direction()) {
69 main_size() = std::max(0, event.mouse().x - box_.x_min);
72 main_size() = std::max(0, box_.x_max - event.mouse().x);
75 main_size() = std::max(0, event.mouse().y - box_.y_min);
78 main_size() = std::max(0, box_.y_max - event.mouse().y);
82 main_size() = std::clamp(main_size(), min(), max());
87 switch (direction()) {
95 return RenderBottom();
98 return text(
"unreacheable");
104 separator_func() |
reflect(separator_box_),
105 back->Render() |
xflex,
112 back->Render() |
xflex,
113 separator_func() |
reflect(separator_box_),
122 separator_func() |
reflect(separator_box_),
123 back->Render() |
yflex,
130 back->Render() |
yflex,
131 separator_func() |
reflect(separator_box_),
virtual bool OnEvent(Event)
Appelé en réponse à un événement.
Component Horizontal(Components children)
Une liste de composants, dessinés un par un horizontalement et navigués horizontalement en utilisant ...
Component ResizableSplitTop(Component main, Component back, int *main_size)
Une séparation verticale entre deux composants, configurable à l'aide de la souris.
Component Vertical(Components children)
Une liste de composants, dessinés un par un verticalement et navigués verticalement en utilisant les ...
Component ResizableSplitRight(Component main, Component back, int *main_size)
Une séparation horizontale entre deux composants, configurable à l'aide de la souris.
Component ResizableSplitBottom(Component main, Component back, int *main_size)
Une séparation verticale entre deux composants, configurable à l'aide de la souris.
Component ResizableSplitLeft(Component main, Component back, int *main_size)
Une séparation horizontale entre deux composants, configurable à l'aide de la souris.
Element xflex(Element)
Développer/Réduire si possible/nécessaire sur l'axe X.
Decorator size(WidthOrHeight, Constraint, int value)
Applique une contrainte sur la taille d'un élément.
Element yflex(Element)
Développer/Réduire si possible/nécessaire sur l'axe Y.
Element text(std::wstring text)
Affiche un morceau de texte unicode.
Element vbox(Elements)
Un conteneur affichant les éléments verticalement un par un.
L'espace de noms FTXUI ftxui::
std::unique_ptr< CapturedMouseInterface > CapturedMouse
std::shared_ptr< T > Make(Args &&... args)
std::shared_ptr< Node > Element
Element hbox(Elements)
Un conteneur affichant les éléments horizontalement un par un.
Component ResizableSplit(ResizableSplitOption options)
Une séparation entre deux composants.
Decorator reflect(Box &box)
std::shared_ptr< ComponentBase > Component