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は、flexboxコンテナのレイアウトプロパティを定義する構成構造体です。
16//
17/// これにより、フレックスアイテムの方向、折り返し、主軸に沿った整列方法、
18/// および交差軸に沿った整列方法を指定できます。
19/// また、主軸と交差軸の両方におけるフレックスアイテム間のギャップのプロパティも含まれます。
20/// この構造体は、ターミナルユーザーインターフェースにおけるflexboxコンテナのレイアウト動作を
21/// 設定するために使用されます。
22///
23/// @ingroup dom
25 /// これは主軸を確立し、フレックスアイテムがフレックスコンテナ内に配置される方向を定義します。
26 /// Flexboxは(折り返しを除けば)単一方向のレイアウト概念です。
27 /// フレックスアイテムが主に水平な行または垂直な列に配置されると考えてください。
28 enum class Direction {
29 Row, ///< フレックスアイテムは行に配置されます。
30 RowInversed, ///< フレックスアイテムは行に配置されますが、逆順になります。
31 Column, ///< フレックスアイテムは列に配置されます。
32 ColumnInversed ///< フレックスアイテムは列に配置されますが、逆順になります。
33 ///< order.
34 };
36
37 /// デフォルトでは、フレックスアイテムはすべて1行に収まろうとします。このプロパティを使用すると、
38 /// 必要に応じてアイテムを折り返すことができます。
39 enum class Wrap {
40 NoWrap, ///< フレックスアイテムはすべて1行に収まろうとします。
41 Wrap, ///< フレックスアイテムは複数行に折り返されます。
42 WrapInversed, ///< フレックスアイテムは複数行に折り返されますが、逆順になります。
43 ///< order.
44 };
46
47 /// これは主軸に沿った配置を定義します。
48 /// これは、行内のすべてのフレックスアイテムが柔軟でない場合、または柔軟であっても最大サイズに達した場合に
49 /// 余分な空きスペースをどのように分配するかを決定します。
50 /// また、アイテムが一行に収まらない場合の配置にも影響を与えます。
51 enum class JustifyContent {
52 /// アイテムはflexboxの方向の開始位置に揃えられます。
54 /// アイテムはflexboxの方向の終了位置に揃えられます。
55 FlexEnd,
56 /// アイテムは行の中央に配置されます。
57 Center,
58 /// アイテムは行を埋めるように引き伸ばされます。
59 Stretch,
60 /// アイテムは行に沿って均等に分配されます。最初のアイテムは開始行に、最後のアイテムは終了行に配置されます。
62 /// アイテムは、それらの周囲に等しいスペースを持って行に沿って均等に分配されます。
63 /// 視覚的にはスペースが均等ではないことに注意してください。すべてのアイテムが両側に等しいスペースを持つためです。
64 /// 最初のアイテムはコンテナの端に対して1単位のスペースを持ちますが、
65 /// 次のアイテムとの間には2単位のスペースがあります。これは、その次のアイテムが自身のスペースを持っているためです。
67 /// アイテムは、任意の2つのアイテム間のスペース(および端までのスペース)が均等になるように分配されます。
69 };
71
72 /// これは、現在の行の交差軸に沿ってフレックスアイテムがどのように配置されるかのデフォルトの動作を定義します。
73 /// 主軸に垂直な交差軸に対するjustify-contentバージョンと考えてください。
74 enum class AlignItems {
75 FlexStart, ///< アイテムは交差軸の開始位置に配置されます。
76 FlexEnd, ///< アイテムは交差軸の終了位置に配置されます。
77 Center, ///< アイテムは交差軸の中央に配置されます。
78 Stretch, ///< アイテムは交差軸を埋めるように引き伸ばされます。
79 };
81
82 // これは、主軸内で個々のアイテムを整列させるjustify-contentと似ており、
83 // 交差軸に余分なスペースがある場合にフレックスコンテナの行を整列させます。
84 enum class AlignContent {
85 FlexStart, ///< アイテムは交差軸の開始位置に配置されます。
86 FlexEnd, ///< アイテムは交差軸の終了位置に配置されます。
87 Center, ///< アイテムは交差軸の中央に配置されます。
88 Stretch, ///< アイテムは交差軸を埋めるように引き伸ばされます。
89 SpaceBetween, ///< アイテムは交差軸に沿って均等に分配されます。
90 SpaceAround, ///< アイテムは各行の周囲に等しいスペースを持って均等に分配されます。
91 ///< line.
92 SpaceEvenly, ///< アイテムは交差軸に沿って等しいスペースを持って均等に分配されます。
93 ///< space around them.
94 };
96
97 int gap_x = 0;
98 int gap_y = 0;
99
100 // コンストラクタパターン。以下のようにチェーンして使用します:
101 // ```
102 // FlexboxConfig()
103 // .Set(FlexboxConfig::Direction::Row)
104 // .Set(FlexboxConfig::Wrap::Wrap);
105 // ```
111 FlexboxConfig& SetGap(int gap_x, int gap_y);
112};
113
114} // namespace ftxui
115
116#endif // FTXUI_DOM_FLEXBOX_CONFIG_HPP
@ FlexStart
アイテムは交差軸の開始位置に配置されます。
@ Column
フレックスアイテムは列に配置されます。
@ Row
フレックスアイテムは行に配置されます。
@ RowInversed
フレックスアイテムは行に配置されますが、逆順になります。
@ NoWrap
フレックスアイテムはすべて1行に収まろうとします。
@ Wrap
フレックスアイテムは複数行に折り返されます。
@ FlexStart
アイテムは交差軸の開始位置に配置されます。
FlexboxConfig & SetGap(int gap_x, int gap_y)
フレックスボックスのギャップを設定します。
JustifyContent justify_content
@ SpaceEvenly
アイテムは、任意の2つのアイテム間のスペース(および端までのスペース)が均等になるように分配されます。
@ Center
アイテムは行の中央に配置されます。
@ FlexStart
アイテムはflexboxの方向の開始位置に揃えられます。
@ FlexEnd
アイテムはflexboxの方向の終了位置に揃えられます。
@ SpaceBetween
アイテムは行に沿って均等に分配されます。最初のアイテムは開始行に、最後のアイテムは終了行に配置されます。
@ Stretch
アイテムは行を埋めるように引き伸ばされます。
FlexboxConfig & Set(FlexboxConfig::Direction)
フレックスボックスの方向を設定します。
FlexboxConfigは、flexboxコンテナのレイアウトプロパティを定義する構成構造体です。
FTXUI ftxui:: 名前空間
Definition animation.hpp:9