14bool GeneratorBool(
const char*& data,
size_t& size) {
18 auto out = bool(data[0] % 2);
24std::string GeneratorString(
const char*& data,
size_t& size) {
26 while (index < size && data[index]) {
29 auto out = std::string(data, data + index);
41int GeneratorInt(
const char*& data,
size_t& size) {
45 auto out = int(data[0]);
51float GeneratorFloat(
const char*& data,
size_t& size) {
55 auto out = float(data[0]) / 255.0f;
61Elements GeneratorElements(
const char*& data,
size_t& size,
int depth);
63Element GeneratorElement(
const char*& data,
size_t& size,
int depth) {
65 int value = GeneratorInt(data, size);
67 int base_choice =
value % 5;
68 if (base_choice == 0) {
69 return text(GeneratorString(data, size));
71 if (base_choice == 1) {
72 return paragraph(GeneratorString(data, size));
74 if (base_choice == 2) {
77 if (base_choice == 3) {
78 return gauge(GeneratorFloat(data, size));
83 constexpr int value_max = 20;
84 value = (
value % value_max + value_max) % value_max;
87 return text(GeneratorString(data, size));
89 return paragraph(GeneratorString(data, size));
93 return gauge(GeneratorFloat(data, size));
95 return border(GeneratorElement(data, size, depth));
99 return window(
text(GeneratorString(data, size)),
100 GeneratorElement(data, size, depth));
102 return vbox(GeneratorElements(data, size, depth));
104 return hbox(GeneratorElements(data, size, depth));
106 return dbox(GeneratorElements(data, size, depth));
108 return flexbox(GeneratorElements(data, size, depth));
110 return bold(GeneratorElement(data, size, depth));
112 return dim(GeneratorElement(data, size, depth));
114 return italic(GeneratorElement(data, size, depth));
116 return inverted(GeneratorElement(data, size, depth));
118 return underlined(GeneratorElement(data, size, depth));
120 return blink(GeneratorElement(data, size, depth));
124 return flex(GeneratorElement(data, size, depth));
132Elements GeneratorElements(
const char*& data,
size_t& size,
int depth) {
135 while (size && (GeneratorInt(data, size) % 2)) {
136 out.push_back(GeneratorElement(data, size, depth - 1));
149 int width = GeneratorInt(data, size);
150 int height = GeneratorInt(data, size);
152 width = (width % 200) + 1;
153 height = (height % 200) + 1;
156 auto element = GeneratorElement(data, size, depth);
159 Screen::Create(Dimension::Fixed(width), Dimension::Fixed(height));
int LLVMFuzzerTestOneInput(const char *data, size_t size)
Element window(Element title, Element content, BorderStyle border=ROUNDED)
要素の周囲にタイトルとボーダーを持つウィンドウを描画します。
Element text(std::string_view text)
UTF8エンコードされたユニコードテキストを表示します。
Element flex(Element child)
子要素をコンテナに残されたスペースに比例して拡大させます。
Element bold(Element child)
より強調したい要素に、太字フォントを使用します。
Element borderRounded(Element child)
要素の周囲に角の丸いボーダーを描画します。
Element underlined(Element child)
指定された要素に下線を追加します。
Element inverted(Element child)
前景色と背景色を反転させるフィルターを追加します。
Element strikethrough(Element child)
テキストに打ち消し線を適用します。
Element italic(Element child)
テキストに二重下線を適用します。
Element dbox(Elements children_)
複数の要素を互いに重ねて表示する。
Element paragraph(std::string_view the_text)
段落を複数行で描画する要素を返します。
Element filler()
コンテナ内の残りのスペースに比例して拡大する要素。
Element dim(Element child)
強調を抑えたい要素に、明るいフォントを使用します。
Element blink(Element child)
描画されたテキストは、可視と非可視の間で交互に切り替わります。
Element gauge(float progress)
高精細プログレスバーを描画します。
Element border(Element child)
要素の周囲にボーダーを描画します。
Element vbox(Elements children)
要素を縦に一つずつ表示するコンテナ。
Element flexbox(Elements, FlexboxConfig config=FlexboxConfig())
行/列に要素を表示し、一杯になると次の列/行に折り返すことができるコンテナ。
std::shared_ptr< Node > Element
Element hbox(Elements children)
要素を水平方向に1つずつ表示するコンテナ。
std::vector< Element > Elements
FTXUI_EXPORT(SCREEN) std FTXUI_EXPORT(SCREEN) std std::wstring to_wstring(T s)
void Render(Screen &screen, Node *node, Selection &selection)