diff --git a/.travis.yml b/.travis.yml index 198ef416..4ca73897 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 1948157f..60287c45 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 1f87bcfb..7b3fba40 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 6b12c0bc..b0eb5e9a 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 c402242e..cfe5aa7a 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 a33ace46..43afd461 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 f5665fcf..d0788558 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 0f6b6fef..ae3e4ae3 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 4d3fc4b2..8a9dd7e2 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 34156385..7bcb2066 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 47c8ec19..d827505f 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 5c8ef75a..6dc185a4 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 e994b0ee..0211d64f 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 df12fb41..698af03f 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 fa3fada0..2fe63e84 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 576e19fa..c92e3af0 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 1619844e..99f2b419 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 4147b5b6..318fde5b 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 328ac1f8..e3b99b4f 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 529f23e5..614e6893 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 3af41140..8e69fa92 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 3bce0c12..ec3cfe08 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 56307b45..c0382520 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 3a7814cb..a170d774 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 c612b72a..faf13b18 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 8b05578e..8d87eafe 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 7299f6bb..96d29ab1 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 82528d2b..54b16607 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 7f0f6fa7..f81572ac 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 3b63bcf7..fdd98fe3 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 fcf390bf..ed1f35e6 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 cf0de373..6e88987d 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 a980e974..e194138e 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 dbbcd49d..b9743c49 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 3e651d20..4fc467e7 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 2f1838d4..4cf4486a 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 3f751b6b..dc96e889 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 17fc2645..ae5320b3 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 f48d8134..180b563d 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 ec3812d1..21c1880a 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 936eed38..89b4e0eb 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 cbd9a704..175b9011 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 ee50ac07..fdc2db4f 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 c1445448..c4214efa 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 fd96383c..008c7115 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 8a80abed..1845e1ef 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 6ff5910e..a12496bf 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 d154bf8e..7a96bad2 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 4755bae4..2f127b9e 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 4272d3e2..c97ab0ec 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 1904f9f6..7218d1d5 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 eb39278e..c0a34f80 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 f30330e6..a5cb1a4f 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 fc945021..1b7dae70 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 28e76a16..220705d1 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 d4b5af45..d5a167a8 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 b9b4b316..64332f6f 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 7c511082..9870cfc9 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 05da8822..febb4cf1 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 6d0a3536..cc618669 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 6bb65068..baf0f467 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 525d204a..651b1c51 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 49c7c58d..9bbcc075 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 6e3db32b..328b0579 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());