FTXUI
6.0.2
C++ functional terminal UI.
Toggle main menu visibility
Tutorial
Examples
File List
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
Loading...
Searching...
No Matches
requirement.hpp
Go to the documentation of this file.
1
// Copyright 2020 Arthur Sonzogni. All rights reserved.
2
// Use of this source code is governed by the MIT license that can be found in
3
// the LICENSE file.
4
#ifndef FTXUI_DOM_REQUIREMENT_HPP
5
#define FTXUI_DOM_REQUIREMENT_HPP
6
7
#include "
ftxui/screen/box.hpp
"
8
#include "
ftxui/screen/screen.hpp
"
9
10
namespace
ftxui
{
11
class
Node;
12
13
struct
Requirement
{
14
// The required size to fully draw the element.
15
int
min_x
= 0;
16
int
min_y
= 0;
17
18
// How much flexibility is given to the component.
19
int
flex_grow_x
= 0;
20
int
flex_grow_y
= 0;
21
int
flex_shrink_x
= 0;
22
int
flex_shrink_y
= 0;
23
24
// Focus management to support the frame/focus/select element.
25
struct
Focused
{
26
bool
enabled
=
false
;
27
Box
box
;
28
Node
*
node
=
nullptr
;
29
Screen::Cursor::Shape
cursor_shape
=
Screen::Cursor::Shape::Hidden
;
30
31
// Internal for interactions with components.
32
bool
component_active
=
false
;
33
34
// Return whether this requirement should be preferred over the other.
35
bool
Prefer
(
const
Focused
&
other
)
const
{
36
if
(!
other
.enabled) {
37
return
false
;
38
}
39
if
(!
enabled
) {
40
return
true
;
41
}
42
43
return
other
.component_active && !
component_active
;
44
}
35
bool
Prefer
(
const
Focused
&
other
)
const
{
…
}
45
};
25
struct
Focused
{
…
};
46
Focused
focused
;
47
};
13
struct
Requirement
{
…
};
48
49
}
// namespace ftxui
50
51
#endif
// FTXUI_DOM_REQUIREMENT_HPP
box.hpp
ftxui::Node
Definition
node.hpp:23
ftxui
Definition
animation.hpp:10
ftxui::Requirement::flex_grow_y
int flex_grow_y
Definition
requirement.hpp:20
ftxui::Make
std::shared_ptr< T > Make(Args &&... args)
Definition
component.hpp:26
ftxui::Requirement::min_y
int min_y
Definition
requirement.hpp:16
ftxui::Requirement::flex_grow_x
int flex_grow_x
Definition
requirement.hpp:19
ftxui::Requirement::min_x
int min_x
Definition
requirement.hpp:15
ftxui::Requirement::focused
Focused focused
Definition
requirement.hpp:46
ftxui::Requirement::flex_shrink_y
int flex_shrink_y
Definition
requirement.hpp:22
ftxui::Requirement::flex_shrink_x
int flex_shrink_x
Definition
requirement.hpp:21
ftxui::Requirement
Definition
requirement.hpp:13
screen.hpp
ftxui::Box
Definition
box.hpp:9
ftxui::Requirement::Focused
Definition
requirement.hpp:25
ftxui::Requirement::Focused::cursor_shape
Screen::Cursor::Shape cursor_shape
Definition
requirement.hpp:29
ftxui::Requirement::Focused::enabled
bool enabled
Definition
requirement.hpp:26
ftxui::Requirement::Focused::Prefer
bool Prefer(const Focused &other) const
Definition
requirement.hpp:35
ftxui::Requirement::Focused::box
Box box
Definition
requirement.hpp:27
ftxui::Requirement::Focused::node
Node * node
Definition
requirement.hpp:28
ftxui::Requirement::Focused::component_active
bool component_active
Definition
requirement.hpp:32
ftxui::Screen::Cursor::Shape
Shape
Definition
screen.hpp:52
ftxui::Screen::Cursor::Hidden
@ Hidden
Definition
screen.hpp:53