FTXUI 6.1.9
C++ functional terminal UI.
Loading...
Searching...
No Matches
flexbox_config.hpp
Go to the documentation of this file.
1// Copyright 2021 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_FLEXBOX_CONFIG_HPP
5#define FTXUI_DOM_FLEXBOX_CONFIG_HPP
6
7/*
8 這複製了 CSS flexbox 模型。
9 請參閱指南文件:
10 https://css-tricks.com/snippets/css/a-guide-to-flexbox/
11*/
12
13namespace ftxui {
14
15/// @brief FlexboxConfig 是一個配置結構,用於定義彈性盒容器的佈局屬性。
16//
17/// 它允許您指定彈性項目的方向、是否應該換行、它們在主軸上的對齊方式,以及
18/// 它們在交叉軸上的對齊方式。
19/// 它還包括彈性項目在主軸和交叉軸之間間距的屬性。
20/// 此結構用於配置終端使用者介面中彈性盒容器的佈局行為。
21///
22/// @ingroup dom
24 /// 這確立了主軸,從而定義了彈性項目在彈性容器中放置的方向。彈性盒(除了換行)是
25 /// 單方向佈局概念。將彈性項目主要視為在水平行或垂直列中佈局。
26 enum class Direction {
27 Row, ///< 彈性項目沿著一行排列。
28 RowInversed, ///< 彈性項目沿著一行排列,但順序相反。
29 Column, ///< 彈性項目沿著一列排列。
30 ColumnInversed ///< 彈性項目沿著一列排列,但順序相反。
31 };
33
34 /// 預設情況下,所有彈性項目都將嘗試放在一行中。您可以使用此屬性更改該行為,
35 /// 並允許項目根據需要換行。
36 enum class Wrap {
37 NoWrap, ///< 所有彈性項目都將嘗試放在一行中。
38 Wrap, ///< 彈性項目將換行到多行。
39 WrapInversed, ///< 彈性項目將換行到多行,但順序相反。
40 };
42
43 /// 這定義了沿主軸的對齊方式。它有助於分配當一行中的所有彈性項目都不靈活,
44 /// 或者靈活但已達到其最大尺寸時剩餘的額外可用空間。它還對項目溢出行時的
45 /// 對齊方式施加一些控制。
46 enum class JustifyContent {
47 /// 項目對齊到彈性盒方向的起點。
49 /// 項目對齊到彈性盒方向的終點。
50 FlexEnd,
51 /// 項目沿線居中。
52 Center,
53 /// 項目拉伸以填滿該行。
54 Stretch,
55 /// 項目在行中平均分佈;第一個項目在起始線,最後一個項目在結束線。
57 /// 項目在行中平均分佈,周圍有相等的空間。
58 /// 請注意,視覺上空間不相等,因為所有項目兩側都有相等的空間。
59 /// 第一個項目與容器邊緣之間有一個單位的空間,但與下一個項目之間有兩個單位的空間,
60 /// 因為下一個項目有自己的間距。
62 /// 項目分佈使得任意兩個項目之間(以及到邊緣)的間距相等。
64 };
66
67 /// 這定義了彈性項目在當前行上沿交叉軸佈局的預設行為。
68 /// 將其視為交叉軸(垂直於主軸)的 justify-content 版本。
69 enum class AlignItems {
70 FlexStart, ///< 項目放置在交叉軸的起點。
71 FlexEnd, ///< 項目放置在交叉軸的終點。
72 Center, ///< 項目沿交叉軸居中。
73 Stretch, ///< 項目拉伸以填滿交叉軸。
74 };
76
77 // 這會在交叉軸有額外空間時對齊彈性容器的線,
78 // 類似於 justify-content 在主軸內對齊單個項目。
79 enum class AlignContent {
80 FlexStart, ///< 項目放置在交叉軸的起點。
81 FlexEnd, ///< 項目放置在交叉軸的終點。
82 Center, ///< 項目沿交叉軸居中。
83 Stretch, ///< 項目拉伸以填滿交叉軸。
84 SpaceBetween, ///< 項目在交叉軸中平均分佈。
85 SpaceAround, ///< 項目平均分佈,每條線周圍有相等的空間。
86 SpaceEvenly, ///< 項目在交叉軸中平均分佈,周圍有相等的空間。
87 };
89
90 int gap_x = 0;
91 int gap_y = 0;
92
93 // 建構子模式。用於鏈式使用,例如:
94 // ```
95 // FlexboxConfig()
96 // .Set(FlexboxConfig::Direction::Row)
97 // .Set(FlexboxConfig::Wrap::Wrap);
98 // ```
104 FlexboxConfig& SetGap(int gap_x, int gap_y);
105};
106
107} // namespace ftxui
108
109#endif // FTXUI_DOM_FLEXBOX_CONFIG_HPP
@ FlexStart
項目放置在交叉軸的起點。
@ Column
彈性項目沿著一列排列。
@ ColumnInversed
彈性項目沿著一列排列,但順序相反。
@ Row
彈性項目沿著一行排列。
@ RowInversed
彈性項目沿著一行排列,但順序相反。
@ NoWrap
所有彈性項目都將嘗試放在一行中。
@ Wrap
彈性項目將換行到多行。
@ WrapInversed
彈性項目將換行到多行,但順序相反。
@ FlexStart
項目放置在交叉軸的起點。
FlexboxConfig & SetGap(int gap_x, int gap_y)
設定 flexbox 彈性方向。
JustifyContent justify_content
@ SpaceEvenly
項目分佈使得任意兩個項目之間(以及到邊緣)的間距相等。
@ FlexStart
項目對齊到彈性盒方向的起點。
@ FlexEnd
項目對齊到彈性盒方向的終點。
@ SpaceBetween
項目在行中平均分佈;第一個項目在起始線,最後一個項目在結束線。
@ Stretch
項目拉伸以填滿該行。
FlexboxConfig & Set(FlexboxConfig::Direction)
設定 flexbox 方向。
FlexboxConfig 是一個配置結構,用於定義彈性盒容器的佈局屬性。
FTXUI 的 ftxui:: 命名空間
Definition animation.hpp:10