From a402cb4fbbefccfa503e7b47d54c0d3b626f2821 Mon Sep 17 00:00:00 2001 From: ArthurSonzogni Date: Sun, 22 Mar 2020 22:32:44 +0100 Subject: [PATCH] Fix format. Try compile on Windows. --- .travis.yml | 12 +- CMakeLists.txt | 9 +- examples/component/checkbox.cpp | 36 +- examples/component/checkbox_in_frame.cpp | 6 +- examples/component/gallery.cpp | 4 +- examples/component/homescreen.cpp | 175 ++++---- examples/component/input.cpp | 5 +- examples/component/menu.cpp | 3 +- examples/component/menu2.cpp | 44 +- examples/component/menu_style.cpp | 74 ++-- examples/component/radiobox.cpp | 1 + examples/component/radiobox_in_frame.cpp | 2 +- examples/component/tab_horizontal.cpp | 10 +- examples/component/toggle.cpp | 5 +- examples/dom/border.cpp | 7 +- examples/dom/dbox.cpp | 10 +- examples/dom/gauge.cpp | 9 +- examples/dom/graph.cpp | 5 +- examples/dom/hflow.cpp | 53 +-- examples/dom/html_like.cpp | 1 + examples/dom/package_manager.cpp | 16 +- examples/dom/paragraph.cpp | 17 +- examples/dom/separator.cpp | 10 +- examples/dom/size.cpp | 12 +- examples/dom/spinner.cpp | 2 + examples/dom/style_blink.cpp | 10 +- examples/dom/style_bold.cpp | 10 +- examples/dom/style_color.cpp | 10 +- examples/dom/style_dim.cpp | 2 + examples/dom/style_gallery.cpp | 2 + examples/dom/style_inverted.cpp | 2 + examples/dom/style_underlined.cpp | 2 + examples/dom/vbox_hbox.cpp | 2 + src/ftxui/component/checkbox.cpp | 3 +- src/ftxui/component/component.cpp | 13 +- src/ftxui/component/container.cpp | 2 + src/ftxui/component/event.cpp | 15 +- src/ftxui/component/input.cpp | 4 +- src/ftxui/component/menu.cpp | 1 + src/ftxui/component/radiobox.cpp | 1 + src/ftxui/component/screen_interactive.cpp | 1 + src/ftxui/component/toggle.cpp | 1 + src/ftxui/dom/blink.cpp | 2 +- src/ftxui/dom/bold.cpp | 4 +- src/ftxui/dom/border.cpp | 16 +- src/ftxui/dom/color.cpp | 10 +- src/ftxui/dom/composite_decorator.cpp | 4 +- src/ftxui/dom/dbox.cpp | 8 +- src/ftxui/dom/dim.cpp | 4 +- src/ftxui/dom/flex.cpp | 2 +- src/ftxui/dom/frame.cpp | 2 + src/ftxui/dom/gauge.cpp | 5 +- src/ftxui/dom/hbox.cpp | 4 +- src/ftxui/dom/hflow.cpp | 8 +- src/ftxui/dom/inverted.cpp | 4 +- src/ftxui/dom/node.cpp | 8 +- src/ftxui/dom/node_decorator.hpp | 2 +- src/ftxui/dom/paragraph.cpp | 1 + src/ftxui/dom/size.cpp | 6 +- src/ftxui/dom/spinner.cpp | 458 ++++++++++----------- src/ftxui/dom/underlined.cpp | 2 +- src/ftxui/dom/util.cpp | 5 +- src/ftxui/dom/vbox.cpp | 2 + src/ftxui/screen/box.cpp | 1 + src/ftxui/screen/screen.cpp | 6 +- src/ftxui/screen/terminal.cpp | 5 +- tests/gauge_test.cpp | 6 +- 67 files changed, 615 insertions(+), 569 deletions(-) diff --git a/.travis.yml b/.travis.yml index 198ef41..4ca7389 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,19 +14,17 @@ notifications: jobs: include: - # ubuntu 16.04, gcc-9 + # Ubuntu - os: linux + dist: bionic compiler: gcc - addons: { apt: { packages: ["g++-9", "ninja-build"], - sources: ["ubuntu-toolchain-r-test"] } } - # ubuntu 16.04, clang-8 + # Ubuntu - os: linux + dist: bionic compiler: clang - addons: { apt: { packages: ["clang-8", "ninja-build"], - sources: ["llvm-toolchain-xenial-8"] } } - # OS X High Sierra 10.13 + # OS X - os: osx # Windows diff --git a/CMakeLists.txt b/CMakeLists.txt index 1948157..60287c4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,7 +10,6 @@ option(FTXUI_ENABLE_INSTALL "Generate the install target" ON) enable_testing() -cmake_minimum_required(VERSION 3.0) find_package(Threads) add_library(screen @@ -72,10 +71,14 @@ foreach(lib screen dom component) PUBLIC $ $ - PRIVATE src + PRIVATE + src ) set_property(TARGET ${lib} PROPERTY CXX_STANDARD 17) - target_compile_options(${lib} PRIVATE -Wall -Werror -pedantic -Wextra -Wno-sign-compare) + target_compile_options(${lib} PRIVATE + $<$:/W4 /WX> + $<$>:-Wall -Wextra -pedantic -Werror -Wno-sign-compare> +) endforeach() if(FTXUI_ENABLE_INSTALL) diff --git a/examples/component/checkbox.cpp b/examples/component/checkbox.cpp index 1f87bcf..7b3fba4 100644 --- a/examples/component/checkbox.cpp +++ b/examples/component/checkbox.cpp @@ -1,4 +1,5 @@ #include "ftxui/component/checkbox.hpp" + #include "ftxui/component/component.hpp" #include "ftxui/component/container.hpp" #include "ftxui/component/screen_interactive.hpp" @@ -6,25 +7,26 @@ using namespace ftxui; class MyComponent : public Component { - private: - CheckBox box_1_; - CheckBox box_2_; - CheckBox box_3_; - Container container_ = Container::Vertical(); - public: - MyComponent() { - Add(&container_); - container_.Add(&box_1_); - container_.Add(&box_2_); - container_.Add(&box_3_); - box_1_.label = L"Build examples"; - box_2_.label = L"Build tests"; - box_3_.label = L"Use WebAssembly"; - box_3_.state = true; - } + private: + CheckBox box_1_; + CheckBox box_2_; + CheckBox box_3_; + Container container_ = Container::Vertical(); + + public: + MyComponent() { + Add(&container_); + container_.Add(&box_1_); + container_.Add(&box_2_); + container_.Add(&box_3_); + box_1_.label = L"Build examples"; + box_2_.label = L"Build tests"; + box_3_.label = L"Use WebAssembly"; + box_3_.state = true; + } }; -int main(int argc, const char *argv[]) { +int main(int argc, const char* argv[]) { auto screen = ScreenInteractive::TerminalOutput(); MyComponent component; screen.Loop(&component); diff --git a/examples/component/checkbox_in_frame.cpp b/examples/component/checkbox_in_frame.cpp index 6b12c0b..b0eb5e9 100644 --- a/examples/component/checkbox_in_frame.cpp +++ b/examples/component/checkbox_in_frame.cpp @@ -2,7 +2,6 @@ #include "ftxui/component/container.hpp" #include "ftxui/component/input.hpp" #include "ftxui/component/menu.hpp" -#include "ftxui/component/checkbox.hpp" #include "ftxui/component/screen_interactive.hpp" #include "ftxui/component/toggle.hpp" #include "ftxui/screen/string.hpp" @@ -14,15 +13,16 @@ class MyComponent : public Component { MyComponent() { Add(&container); checkbox.resize(30); - for(int i = 0; i #include + #include "ftxui/component/checkbox.hpp" #include "ftxui/component/container.hpp" #include "ftxui/component/input.hpp" @@ -19,7 +20,7 @@ class Graph { for (int i = 0; i < width; ++i) { float v = 0; v += 0.1 * sin((i + shift) * 0.1); - v += 0.2 * sin((i + shift+10) * 0.15); + v += 0.2 * sin((i + shift + 10) * 0.15); v += 0.1 * sin((i + shift) * 0.03); v *= height; v += 0.5 * height; @@ -36,6 +37,7 @@ class HTopComponent : public Component { HTopComponent() {} ~HTopComponent() override {} + // clang-format off Element Render() override { return hbox( @@ -77,18 +79,19 @@ class HTopComponent : public Component { ) | flex ) | flex | border; } + // clang-format on }; class CompilerComponent : public Component { Container container = Container::Horizontal(); - RadioBox compiler; - Container flag = Container::Vertical(); - CheckBox flag_checkbox[4]; - Container subcontainer = Container::Vertical(); - Container input_container = Container::Horizontal(); - Input input_add; - Menu input; - Input executable; + RadioBox compiler; + Container flag = Container::Vertical(); + CheckBox flag_checkbox[4]; + Container subcontainer = Container::Vertical(); + Container input_container = Container::Horizontal(); + Input input_add; + Menu input; + Input executable; public: ~CompilerComponent() override {} @@ -97,45 +100,45 @@ class CompilerComponent : public Component { // Compiler ---------------------------------------------------------------- compiler.entries = { - L"gcc", - L"clang", - L"emcc", - L"game_maker" - L"Ada compilers", - L"ALGOL 60 compilers", - L"ALGOL 68 compilers", - L"Assemblers (Intel *86)", - L"Assemblers (Motorola 68*)", - L"Assemblers (Zilog Z80)", - L"Assemblers (other)", - L"BASIC Compilers", - L"BASIC interpreters", - L"Batch compilers", - L"C compilers", - L"Source-to-source compilers", - L"C++ compilers", - L"C# compilers", - L"COBOL compilers", - L"Common Lisp compilers", - L"D compilers", - L"DIBOL/DBL compilers", - L"ECMAScript interpreters", - L"Eiffel compilers", - L"Fortran compilers", - L"Go compilers", - L"Haskell compilers", - L"Java compilers", - L"Pascal compilers", - L"Perl Interpreters", - L"PHP compilers", - L"PL/I compilers", - L"Python compilers", - L"Scheme compilers and interpreters", - L"Smalltalk compilers", - L"Tcl Interpreters", - L"VMS Interpreters", - L"Rexx Interpreters", - L"CLI compilers", + L"gcc", + L"clang", + L"emcc", + L"game_maker" + L"Ada compilers", + L"ALGOL 60 compilers", + L"ALGOL 68 compilers", + L"Assemblers (Intel *86)", + L"Assemblers (Motorola 68*)", + L"Assemblers (Zilog Z80)", + L"Assemblers (other)", + L"BASIC Compilers", + L"BASIC interpreters", + L"Batch compilers", + L"C compilers", + L"Source-to-source compilers", + L"C++ compilers", + L"C# compilers", + L"COBOL compilers", + L"Common Lisp compilers", + L"D compilers", + L"DIBOL/DBL compilers", + L"ECMAScript interpreters", + L"Eiffel compilers", + L"Fortran compilers", + L"Go compilers", + L"Haskell compilers", + L"Java compilers", + L"Pascal compilers", + L"Perl Interpreters", + L"PHP compilers", + L"PL/I compilers", + L"Python compilers", + L"Scheme compilers and interpreters", + L"Smalltalk compilers", + L"Tcl Interpreters", + L"VMS Interpreters", + L"Rexx Interpreters", + L"CLI compilers", }; container.Add(&compiler); @@ -145,11 +148,12 @@ class CompilerComponent : public Component { flag_checkbox[1].label = L"-Werror"; flag_checkbox[2].label = L"-lpthread"; flag_checkbox[3].label = L"-O3"; - for(auto& c : flag_checkbox) + for (auto& c : flag_checkbox) flag.Add(&c); container.Add(&subcontainer); - // Executable ---------------------------------------------------------------- + // Executable + // ---------------------------------------------------------------- executable.placeholder = L"executable"; subcontainer.Add(&executable); @@ -165,6 +169,7 @@ class CompilerComponent : public Component { input_container.Add(&input); } + // clang-format off Element Render() override { return vbox( @@ -194,13 +199,14 @@ class CompilerComponent : public Component { hflow(RenderCommandLine()) ) | border; } + // clang-format on Elements RenderCommandLine() { Elements line; // Compiler line.push_back(text(compiler.entries[compiler.selected]) | bold); // flags - for(auto& it : flag_checkbox) { + for (auto& it : flag_checkbox) { if (it.state) { line.push_back(text(L" ")); line.push_back(text(it.label) | dim); @@ -212,7 +218,7 @@ class CompilerComponent : public Component { line.push_back(text(executable.content) | color(Color::BlueLight) | bold); } // Input - for(auto& it : input.entries) { + for (auto& it : input.entries) { line.push_back(text(L" " + it) | color(Color::RedLight)); } return line; @@ -220,6 +226,7 @@ class CompilerComponent : public Component { }; class SpinnerComponent : public Component { + // clang-format off Element Render() override { Elements entries; for(int i = 0; i<22; ++i) { @@ -233,9 +240,11 @@ class SpinnerComponent : public Component { } return hflow(std::move(entries)) | border; } + // clang-format on }; class ColorComponent : public Component { + // clang-format off Element Render() override { return hbox( @@ -278,10 +287,12 @@ class ColorComponent : public Component { bgcolor(Color::YellowLight, text(L"YellowLight")) ) ) | hcenter | border; + // clang-format on } }; class GaugeComponent : public Component { + // clang-format off Element RenderGauge(int delta) { float progress = (shift + delta) % 1000 / 1000.f; return hbox(text(std::to_wstring(int(progress * 100)) + L"% ") | size(WIDTH, EQUAL, 5), @@ -308,46 +319,40 @@ class GaugeComponent : public Component { RenderGauge(348) | color(Color::YellowLight) ) | border; }; + // clang-format on }; class Tab : public Component { - public: - Container main_container = Container::Vertical(); + public: + Container main_container = Container::Vertical(); - Toggle tab_selection; - Container container = Container::Tab(&tab_selection.selected); + Toggle tab_selection; + Container container = Container::Tab(&tab_selection.selected); - HTopComponent htop_component; - ColorComponent color_component; - SpinnerComponent spinner_component; - GaugeComponent gauge_component; - CompilerComponent compiler_component; + HTopComponent htop_component; + ColorComponent color_component; + SpinnerComponent spinner_component; + GaugeComponent gauge_component; + CompilerComponent compiler_component; - Tab() { - Add(&main_container); - main_container.Add(&tab_selection); - tab_selection.entries = { - L"htop", - L"color", - L"spinner", - L"gauge", - L"compiler", - }; - main_container.Add(&container); - container.Add(&htop_component); - container.Add(&color_component); - container.Add(&spinner_component); - container.Add(&gauge_component); - container.Add(&compiler_component); - } + Tab() { + Add(&main_container); + main_container.Add(&tab_selection); + tab_selection.entries = { + L"htop", L"color", L"spinner", L"gauge", L"compiler", + }; + main_container.Add(&container); + container.Add(&htop_component); + container.Add(&color_component); + container.Add(&spinner_component); + container.Add(&gauge_component); + container.Add(&compiler_component); + } - Element Render() override { - return vbox( - text(L"FTXUI Demo") | bold | hcenter, - tab_selection.Render() | hcenter, - container.Render() - ); - } + Element Render() override { + return vbox(text(L"FTXUI Demo") | bold | hcenter, + tab_selection.Render() | hcenter, container.Render()); + } }; int main(int argc, const char* argv[]) { diff --git a/examples/component/input.cpp b/examples/component/input.cpp index c402242..cfe5aa7 100644 --- a/examples/component/input.cpp +++ b/examples/component/input.cpp @@ -1,7 +1,8 @@ +#include "ftxui/component/input.hpp" + #include #include "ftxui/component/container.hpp" -#include "ftxui/component/input.hpp" #include "ftxui/component/screen_interactive.hpp" #include "ftxui/screen/string.hpp" @@ -28,6 +29,7 @@ class MyComponent : public Component { Input input_2; Input input_3; + // clang-format off Element Render() override { return border( @@ -38,6 +40,7 @@ class MyComponent : public Component { ) ); } + // clang-format on }; int main(int argc, const char* argv[]) { diff --git a/examples/component/menu.cpp b/examples/component/menu.cpp index a33ace4..43afd46 100644 --- a/examples/component/menu.cpp +++ b/examples/component/menu.cpp @@ -1,8 +1,9 @@ +#include "ftxui/component/menu.hpp" + #include #include #include -#include "ftxui/component/menu.hpp" #include "ftxui/component/screen_interactive.hpp" int main(int argc, const char* argv[]) { diff --git a/examples/component/menu2.cpp b/examples/component/menu2.cpp index f5665fc..d078855 100644 --- a/examples/component/menu2.cpp +++ b/examples/component/menu2.cpp @@ -10,27 +10,33 @@ using namespace ftxui; class MyComponent : public Component { - public: - MyComponent() { - Add(&container); - container.Add(&left_menu); - container.Add(&right_menu); + public: + MyComponent() { + Add(&container); + container.Add(&left_menu); + container.Add(&right_menu); - left_menu.entries = {L"0%", L"10%", L"20%", L"30%", L"40%", L"50%", - L"60%", L"70%", L"80%", L"90%"}; - right_menu.entries = {L"0%", L"1%", L"2%", L"3%", L"4%", L"5%", - L"6%", L"7%", L"8%", L"9%", L"10%"}; + left_menu.entries = { + L"0%", L"10%", L"20%", L"30%", L"40%", + L"50%", L"60%", L"70%", L"80%", L"90%", + }; + right_menu.entries = { + L"0%", L"1%", L"2%", L"3%", L"4%", L"5%", + L"6%", L"7%", L"8%", L"9%", L"10%", + }; - left_menu.on_enter = [this]() { on_enter(); }; - right_menu.on_enter = [this]() { on_enter(); }; - } + left_menu.on_enter = [this]() { on_enter(); }; + right_menu.on_enter = [this]() { on_enter(); }; + } - std::function on_enter = [](){}; - private: - Container container = Container::Horizontal(); - Menu left_menu; - Menu right_menu; + std::function on_enter = []() {}; + private: + Container container = Container::Horizontal(); + Menu left_menu; + Menu right_menu; + + // clang-format off Element Render() override { int sum = left_menu.selected * 10 + right_menu.selected; return @@ -61,10 +67,10 @@ class MyComponent : public Component { ) ); } + // clang-format on }; -int main(int argc, const char *argv[]) -{ +int main(int argc, const char* argv[]) { auto screen = ScreenInteractive::TerminalOutput(); MyComponent component; component.on_enter = screen.ExitLoopClosure(); diff --git a/examples/component/menu_style.cpp b/examples/component/menu_style.cpp index 0f6b6fe..ae3e4ae 100644 --- a/examples/component/menu_style.cpp +++ b/examples/component/menu_style.cpp @@ -9,50 +9,48 @@ using namespace ftxui; class MyComponent : public Component { - public: - MyComponent() { - Add(&container); + public: + MyComponent() { + Add(&container); - for(Menu* menu : {&menu_1, &menu_2, &menu_3, &menu_4, &menu_5, &menu_6}) { - container.Add(menu); - menu->entries = { - L"Monkey", - L"Dog", - L"Cat", - L"Bird", - L"Elephant", - }; - menu->on_enter = [this]() { on_enter(); }; - } + for (Menu* menu : {&menu_1, &menu_2, &menu_3, &menu_4, &menu_5, &menu_6}) { + container.Add(menu); + menu->entries = { + L"Monkey", L"Dog", L"Cat", L"Bird", L"Elephant", + }; + menu->on_enter = [this]() { on_enter(); }; + } - menu_2.selected_style = color(Color::Blue); - menu_2.focused_style = bold | color(Color::Blue); + menu_2.selected_style = color(Color::Blue); + menu_2.focused_style = bold | color(Color::Blue); - menu_3.selected_style = color(Color::Blue); - menu_3.focused_style = bgcolor(Color::Blue); + menu_3.selected_style = color(Color::Blue); + menu_3.focused_style = bgcolor(Color::Blue); - menu_4.selected_style = bgcolor(Color::Blue); - menu_4.focused_style = bgcolor(Color::BlueLight); + menu_4.selected_style = bgcolor(Color::Blue); + menu_4.focused_style = bgcolor(Color::BlueLight); - menu_5.normal_style = bgcolor(Color::Blue); - menu_5.selected_style = bgcolor(Color::Yellow); - menu_5.focused_style = bgcolor(Color::Red); + menu_5.normal_style = bgcolor(Color::Blue); + menu_5.selected_style = bgcolor(Color::Yellow); + menu_5.focused_style = bgcolor(Color::Red); - menu_6.normal_style = dim | color(Color::Blue); - menu_6.selected_style = color(Color::Blue); - menu_6.focused_style = bold | color(Color::Blue); - } + menu_6.normal_style = dim | color(Color::Blue); + menu_6.selected_style = color(Color::Blue); + menu_6.focused_style = bold | color(Color::Blue); + } - std::function on_enter = [](){}; - private: - Container container = Container::Horizontal(); - Menu menu_1; - Menu menu_2; - Menu menu_3; - Menu menu_4; - Menu menu_5; - Menu menu_6; + std::function on_enter = []() {}; + private: + Container container = Container::Horizontal(); + Menu menu_1; + Menu menu_2; + Menu menu_3; + Menu menu_4; + Menu menu_5; + Menu menu_6; + + // clang-format off Element Render() override { return hbox( @@ -64,10 +62,10 @@ class MyComponent : public Component { menu_6.Render() | flex ) | border; } + // clang-format on }; -int main(int argc, const char *argv[]) -{ +int main(int argc, const char* argv[]) { auto screen = ScreenInteractive::TerminalOutput(); MyComponent component; component.on_enter = screen.ExitLoopClosure(); diff --git a/examples/component/radiobox.cpp b/examples/component/radiobox.cpp index 4d3fc4b..8a9dd7e 100644 --- a/examples/component/radiobox.cpp +++ b/examples/component/radiobox.cpp @@ -1,4 +1,5 @@ #include "ftxui/component/radiobox.hpp" + #include "ftxui/component/component.hpp" #include "ftxui/component/container.hpp" #include "ftxui/component/screen_interactive.hpp" diff --git a/examples/component/radiobox_in_frame.cpp b/examples/component/radiobox_in_frame.cpp index 3415638..7bcb206 100644 --- a/examples/component/radiobox_in_frame.cpp +++ b/examples/component/radiobox_in_frame.cpp @@ -14,7 +14,7 @@ class MyComponent : public Component { public: MyComponent() { - for(int i = 0; i<30; ++i) { + for (int i = 0; i < 30; ++i) { radiobox.entries.push_back(L"RadioBox " + to_wstring(i)); } Add(&radiobox); diff --git a/examples/component/tab_horizontal.cpp b/examples/component/tab_horizontal.cpp index 47c8ec1..d827505 100644 --- a/examples/component/tab_horizontal.cpp +++ b/examples/component/tab_horizontal.cpp @@ -44,13 +44,9 @@ class MyComponent : public Component { std::function on_enter = []() {}; - Element Render(){ - return - vbox( - toggle_.Render(), - separator(), - tab_container_.Render() - ) | border; + Element Render() { + return vbox(toggle_.Render(), separator(), tab_container_.Render()) | + border; } private: diff --git a/examples/component/toggle.cpp b/examples/component/toggle.cpp index 5c8ef75..6dc185a 100644 --- a/examples/component/toggle.cpp +++ b/examples/component/toggle.cpp @@ -1,10 +1,11 @@ +#include "ftxui/component/toggle.hpp" + #include #include #include #include "ftxui/component/container.hpp" #include "ftxui/component/screen_interactive.hpp" -#include "ftxui/component/toggle.hpp" #include "ftxui/screen/string.hpp" using namespace ftxui; @@ -33,6 +34,7 @@ class MyComponent : public Component { Toggle toggle_3_; Toggle toggle_4_; + // clang-format off Element Render() override { return vbox( @@ -44,6 +46,7 @@ class MyComponent : public Component { hbox(text(L" * Number of elements : "), toggle_4_.Render()) ); } + // clang-format on }; int main(int argc, const char* argv[]) { diff --git a/examples/dom/border.cpp b/examples/dom/border.cpp index e994b0e..0211d64 100644 --- a/examples/dom/border.cpp +++ b/examples/dom/border.cpp @@ -2,12 +2,12 @@ #include #include -#include "ftxui/screen/screen.hpp" #include "ftxui/dom/elements.hpp" +#include "ftxui/screen/screen.hpp" -int main(int argc, const char *argv[]) -{ +int main(int argc, const char* argv[]) { using namespace ftxui; + // clang-format off auto document = hbox( window(text(L" main frame ") | hcenter, @@ -41,6 +41,7 @@ int main(int argc, const char *argv[]) ), filler() ); + // clang-format on auto screen = Screen::Create(Dimension::Full(), Dimension::Fit(document)); Render(screen, document.get()); std::cout << screen.ToString() << std::endl; diff --git a/examples/dom/dbox.cpp b/examples/dom/dbox.cpp index df12fb4..698af03 100644 --- a/examples/dom/dbox.cpp +++ b/examples/dom/dbox.cpp @@ -1,10 +1,11 @@ -#include "ftxui/screen/screen.hpp" -#include "ftxui/dom/elements.hpp" #include -int main(int argc, const char *argv[]) -{ +#include "ftxui/dom/elements.hpp" +#include "ftxui/screen/screen.hpp" + +int main(int argc, const char* argv[]) { using namespace ftxui; + // clang-format off auto document = dbox( vbox( @@ -16,6 +17,7 @@ int main(int argc, const char *argv[]) ) | border, text(L"overlay") | border | center ); + // clang-format on auto screen = Screen::Create(Dimension::Full(), Dimension::Fit(document)); Render(screen, document.get()); diff --git a/examples/dom/gauge.cpp b/examples/dom/gauge.cpp index fa3fada..2fe63e8 100644 --- a/examples/dom/gauge.cpp +++ b/examples/dom/gauge.cpp @@ -2,24 +2,25 @@ #include #include -#include "ftxui/screen/screen.hpp" #include "ftxui/dom/elements.hpp" +#include "ftxui/screen/screen.hpp" -int main(int argc, const char *argv[]) -{ +int main(int argc, const char* argv[]) { using namespace ftxui; using namespace std::chrono_literals; std::string reset_position; - for(float percentage = 0; percentage <= 1.0; percentage+=0.002) { + for (float percentage = 0; percentage <= 1.0; percentage += 0.002) { std::wstring data_downloaded = std::to_wstring(int(percentage * 5000)) + L"/5000"; + // clang-format off auto document = hbox( text(L"downloading:"), gauge(percentage) | flex, text(L" " + data_downloaded) ); + // clang-format on auto screen = Screen(100, 1); Render(screen, document.get()); std::cout << reset_position << screen.ToString() << std::flush; diff --git a/examples/dom/graph.cpp b/examples/dom/graph.cpp index 576e19f..c92e3af 100644 --- a/examples/dom/graph.cpp +++ b/examples/dom/graph.cpp @@ -2,6 +2,7 @@ #include #include #include + #include "ftxui/dom/elements.hpp" #include "ftxui/screen/screen.hpp" #include "ftxui/screen/string.hpp" @@ -13,7 +14,7 @@ class Graph { for (int i = 0; i < width; ++i) { float v = 0; v += 0.1 * sin((i + shift) * 0.1); - v += 0.2 * sin((i + shift+10) * 0.15); + v += 0.2 * sin((i + shift + 10) * 0.15); v += 0.1 * sin((i + shift) * 0.03); v *= height; v += 0.5 * height; @@ -40,6 +41,7 @@ int main(int argc, const char* argv[]) { std::string reset_position; for (int i = 0;; ++i) { + // clang-format off auto document = hbox( vbox( @@ -55,6 +57,7 @@ int main(int argc, const char* argv[]) { ) | border | size(HEIGHT, GREATER_THAN, 40); + // clang-format on auto screen = Screen::Create(Dimension::Full(), Dimension::Fit(document)); Render(screen, document.get()); diff --git a/examples/dom/hflow.cpp b/examples/dom/hflow.cpp index 1619844..99f2b41 100644 --- a/examples/dom/hflow.cpp +++ b/examples/dom/hflow.cpp @@ -1,47 +1,32 @@ -#include "ftxui/screen/screen.hpp" -#include "ftxui/screen/string.hpp" -#include "ftxui/dom/elements.hpp" #include -int main(int argc, const char *argv[]) -{ +#include "ftxui/dom/elements.hpp" +#include "ftxui/screen/screen.hpp" +#include "ftxui/screen/string.hpp" + +int main(int argc, const char* argv[]) { using namespace ftxui; auto make_box = [](size_t dimx, size_t dimy) { std::wstring title = to_wstring(dimx) + L"x" + to_wstring(dimy); - return - window( - text(title) | hcenter | bold, - text(L"content") | hcenter | dim - ) | size(WIDTH, EQUAL, dimx) - | size(HEIGHT, EQUAL, dimy) - ; + // clang-format off + return window(text(title) | hcenter | bold, + text(L"content") | hcenter | dim) | + size(WIDTH, EQUAL, dimx) | size(HEIGHT, EQUAL, dimy); + // clang-format on }; + // clang-format off auto document = - hflow( - make_box(7,7), - make_box(7,5), - make_box(5,7), - make_box(10,4), - make_box(10,4), - make_box(10,4), - make_box(10,4), - make_box(11,4), - make_box(11,4), - make_box(11,4), - make_box(11,4), - make_box(12,4), - make_box(12,5), - make_box(12,4), - make_box(13,4), - make_box(13,3), - make_box(13,3), - make_box(10,3) - ) | size(WIDTH, GREATER_THAN, 20) + hflow(make_box(7, 7), make_box(7, 5), make_box(5, 7), make_box(10, 4), + make_box(10, 4), make_box(10, 4), make_box(10, 4), make_box(11, 4), + make_box(11, 4), make_box(11, 4), make_box(11, 4), make_box(12, 4), + make_box(12, 5), make_box(12, 4), make_box(13, 4), make_box(13, 3), + make_box(13, 3), make_box(10, 3)) + | size(WIDTH, GREATER_THAN, 20) | border | size(HEIGHT, GREATER_THAN, 30) - | size(WIDTH, LESS_THAN, 50) - ; + | size(WIDTH, LESS_THAN, 50); + // clang-format on auto screen = Screen::Create(Dimension::Full(), Dimension::Fit(document)); Render(screen, document.get()); diff --git a/examples/dom/html_like.cpp b/examples/dom/html_like.cpp index 4147b5b..318fde5 100644 --- a/examples/dom/html_like.cpp +++ b/examples/dom/html_like.cpp @@ -1,6 +1,7 @@ #include #include #include + #include "ftxui/dom/elements.hpp" #include "ftxui/screen/screen.hpp" #include "ftxui/screen/string.hpp" diff --git a/examples/dom/package_manager.cpp b/examples/dom/package_manager.cpp index 328ac1f..e3b99b4 100644 --- a/examples/dom/package_manager.cpp +++ b/examples/dom/package_manager.cpp @@ -1,15 +1,14 @@ #include #include +#include #include +#include #include "ftxui/dom/elements.hpp" #include "ftxui/screen/screen.hpp" #include "ftxui/screen/string.hpp" -#include -#include -int main(int argc, const char *argv[]) -{ +int main(int argc, const char* argv[]) { using namespace ftxui; struct Task { @@ -46,6 +45,7 @@ int main(int argc, const char *argv[]) return text(to_wstring(number)) | size(WIDTH, EQUAL, 3); }; + // clang-format off auto renderTask = [&](const Task& task) { auto style = (task.downloaded == task.size) ? dim : bold; return @@ -87,9 +87,10 @@ int main(int argc, const char *argv[]) hbox(renderSummary(), filler()) ); }; + // clang-format on - auto updateModel = [&](){ - for(auto& task : displayed_task) { + auto updateModel = [&]() { + for (auto& task : displayed_task) { if (task.downloaded != task.size) { task.downloaded++; } else if (task.number_of_threads) { @@ -111,8 +112,7 @@ int main(int argc, const char *argv[]) }; std::string reset_position; - for(;;) { - + for (;;) { // Draw. auto document = render(); auto screen = Screen::Create(Dimension::Full(), Dimension::Fit(document)); diff --git a/examples/dom/paragraph.cpp b/examples/dom/paragraph.cpp index 529f23e..614e689 100644 --- a/examples/dom/paragraph.cpp +++ b/examples/dom/paragraph.cpp @@ -1,13 +1,15 @@ -#include "ftxui/screen/screen.hpp" -#include "ftxui/screen/string.hpp" -#include "ftxui/dom/elements.hpp" #include -int main(int argc, const char *argv[]) -{ - using namespace ftxui; - std::wstring p = LR"(In probability theory and statistics, Bayes' theorem (alternatively Bayes' law or Bayes' rule) describes the probability of an event, based on prior knowledge of conditions that might be related to the event. For example, if cancer is related to age, then, using Bayes' theorem, a person's age can be used to more accurately assess the probability that they have cancer, compared to the assessment of the probability of cancer made without knowledge of the person's age. One of the many applications of Bayes' theorem is Bayesian inference, a particular approach to statistical inference. When applied, the probabilities involved in Bayes' theorem may have different probability interpretations. With the Bayesian probability interpretation the theorem expresses how a subjective degree of belief should rationally change to account for availability of related evidence. Bayesian inference is fundamental to Bayesian statistics.)"; +#include "ftxui/dom/elements.hpp" +#include "ftxui/screen/screen.hpp" +#include "ftxui/screen/string.hpp" +int main(int argc, const char* argv[]) { + using namespace ftxui; + std::wstring p = + LR"(In probability theory and statistics, Bayes' theorem (alternatively Bayes' law or Bayes' rule) describes the probability of an event, based on prior knowledge of conditions that might be related to the event. For example, if cancer is related to age, then, using Bayes' theorem, a person's age can be used to more accurately assess the probability that they have cancer, compared to the assessment of the probability of cancer made without knowledge of the person's age. One of the many applications of Bayes' theorem is Bayesian inference, a particular approach to statistical inference. When applied, the probabilities involved in Bayes' theorem may have different probability interpretations. With the Bayesian probability interpretation the theorem expresses how a subjective degree of belief should rationally change to account for availability of related evidence. Bayesian inference is fundamental to Bayesian statistics.)"; + + // clang-format off auto document = vbox( hbox( @@ -23,6 +25,7 @@ int main(int argc, const char *argv[]) hflow(paragraph(p)) | border ) | flex ); + // clang-format on auto screen = Screen::Create(Dimension::Full(), Dimension::Fit(document)); Render(screen, document.get()); diff --git a/examples/dom/separator.cpp b/examples/dom/separator.cpp index 3af4114..8e69fa9 100644 --- a/examples/dom/separator.cpp +++ b/examples/dom/separator.cpp @@ -1,10 +1,11 @@ -#include "ftxui/screen/screen.hpp" -#include "ftxui/dom/elements.hpp" #include -int main(int argc, const char *argv[]) -{ +#include "ftxui/dom/elements.hpp" +#include "ftxui/screen/screen.hpp" + +int main(int argc, const char* argv[]) { using namespace ftxui; + // clang-format off auto document = hbox( text(L"left-column"), @@ -17,6 +18,7 @@ int main(int argc, const char *argv[]) separator(), text(L"right-column") ) | border; + // clang-format on auto screen = Screen::Create(Dimension::Full(), Dimension::Fit(document)); Render(screen, document.get()); diff --git a/examples/dom/size.cpp b/examples/dom/size.cpp index 3bce0c1..ec3cfe0 100644 --- a/examples/dom/size.cpp +++ b/examples/dom/size.cpp @@ -1,11 +1,12 @@ -#include "ftxui/screen/screen.hpp" -#include "ftxui/screen/string.hpp" -#include "ftxui/dom/elements.hpp" #include -int main(int argc, const char *argv[]) -{ +#include "ftxui/dom/elements.hpp" +#include "ftxui/screen/screen.hpp" +#include "ftxui/screen/string.hpp" + +int main(int argc, const char* argv[]) { using namespace ftxui; + // clang-format off auto make_box = [](const std::wstring title) { return window( @@ -21,6 +22,7 @@ int main(int argc, const char *argv[]) | size(WIDTH, EQUAL, x) ); } + // clang-format on auto document = hbox(std::move(content)); auto screen = Screen::Create(Dimension::Fit(document)); Render(screen, document.get()); diff --git a/examples/dom/spinner.cpp b/examples/dom/spinner.cpp index 56307b4..c038252 100644 --- a/examples/dom/spinner.cpp +++ b/examples/dom/spinner.cpp @@ -17,6 +17,7 @@ int main(int argc, const char *argv[]) for(int i = 0; i<22; ++i) { if (i != 0) entries.push_back(separator()); + // clang-format off entries.push_back( hbox( text(to_wstring(i)) | size(WIDTH, EQUAL, 2), @@ -24,6 +25,7 @@ int main(int argc, const char *argv[]) spinner(i, index) | bold ) ); + // clang-format on } auto document = hbox(vbox(std::move(entries)) | border, filler()); auto screen = Screen::Create(Dimension::Full(), Dimension::Fit(document)); diff --git a/examples/dom/style_blink.cpp b/examples/dom/style_blink.cpp index 3a7814c..a170d77 100644 --- a/examples/dom/style_blink.cpp +++ b/examples/dom/style_blink.cpp @@ -1,16 +1,18 @@ -#include "ftxui/screen/screen.hpp" -#include "ftxui/dom/elements.hpp" #include -int main(int argc, const char *argv[]) -{ +#include "ftxui/dom/elements.hpp" +#include "ftxui/screen/screen.hpp" + +int main(int argc, const char* argv[]) { using namespace ftxui; + // clang-format off auto document = hbox( text(L"This text is "), text(L"blink") | blink, text(L". Do you like it?") ); + // clang-format on auto screen = Screen::Create(Dimension::Full(), Dimension::Fit(document)); Render(screen, document.get()); diff --git a/examples/dom/style_bold.cpp b/examples/dom/style_bold.cpp index c612b72..faf13b1 100644 --- a/examples/dom/style_bold.cpp +++ b/examples/dom/style_bold.cpp @@ -1,16 +1,18 @@ -#include "ftxui/screen/screen.hpp" -#include "ftxui/dom/elements.hpp" #include -int main(int argc, const char *argv[]) -{ +#include "ftxui/dom/elements.hpp" +#include "ftxui/screen/screen.hpp" + +int main(int argc, const char* argv[]) { using namespace ftxui; + // clang-format off auto document = hbox( text(L"This text is "), text(L"bold") | bold, text(L". Do you like it?") ); + // clang-format on auto screen = Screen::Create(Dimension::Full(), Dimension::Fit(document)); Render(screen, document.get()); diff --git a/examples/dom/style_color.cpp b/examples/dom/style_color.cpp index 8b05578..8d87eaf 100644 --- a/examples/dom/style_color.cpp +++ b/examples/dom/style_color.cpp @@ -1,10 +1,11 @@ -#include "ftxui/screen/screen.hpp" -#include "ftxui/dom/elements.hpp" #include -int main(int argc, const char *argv[]) -{ +#include "ftxui/dom/elements.hpp" +#include "ftxui/screen/screen.hpp" + +int main(int argc, const char* argv[]) { using namespace ftxui; + // clang-format off auto document = hbox( vbox( @@ -47,6 +48,7 @@ int main(int argc, const char *argv[]) ), filler() ); + // clang-format on auto screen = Screen::Create(Dimension::Full(), Dimension::Fit(document)); Render(screen, document.get()); diff --git a/examples/dom/style_dim.cpp b/examples/dom/style_dim.cpp index 7299f6b..96d29ab 100644 --- a/examples/dom/style_dim.cpp +++ b/examples/dom/style_dim.cpp @@ -5,12 +5,14 @@ int main(int argc, const char *argv[]) { using namespace ftxui; + // clang-format off auto document = hbox( text(L"This text is "), text(L"dim") | dim, text(L". Do you like it?") ); + // clang-format on auto screen = Screen::Create(Dimension::Full(), Dimension::Fit(document)); Render(screen, document.get()); diff --git a/examples/dom/style_gallery.cpp b/examples/dom/style_gallery.cpp index 82528d2..54b1660 100644 --- a/examples/dom/style_gallery.cpp +++ b/examples/dom/style_gallery.cpp @@ -5,6 +5,7 @@ int main(int argc, const char *argv[]) { using namespace ftxui; + // clang-format off auto document = hbox( text(L"normal") , text(L" ") , @@ -16,6 +17,7 @@ int main(int argc, const char *argv[]) text(L"color") | color(Color::Blue) , text(L" ") , text(L"bgcolor") | bgcolor(Color::Blue) ); + // clang-format on auto screen = Screen::Create(Dimension::Full(), Dimension::Fit(document)); Render(screen, document.get()); diff --git a/examples/dom/style_inverted.cpp b/examples/dom/style_inverted.cpp index 7f0f6fa..f81572a 100644 --- a/examples/dom/style_inverted.cpp +++ b/examples/dom/style_inverted.cpp @@ -5,12 +5,14 @@ int main(int argc, const char *argv[]) { using namespace ftxui; + // clang-format off auto document = hbox( text(L"This text is "), text(L"inverted") | inverted, text(L". Do you like it?") ); + // clang-format on auto screen = Screen::Create(Dimension::Full(), Dimension::Fit(document)); Render(screen, document.get()); diff --git a/examples/dom/style_underlined.cpp b/examples/dom/style_underlined.cpp index 3b63bcf..fdd98fe 100644 --- a/examples/dom/style_underlined.cpp +++ b/examples/dom/style_underlined.cpp @@ -5,12 +5,14 @@ int main(int argc, const char *argv[]) { using namespace ftxui; + // clang-format off auto document = hbox( text(L"This text is "), text(L"underlined") | underlined, text(L". Do you like it?") ); + // clang-format on auto screen = Screen::Create(Dimension::Full(), Dimension::Fit(document)); Render(screen, document.get()); diff --git a/examples/dom/vbox_hbox.cpp b/examples/dom/vbox_hbox.cpp index fcf390b..ed1f35e 100644 --- a/examples/dom/vbox_hbox.cpp +++ b/examples/dom/vbox_hbox.cpp @@ -6,6 +6,7 @@ int main(int argc, const char *argv[]) { using namespace ftxui; + // clang-format off auto document = vbox( hbox( @@ -28,6 +29,7 @@ int main(int argc, const char *argv[]) text(L"south-east") ) ); + // clang-format on auto screen = Screen::Create(Dimension::Full()); Render(screen, document.get()); diff --git a/src/ftxui/component/checkbox.cpp b/src/ftxui/component/checkbox.cpp index cf0de37..6e88987 100644 --- a/src/ftxui/component/checkbox.cpp +++ b/src/ftxui/component/checkbox.cpp @@ -1,4 +1,5 @@ #include "ftxui/component/checkbox.hpp" + #include namespace ftxui { @@ -17,7 +18,7 @@ bool CheckBox::OnEvent(Event event) { on_change(); return true; } - return false; + return false; } } // namespace ftxui diff --git a/src/ftxui/component/component.cpp b/src/ftxui/component/component.cpp index a980e97..e194138 100644 --- a/src/ftxui/component/component.cpp +++ b/src/ftxui/component/component.cpp @@ -1,11 +1,16 @@ #include "ftxui/component/component.hpp" + #include +#include + namespace ftxui { -void Component::Detach() { if (!parent_) return; auto it = std::find(std::begin(parent_->children_), +void Component::Detach() { + if (!parent_) + return; + auto it = std::find(std::begin(parent_->children_), std::end(parent_->children_), this); parent_->children_.erase(it); - } void Component::Attach(Component* parent) { @@ -23,7 +28,7 @@ Component::~Component() { } bool Component::OnEvent(Event event) { - for(Component* child : children_) { + for (Component* child : children_) { if (child->OnEvent(event)) return true; } @@ -43,7 +48,7 @@ Element Component::Render() { bool Component::Focused() { Component* current = this; - for(;;) { + for (;;) { Component* parent = current->parent_; if (!parent) return true; diff --git a/src/ftxui/component/container.cpp b/src/ftxui/component/container.cpp index dbbcd49..b9743c4 100644 --- a/src/ftxui/component/container.cpp +++ b/src/ftxui/component/container.cpp @@ -1,5 +1,7 @@ #include "ftxui/component/container.hpp" +#include + namespace ftxui { // static diff --git a/src/ftxui/component/event.cpp b/src/ftxui/component/event.cpp index 3e651d2..4fc467e 100644 --- a/src/ftxui/component/event.cpp +++ b/src/ftxui/component/event.cpp @@ -1,5 +1,7 @@ -#include #include "ftxui/component/event.hpp" + +#include + #include "ftxui/screen/string.hpp" namespace ftxui { @@ -49,7 +51,7 @@ Event ParseCSI(std::function getchar, std::string& input) { char c = getchar(); input += c; - if (c >= '0' && c<= '9') + if (c >= '0' && c <= '9') continue; if (c == ';') @@ -93,9 +95,12 @@ Event ParseOSC(std::function getchar, std::string& input) { Event ParseESC(std::function getchar, std::string& input) { input += getchar(); switch (input.back()) { - case 'P': return ParseDCS(getchar, input); - case '[': return ParseCSI(getchar, input); - case ']': return ParseOSC(getchar, input); + case 'P': + return ParseDCS(getchar, input); + case '[': + return ParseCSI(getchar, input); + case ']': + return ParseOSC(getchar, input); default: input += getchar(); return Event::Special(input); diff --git a/src/ftxui/component/input.cpp b/src/ftxui/component/input.cpp index 2f1838d..4cf4486 100644 --- a/src/ftxui/component/input.cpp +++ b/src/ftxui/component/input.cpp @@ -1,5 +1,6 @@ #include "ftxui/component/input.hpp" #include "ftxui/screen/string.hpp" +#include namespace ftxui { @@ -31,13 +32,14 @@ Element Input::Render() { auto focused = is_focused ? focus : select; + // clang-format off return hbox( text(part_before_cursor), text(part_at_cursor) | underlined | focused, text(part_after_cursor) ) | flex | inverted | frame | main_decorator; - + // clang-format off } bool Input::OnEvent(Event event) { cursor_position = std::max(0, std::min(content.size(), cursor_position)); diff --git a/src/ftxui/component/menu.cpp b/src/ftxui/component/menu.cpp index 3f751b6..dc96e88 100644 --- a/src/ftxui/component/menu.cpp +++ b/src/ftxui/component/menu.cpp @@ -1,6 +1,7 @@ #include "ftxui/component/menu.hpp" #include #include +#include namespace ftxui { diff --git a/src/ftxui/component/radiobox.cpp b/src/ftxui/component/radiobox.cpp index 17fc264..ae5320b 100644 --- a/src/ftxui/component/radiobox.cpp +++ b/src/ftxui/component/radiobox.cpp @@ -1,5 +1,6 @@ #include "ftxui/component/radiobox.hpp" #include +#include namespace ftxui { diff --git a/src/ftxui/component/screen_interactive.cpp b/src/ftxui/component/screen_interactive.cpp index f48d813..180b563 100644 --- a/src/ftxui/component/screen_interactive.cpp +++ b/src/ftxui/component/screen_interactive.cpp @@ -10,6 +10,7 @@ #include "ftxui/component/component.hpp" #include "ftxui/screen/string.hpp" #include "ftxui/screen/terminal.hpp" +#include #if defined(__clang__) && defined (__APPLE__) // Quick exit is missing in standard CLang headers diff --git a/src/ftxui/component/toggle.cpp b/src/ftxui/component/toggle.cpp index ec3812d..21c1880 100644 --- a/src/ftxui/component/toggle.cpp +++ b/src/ftxui/component/toggle.cpp @@ -1,4 +1,5 @@ #include "ftxui/component/toggle.hpp" +#include namespace ftxui { diff --git a/src/ftxui/dom/blink.cpp b/src/ftxui/dom/blink.cpp index 936eed3..89b4e0e 100644 --- a/src/ftxui/dom/blink.cpp +++ b/src/ftxui/dom/blink.cpp @@ -1,5 +1,5 @@ -#include "ftxui/dom/node_decorator.hpp" #include "ftxui/dom/elements.hpp" +#include "ftxui/dom/node_decorator.hpp" namespace ftxui { diff --git a/src/ftxui/dom/bold.cpp b/src/ftxui/dom/bold.cpp index cbd9a70..175b901 100644 --- a/src/ftxui/dom/bold.cpp +++ b/src/ftxui/dom/bold.cpp @@ -1,5 +1,5 @@ -#include "ftxui/dom/node_decorator.hpp" #include "ftxui/dom/elements.hpp" +#include "ftxui/dom/node_decorator.hpp" namespace ftxui { @@ -11,7 +11,7 @@ class Bold : public NodeDecorator { void Render(Screen& screen) override { for (int y = box_.y_min; y <= box_.y_max; ++y) { for (int x = box_.x_min; x <= box_.x_max; ++x) { - screen.PixelAt(x,y).bold = true; + screen.PixelAt(x, y).bold = true; } } Node::Render(screen); diff --git a/src/ftxui/dom/border.cpp b/src/ftxui/dom/border.cpp index ee50ac0..fdc2db4 100644 --- a/src/ftxui/dom/border.cpp +++ b/src/ftxui/dom/border.cpp @@ -1,5 +1,5 @@ -#include "ftxui/dom/node.hpp" #include "ftxui/dom/elements.hpp" +#include "ftxui/dom/node.hpp" namespace ftxui { @@ -17,7 +17,7 @@ class Border : public Node { : Node(std::move(children)), charset_pixel(10, pixel) {} ~Border() override {} - std::vector charset_pixel; + std::vector charset_pixel; std::vector charset; void ComputeRequirement() override { @@ -71,13 +71,13 @@ class Border : public Node { screen.at(box_.x_max, box_.y_min) = charset[1]; screen.at(box_.x_min, box_.y_max) = charset[2]; screen.at(box_.x_max, box_.y_max) = charset[3]; - for(float x = box_.x_min + 1; x bgcolor(Color c, Element child) { } Decorator color(Color c) { - return [c](Element child) { - return color(c, std::move(child)); - }; + return [c](Element child) { return color(c, std::move(child)); }; } Decorator bgcolor(Color c) { - return [c](Element child) { - return bgcolor(c, std::move(child)); - }; + return [c](Element child) { return bgcolor(c, std::move(child)); }; } } // namespace ftxui diff --git a/src/ftxui/dom/composite_decorator.cpp b/src/ftxui/dom/composite_decorator.cpp index c144544..c4214ef 100644 --- a/src/ftxui/dom/composite_decorator.cpp +++ b/src/ftxui/dom/composite_decorator.cpp @@ -1,5 +1,5 @@ -#include "ftxui/dom/node.hpp" #include "ftxui/dom/elements.hpp" +#include "ftxui/dom/node.hpp" namespace ftxui { @@ -19,4 +19,4 @@ std::unique_ptr align_right(Element child) { return hbox(filler(), std::move(child)); } -} // namespace ftxui +} // namespace ftxui diff --git a/src/ftxui/dom/dbox.cpp b/src/ftxui/dom/dbox.cpp index fd96383..008c711 100644 --- a/src/ftxui/dom/dbox.cpp +++ b/src/ftxui/dom/dbox.cpp @@ -1,5 +1,5 @@ -#include "ftxui/dom/node.hpp" #include "ftxui/dom/elements.hpp" +#include "ftxui/dom/node.hpp" namespace ftxui { @@ -15,8 +15,10 @@ class DBox : public Node { requirement_.flex.y = 0; for (auto& child : children) { child->ComputeRequirement(); - requirement_.min.x = std::max(requirement_.min.x, child->requirement().min.x); - requirement_.min.y = std::max(requirement_.min.y, child->requirement().min.y); + requirement_.min.x = + std::max(requirement_.min.x, child->requirement().min.x); + requirement_.min.y = + std::max(requirement_.min.y, child->requirement().min.y); if (requirement_.selection < child->requirement().selection) { requirement_.selection = child->requirement().selection; diff --git a/src/ftxui/dom/dim.cpp b/src/ftxui/dom/dim.cpp index 8a80abe..1845e1e 100644 --- a/src/ftxui/dom/dim.cpp +++ b/src/ftxui/dom/dim.cpp @@ -1,5 +1,5 @@ -#include "ftxui/dom/node_decorator.hpp" #include "ftxui/dom/elements.hpp" +#include "ftxui/dom/node_decorator.hpp" namespace ftxui { @@ -14,7 +14,7 @@ class Dim : public NodeDecorator { Node::Render(screen); for (int y = box_.y_min; y <= box_.y_max; ++y) { for (int x = box_.x_min; x <= box_.x_max; ++x) { - screen.PixelAt(x,y).dim = true; + screen.PixelAt(x, y).dim = true; } } } diff --git a/src/ftxui/dom/flex.cpp b/src/ftxui/dom/flex.cpp index 6ff5910..a12496b 100644 --- a/src/ftxui/dom/flex.cpp +++ b/src/ftxui/dom/flex.cpp @@ -1,5 +1,5 @@ -#include "ftxui/dom/node.hpp" #include "ftxui/dom/elements.hpp" +#include "ftxui/dom/node.hpp" namespace ftxui { diff --git a/src/ftxui/dom/frame.cpp b/src/ftxui/dom/frame.cpp index d154bf8..7a96bad 100644 --- a/src/ftxui/dom/frame.cpp +++ b/src/ftxui/dom/frame.cpp @@ -1,3 +1,5 @@ +#include + #include "ftxui/dom/elements.hpp" #include "ftxui/dom/node.hpp" #include "ftxui/util/autoreset.hpp" diff --git a/src/ftxui/dom/gauge.cpp b/src/ftxui/dom/gauge.cpp index 4755bae..2f127b9 100644 --- a/src/ftxui/dom/gauge.cpp +++ b/src/ftxui/dom/gauge.cpp @@ -1,5 +1,5 @@ -#include "ftxui/dom/node.hpp" #include "ftxui/dom/elements.hpp" +#include "ftxui/dom/node.hpp" namespace ftxui { @@ -24,10 +24,11 @@ class Gauge : public Node { int x = box_.x_min; while (x < limit_int) screen.at(x++, y) = charset[9]; - screen.at(x++, y) = charset[int(9*(limit-limit_int))]; + screen.at(x++, y) = charset[int(9 * (limit - limit_int))]; while (x <= box_.x_max) screen.at(x++, y) = charset[0]; } + private: float progress_; }; diff --git a/src/ftxui/dom/hbox.cpp b/src/ftxui/dom/hbox.cpp index 4272d3e..c97ab0e 100644 --- a/src/ftxui/dom/hbox.cpp +++ b/src/ftxui/dom/hbox.cpp @@ -1,5 +1,7 @@ -#include "ftxui/dom/node.hpp" +#include + #include "ftxui/dom/elements.hpp" +#include "ftxui/dom/node.hpp" namespace ftxui { diff --git a/src/ftxui/dom/hflow.cpp b/src/ftxui/dom/hflow.cpp index 1904f9f..7218d1d 100644 --- a/src/ftxui/dom/hflow.cpp +++ b/src/ftxui/dom/hflow.cpp @@ -1,5 +1,5 @@ -#include "ftxui/dom/node.hpp" #include "ftxui/dom/elements.hpp" +#include "ftxui/dom/node.hpp" namespace ftxui { @@ -13,7 +13,7 @@ class HFlow : public Node { requirement_.min.y = 0; requirement_.flex.x = 1; requirement_.flex.y = 1; - for(auto& child : children) + for (auto& child : children) child->ComputeRequirement(); } @@ -23,7 +23,7 @@ class HFlow : public Node { // The position of the first component. int x = box.x_min; int y = box.y_min; - int y_next = y; // The position of next row of elements. + int y_next = y; // The position of next row of elements. for (auto& child : children) { Requirement requirement = child->requirement(); @@ -37,7 +37,7 @@ class HFlow : public Node { // Does the current row big enough to contain the element? if (y + requirement.min.y > box.y_max + 1) - break; // No? Ignore the element. + break; // No? Ignore the element. Box children_box; children_box.x_min = x; diff --git a/src/ftxui/dom/inverted.cpp b/src/ftxui/dom/inverted.cpp index eb39278..c0a34f8 100644 --- a/src/ftxui/dom/inverted.cpp +++ b/src/ftxui/dom/inverted.cpp @@ -1,5 +1,5 @@ -#include "ftxui/dom/node_decorator.hpp" #include "ftxui/dom/elements.hpp" +#include "ftxui/dom/node_decorator.hpp" namespace ftxui { @@ -14,7 +14,7 @@ class Inverted : public NodeDecorator { Node::Render(screen); for (int y = box_.y_min; y <= box_.y_max; ++y) { for (int x = box_.x_min; x <= box_.x_max; ++x) { - screen.PixelAt(x,y).inverted = true; + screen.PixelAt(x, y).inverted = true; } } } diff --git a/src/ftxui/dom/node.cpp b/src/ftxui/dom/node.cpp index f30330e..a5cb1a4 100644 --- a/src/ftxui/dom/node.cpp +++ b/src/ftxui/dom/node.cpp @@ -10,7 +10,7 @@ Node::Node(std::vector> children) Node::~Node() {} void Node::ComputeRequirement() { - for(auto& child : children) + for (auto& child : children) child->ComputeRequirement(); } @@ -19,20 +19,20 @@ void Node::SetBox(Box box) { } void Node::Render(Screen& screen) { - for(auto& child : children) + for (auto& child : children) child->Render(screen); } void Render(Screen& screen, Node* node) { // Step 1: Find what dimension this elements wants to be. node->ComputeRequirement(); - + Box box; box.x_min = 0; box.y_min = 0; box.x_max = screen.dimx() - 1; box.y_max = screen.dimy() - 1; - + // Step 2: Assign a dimension to the element. node->SetBox(box); screen.stencil = box; diff --git a/src/ftxui/dom/node_decorator.hpp b/src/ftxui/dom/node_decorator.hpp index fc94502..1b7dae7 100644 --- a/src/ftxui/dom/node_decorator.hpp +++ b/src/ftxui/dom/node_decorator.hpp @@ -1,8 +1,8 @@ #ifndef FTXUI_DOM_NODE_DECORATOR_H_ #define FTXUI_DOM_NODE_DECORATOR_H_ -#include "ftxui/dom/node.hpp" #include "ftxui/dom/elements.hpp" +#include "ftxui/dom/node.hpp" namespace ftxui { diff --git a/src/ftxui/dom/paragraph.cpp b/src/ftxui/dom/paragraph.cpp index 28e76a1..220705d 100644 --- a/src/ftxui/dom/paragraph.cpp +++ b/src/ftxui/dom/paragraph.cpp @@ -1,4 +1,5 @@ #include + #include "ftxui/dom/elements.hpp" namespace ftxui { diff --git a/src/ftxui/dom/size.cpp b/src/ftxui/dom/size.cpp index d4b5af4..d5a167a 100644 --- a/src/ftxui/dom/size.cpp +++ b/src/ftxui/dom/size.cpp @@ -1,3 +1,5 @@ +#include + #include "ftxui/dom/elements.hpp" #include "ftxui/dom/node.hpp" @@ -41,7 +43,7 @@ class Size : public Node { Node::SetBox(box); if (direction_ == WIDTH) { - switch(constraint_) { + switch (constraint_) { case LESS_THAN: case EQUAL: box.x_max = std::min(box.x_min + value_ + 1, box.x_max); @@ -50,7 +52,7 @@ class Size : public Node { break; } } else { - switch(constraint_) { + switch (constraint_) { case LESS_THAN: case EQUAL: box.y_max = std::min(box.y_min + value_ + 1, box.y_max); diff --git a/src/ftxui/dom/spinner.cpp b/src/ftxui/dom/spinner.cpp index b9b4b31..64332f6 100644 --- a/src/ftxui/dom/spinner.cpp +++ b/src/ftxui/dom/spinner.cpp @@ -1,277 +1,259 @@ -#include "ftxui/dom/node.hpp" #include "ftxui/dom/elements.hpp" +#include "ftxui/dom/node.hpp" namespace ftxui { using namespace ftxui; static const std::vector>> elements = { - { - {L"Replaced by the gauge"}, - }, - { - {L". "}, - {L".. "}, - {L"..."}, - }, - { - {L"|"}, - {L"/"}, - {L"-"}, - {L"\\"}, - }, - { - {L"+"}, - {L"x"}, - }, - { - {L"| "}, - {L"|| "}, - {L"|||"}, - }, - { - {L"←"}, - {L"↖"}, - {L"↑"}, - {L"↗"}, - {L"→"}, - {L"↘"}, - {L"↓"}, - {L"↙"}, - }, - { - {L"▁"}, - {L"▂"}, - {L"▃"}, - {L"▄"}, - {L"▅"}, - {L"▆"}, - {L"▇"}, - {L"█"}, - {L"▇"}, - {L"▆"}, - {L"▅"}, - {L"▄"}, - {L"▃"}, - {L"▁"}, - }, - { - {L"▉"}, - {L"▊"}, - {L"▋"}, - {L"▌"}, - {L"▍"}, - {L"▎"}, - {L"▏"}, - {L"▎"}, - {L"▍"}, - {L"▌"}, - {L"▋"}, - {L"▊"}, - }, - { - {L"▖"}, - {L"▘"}, - {L"▝"}, - {L"▗"}, - }, - { - {L"◢"}, - {L"◣"}, - {L"◤"}, - {L"◥"}, - }, - { - {L"◰"}, - {L"◳"}, - {L"◲"}, - {L"◱"}, - }, - { - {L"◴"}, - {L"◷"}, - {L"◶"}, - {L"◵"}, - }, - { - {L"◐"}, - {L"◓"}, - {L"◑"}, - {L"◒"}, - }, - { - {L"◡"}, - {L"⊙"}, - {L"◠"}, - }, - { - {L"⠁"}, - {L"⠂"}, - {L"⠄"}, - {L"⡀"}, - {L"⢀"}, - {L"⠠"}, - {L"⠐"}, - {L"⠈"}, - }, - { - {L"⠋"}, - {L"⠙"}, - {L"⠹"}, - {L"⠸"}, - {L"⠼"}, - {L"⠴"}, - {L"⠦"}, - {L"⠧"}, - {L"⠇"}, - {L"⠏"}, - }, - { - {L"(*----------)"}, - {L"(-*---------)"}, - {L"(--*--------)"}, - {L"(---*-------)"}, - {L"(----*------)"}, - {L"(-----*-----)"}, - {L"(------*----)"}, - {L"(-------*---)"}, - {L"(--------*--)"}, - {L"(---------*-)"}, - {L"(----------*)"}, - {L"(---------*-)"}, - {L"(--------*--)"}, - {L"(-------*---)"}, - {L"(------*----)"}, - {L"(-----*-----)"}, - {L"(----*------)"}, - {L"(---*-------)"}, - {L"(--*--------)"}, - {L"(-*---------)"}, - }, - { - {L"[ ]"}, - {L"[= ]"}, - {L"[== ]"}, - {L"[=== ]"}, - {L"[==== ]"}, - {L"[===== ]"}, - {L"[======]"}, - {L"[===== ]"}, - {L"[==== ]"}, - {L"[=== ]"}, - {L"[== ]"}, - {L"[= ]"}, - }, - { - {L"[ ]"}, - {L"[= ]"}, - {L"[== ]"}, - {L"[=== ]"}, - {L"[==== ]"}, - {L"[===== ]"}, - {L"[======]"}, - {L"[ =====]"}, - {L"[ ====]"}, - {L"[ ===]"}, - {L"[ ==]"}, - {L"[ =]"}, - }, - { - {L"[== ]"}, - {L"[== ]"}, - {L"[== ]"}, - {L"[== ]"}, - {L"[== ]"}, - {L" [== ]"}, - {L"[ == ]"}, - {L"[ == ]"}, - {L"[ ==]"}, - {L"[ ==]"}, - {L"[ ==]"}, - {L"[ ==]"}, - {L"[ ==]"}, - {L"[ ==] "}, - {L"[ == ]"}, - {L"[ == ]"}, - }, - { { - L" ─╮", - L" │", - L" ", + {L"Replaced by the gauge"}, }, { - L" ╮", - L" │", - L" ╯", + {L". "}, + {L".. "}, + {L"..."}, }, { - L" ", - L" │", - L" ─╯", + {L"|"}, + {L"/"}, + {L"-"}, + {L"\\"}, }, { - L" ", - L" ", - L"╰─╯", + {L"+"}, + {L"x"}, }, { - L" ", - L"│ ", - L"╰─ ", + {L"| "}, + {L"|| "}, + {L"|||"}, }, { - L"╭ ", - L"│ ", - L"╰ ", + {L"←"}, + {L"↖"}, + {L"↑"}, + {L"↗"}, + {L"→"}, + {L"↘"}, + {L"↓"}, + {L"↙"}, }, { - L"╭─ ", - L"│ ", - L" ", + {L"▁"}, + {L"▂"}, + {L"▃"}, + {L"▄"}, + {L"▅"}, + {L"▆"}, + {L"▇"}, + {L"█"}, + {L"▇"}, + {L"▆"}, + {L"▅"}, + {L"▄"}, + {L"▃"}, + {L"▁"}, }, { - L"╭─╮", - L" ", - L" ", - } - }, - { - { - L" /\\O ", - L" /\\/ ", - L" /\\ ", - L" / \\ ", - L"LOL LOL", + {L"▉"}, + {L"▊"}, + {L"▋"}, + {L"▌"}, + {L"▍"}, + {L"▎"}, + {L"▏"}, + {L"▎"}, + {L"▍"}, + {L"▌"}, + {L"▋"}, + {L"▊"}, }, { - L" _O ", - L" //|_ ", - L" | ", - L" /| ", - L" LLOL ", + {L"▖"}, + {L"▘"}, + {L"▝"}, + {L"▗"}, }, { - L" O ", - L" /_ ", - L" |\\ ", - L" / | ", - L" LOLLOL ", - } - } -}; + {L"◢"}, + {L"◣"}, + {L"◤"}, + {L"◥"}, + }, + { + {L"◰"}, + {L"◳"}, + {L"◲"}, + {L"◱"}, + }, + { + {L"◴"}, + {L"◷"}, + {L"◶"}, + {L"◵"}, + }, + { + {L"◐"}, + {L"◓"}, + {L"◑"}, + {L"◒"}, + }, + { + {L"◡"}, + {L"⊙"}, + {L"◠"}, + }, + { + {L"⠁"}, + {L"⠂"}, + {L"⠄"}, + {L"⡀"}, + {L"⢀"}, + {L"⠠"}, + {L"⠐"}, + {L"⠈"}, + }, + { + {L"⠋"}, + {L"⠙"}, + {L"⠹"}, + {L"⠸"}, + {L"⠼"}, + {L"⠴"}, + {L"⠦"}, + {L"⠧"}, + {L"⠇"}, + {L"⠏"}, + }, + { + {L"(*----------)"}, {L"(-*---------)"}, {L"(--*--------)"}, + {L"(---*-------)"}, {L"(----*------)"}, {L"(-----*-----)"}, + {L"(------*----)"}, {L"(-------*---)"}, {L"(--------*--)"}, + {L"(---------*-)"}, {L"(----------*)"}, {L"(---------*-)"}, + {L"(--------*--)"}, {L"(-------*---)"}, {L"(------*----)"}, + {L"(-----*-----)"}, {L"(----*------)"}, {L"(---*-------)"}, + {L"(--*--------)"}, {L"(-*---------)"}, + }, + { + {L"[ ]"}, + {L"[= ]"}, + {L"[== ]"}, + {L"[=== ]"}, + {L"[==== ]"}, + {L"[===== ]"}, + {L"[======]"}, + {L"[===== ]"}, + {L"[==== ]"}, + {L"[=== ]"}, + {L"[== ]"}, + {L"[= ]"}, + }, + { + {L"[ ]"}, + {L"[= ]"}, + {L"[== ]"}, + {L"[=== ]"}, + {L"[==== ]"}, + {L"[===== ]"}, + {L"[======]"}, + {L"[ =====]"}, + {L"[ ====]"}, + {L"[ ===]"}, + {L"[ ==]"}, + {L"[ =]"}, + }, + { + {L"[== ]"}, + {L"[== ]"}, + {L"[== ]"}, + {L"[== ]"}, + {L"[== ]"}, + {L" [== ]"}, + {L"[ == ]"}, + {L"[ == ]"}, + {L"[ ==]"}, + {L"[ ==]"}, + {L"[ ==]"}, + {L"[ ==]"}, + {L"[ ==]"}, + {L"[ ==] "}, + {L"[ == ]"}, + {L"[ == ]"}, + }, + {{ + L" ─╮", + L" │", + L" ", + }, + { + L" ╮", + L" │", + L" ╯", + }, + { + L" ", + L" │", + L" ─╯", + }, + { + L" ", + L" ", + L"╰─╯", + }, + { + L" ", + L"│ ", + L"╰─ ", + }, + { + L"╭ ", + L"│ ", + L"╰ ", + }, + { + L"╭─ ", + L"│ ", + L" ", + }, + { + L"╭─╮", + L" ", + L" ", + }}, + {{ + L" /\\O ", + L" /\\/ ", + L" /\\ ", + L" / \\ ", + L"LOL LOL", + }, + { + L" _O ", + L" //|_ ", + L" | ", + L" /| ", + L" LLOL ", + }, + { + L" O ", + L" /_ ", + L" |\\ ", + L" / | ", + L" LOLLOL ", + }}}; std::unique_ptr spinner(int c, size_t index) { if (c == 0) { index %= 40; if (index > 20) - index = 40-index; + index = 40 - index; return gauge(index * 0.05); } c %= elements.size(); index %= elements[c].size(); std::vector lines; - for(const auto& it : elements[c][index]) + for (const auto& it : elements[c][index]) lines.push_back(text(it)); return vbox(std::move(lines)); } diff --git a/src/ftxui/dom/underlined.cpp b/src/ftxui/dom/underlined.cpp index 7c51108..9870cfc 100644 --- a/src/ftxui/dom/underlined.cpp +++ b/src/ftxui/dom/underlined.cpp @@ -1,5 +1,5 @@ -#include "ftxui/dom/node_decorator.hpp" #include "ftxui/dom/elements.hpp" +#include "ftxui/dom/node_decorator.hpp" namespace ftxui { diff --git a/src/ftxui/dom/util.cpp b/src/ftxui/dom/util.cpp index 05da882..febb4cf 100644 --- a/src/ftxui/dom/util.cpp +++ b/src/ftxui/dom/util.cpp @@ -7,10 +7,7 @@ Element nothing(Element element) { } Decorator compose(Decorator a, Decorator b) { - return [ - a = std::move(a), - b = std::move(b) - ](Element element) { + return [a = std::move(a), b = std::move(b)](Element element) { return b(a(std::move(element))); }; } diff --git a/src/ftxui/dom/vbox.cpp b/src/ftxui/dom/vbox.cpp index 6d0a353..cc61866 100644 --- a/src/ftxui/dom/vbox.cpp +++ b/src/ftxui/dom/vbox.cpp @@ -1,3 +1,5 @@ +#include + #include "ftxui/dom/elements.hpp" #include "ftxui/dom/node.hpp" diff --git a/src/ftxui/screen/box.cpp b/src/ftxui/screen/box.cpp index 6bb6506..baf0f46 100644 --- a/src/ftxui/screen/box.cpp +++ b/src/ftxui/screen/box.cpp @@ -1,4 +1,5 @@ #include "ftxui/screen/box.hpp" + #include namespace ftxui { diff --git a/src/ftxui/screen/screen.cpp b/src/ftxui/screen/screen.cpp index 525d204..651b1c5 100644 --- a/src/ftxui/screen/screen.cpp +++ b/src/ftxui/screen/screen.cpp @@ -1,10 +1,12 @@ #include "ftxui/screen/screen.hpp" + +#include +#include + #include "ftxui/dom/node.hpp" #include "ftxui/screen/string.hpp" #include "ftxui/screen/terminal.hpp" -#include - namespace ftxui { namespace { diff --git a/src/ftxui/screen/terminal.cpp b/src/ftxui/screen/terminal.cpp index 49c7c58..9bbcc07 100644 --- a/src/ftxui/screen/terminal.cpp +++ b/src/ftxui/screen/terminal.cpp @@ -1,9 +1,10 @@ +#include "ftxui/screen/terminal.hpp" + #include #include #include -#include -#include "ftxui/screen/terminal.hpp" +#include namespace ftxui { diff --git a/tests/gauge_test.cpp b/tests/gauge_test.cpp index 6e3db32..328b057 100644 --- a/tests/gauge_test.cpp +++ b/tests/gauge_test.cpp @@ -7,7 +7,7 @@ using namespace ftxui; TEST(GaugeTest, zero) { auto root = gauge(0); - Screen screen(11,1); + Screen screen(11, 1); Render(screen, root.get()); EXPECT_EQ(" ", screen.ToString()); @@ -15,7 +15,7 @@ TEST(GaugeTest, zero) { TEST(GaugeTest, half) { auto root = gauge(0.5); - Screen screen(11,1); + Screen screen(11, 1); Render(screen, root.get()); EXPECT_EQ("█████▍ ", screen.ToString()); @@ -24,7 +24,7 @@ TEST(GaugeTest, half) { TEST(GaugeTest, one) { auto root = gauge(1.0); - Screen screen(11,1); + Screen screen(11, 1); Render(screen, root.get()); EXPECT_EQ("███████████", screen.ToString());