FTXUI 7.0.3
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#include <cstdint>
8
9#include "ftxui/util/export.hpp" // for FTXUI_EXPORT
10
11/*
12 これはCSSのFlexboxモデルを再現したものです。
13 詳細なドキュメントについては、以下のガイドを参照してください:
14 https://css-tricks.com/snippets/css/a-guide-to-flexbox/
15*/
16
17namespace ftxui {
18
19/// @brief FlexboxConfigは、flexboxコンテナのレイアウトプロパティを定義する構成構造体です。
20//
21/// これにより、フレックスアイテムの方向、折り返し、主軸に沿った整列方法、
22/// および交差軸に沿った整列方法を指定できます。
23/// また、主軸と交差軸の両方におけるフレックスアイテム間のギャップのプロパティも含まれます。
24/// この構造体は、ターミナルユーザーインターフェースにおけるflexboxコンテナのレイアウト動作を
25/// 設定するために使用されます。
26///
27/// @ingroup dom
28struct FTXUI_EXPORT(DOM) FlexboxConfig {
29 /// これは主軸を確立し、フレックスアイテムがフレックスコンテナ内に配置される方向を定義します。
30 /// Flexboxは(折り返しを除けば)単一方向のレイアウト概念です。
31 /// フレックスアイテムが主に水平な行または垂直な列に配置されると考えてください。
32 enum class Direction : uint8_t {
33 Row, ///< フレックス項目は行方向にレイアウトされます。
34 RowInversed, ///< フレックス項目は行方向にレイアウトされますが、逆順です。
35 Column, ///< フレックス項目は列方向にレイアウトされます。
36 ColumnInversed ///< フレックスアイテムは列に配置されますが、逆順になります。
37 ///< order.
38 };
39 Direction direction = Direction::Row;
40
41 /// デフォルトでは、フレックス項目はすべて1行に収まろうとします。この
42 /// プロパティにより、必要に応じて項目を折り返すことを許可するように
43 /// 変更できます。
44 enum class Wrap : uint8_t {
45 NoWrap, ///< フレックス項目はすべて1行に収まろうとします。
46 Wrap, ///< フレックス項目は複数行に折り返されます。
47 WrapInversed, ///< フレックスアイテムは複数行に折り返されますが、逆順になります。
48 ///< order.
49 };
50 Wrap wrap = Wrap::Wrap;
51
52 /// これは主軸に沿った配置を定義します。行内のすべてのフレックス項目が
53 /// 非柔軟である場合、または柔軟であるが最大サイズに達している場合に
54 /// 残る余分な空きスペースを分配するのに役立ちます。また、項目が行を
55 /// オーバーフローしたときの配置もある程度制御します。
56 enum class JustifyContent : uint8_t {
57 /// アイテムはflexboxの方向の開始位置に揃えられます。
58 FlexStart,
59 /// アイテムはflexboxの方向の終了位置に揃えられます。
60 FlexEnd,
61 /// 項目は行に沿って中央揃えされます。
62 Center,
63 /// 項目は行を埋めるように伸長されます。
64 Stretch,
65 /// 項目は行内に均等に分配されます。最初の項目は開始行に、最後の項目は
66 // 終了行にあります。
67 SpaceBetween,
68 /// 項目は行内に均等に分配され、周囲に等しいスペースがあります。
69 /// すべての項目が両側に等しいスペースを持つため、視覚的にはスペースが
70 /// 等しくないことに注意してください。最初の項目はコンテナの端に対して
71 /// 1単位のスペースを持ちますが、次の項目にはその項目自体の間隔が
72 /// 適用されるため、2単位のスペースがあります。
73 SpaceAround,
74 /// 項目は、任意の2つの項目間の間隔(および端までのスペース)が
75 /// 等しくなるように分配されます。
76 SpaceEvenly,
77 };
78 JustifyContent justify_content = JustifyContent::FlexStart;
79
80 /// これは、現在の行の交差軸に沿ってフレックスアイテムがどのように配置されるかのデフォルトの動作を定義します。
81 /// 主軸に垂直な交差軸に対するjustify-contentバージョンと考えてください。
82 enum class AlignItems : uint8_t {
83 FlexStart, ///< 項目は交差軸の開始位置に配置されます。
84 FlexEnd, ///< 項目は交差軸の終了位置に配置されます。
85 Center, ///< 項目は交差軸に沿って中央揃えされます。
86 Stretch, ///< 項目は交差軸を埋めるように伸長されます。
87 };
88 AlignItems align_items = AlignItems::FlexStart;
89
90 // これは、主軸内で個々のアイテムを整列させるjustify-contentと似ており、
91 // 交差軸に余分なスペースがある場合にフレックスコンテナの行を整列させます。
92 enum class AlignContent : uint8_t {
93 FlexStart, ///< 項目は交差軸の開始位置に配置されます。
94 FlexEnd, ///< 項目は交差軸の終了位置に配置されます。
95 Center, ///< 項目は交差軸に沿って中央揃えされます。
96 Stretch, ///< 項目は交差軸を埋めるように伸長されます。
97 SpaceBetween, ///< 項目は交差軸に均等に分配されます。
98 SpaceAround, ///< アイテムは各行の周囲に等しいスペースを持って均等に分配されます。
99 ///< line.
100 SpaceEvenly, ///< アイテムは交差軸に沿って等しいスペースを持って均等に分配されます。
101 ///< space around them.
102 };
103 AlignContent align_content = AlignContent::FlexStart;
104
105 int gap_x = 0;
106 int gap_y = 0;
107
108 // コンストラクタパターン。以下のようにチェーンして使用します:
109 // ```
110 // FlexboxConfig()
111 // .Set(FlexboxConfig::Direction::Row)
112 // .Set(FlexboxConfig::Wrap::Wrap);
113 // ```
114 FlexboxConfig& Set(FlexboxConfig::Direction);
115 FlexboxConfig& Set(FlexboxConfig::Wrap);
116 FlexboxConfig& Set(FlexboxConfig::JustifyContent);
117 FlexboxConfig& Set(FlexboxConfig::AlignItems);
118 FlexboxConfig& Set(FlexboxConfig::AlignContent);
119 FlexboxConfig& SetGap(int gap_x, int gap_y);
120};
121
122} // namespace ftxui
123
124#endif // FTXUI_DOM_FLEXBOX_CONFIG_HPP
Component Wrap(std::string name, Component component)
Definition gallery.cpp:18
Direction
Directionは、東西南北の4つの基本方向を表す列挙型です。
Definition direction.hpp:14
FTXUI ftxui::名前空間
Definition animation.hpp:11
Direction direction
Definition elements.hpp:80