diff --git a/.gitignore b/.gitignore deleted file mode 100644 index cdedf89..0000000 --- a/.gitignore +++ /dev/null @@ -1,83 +0,0 @@ -# ------------------------------------------------------ -# Build folders (your own build directories) -# ------------------------------------------------------ -linuxbuild/ -macbuild/ -winbuild/ - -# If you ever add a generic build folder: -build/ -build-*/ - -# ------------------------------------------------------ -# CMake generated files -# ------------------------------------------------------ -CMakeFiles/ -CMakeCache.txt -cmake_install.cmake -Makefile -install_manifest.txt - -# ninja build -.ninja_log -.ninja_deps -rules.ninja - -# ------------------------------------------------------ -# Compiled object files / binaries -# ------------------------------------------------------ -*.o -*.obj -*.lo -*.la -*.a -*.lib -*.so -*.dll -*.dylib -*.exe -*.out -*.app -*.pch - -# ------------------------------------------------------ -# Logs + temporary files -# ------------------------------------------------------ -*.log -*.tmp -*.temp - -# ------------------------------------------------------ -# OS-generated crap -# ------------------------------------------------------ -# macOS -.DS_Store -.AppleDouble -.LSOverride - -# Windows -Thumbs.db -ehthumbs.db -Desktop.ini - -# Linux -*~ - -# ------------------------------------------------------ -# Editor / IDE files -# ------------------------------------------------------ -.vscode/ -.idea/ -*.code-workspace - -# ------------------------------------------------------ -# Shell script caches -# ------------------------------------------------------ -*.swp -*.swo - -# ------------------------------------------------------ -# Keep these files (GitHub Pages) -# ------------------------------------------------------ -!index.html -!CNAME \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt deleted file mode 100644 index 8e5f96f..0000000 --- a/CMakeLists.txt +++ /dev/null @@ -1,24 +0,0 @@ -cmake_minimum_required(VERSION 3.16) -project(PortfolioApp LANGUAGES CXX) - -set(CMAKE_CXX_STANDARD 20) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_CXX_EXTENSIONS OFF) - -# Add local FTXUI directory -add_subdirectory(ftxui) - -# Add your source files (adjust paths if needed) -add_executable(portfolio - main.cpp - content.cpp -) - -# Link with FTXUI -target_link_libraries(portfolio - PRIVATE - ftxui::screen - ftxui::dom - ftxui::component -) - diff --git a/CNAME b/CNAME deleted file mode 100644 index faf8daa..0000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -terminalportfolio.keshavanand.net \ No newline at end of file diff --git a/commands.sh b/commands.sh deleted file mode 100644 index 329b734..0000000 --- a/commands.sh +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/bash - -#macos - -cd ~/Downloads/Code/Terminal -rm -rf macbuild -mkdir macbuild -cd macbuild -cmake -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" .. -make - - - -#Linux - -cd ~/Downloads/Code/Terminal -rm -rf linuxbuild -mkdir linuxbuild -cd linuxbuild - -docker run --rm -v "$(pwd)/..":/src -w /src gcc:latest bash -c " -apt-get update && apt-get install -y cmake make -mkdir -p build && cd build -cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXE_LINKER_FLAGS='-static' .. -make -cd .. -mv build linuxbuild/ -" - -#Linux Test - -cd ~/Downloads/Code/Terminal - -docker run --rm -v "$(pwd)/linuxbuild":/build -w /build --platform linux/amd64 ubuntu:22.04 bash -c " -apt-get update && apt-get install -y libstdc++6 -./build/portfolio -" - -#Windows: - -cd ~/Downloads/Code/Terminal -rm -rf winbuild -mkdir winbuild - -# Download Dockcross helper -docker run --rm dockcross/windows-static-x64 > ./winbuild/dockcross-windows -chmod +x ./winbuild/dockcross-windows - -# Build Windows binary inside winbuild -# Note: we mount the repo root (current folder) as /work -./winbuild/dockcross-windows bash -c " -mkdir -p /work/winbuild/build -cd /work/winbuild/build -cmake -DCMAKE_BUILD_TYPE=Release -S /work -B . -make -cp portfolio.exe /work/winbuild/ -" - -#Windows Test (requires Wine) - -cd ~/Downloads/Code/Terminal - -docker run --rm -v "$(pwd)/winbuild":/winbuild -w /winbuild --platform linux/amd64 \ - scottyhardy/docker-wine:latest wine64 build/portfolio.exe - diff --git a/content.cpp b/content.cpp deleted file mode 100644 index f79fd5f..0000000 --- a/content.cpp +++ /dev/null @@ -1,223 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include "content.hpp" - -using namespace ftxui; - -// Hacker-style reusable styles -const auto hacker_text_style = color(Color::Green) | bold | dim; -const auto hacker_border_style = border | color(Color::Green); -const auto hacker_link_style = color(Color::LightGreen) | underlined; -const auto hacker_button_style = color(Color::Green) | bold; -const auto hacker_button_active_style = color(Color::LightGreen) | bold; - -// ------------------ -// Pages -// ------------------ - -Component MakeAboutPage() { - return Renderer([]() -> Element { - return vbox({ - vbox({ - text("Keshav Anand") | color(Color::LightGreen) | bold | center, - text("Student Researcher | ML + Robotics Developer | CS + Math Enthusiast") | hacker_text_style | center, - }) | hacker_border_style, - - }) | flex; - }); -} - -Component MakeProjectsPage() { - const std::vector> projects = { - {"🧠 GaitGuardian: IMU Processing for Parkinson’s Disease (2024–Present)", - "• Hybrid biLSTM + CNN model for Freezing of Gait prediction\n" - "• Signal segmentation reduces subject dependence\n" - "• State-of-the-art accuracy, end-to-end functionality"}, - {"🔥 TEG-Powered Self-Stirring Device (2023–2024)", - "• Built thermal energy harvesting prototype for self-stirring cookware\n" - "• Developed mechanical + electrical integration\n" - "• Won 1st at Dallas Fair, ISEF Finalist"}, - {"🤖 FTC Technical Turbulence (23344) — Lead Software Developer (2023–Present)", - "• Custom inverse kinematics, pathing, and Computer Vision autonomy\n" - "• Top-30 globally for software performance, FTC State Finalist"}, - }; - - Component container = Container::Vertical({}); - for (auto& p : projects) { - Component card = Renderer([p]() -> Element { - return vbox({ - text(p.first) | color(Color::LightGreen) | bold, - paragraph(p.second) | hacker_text_style | dim, - }) | hacker_border_style; - }); - container->Add(card); - } - - return Renderer(container, [container]() -> Element { - return vbox(container->Render()) | vscroll_indicator | yframe | flex; - }); -} - -Component MakeEducationPage() { - return Renderer([]() -> Element { - return vbox({ - vbox({ - text("🏫 Plano East Senior High School (2023–2027)") | color(Color::LightGreen) | bold, - text("STEM & Multidisciplinary Endorsement") | hacker_text_style, - text("GPA: 4.73 | Rank: 1/1273 | SAT: 1550") | hacker_text_style, - }) | hacker_border_style, - - separator(), - - vbox({ - text("📚 Current Coursework:") | color(Color::LightGreen) | bold, - text("• AP Chemistry") | hacker_text_style, - text("• AP Physics I") | hacker_text_style, - text("• Digital Electronics") | hacker_text_style, - text("• American Studies (AP US History + AP English Language)") | hacker_text_style, - text("• Calculus III (via Collin College)") | hacker_text_style, - }) | hacker_border_style, - }) | flex; - }); -} - -Component MakeWorkPage() { - const std::vector> activities = { - {"🧪 Vice President, LASER (Science Fair Organization)", - "Guiding and mentoring 120+ students in research and experimentation"}, - {"💻 Technology Officer, National Honor Society", - "Developed and maintained React-based management portal for 1000+ members"}, - {"🏏 Founder & Captain, Plano East Cricket Club", - "Established first school tapeball cricket team; coached and led events"}, - {"🎶 Indian Film Music Performer", - "Bass guitar & keyboard player in charity concerts; arrangement and production"}, - }; - - Component container = Container::Vertical({}); - for (auto& a : activities) { - Component card = Renderer([a]() -> Element { - return vbox({ - text(a.first) | color(Color::LightGreen) | bold, - text(a.second) | hacker_text_style | dim, - }) | hacker_border_style; - }); - container->Add(card); - } - - return Renderer(container, [container]() -> Element { - return vbox(container->Render()) | vscroll_indicator | yframe | flex; - }); -} - -Component MakeAwardsPage() { - const std::vector> awards = { - {"🥇 Thermoelectric Generator Research Project (2024)", - "Dallas Fair: 1st in Engineering | USAF Recognition | USMA Best SI Units\nISEF Finalist"}, - {"🥈 GaitGuardian ML Research (2025)", - "Dallas Fair: 1st in Systems Software, Grand Prize Runner-Up\nISEF Finalist | 3rd in Robotics & Intelligent Systems"}, - {"🏅 National Speech & Debate (2025)", - "Impromptu Quarterfinalist at District and State Level"}, - }; - - Component container = Container::Vertical({}); - for (auto& a : awards) { - Component card = Renderer([a]() -> Element { - return vbox({ - text(a.first) | color(Color::LightGreen) | bold, - paragraph(a.second) | hacker_text_style | dim, - }) | hacker_border_style; - }); - container->Add(card); - } - - return Renderer(container, [container]() -> Element { - return vbox(container->Render()) | vscroll_indicator | yframe | flex; - }); -} - -Component MakeSkillsPage() { - const std::string skills = - "💻 Programming Languages:\n" - " Java, Python, Bash, C++ (Arduino), Kotlin (FTC), limited HTML/CSS/JS\n\n" - "🧠 Applications:\n" - " Machine Learning, Signal Processing, TensorFlow, Computer Vision\n\n" - "⚙️ Miscellaneous:\n" - " Public Speaking, CAD, PCB Design, Electrical Systems, Competition Math"; - - return Renderer([skills]() -> Element { - return paragraph(skills) | hacker_text_style | flex; - }); -} - -Component MakeContactPage() { - const std::string contact_info = - "📫 Email: keshavanandofficial@gmail.com\n" - "🔗 LinkedIn: linkedin.com/in/keshavganand\n" - "💻 GitHub: github.com/keshavanandcode\n" - "🌐 Resume: resume.keshavanand.net\n" - "📍 DFW Metroplex, Texas\n\n" - "Updated: November 2025"; - - return Renderer([contact_info]() -> Element { - return paragraph(contact_info) | hacker_text_style | flex; - }); -} - -// Constructor implementation -PortfolioApp::PortfolioApp() { - about_page_ = MakeAboutPage(); - projects_page_ = MakeProjectsPage(); - education_page_ = MakeEducationPage(); - work_page_ = MakeWorkPage(); - awards_page_ = MakeAwardsPage(); - skills_page_ = MakeSkillsPage(); - contact_page_ = MakeContactPage(); - - pages_ = {about_page_, projects_page_, education_page_, - work_page_, awards_page_, skills_page_, contact_page_}; - - std::vector labels = {"About", "Projects", "Education", "Activities", "Awards", "Skills", "Contact"}; - - std::vector buttons; - for (int i = 0; i < (int)labels.size(); ++i) { - Component button = Button(labels[i], [&, i] { SwitchPage(i); }) - | (i == current_page_ ? hacker_button_active_style : hacker_button_style); - buttons.push_back(button); - } - - navigation_ = Container::Vertical(buttons); - Component separator_component = Renderer([] { return separator(); }); - - Add(Container::Horizontal(Components{navigation_, separator_component, pages_[current_page_]})); -} - -void PortfolioApp::SwitchPage(int index) { - current_page_ = index; - DetachAllChildren(); - Component separator_component = Renderer([] { return separator(); }); - Add(Container::Horizontal(Components{navigation_, separator_component, pages_[current_page_]})); -} - -Element PortfolioApp::Render() { - return hbox({ - navigation_->Render() | hacker_border_style, - separator(), - pages_[current_page_]->Render() | hacker_border_style | flex - }); -} - -bool PortfolioApp::OnEvent(Event event) { - if (event == Event::ArrowRight) { - SwitchPage((current_page_ + 1) % pages_.size()); - return true; - } - if (event == Event::ArrowLeft) { - SwitchPage((current_page_ - 1 + pages_.size()) % pages_.size()); - return true; - } - return ComponentBase::OnEvent(event); -} diff --git a/content.hpp b/content.hpp deleted file mode 100644 index cdb0971..0000000 --- a/content.hpp +++ /dev/null @@ -1,111 +0,0 @@ -#pragma once -#include -#include -#include -#include -#include -#include - -// ------------------ -// Structs -// ------------------ -struct Project { - std::string title; - std::string link; // Leave empty if no link -}; - -// ------------------ -// PageFactory Functions -// - -// ------------------ -/** - * Creates the About page component - * @return Component containing personal introduction and focus areas - */ -ftxui::Component MakeAboutPage(); - -/** - * Creates the Projects page component - * @return Component displaying list of projects with links - */ -ftxui::Component MakeProjectsPage(); - -/** - * Creates the Education page component - * @return Component showing educational background and achievements - */ -ftxui::Component MakeEducationPage(); - -/** - * Creates the Work page component - * @return Component displaying work experience and competitions - */ -ftxui::Component MakeWorkPage(); - -/** - * Creates the Awards page component - * @return Component displaying awards, competitions, and achievements - */ -ftxui::Component MakeAwardsPage(); - -/** - * Creates the Skills page component - * @return Component showing technical skills and expertise - */ -ftxui::Component MakeSkillsPage(); - -/** - * Creates the Contact page component - * @return Component with contact information - */ -ftxui::Component MakeContactPage(); - -// ------------------ -// Main Application Class -// ------------------ -/** - * Main portfolio application class that manages navigation and page switching - * Inherits from ftxui::ComponentBase to provide custom rendering and event handling - */ -class PortfolioApp : public ftxui::ComponentBase { -public: - /** - * Constructor - initializes all pages and navigation - */ - PortfolioApp(); - - /** - * Switch to a specific page by index - * @param index The page index to switch to (0-6) - */ - void SwitchPage(int index); - - /** - * Render the current application state - * @return Element representing the full UI layout - */ - ftxui::Element Render(); - - /** - * Handle keyboard events for navigation - * @param event The keyboard event to process - * @return true if event was handled, false otherwise - */ - bool OnEvent(ftxui::Event event) override; - -private: - int current_page_ = 0; // Currently active page index - - // UI Components - ftxui::Component navigation_; // Navigation sidebar - ftxui::Component about_page_; // About page component - ftxui::Component projects_page_; // Projects page component - ftxui::Component education_page_; // Education page component - ftxui::Component work_page_; // Work page component - ftxui::Component awards_page_; // Awards page component - ftxui::Component skills_page_; // Skills page component - ftxui::Component contact_page_; // Contact page component - - std::vector pages_; // Vector of all page components -}; diff --git a/ftxui/.bazelrc b/ftxui/.bazelrc deleted file mode 100644 index 240fd4c..0000000 --- a/ftxui/.bazelrc +++ /dev/null @@ -1,9 +0,0 @@ -common --enable_bzlmod - -build --features=layering_check -build --enable_bzlmod - -build --enable_platform_specific_config -build:linux --cxxopt=-std=c++20 -build:macos --cxxopt=-std=c++20 -build:windows --cxxopt=-std:c++20 diff --git a/ftxui/.bcr/README.md b/ftxui/.bcr/README.md deleted file mode 100644 index 44ae7fe..0000000 --- a/ftxui/.bcr/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Bazel Central Registry - -When the ruleset is released, we want it to be published to the -Bazel Central Registry automatically: - - -This folder contains configuration files to automate the publish step. -See -for authoritative documentation about these files. diff --git a/ftxui/.bcr/metadata.template.json b/ftxui/.bcr/metadata.template.json deleted file mode 100644 index 9b2b52d..0000000 --- a/ftxui/.bcr/metadata.template.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "homepage": "https://github.com/ArthurSonzogni/FTXUI", - "maintainers": [ - { - "name": "Arthur Sonzogni", - "email": "sonzogniarthur@gmail.com", - "github": "ArthurSonzogni", - "github_user_id": 4759106 - } - ], - "repository": [ - "github:ArthurSonzogni/FTXUI" - ], - "versions": [], - "yanked_versions": {} -} diff --git a/ftxui/.bcr/presubmit.yml b/ftxui/.bcr/presubmit.yml deleted file mode 100644 index 6e65543..0000000 --- a/ftxui/.bcr/presubmit.yml +++ /dev/null @@ -1,36 +0,0 @@ -matrix: - bazel: - - 7.x - - 8.x - - rolling - unix_platform: - - debian11 - - ubuntu2204 - - macos - - macos_arm64 - win_platform: - - windows - -tasks: - - unix_test: - name: Verify build targets on Unix - platform: ${{ unix_platform }} - bazel: ${{ bazel }} - build_flags: - - --cxxopt=-std=c++20 - build_targets: - - '@ftxui//:dom' - - '@ftxui//:component' - - '@ftxui//:screen' - - windows_test: - name: Verify build targets - platform: ${{ win_platform }} - bazel: ${{ bazel }} - build_flags: - - --cxxopt=/std:c++20 - build_targets: - - '@ftxui//:dom' - - '@ftxui//:component' - - '@ftxui//:screen' diff --git a/ftxui/.bcr/source.template.json b/ftxui/.bcr/source.template.json deleted file mode 100644 index 6a89769..0000000 --- a/ftxui/.bcr/source.template.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "integrity": "", - "strip_prefix": "", - "url": "https://github.com/ArthurSonzogni/FTXUI/releases/download/{TAG}/source.tar.gz" -} diff --git a/ftxui/.clang-format b/ftxui/.clang-format deleted file mode 100644 index cfdfe53..0000000 --- a/ftxui/.clang-format +++ /dev/null @@ -1,7 +0,0 @@ -# Defines the Chromium style for automatic reformatting. -# http://clang.llvm.org/docs/ClangFormatStyleOptions.html -BasedOnStyle: Chromium -Standard: Cpp11 - -InsertBraces: true -InsertNewlineAtEOF: true diff --git a/ftxui/.clang-tidy b/ftxui/.clang-tidy deleted file mode 100644 index f5335f0..0000000 --- a/ftxui/.clang-tidy +++ /dev/null @@ -1,35 +0,0 @@ ---- -Checks: "*, - -*-macro-usage, - -*-magic-numbers, - -*-narrowing-conversions - -*-unnecessary-value-param, - -*-uppercase-literal-suffix, - -abseil-*, - -altera-*, - -android-*, - -bugprone-easily-swappable-parameters, - -cppcoreguidelines-non-private-member-variables-in-classes, - -cppcoreguidelines-pro-type-union-access, - -fuchsia-*, - -google-*, - -hicpp-signed-bitwise, - -llvm*, - -misc-no-recursion, - -misc-non-private-member-variables-in-classes, - -modernize-use-nodiscard, - -modernize-use-trailing-return-type, - -readability-avoid-const-params-in-decls, - -readability-else-after-return, - -readability-identifier-length, - -readability-implicit-bool-conversion, - -readability-non-const-parameter, - -readability-simplify-boolean-expr, - -readability-static-accessed-through-instance, - -readability-use-anyofallof, - -readability-avoid-nested-conditional-operator, - -zircon-*, -" -WarningsAsErrors: '' -HeaderFilterRegex: '' -FormatStyle: none diff --git a/ftxui/.gitignore b/ftxui/.gitignore deleted file mode 100644 index 90b093a..0000000 --- a/ftxui/.gitignore +++ /dev/null @@ -1,74 +0,0 @@ -# Ignore all the files, except the ones we expect. -# See https://jasonstitt.com/gitignore-whitelisting-patterns -* -!*/ - -# Ignore build directories generated by default MSVC CMake integration -# (otherwise causes terribly slow indexing) -out/ - -# Allowed top-level files: -!.clang-format -!.clang-tidy -!.gitignore -!CHANGELOG.md -!CMakeLists.txt -!LICENSE -!README.md -!codecov.yml -!flake.lock -!flake.nix -!ftxui.pc.in -!iwyu.imp -!WORKSPACE.bazel -!BUILD.bazel -!MODULE.bazel -!.bazelrc - -# .github directory: -!.github/**/*.yaml -!.github/**/*.yml -!.github/**/*.md - -# cmake directory: -!cmake/**/*.in -!cmake/**/*.cmake - -# bazel directory: -!bazel/**/*.bzl -!.bcr/* - -# doc directory: -!doc/**/Doxyfile.in -!doc/**/*.txt -!doc/**/*.css -!doc/**/*.html -!doc/**/*.xml -!doc/**/*.md - -# examples directory: -!examples/**/*.cpp -!examples/**/*.css -!examples/**/*.hpp -!examples/**/*.html -!examples/**/*.html.disabled -!examples/**/*.ipp -!examples/**/*.js -!examples/**/*.mjs -!examples/**/*.py -!examples/**/*.txt - -# include directory: -!include/ftxui/**/*.hpp -!include/ftxui/**/*.cpp - -# src directory: -!src/ftxui/*.cppm -!src/ftxui/**/*.hpp -!src/ftxui/**/*.cpp -!src/ftxui/**/*.cppm - -# tools directory: -!tools/**/*.sh -!tools/**/*.cpp -build/ diff --git a/ftxui/BUILD.bazel b/ftxui/BUILD.bazel deleted file mode 100644 index 9fd18cd..0000000 --- a/ftxui/BUILD.bazel +++ /dev/null @@ -1,276 +0,0 @@ -# Copyright 2025 Arthur Sonzogni. All rights reserved. -# Use of this source code is governed by the MIT license that can be found in -# the LICENSE file. - -# TODO: -# - Build benchmark. -# - Build fuzzers. -# - Build documentation. -# - Enable the two tests timing out. -# - Support WebAssembly - -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -load(":bazel/ftxui.bzl", "ftxui_cc_library") -load(":bazel/ftxui.bzl", "generate_examples") -load(":bazel/ftxui.bzl", "windows_copts") - -# A meta target depending on all of the ftxui submodules. -# Note that component depends on dom and screen, so ftxui is just an alias for -# component. -# ┌component──┐ -# │┌dom──────┐│ -# ││┌screen─┐││ -# └┴┴───────┴┴┘ -alias(name = "ftxui", actual = ":component") - -# @ftxui:screen is a module that provides a screen buffer and color management -# for terminal applications. A screen is a 2D array of cells, each cell can -# contain a glyph, a color, and other attributes. The library also provides -# functions to manipulate the screen. -ftxui_cc_library( - name = "screen", - srcs = [ - "src/ftxui/screen/box.cpp", - "src/ftxui/screen/color.cpp", - "src/ftxui/screen/color_info.cpp", - "src/ftxui/screen/image.cpp", - "src/ftxui/screen/screen.cpp", - "src/ftxui/screen/string.cpp", - "src/ftxui/screen/string_internal.hpp", - "src/ftxui/screen/terminal.cpp", - "src/ftxui/screen/util.hpp", - ], - hdrs = [ - "include/ftxui/screen/box.hpp", - "include/ftxui/screen/color.hpp", - "include/ftxui/screen/color_info.hpp", - "include/ftxui/screen/deprecated.hpp", - "include/ftxui/screen/image.hpp", - "include/ftxui/screen/pixel.hpp", - "include/ftxui/screen/screen.hpp", - "include/ftxui/screen/string.hpp", - "include/ftxui/screen/terminal.hpp", - "include/ftxui/util/autoreset.hpp", - "include/ftxui/util/ref.hpp", - ], -) - -# @ftxui:dom is a library that provides a way to create and manipulate a -# "document" that can be rendered to a screen. The document is a tree of nodes. -# Nodes can be text, layouts, or various decorators. Users needs to compose -# nodes to create a document. A document is responsive to the size of the -# screen. -ftxui_cc_library( - name = "dom", - srcs = [ - "src/ftxui/dom/automerge.cpp", - "src/ftxui/dom/blink.cpp", - "src/ftxui/dom/bold.cpp", - "src/ftxui/dom/border.cpp", - "src/ftxui/dom/box_helper.cpp", - "src/ftxui/dom/box_helper.hpp", - "src/ftxui/dom/canvas.cpp", - "src/ftxui/dom/clear_under.cpp", - "src/ftxui/dom/color.cpp", - "src/ftxui/dom/composite_decorator.cpp", - "src/ftxui/dom/dbox.cpp", - "src/ftxui/dom/dim.cpp", - "src/ftxui/dom/flex.cpp", - "src/ftxui/dom/flexbox.cpp", - "src/ftxui/dom/flexbox_config.cpp", - "src/ftxui/dom/flexbox_helper.cpp", - "src/ftxui/dom/flexbox_helper.hpp", - "src/ftxui/dom/focus.cpp", - "src/ftxui/dom/frame.cpp", - "src/ftxui/dom/gauge.cpp", - "src/ftxui/dom/graph.cpp", - "src/ftxui/dom/gridbox.cpp", - "src/ftxui/dom/hbox.cpp", - "src/ftxui/dom/hyperlink.cpp", - "src/ftxui/dom/inverted.cpp", - "src/ftxui/dom/italic.cpp", - "src/ftxui/dom/linear_gradient.cpp", - "src/ftxui/dom/node.cpp", - "src/ftxui/dom/node_decorator.cpp", - "src/ftxui/dom/node_decorator.hpp", - "src/ftxui/dom/paragraph.cpp", - "src/ftxui/dom/reflect.cpp", - "src/ftxui/dom/scroll_indicator.cpp", - "src/ftxui/dom/selection.cpp", - "src/ftxui/dom/selection_style.cpp", - "src/ftxui/dom/separator.cpp", - "src/ftxui/dom/size.cpp", - "src/ftxui/dom/spinner.cpp", - "src/ftxui/dom/strikethrough.cpp", - "src/ftxui/dom/table.cpp", - "src/ftxui/dom/text.cpp", - "src/ftxui/dom/underlined.cpp", - "src/ftxui/dom/underlined_double.cpp", - "src/ftxui/dom/util.cpp", - "src/ftxui/dom/vbox.cpp", - ], - hdrs = [ - "include/ftxui/dom/canvas.hpp", - "include/ftxui/dom/deprecated.hpp", - "include/ftxui/dom/direction.hpp", - "include/ftxui/dom/elements.hpp", - "include/ftxui/dom/flexbox_config.hpp", - "include/ftxui/dom/linear_gradient.hpp", - "include/ftxui/dom/node.hpp", - "include/ftxui/dom/requirement.hpp", - "include/ftxui/dom/selection.hpp", - "include/ftxui/dom/table.hpp", - "include/ftxui/dom/take_any_args.hpp", - ], - deps = [":screen"], -) - -# @ftxui:component is a library to create "dynamic" component renderering and -# updating a ftxui::dom document on the screen. It is a higher level API than -# ftxui:dom. -# -# The module is required if your program needs to respond to user input. It -# defines a set of ftxui::Component. These components can be utilized to -# navigate using the arrow keys and/or cursor. There are several builtin widgets -# like checkbox/inputbox/etc to interact with. You can combine them, or even -# define your own custom components. -ftxui_cc_library( - name = "component", - srcs = [ - "src/ftxui/component/animation.cpp", - "src/ftxui/component/button.cpp", - "src/ftxui/component/catch_event.cpp", - "src/ftxui/component/checkbox.cpp", - "src/ftxui/component/collapsible.cpp", - "src/ftxui/component/component.cpp", - "src/ftxui/component/component_options.cpp", - "src/ftxui/component/container.cpp", - "src/ftxui/component/dropdown.cpp", - "src/ftxui/component/event.cpp", - "src/ftxui/component/hoverable.cpp", - "src/ftxui/component/input.cpp", - "src/ftxui/component/loop.cpp", - "src/ftxui/component/maybe.cpp", - "src/ftxui/component/menu.cpp", - "src/ftxui/component/modal.cpp", - "src/ftxui/component/radiobox.cpp", - "src/ftxui/component/renderer.cpp", - "src/ftxui/component/resizable_split.cpp", - "src/ftxui/component/screen_interactive.cpp", - "src/ftxui/component/slider.cpp", - "src/ftxui/component/task.cpp", - "src/ftxui/component/task_internal.hpp", - "src/ftxui/component/task_queue.cpp", - "src/ftxui/component/task_queue.hpp", - "src/ftxui/component/task_runner.cpp", - "src/ftxui/component/task_runner.hpp", - "src/ftxui/component/terminal_input_parser.cpp", - "src/ftxui/component/terminal_input_parser.hpp", - "src/ftxui/component/util.cpp", - "src/ftxui/component/window.cpp", - - # Private header from ftxui:dom. - "src/ftxui/dom/node_decorator.hpp", - - # Private header from ftxui:screen. - "src/ftxui/screen/string_internal.hpp", - "src/ftxui/screen/util.hpp", - - # Private header. - "include/ftxui/util/warn_windows_macro.hpp", - ], - hdrs = [ - "include/ftxui/component/animation.hpp", - "include/ftxui/component/captured_mouse.hpp", - "include/ftxui/component/component.hpp", - "include/ftxui/component/component_base.hpp", - "include/ftxui/component/component_options.hpp", - "include/ftxui/component/event.hpp", - "include/ftxui/component/loop.hpp", - "include/ftxui/component/mouse.hpp", - "include/ftxui/component/receiver.hpp", - "include/ftxui/component/screen_interactive.hpp", - "include/ftxui/component/task.hpp", - ], - deps = [ - ":dom", - ":screen", - ], -) - -# FTXUI's tests -cc_test( - name = "tests", - testonly = True, - srcs = [ - "src/ftxui/component/animation_test.cpp", - "src/ftxui/component/button_test.cpp", - "src/ftxui/component/collapsible_test.cpp", - "src/ftxui/component/component_test.cpp", - "src/ftxui/component/container_test.cpp", - "src/ftxui/component/dropdown_test.cpp", - "src/ftxui/component/hoverable_test.cpp", - "src/ftxui/component/input_test.cpp", - "src/ftxui/component/menu_test.cpp", - "src/ftxui/component/modal_test.cpp", - "src/ftxui/component/radiobox_test.cpp", - "src/ftxui/component/resizable_split_test.cpp", - "src/ftxui/component/slider_test.cpp", - "src/ftxui/component/terminal_input_parser_test.cpp", - "src/ftxui/component/toggle_test.cpp", - "src/ftxui/dom/blink_test.cpp", - "src/ftxui/dom/bold_test.cpp", - "src/ftxui/dom/border_test.cpp", - "src/ftxui/dom/canvas_test.cpp", - "src/ftxui/dom/color_test.cpp", - "src/ftxui/dom/dbox_test.cpp", - "src/ftxui/dom/dim_test.cpp", - "src/ftxui/dom/flexbox_helper_test.cpp", - "src/ftxui/dom/flexbox_test.cpp", - "src/ftxui/dom/gauge_test.cpp", - "src/ftxui/dom/gridbox_test.cpp", - "src/ftxui/dom/hbox_test.cpp", - "src/ftxui/dom/hyperlink_test.cpp", - "src/ftxui/dom/italic_test.cpp", - "src/ftxui/dom/linear_gradient_test.cpp", - "src/ftxui/dom/scroll_indicator_test.cpp", - "src/ftxui/dom/separator_test.cpp", - "src/ftxui/dom/spinner_test.cpp", - "src/ftxui/dom/table_test.cpp", - "src/ftxui/dom/text_test.cpp", - "src/ftxui/dom/underlined_test.cpp", - "src/ftxui/dom/vbox_test.cpp", - "src/ftxui/screen/color_test.cpp", - "src/ftxui/screen/string_test.cpp", - "src/ftxui/util/ref_test.cpp", - - # Private header from ftxui:screen for string_test.cpp. - "src/ftxui/screen/string_internal.hpp", - - # Private header from ftxui::component for - # terminal_input_parser_test.cpp. - "src/ftxui/component/terminal_input_parser.hpp", - - # Private header from ftxui::dom for - # flexbox_helper_test.cpp. - "src/ftxui/dom/flexbox_helper.hpp", - - # TODO: Enable the two tests timing out with Bazel: - # - "src/ftxui/component/screen_interactive_test.cpp", - # - "src/ftxui/dom/selection_test.cpp", - ], - includes = [ - "include", - "src", - ], - copts = windows_copts(), - deps = [ - ":screen", - ":dom", - ":component", - "@googletest//:gtest", - "@googletest//:gtest_main", - ], -) - -generate_examples() diff --git a/ftxui/CHANGELOG.md b/ftxui/CHANGELOG.md deleted file mode 100644 index f7bd7a9..0000000 --- a/ftxui/CHANGELOG.md +++ /dev/null @@ -1,538 +0,0 @@ -Changelog -========= - -Next -==== - -### Doc -- Fix broken Doxygen output. See @markmandel in #1029. -- Use Doxygen awesome. Add our own theme. -- Break the documentation into several pages. - -### Build -- Feature: Support C++20 modules. - This requires: - - Using the Ninja or MSVC generator - - A recent Clang/GCC/MSVC compiler. - - Cmake 3.28 or higher. - Usage: - ```cpp - import ftxui; - import ftxui.component; - import ftxui.dom; - import ftxui.screen; - import ftxui.util; - ``` - Thanks @mikomikotaishi for PR #1015. -- Remove dependency on 'pthread'. - -### Component -- Fix ScreenInteractive::FixedSize screen stomps on the preceding terminal - output. Thanks @zozowell in #1064. -- Fix vertical `ftxui::Slider`. The "up" key was previously decreasing the - value. Thanks @its-pablo in #1093 for reporting the issue. - - -6.1.9 (2025-05-07) ------------- - -### Build -If all goes well (pending), ftxui should appear in the Bazel central repository. -It can be imported into your project using the following lines: - -**MODULE.bazel** -```bazel -bazel_dep(name = "ftxui", version = "6.1.9") -``` - -Thanks @robinlinden and @kcc for the reviews. - -### dom -- Bugfix: Restore the `dbox` behavior from ftxui 5.0.0. To apply bgcolor - blending between the two layers, a new `dboxBlend` will be added. - -6.1.8 (2025-05-01) ------------------- - -### Build -- Feature: Support `bazel` build system. See #1032. - Proposed by Kostya Serebryany @kcc - - **BUILD.bazel** - ```bazel - deps = [ - // Depend on the whole library: - "@ftxui//:ftxui", - - // Choose a specific submodule: - "@ftxui//:component", - "@ftxui//:dom", - "@ftxui//:screen", - ] - ``` - -### Component -- Bugfix: Fix a crash with ResizeableSplit. See #1023. - - Clamp screen size to terminal size. - - Disallow `ResizeableSplit` with negative size. - -### Dom -- Bugfix: Disallow specifying a negative size constraint. See #1023. - - -6.0.2 (2025-03-30) ------ - -### Component -- BugFix: Fix major crash on Windows affecting all components. See #1020 -- BugFix: Fix focusRelative. - -6.0.1 (2025-03-28) ------ - -Same as v6.0.0. - -Due to a problem tag v6.0.0 was replaced. This isn't a good practice and affect -developers that started using it in the short timeframe. Submitting a new -release with the same content is the best way to fix this. - -See #1017 and #1019. - -6.0.0 (2025-03-23) ------ - -### Component -- Feature: Add support for raw input. Allowing more keys to be detected. -- Feature: Add `ScreenInteractive::ForceHandleCtrlC(false)` to allow component - to fully override the default `Ctrl+C` handler. -- Feature: Add `ScreenInteractive::ForceHandleCtrlZ(false)` to allow component - to fully override the default `Ctrl+Z` handler. -- Feature: Add `Mouse::WeelLeft` and `Mouse::WeelRight` events on supported - terminals. -- Feature: Add `Event::DebugString()`. -- Feature: Add support for `Input`'s insert mode. Add `InputOption::insert` - option. Added by @mingsheng13. -- Feature: Add `DropdownOption` to configure the dropdown. See #826. -- Feature: Add support for Selection. Thanks @clement-roblot. See #926. - - See `ScreenInteractive::GetSelection()`. - - See `ScreenInteractive::SelectionChange(...)` listener. -- Bugfix/Breaking change: `Mouse transition`: - - Detect when the mouse move, as opposed to being pressed. - The Mouse::Moved motion was added. - - Dragging the mouse with the left button pressed now avoids activating - multiple checkboxes. - - A couple of components are now activated when the mouse is pressed, - as opposed to being released. - This fixes: https://github.com/ArthurSonzogni/FTXUI/issues/773 - This fixes: https://github.com/ArthurSonzogni/FTXUI/issues/792 -- Bugfix: mouse.control is now reported correctly. -- Feature: Add `ScreenInteractive::FullscreenPrimaryScreen()`. This allows - displaying a fullscreen component on the primary screen, as opposed to the - alternate screen. -- Bugfix: `Input` `onchange` was not called on backspace or delete key. - Fixed by @chrysante in chrysante in PR #776. -- Bugfix: Propertly restore cursor shape on exit. See #792. -- Bugfix: Fix cursor position in when in the last column. See #831. -- Bugfix: Fix `ResizeableSplit` keyboard navigation. Fixed by #842. -- Bugfix: Fix `Menu` focus. See #841 -- Feature: Add `ComponentBase::Index()`. This allows to get the index of a - component in its parent. See #932 -- Feature: Add `EntryState::index`. This allows to get the index of a menu entry. - See #932 -- Feature: Add `SliderOption::on_change`. This allows to set a callback when the - slider value changes. See #938. -- Bugfix: Handle `Dropdown` with no entries. -- Bugfix: Fix crash in `LinearGradient` due to float precision and an off-by-one - mistake. See #998. - -### Dom -- Feature: Add `italic` decorator. For instance: - ```cpp - auto italic_text = text("Italic text") | italic; - ``` - ```cpp - auto italic_text = italic(text("Italic text")); - ``` - Proposed by @kenReneris in #1009. -- Feature: Add `hscroll_indicator`. It display an horizontal indicator - reflecting the current scroll position. Proposed by @ibrahimnasson in - [issue 752](https://github.com/ArthurSonzogni/FTXUI/issues/752) -- Feature: Add `extend_beyond_screen` option to `Dimension::Fit(..)`, allowing - the element to be larger than the screen. Proposed by @LordWhiro. See #572 and - #949. -- Feature: Add support for Selection. Thanks @clement-roblot. See #926. - - See `selectionColor` decorator. - - See `selectionBackgroundColor` decorator. - - See `selectionForegroundColor` decorator. - - See `selectionStyle(style)` decorator. - - See `selectionStyleReset` decorator. -- Breaking change: Change how "focus"/"select" are handled. This fixes the - behavior. -- Breaking change: `Component::OnRender()` becomes the method to override to - render a component. This replaces `Component::Render()` that is still in use - to call the rendering method on the children. This change allows to fix a - couple of issues around focus handling. - -### Screen -- Feature: Add `Box::IsEmpty()`. -- Feature: Color transparency - - Add `Color::RGBA(r,g,b,a)`. - - Add `Color::HSVA(r,g,b,a)`. - - Add `Color::Blend(Color)`. - - Add `Color::IsOpaque()` - -### Util -- Feature: Support arbitrary `Adapter` for `ConstStringListRef`. See #843. - -### Build -- Support for cmake's "unity/jumbo" builds. Fixed by @ClausKlein. - -5.0.0 ------ - -### Component -- Breaking: MenuDirection enum is renamed Direction -- Breaking: GaugeDirection enum is renamed Direction -- Breaking: Direction enum is renamed WidthOrHeight -- Breaking: Remove `ComponentBase` copy constructor/assignment. -- Breaking: MenuOption::entries is renamed MenuOption::entries_option. -- Breaking: `Ref<{Component}Option>` becomes `{Component}Option` in component constructors. -- Feature: `ResizeableSplit` now support arbitrary element as a separator. -- Feature: `input` is now supporting multiple lines. -- Feature: `input` style is now customizeable. -- Bugfix: Support F1-F5 from OS terminal. -- Feature: Add struct based constructor: - ```cpp - Component Button(ButtonOption options); - Component Checkbox(CheckboxOption options); - Component Input(InputOption options); - Component Menu(MenuOption options); - Component MenuEntry(MenuEntryOption options); - Component Radiobox(RadioboxOption options); - Component Slider(SliderOption options); - Component ResizableSplit(ResizableSplitOption options); - ``` -- Feature: Add `ScreenInteractive::TrackMouse(false)` disable mouse support. - -### Dom -- Feature: Add `hyperlink` decorator. For instance: - ```cpp - auto link = text("Click here") | hyperlink("https://github.com/FTXUI") - ``` - See the [OSC 8 page](https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda). - FTXUI support proposed by @aaleino in [#662](https://github.com/ArthurSonzogni/FTXUI/issues/662). - -### Screen -- Breaking: `WordBreakProperty` becomes a uint8_t enum. This yields a 0.8% - performance improvement. -- Breaking: Remove user defined Pixel constructor and equality operator. -- Performance: 19% faster on benchmarks. - - -### Build -- Check version compatibility when using cmake find_package() -- Add `FTXUI_DEV_WARNING` options to turn on warnings when building FTXUI -- Turn OFF by default `FTXUI_BUILD_DOCS` -- Turn OFF by default `FTXUI_BUILD_EXAMPLE` - -4.1.1 ------ - -### Component -- Fix: Support arrow keys in application mode -- Fix: Remove useless new line when using an alternative screen. - -### Dom -- Feature: Add the dashed style for border and separator: - - See `DASHED` enum, and `separatorDashed()`, `borderDashed()` functions. -- Feature: Add colored borders. - - See functions: `borderStyled(BorderStyle, Color)` and `borderStyled(Color)`. -- Feature: Add `LinearGradient`. It can be used in `color` and `bgColor`. -- Improvement: Color::Interpolate() uses gamma correction. -- Fix: Check the `graph` area is positive. - -### Build/Install -- Use globally set CMAKE_CXX_STANDARD if it is set. -- Expose the pkg-config file -- Check version compatibility when using cmake find_package() - -4.1.0 (Abandonned) ------ -This version is abandonned and must not be used. It introduced a breaking change in the API. - -4.0.0 ------ - -### DOM -- Feature: more styles: - - `strikethrough` - - `underlinedDouble` -- Feature: Customize the cursor. Add the following decorators: - - `focusCursorBlock` - - `focusCursorBlockBlinking` - - `focusCursorBar` - - `focusCursorBarBlinking` - - `focusCursorUnderline` - - `focusCursorUnderlineBlinking` -- Bugfix: Fix `focus`/`select` when the `vbox`/`hbox`/`dbox` contains a - `flexbox` -- Bugfix: Fix the selected/focused area. It used to be 1 cell larger/longer than - requested -- Bugfix: Forward the selected/focused area from the child in gridbox. -- Bugfix: Fix incorrect Canvas computed dimensions. -- Bugfix: Support `vscroll_indicator` with a zero inner size. -- Bugfix: Fix `vscroll_indicator` hidding the last column. - -### Component: -- Feature: Add the `Modal` component. -- Feature: `Slider` supports taking references for all its arguments. -- Feature: `Slider` supports `SliderOption`. It supports: - - multiple directions. - - multiple colors. - - various values (value, min, max, increment). -- Feature: Define `ScreenInteractive::Exit()`. -- Feature: Add `Loop` to give developers a better control on the main loop. This - can be used to integrate FTXUI into another main loop, without taking the full - control. -- Feature: `Input` supports CTRL+Left and CTRL+Right -- Feature: Use a blinking bar in the `Input` component. -- Improvement: The `Menu` keeps the focus when an entry is selected with the - mouse. -- Bugfix: Add implementation of `ButtonOption::Border()`. It was missing. -- Bugfix: Provide the correct key for F1-F4 and F11. -- Feature: Add the `Hoverable` component decorators. - -### Screen -- Feature: add `Box::Union(a,b) -> Box` -- Bugfix: Fix resetting `dim` clashing with resetting of `bold`. -- Feature: Add emscripten screen resize support. -- Bugfix: Add unicode 13 support for full width characters. -- Bugfix: Fix MSVC treating codecvt C++17 deprecated function as an error. - -### Build -- Support using the google test version provided by the package manager. - -3.0.0 ------ - -### Build -- **breaking**: The library prefix is now back to "lib" (the default). This - means non-cmake users should not link against "libftxui-dom" for instance. - -### Component -- **Animations** module! Components can implement the `OnAnimation` method and - the animation::Animator to define some animated properties. - - `Menu` now support animations. - - `Button` now supports animations. -- Support SIGTSTP. (ctrl+z). -- Support task posting. `ScreenInteractive::Post(Task)`. -- `Menu` can now be used in the 4 directions, using `MenuOption.direction`. -- `Menu` can display an animated underline, using - `MenuOption.underline.enabled`. -- `Button` is now taking the focus in frame. -- **breaking** All the options are now using a transform function. -- **breaking** The `Toggle` component is now implemented using `Menu`. -- **bugfix** Container::Tab implements `Focusable()`. -- **bugfix** Improved default implementations of ComponentBase `Focusable()` and - `ActiveChild()` methods. -- **bugfix** Automatically convert '\r' keys into '\n' for Linux programs that - do not send the correct code for the return key, like the 'bind'. - https://github.com/ArthurSonzogni/FTXUI/issues/337 -- Add decorator for components: - - `operator|(Component, ComponentDecorator)` - - `operator|(Component, ElementDecorator)` - - `operator|=(Component, ComponentDecorator)` - - `operator|=(Component, ElementDecorator)` - - Add the `Maybe` decorator. - - Add the `CatchEvent` decorator. - - Add the `Renderer` decorator. -- **breaking** remove the "deprectated.hpp" header and Input support for wide - string. - -### DOM: -- **breaking**: The `inverted` decorator now toggle in the inverted attribute. -- Add `gauge` for the 4 directions. Expose the following API: -```cpp -Element gauge(float ratio); -Element gaugeLeft(float ratio); -Element gaugeRight(float ratio); -Element gaugeUp(float ratio); -Element gaugeDown(float ratio); -Element gaugeDirection(float ratio, GaugeDirection); -``` -- Add `separatorHSelector` and `separatorVSelector` elements. This can be used - to highlight an area. -- Add the `automerge` decorator. This makes separator characters to be merged - with others nearby. -- Fix the `Table` rendering function, to allow automerging characters. -- **Bugfix**: The `vscroll_indicator` now computes its offset and size - correctly. -- Add the `operator|=(Element, Decorator)` - -### Screen: -- Add: `Color::Interpolate(lambda, color_a, color_b)`. - -2.0.0 ------ - -### Features: - -#### Screen -- Add the `automerge` to the Pixel bit field. This now controls which pixels are - automatically merged. - -#### DOM: -- Add the `Canvas` class and `ElementFrom('canvas')` function. Together users of - the library can draw using braille and block characters. -- Support `flexbox` dom elements. This is build symmetrically to the HTML one. - All the following attributes are supported: direction, wrap, justify-content, - align-items, align-content, gap -- Add the dom elements helper based on `flexbox`: - - `paragraph` - - `paragraphAlignLeft` - - `paragraphAlignCenter` - - `paragraphAlignRight` - - `paragraphAlignJustify` -- Add the helper elements based on `flexbox`: `hflow()`, `vflow()`. -- Add: `focusPositionRelative` and `focusPosition` -- Add `Table` constructor from 2D vector of Element, instead of string. - -#### Component -- Add the `collapsible` component. -- Add the `ScreenInteractive::WithRestoredIO`. This decorates a callback. This - runs it with the terminal hooks temporarilly uninstalled. This is useful if - you want to execute command using directly stdin/stdout/sterr. - -### Bug - -#### Table -- The `table` horizontal and vertical separator are now correctly expanded. - -#### Component -- `Input` shouldn't take focus when hovered by the mouse. -- Modifying `Input`'s during on_enter/on_change event is now working correctly. - -### Breaking changes: -- The behavior of `paragraph` has been modified. It now returns en Element, - instead of a list of elements. - -0.11.1 ------- - -# Component -- Feature: Support for PageUp/PageDown/Home/End buttons. -- Bugfix: Check the selected element are within bounds for Dropdown. - -# Build -- Bugfix: Package library using the "Release config". Not debug. - -0.11 ----- - -## github workflow -- Add Windows ad MacOS artefacts. -- Merge all the workflows. - -## Bug -- On Unix system, fallback to {80,25} screen dimension on failure. - -## CMake -- Support for shared library, via `BUILD_SHARED_LIBS` option. -- Add library version and symlinks. - -0.10 (2021-09-30) --------------------- - -## Bug -- Fix the automated merge of borders. - -### Dom -- `Table()` class to build stylised table. - See https://github.com/ArthurSonzogni/FTXUI/discussions/228 -- `vscroll_indicator`. Show a scrollbar indicator on the right. -- `separatorEmpty`. A separator drawing nothing. -- `separatorFixed`. A separator drawing the provided character. - -### Component -- `Maybe`: Display an component conditionnally based on a boolean. -- `Dropdown`: A dropdown select list. - -0.9 (2021-09-26) ----------------- - -The initial release where changelog where written. - -This version includes: - -### screen -- Style: - - Bold. - - Blink. - - Dim. - - Inverted. - - Underlined. - - Foreground color. - - Background color. -- Support for UTF8 unicode. - - Full wide character: 测试. - - Combining characters: a⃒ -- A Stencil buffer. -- Automatically merge box drawing characters. -- Detect terminal dimension. - -### DOM - -- Element: - - `text` & `vtext` - - `separator` and 5 variations. - - `gauge` - - `border` and 6 variations. - - `window` - - `spinner` - - `paragraph` and `hflow`. - -- Layout: - - `hbox` - - `vbox` - - `dbox` - - `gridbox` - - `frame`: Drawing inside a virtual area, potentially larger than the real - one. - - `focus`, `select`: scroll the inner view of a frame, to be in view. - - `flex` & 8 variations. `filler` - -- Decorators: - - `bold` - - `dim` - - `inverted` - - `blink` - - `color` - - `bgcolor` - - `clearunder` - -### Component - -- Container: - - `Container::Vertical` - - `Container::Horizontal` - - `Container::Tab` -- `Button` -- `Checkbox` -- `Input` -- `Menu` -- `MenuEntry` -- `Radiobox` -- `Toggle` -- `Slider` -- `Renderer` & variations -- `CatchEvent` - -### MISC - -- Fuzzer -- Tests using gtest. -- Doxygen documentation -- IWYU -- 52 examples. -- Support for WebAssembly. -- Support for Window and fallback for broken terminal. diff --git a/ftxui/CMakeLists.txt b/ftxui/CMakeLists.txt deleted file mode 100644 index d5d61bd..0000000 --- a/ftxui/CMakeLists.txt +++ /dev/null @@ -1,188 +0,0 @@ -option(FTXUI_BUILD_DOCS "Set to ON to build docs" OFF) -option(FTXUI_BUILD_EXAMPLES "Set to ON to build examples" OFF) -option(FTXUI_BUILD_MODULES "Build the C++20 modules" OFF) -option(FTXUI_BUILD_TESTS "Set to ON to build tests" OFF) -option(FTXUI_BUILD_TESTS_FUZZER "Set to ON to enable fuzzing" OFF) -option(FTXUI_CLANG_TIDY "Execute clang-tidy" OFF) -option(FTXUI_DEV_WARNINGS "Enable more compiler warnings and warnings as errors" OFF) -option(FTXUI_ENABLE_COVERAGE "Execute code coverage" OFF) -option(FTXUI_ENABLE_INSTALL "Generate the install target" ON) -option(FTXUI_QUIET "Set to ON for FTXUI to be quiet" OFF) - -if (FTXUI_BUILD_MODULES) - cmake_minimum_required(VERSION 3.28.2) -else() - cmake_minimum_required(VERSION 3.12) -endif() - -project(ftxui - LANGUAGES CXX - VERSION 6.1.9 - DESCRIPTION "C++ Functional Terminal User Interface." -) - - -set(FTXUI_MICROSOFT_TERMINAL_FALLBACK_HELP_TEXT "On windows, assume the \ -terminal used will be one of Microsoft and use a set of reasonnable fallback \ -to counteract its implementations problems.") -if (WIN32) - option(FTXUI_MICROSOFT_TERMINAL_FALLBACK - ${FTXUI_MICROSOFT_TERMINAL_FALLBACK_HELP_TEXT} ON) -else() - option(FTXUI_MICROSOFT_TERMINAL_FALLBACK - ${FTXUI_MICROSOFT_TERMINAL_FALLBACK_HELP_TEXT} OFF) -endif() - -set(CMAKE_EXPORT_COMPILE_COMMANDS ON) - -include(cmake/ftxui_message.cmake) - -add_library(screen - include/ftxui/screen/box.hpp - include/ftxui/screen/color.hpp - include/ftxui/screen/color_info.hpp - include/ftxui/screen/image.hpp - include/ftxui/screen/pixel.hpp - include/ftxui/screen/screen.hpp - include/ftxui/screen/string.hpp - src/ftxui/screen/box.cpp - src/ftxui/screen/color.cpp - src/ftxui/screen/color_info.cpp - src/ftxui/screen/image.cpp - src/ftxui/screen/screen.cpp - src/ftxui/screen/string.cpp - src/ftxui/screen/terminal.cpp - src/ftxui/screen/util.hpp -) - -add_library(dom - include/ftxui/dom/canvas.hpp - include/ftxui/dom/direction.hpp - include/ftxui/dom/elements.hpp - include/ftxui/dom/flexbox_config.hpp - include/ftxui/dom/node.hpp - include/ftxui/dom/requirement.hpp - include/ftxui/dom/selection.hpp - include/ftxui/dom/take_any_args.hpp - src/ftxui/dom/automerge.cpp - src/ftxui/dom/selection_style.cpp - src/ftxui/dom/blink.cpp - src/ftxui/dom/bold.cpp - src/ftxui/dom/border.cpp - src/ftxui/dom/box_helper.cpp - src/ftxui/dom/box_helper.hpp - src/ftxui/dom/canvas.cpp - src/ftxui/dom/clear_under.cpp - src/ftxui/dom/color.cpp - src/ftxui/dom/composite_decorator.cpp - src/ftxui/dom/dbox.cpp - src/ftxui/dom/dim.cpp - src/ftxui/dom/flex.cpp - src/ftxui/dom/flexbox.cpp - src/ftxui/dom/flexbox_config.cpp - src/ftxui/dom/flexbox_helper.cpp - src/ftxui/dom/flexbox_helper.hpp - src/ftxui/dom/focus.cpp - src/ftxui/dom/frame.cpp - src/ftxui/dom/gauge.cpp - src/ftxui/dom/graph.cpp - src/ftxui/dom/gridbox.cpp - src/ftxui/dom/hbox.cpp - src/ftxui/dom/hyperlink.cpp - src/ftxui/dom/inverted.cpp - src/ftxui/dom/italic.cpp - src/ftxui/dom/linear_gradient.cpp - src/ftxui/dom/node.cpp - src/ftxui/dom/node_decorator.cpp - src/ftxui/dom/paragraph.cpp - src/ftxui/dom/reflect.cpp - src/ftxui/dom/scroll_indicator.cpp - src/ftxui/dom/selection.cpp - src/ftxui/dom/separator.cpp - src/ftxui/dom/size.cpp - src/ftxui/dom/spinner.cpp - src/ftxui/dom/strikethrough.cpp - src/ftxui/dom/table.cpp - src/ftxui/dom/text.cpp - src/ftxui/dom/underlined.cpp - src/ftxui/dom/underlined_double.cpp - src/ftxui/dom/util.cpp - src/ftxui/dom/vbox.cpp -) - -add_library(component - include/ftxui/component/animation.hpp - include/ftxui/component/captured_mouse.hpp - include/ftxui/component/component.hpp - include/ftxui/component/component_base.hpp - include/ftxui/component/component_options.hpp - include/ftxui/component/event.hpp - include/ftxui/component/loop.hpp - include/ftxui/component/mouse.hpp - include/ftxui/component/receiver.hpp - include/ftxui/component/screen_interactive.hpp - include/ftxui/component/task.hpp - src/ftxui/component/animation.cpp - src/ftxui/component/button.cpp - src/ftxui/component/catch_event.cpp - src/ftxui/component/checkbox.cpp - src/ftxui/component/collapsible.cpp - src/ftxui/component/component.cpp - src/ftxui/component/component_options.cpp - src/ftxui/component/container.cpp - src/ftxui/component/dropdown.cpp - src/ftxui/component/event.cpp - src/ftxui/component/hoverable.cpp - src/ftxui/component/input.cpp - src/ftxui/component/loop.cpp - src/ftxui/component/maybe.cpp - src/ftxui/component/menu.cpp - src/ftxui/component/modal.cpp - src/ftxui/component/radiobox.cpp - src/ftxui/component/radiobox.cpp - src/ftxui/component/renderer.cpp - src/ftxui/component/resizable_split.cpp - src/ftxui/component/screen_interactive.cpp - src/ftxui/component/slider.cpp - src/ftxui/component/task.cpp - src/ftxui/component/task_internal.hpp - src/ftxui/component/task_queue.cpp - src/ftxui/component/task_queue.hpp - src/ftxui/component/task_runner.cpp - src/ftxui/component/task_runner.hpp - src/ftxui/component/terminal_input_parser.cpp - src/ftxui/component/terminal_input_parser.hpp - src/ftxui/component/util.cpp - src/ftxui/component/window.cpp -) - -target_link_libraries(dom PUBLIC screen) -target_link_libraries(component PUBLIC dom) - -include(cmake/ftxui_set_options.cmake) -ftxui_set_options(screen) -ftxui_set_options(dom) -ftxui_set_options(component) - -include(cmake/ftxui_coverage.cmake) -ftxui_check_coverage(screen) -ftxui_check_coverage(dom) -ftxui_check_coverage(component) - -include(cmake/ftxui_test.cmake) -include(cmake/ftxui_benchmark.cmake) -include(cmake/ftxui_fuzzer.cmake) -include(cmake/iwyu.cmake) -include(cmake/ftxui_export.cmake) -include(cmake/ftxui_install.cmake) -include(cmake/ftxui_package.cmake) -include(cmake/ftxui_modules.cmake) - -add_subdirectory(examples) -add_subdirectory(doc) - -# You can generate ./examples_modules/ by running -# ./tools/generate_examples_modules.sh -if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/examples_modules/CMakeLists.txt") - add_subdirectory(examples_modules) -endif() diff --git a/ftxui/LICENSE b/ftxui/LICENSE deleted file mode 100644 index 0814b33..0000000 --- a/ftxui/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License - -Copyright (c) 2019 Arthur Sonzogni. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - diff --git a/ftxui/MODULE.bazel b/ftxui/MODULE.bazel deleted file mode 100644 index 582387a..0000000 --- a/ftxui/MODULE.bazel +++ /dev/null @@ -1,13 +0,0 @@ -# FTXUI module. -module( - name = "ftxui", - version = "6.1.9", - compatibility_level = 6, -) - -# Build dependencies. -bazel_dep(name = "rules_cc", version = "0.1.1") -bazel_dep(name = "platforms", version = "0.0.10") - -# Test dependencies. -bazel_dep(name = "googletest", version = "1.14.0.bcr.1", dev_dependency = True) diff --git a/ftxui/README.md b/ftxui/README.md deleted file mode 100644 index 38759e7..0000000 --- a/ftxui/README.md +++ /dev/null @@ -1,453 +0,0 @@ - -

- Demo image -
- - - - - - -
- - latest packaged version(s) - - - - - -
- Documentation · - Report a Bug · - Examples . - Request Feature · - Send a Pull Request - -

- -# FTXUI - -Functional Terminal (X) User interface - -A simple cross-platform C++ library for terminal based user interfaces! - -## Feature - * Functional style. Inspired by - [1](https://hackernoon.com/building-reactive-terminal-interfaces-in-c-d392ce34e649?gi=d9fb9ce35901) - and [React](https://reactjs.org/) - * Simple and elegant syntax (in my opinion) - * Keyboard & mouse navigation. - * Support for [UTF8](https://en.wikipedia.org/wiki/UTF-8) and [fullwidth chars](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms) (→ 测试) - * Support for animations. [Demo 1](https://arthursonzogni.github.io/FTXUI/examples/?file=component/menu_underline_animated_gallery), [Demo 2](https://arthursonzogni.github.io/FTXUI/examples/?file=component/button_style) - * Support for drawing. [Demo](https://arthursonzogni.github.io/FTXUI/examples/?file=component/canvas_animated) - * No dependencies. - * [C++20 Module support](https://arthursonzogni.github.io/FTXUI/cpp20-modules.html) - * **Cross platform**: Linux/MacOS (main target), WebAssembly, Windows (Thanks to contributors!). - * Learn by [examples](#documentation), and [tutorials](#documentation) - * Multiple packages: - - CMake [FetchContent]([https://bewagner.net/programming/2020/05/02/cmake-fetchcontent/](https://cmake.org/cmake/help/latest/module/FetchContent.html)) (preferred) - - [Bazel](https://registry.bazel.build/modules/ftxui) - - [vcpkg](https://vcpkg.link/ports/ftxui) - - [Conan](https://conan.io/center/recipes/ftxui) [Debian package](https://tracker.debian.org/pkg/ftxui) - - [Ubuntu package](https://launchpad.net/ubuntu/+source/ftxui) - - [Arch Linux](https://aur.archlinux.org/packages/ftxui/) - - [OpenSUSE](https://build.opensuse.org/package/show/devel:libraries:c_c++/ftxui) - - [XMake](https://xmake.io) repository [package](https://github.com/xmake-io/xmake-repo/blob/dev/packages/f/ftxui/xmake.lua) - - [Nix](https://github.com/ArthurSonzogni/FTXUI/blob/main/flake.nix) - * Good practices: documentation, tests, fuzzers, performance tests, automated CI, automated packaging, etc... - -## Documentation - -- [Starter CMake](https://github.com/ArthurSonzogni/ftxui-starter) -- [Starter Bazel](https://github.com/ArthurSonzogni/ftxui-bazel) -- [Documentation](https://arthursonzogni.github.io/FTXUI/) -- [Examples (WebAssembly)](https://arthursonzogni.github.io/FTXUI/examples/) -- [Build using CMake](https://arthursonzogni.github.io/FTXUI/#build-cmake) -- [Build using Bazel](https://arthursonzogni.github.io/FTXUI/#build-bazel) - -## Example -~~~cpp - vbox({ - hbox({ - text("one") | border, - text("two") | border | flex, - text("three") | border | flex, - }), - - gauge(0.25) | color(Color::Red), - gauge(0.50) | color(Color::White), - gauge(0.75) | color(Color::Blue), - }); -~~~ - -![image](https://github.com/ArthurSonzogni/FTXUI/assets/4759106/569bf043-4e85-4245-aad5-2324572135c4) - -## Short gallery - -#### DOM - -This module defines a hierarchical set of Element. An Element manages layout and can be responsive to the terminal dimensions. - -They are declared in [](https://arthursonzogni.github.io/FTXUI/elements_8hpp_source.html -) - -
Layout - -Element can be arranged together: - - horizontally with `hbox` - - vertically with `vbox` - - inside a grid with `gridbox` - - wrap along one direction using the `flexbox`. - -Element can become flexible using the `flex` decorator. - -[Example](https://arthursonzogni.github.io/FTXUI/examples_2dom_2vbox_hbox_8cpp-example.html) using `hbox`, `vbox` and `filler`. - -![image](https://user-images.githubusercontent.com/4759106/147242524-7103b5d9-1a92-4e2d-ac70-b3d6740061e3.png) - - -[Example](https://arthursonzogni.github.io/FTXUI/examples_2dom_2gridbox_8cpp-example.html) using gridbox: - -![image](https://user-images.githubusercontent.com/4759106/147242972-0db1f2e9-0790-496f-86e6-ed2c604f7a73.png) - -[Example](https://github.com/ArthurSonzogni/FTXUI/blob/master/examples/dom/hflow.cpp) using flexbox: - -![image](https://user-images.githubusercontent.com/4759106/147243064-780ac7cc-605b-475f-94b8-cf7c4aed03a5.png) - -[See](https://arthursonzogni.github.io/FTXUI/examples_2dom_2hflow_8cpp-example.html) also this [demo](https://arthursonzogni.github.io/FTXUI/examples/?file=component/flexbox). - -
- -
Style - -An element can be decorated using the functions: - - `bold` - - `italic` - - `dim` - - `inverted` - - `underlined` - - `underlinedDouble` - - `blink` - - `strikethrough` - - `color` - - `bgcolor` - - `hyperlink` - -[Example](https://arthursonzogni.github.io/FTXUI/examples_2dom_2style_gallery_8cpp-example.html) - -![image](https://user-images.githubusercontent.com/4759106/147244118-380bf834-9e33-40df-9ff0-07c10f2598ef.png) - -FTXUI supports the pipe operator. It means: `decorator1(decorator2(element))` and `element | decorator1 | decorator2` can be used. - -
- -
Colors - -FTXUI support every color palette: - -Color [gallery](https://arthursonzogni.github.io/FTXUI/examples_2dom_2color_gallery_8cpp-example.html): -![image](https://user-images.githubusercontent.com/4759106/147248595-04c7245a-5b85-4544-809d-a5984fc6f9e7.png) - -
- -
Border and separator - -Use decorator border and element separator() to subdivide your UI: - -```cpp -auto document = vbox({ - text("top"), - separator(), - text("bottom"), -}) | border; - -``` - -[Demo](https://arthursonzogni.github.io/FTXUI/examples_2dom_2separator_8cpp-example.html): - -![image](https://user-images.githubusercontent.com/4759106/147244514-4135f24b-fb8e-4067-8896-bc53545583f7.png) - -
- -
Text and paragraph - -A simple piece of text is represented using `text("content")`. - -To support text wrapping following spaces the following functions are provided: -```cpp -Element paragraph(std::string text); -Element paragraphAlignLeft(std::string text); -Element paragraphAlignRight(std::string text); -Element paragraphAlignCenter(std::string text); -Element paragraphAlignJustify(std::string text); -``` - -[Paragraph example](https://arthursonzogni.github.io/FTXUI/examples_2dom_2paragraph_8cpp-example.html) - -![ezgif com-gif-maker (4)](https://user-images.githubusercontent.com/4759106/147251370-983a06e7-6f41-4113-92b8-942f43d34d06.gif) - -
- -
Table - -A class to easily style a table of data. - -[Example](https://arthursonzogni.github.io/FTXUI/examples_2dom_2table_8cpp-example.html): - -![image](https://user-images.githubusercontent.com/4759106/147250766-77d8ec9e-cf2b-486d-9866-1fd9f1bd2e6b.png) - -
- -
Canvas - -Drawing can be made on a Canvas, using braille, block, or simple characters: - -Simple [example](https://github.com/ArthurSonzogni/FTXUI/blob/master/examples/dom/canvas.cpp): - -![image](https://user-images.githubusercontent.com/4759106/147245843-76cc62fb-ccb4-421b-aacf-939f9afb42fe.png) - -Complex [examples](https://github.com/ArthurSonzogni/FTXUI/blob/master/examples/component/canvas_animated.cpp): - -![ezgif com-gif-maker (3)](https://user-images.githubusercontent.com/4759106/147250538-783a8246-98e0-4a25-b032-3bd3710549d1.gif) -
- -#### Component - -ftxui/component produces dynamic UI, reactive to the user's input. It defines a set of ftxui::Component. A component reacts to Events (keyboard, mouse, resize, ...) and Renders as an Element (see previous section). - -Prebuilt components are declared in [](https://arthursonzogni.github.io/FTXUI/component_8hpp_source.html) - -
Gallery - -[Gallery](https://arthursonzogni.github.io/FTXUI/examples_2component_2gallery_8cpp-example.html) of multiple components. ([demo](https://arthursonzogni.github.io/FTXUI/examples/?file=component/gallery)) - -![image](https://user-images.githubusercontent.com/4759106/147247330-b60beb9f-e665-48b4-81c0-4b01ee95bc66.png) - -
- -
Radiobox - -[Example](https://arthursonzogni.github.io/FTXUI/examples_2component_2radiobox_8cpp-example.html): - -![image](https://user-images.githubusercontent.com/4759106/147246401-809d14a5-6621-4e36-8dd9-a2d75ef2a94e.png) - -
- -
Checkbox - -[Example](https://arthursonzogni.github.io/FTXUI/examples_2component_2checkbox_8cpp-example.html): - -![image](https://user-images.githubusercontent.com/4759106/147246646-b86926a9-1ef9-4efb-af98-48a9b62acd81.png) - -
- -
Input - -[Example](https://arthursonzogni.github.io/FTXUI/examples_2component_2input_8cpp-example.html): - -![image](https://user-images.githubusercontent.com/4759106/147247671-f1d6f606-1845-4e94-a4a0-d4273e9ae6bd.png) - -
- -
Toggle - -[Example](https://arthursonzogni.github.io/FTXUI/examples_2component_2toggle_8cpp-example.html): - -![image](https://user-images.githubusercontent.com/4759106/147249383-e2201cf1-b7b8-4a5a-916f-d761e3e7ae40.png) - -
- - -
Slider - -[Example](https://arthursonzogni.github.io/FTXUI/examples_2component_2slider_8cpp-example.html): - -![image](https://user-images.githubusercontent.com/4759106/147249265-7e2cad75-082c-436e-affe-44a550c480ab.png) - -
- - -
Menu - -[Example](https://arthursonzogni.github.io/FTXUI/examples_2component_2menu_8cpp-example.html): - -![image](https://user-images.githubusercontent.com/4759106/147247822-0035fd6f-bb13-4b3a-b057-77eb9291582f.png) - -
- - -
ResizableSplit - -[Example](https://arthursonzogni.github.io/FTXUI/examples_2component_2resizable_split_8cpp-example.html): - -![ezgif com-gif-maker](https://user-images.githubusercontent.com/4759106/147248372-c55512fe-9b96-4b08-a1df-d05cf2cae431.gif) -
- - -
Dropdown - -[Example](https://arthursonzogni.github.io/FTXUI/examples_2component_2dropdown_8cpp-example.html): - -![youtube-video-gif (3)](https://user-images.githubusercontent.com/4759106/147246982-1e821751-531c-4e1f-bc37-2fa290e143cd.gif) - -
- -
Tab - -[Vertical](https://arthursonzogni.github.io/FTXUI/examples_2component_2tab_vertical_8cpp-example.html): - -![ezgif com-gif-maker (1)](https://user-images.githubusercontent.com/4759106/147250144-22ff044a-4773-4ff7-a49c-12ba4034acb4.gif) - -[Horizontal](https://arthursonzogni.github.io/FTXUI/examples_2component_2tab_horizontal_8cpp-example.html): - - ![ezgif com-gif-maker (2)](https://user-images.githubusercontent.com/4759106/147250217-fe447e0f-7a99-4e08-948a-995087d9b40e.gif) - - - -
- -## Libraries for FTXUI -- *Want to share a useful Component for FTXUI? Feel free to add yours here* -- [ftxui-grid-container](https://github.com/mingsheng13/grid-container-ftxui) -- [ftxui-ip-input](https://github.com/mingsheng13/ip-input-ftxui) -- [ftxui-image-view](https://github.com/ljrrjl/ftxui-image-view.git): For Image Display. - - -## Project using FTXUI - -Feel free to add your projects here: -- [json-tui](https://github.com/ArthurSonzogni/json-tui) -- [git-tui](https://github.com/ArthurSonzogni/git-tui) -- [ostree-tui](https://github.com/AP-Sensing/ostree-tui) -- [rgb-tui](https://github.com/ArthurSonzogni/rgb-tui) -- [chrome-log-beautifier](https://github.com/ArthurSonzogni/chrome-log-beautifier) -- [x86-64 CPU Architecture Simulation](https://github.com/AnisBdz/CPU) -- [ltuiny](https://github.com/adrianoviana87/ltuiny) -- [i3-termdialogs](https://github.com/mibli/i3-termdialogs) -- [simpPRU](https://github.com/VedantParanjape/simpPRU) -- [Pigeon ROS TUI](https://github.com/PigeonSensei/Pigeon_ros_tui) -- [hastur](https://github.com/robinlinden/hastur) -- [CryptoCalculator](https://github.com/brevis/CryptoCalculator) -- [todoman](https://github.com/aaleino/todoman) -- [TimeAccumulator](https://github.com/asari555/TimeAccumulator) -- [vantage](https://github.com/gokulmaxi/vantage) -- [tabdeeli](https://github.com/typon/tabdeeli) -- [tiles](https://github.com/tusharpm/tiles) -- [cachyos-cli-installer](https://github.com/cachyos/new-cli-installer) -- [beagle-config](https://github.com/SAtacker/beagle-config) -- [turing_cmd](https://github.com/DanArmor/turing_cmd) -- [StartUp](https://github.com/StubbornVegeta/StartUp) -- [eCAL monitor](https://github.com/eclipse-ecal/ecal) -- [Path Finder](https://github.com/Ruebled/Path_Finder) -- [rw-tui](https://github.com/LeeKyuHyuk/rw-tui) -- [resource-monitor](https://github.com/catalincd/resource-monitor) -- [ftxuiFileReader](https://github.com/J0sephDavis/ftxuiFileReader) -- [ftxui_CPUMeter](https://github.com/tzzzzzzzx/ftxui_CPUMeter) -- [Captain's log](https://github.com/nikoladucak/caps-log) -- [FTowerX](https://github.com/MhmRhm/FTowerX) -- [Caravan](https://github.com/r3w0p/caravan) -- [Step-Writer](https://github.com/BrianAnakPintar/step-writer) -- [XJ music](https://github.com/xjmusic/xjmusic) -- [UDP chat](https://github.com/Sergeydigl3/udp-chat-tui) -- [2048-cpp](https://github.com/Chessom/2048-cpp) -- [Memory game](https://github.com/mikolajlubiak/memory) -- [Terminal Animation](https://github.com/mikolajlubiak/terminal_animation) -- [pciex](https://github.com/s0nx/pciex) -- [Fallout terminal hacking](https://github.com/gshigin/yet-another-fallout-terminal-hacking-game) -- [Lazylist](https://github.com/zhuyongqi9/lazylist) -- [TUISIC](https://github.com/Dark-Kernel/tuisic) -- [inLimbo](https://github.com/nots1dd/inLimbo) -- [BestEdrOfTheMarket](https://github.com/Xacone/BestEdrOfTheMarket) -- [terminal-rain](https://github.com/Oakamoore/terminal-rain) -- [keywords](https://github.com/Oakamoore/keywords) ([Play web version :heart:](https://oakamoore.itch.io/keywords)) -- [FTB - tertminal file browser](https://github.com/Cyxuan0311/FTB) -- [openJuice](https://github.com/mikomikotaishi/openJuice) -- [SHOOT!](https://github.com/ShingZhanho/ENGG1340-Project-25Spring) -- [VerifySN (Fast Hash Tool)](https://github.com/d06i/verifySN) -- [tic-tac-toe](https://github.com/birland/tic-tac-toe) -- [typing-speed-test](https://github.com/ymcx/typing-speed-test) - -### [cpp-best-practices/game_jam](https://github.com/cpp-best-practices/game_jam) - -Several games using the FTXUI have been made during the Game Jam: -- [TermBreaker](https://github.com/ArthurSonzogni/termBreaker) [**[Play web version]**](https://arthursonzogni.com/TermBreaker/) -- [Minesweeper Marathon](https://github.com/cpp-best-practices/game_jam/blob/main/Jam1_April_2022/minesweeper_marathon.md) [**[Play web version]**](https://barlasgarden.com/minesweeper/index.html) -- [Grand Rounds](https://github.com/cpp-best-practices/game_jam/blob/main/Jam1_April_2022/grandrounds.md) -- [LightsRound](https://github.com/cpp-best-practices/game_jam/blob/main/Jam1_April_2022/LightsRound.v.0.1.0.md) -- [DanteO](https://github.com/cpp-best-practices/game_jam/blob/main/Jam1_April_2022/danteo.md) -- [Sumo](https://github.com/cpp-best-practices/game_jam/blob/main/Jam1_April_2022/sumo.md) -- [Drag Me aROUND](https://github.com/cpp-best-practices/game_jam/blob/main/Jam1_April_2022/drag_me_around.md) -- [DisarmSelfDestruct](https://github.com/cpp-best-practices/game_jam/blob/main/Jam1_April_2022/DisarmSelfDestruct.md) -- [TheWorld](https://github.com/cpp-best-practices/game_jam/blob/main/Jam1_April_2022/TheWorld.md) -- [smoothlife](https://github.com/cpp-best-practices/game_jam/blob/main/Jam1_April_2022/smoothlife.md) -- [Consu](https://github.com/cpp-best-practices/game_jam/blob/main/Jam1_April_2022/consu.md) - -## Build using CMake - -It is **highly** recommended to use CMake FetchContent to depend on FTXUI so you may specify which commit you would like to depend on. -```cmake -include(FetchContent) -FetchContent_Declare(ftxui - GIT_REPOSITORY https://github.com/ArthurSonzogni/ftxui - GIT_TAG v6.1.9 -) -FetchContent_MakeAvailable(ftxui) - -target_link_libraries(your_target PRIVATE - # Chose a submodule - ftxui::component - ftxui::dom - ftxui::screen -) -``` - -# Build using Bazel - -**MODULE.bazel** -```starlark -bazel_dep( - name = "ftxui", - version = "v6.1.9", -) -``` - -**BUILD.bazel** -```starlark -cc_binary( - name = "your_target", - srcs = ["your_source.cc"], - deps = [ - "@ftxui//:component", - "@ftxui//:dom", - "@ftxui//:screen", - ], -) -``` - - -# Build with something else: -If you don't, FTXUI may be used from the following packages: -- CMake [FetchContent]([https://bewagner.net/programming/2020/05/02/cmake-fetchcontent/](https://cmake.org/cmake/help/latest/module/FetchContent.html)) (preferred), -- [Bazel](https://registry.bazel.build/modules/ftxui), -- [vcpkg](https://vcpkg.link/ports/ftxui), -- [Conan](https://conan.io/center/recipes/ftxui) -- [Debian package](https://tracker.debian.org/pkg/ftxui), -- [Ubuntu package](https://launchpad.net/ubuntu/+source/ftxui), -- [Arch Linux](https://aur.archlinux.org/packages/ftxui/), -- [OpenSUSE](https://build.opensuse.org/package/show/devel:libraries:c_c++/ftxui), -[Nix](https://github.com/ArthurSonzogni/FTXUI/blob/main/flake.nix), -[![Packaging status](https://repology.org/badge/vertical-allrepos/libftxui.svg)](https://repology.org/project/libftxui/versions) - - -If you choose to build and link FTXUI yourself, `ftxui-component` must be first in the linking order relative to the other FTXUI libraries, i.e. -```bash -g++ . . . -lftxui-component -lftxui-dom -lftxui-screen . . . -``` - -To build FTXUI with modules, check [documentation](https://arthursonzogni.github.io/FTXUI/cpp20-modules.html) - -## Contributors - - - - diff --git a/ftxui/WORKSPACE.bazel b/ftxui/WORKSPACE.bazel deleted file mode 100644 index 1c3bb37..0000000 --- a/ftxui/WORKSPACE.bazel +++ /dev/null @@ -1,4 +0,0 @@ -# Copyright 2025 Arthur Sonzogni. All rights reserved. -# Use of this source code is governed by the MIT license that can be found in -# the LICENSE file. -workspace(name = "ftxui") diff --git a/ftxui/bazel/ftxui.bzl b/ftxui/bazel/ftxui.bzl deleted file mode 100644 index 2be26a5..0000000 --- a/ftxui/bazel/ftxui.bzl +++ /dev/null @@ -1,94 +0,0 @@ -# ftxui_common.bzl - -load("@rules_cc//cc:defs.bzl", "cc_library") -load("@rules_cc//cc:defs.bzl", "cc_binary") - -# Microsoft terminal is a bit buggy ¯\_(ツ)_/¯ and MSVC uses bad defaults. -def windows_copts(): - MSVC_COPTS = [ - # Microsoft Visual Studio must decode sources files as UTF-8. - "/utf-8", - - # Microsoft Visual Studio must interpret the codepoint using unicode. - "/DUNICODE", - "/D_UNICODE", - - # Fallback for Microsoft Terminal. - # This - # - Replace missing font symbols by others. - # - Reduce screen position pooling frequency to deals against a Microsoft - # race condition. This was fixed in 2020, but clients never not updated. - # - https://github.com/microsoft/terminal/pull/7583 - # - https://github.com/ArthurSonzogni/FTXUI/issues/136 - "/DFTXUI_MICROSOFT_TERMINAL_FALLBACK", - ] - - WINDOWS_COPTS = [ - # Fallback for Microsoft Terminal. - # This - # - Replace missing font symbols by others. - # - Reduce screen position pooling frequency to deals against a Microsoft - # race condition. This was fixed in 2020, but clients are still using - # old versions. - # - https://github.com/microsoft/terminal/pull/7583 - # - https://github.com/ArthurSonzogni/FTXUI/issues/136 - "-DFTXUI_MICROSOFT_TERMINAL_FALLBACK", - ]; - - return select({ - # MSVC: - "@rules_cc//cc/compiler:msvc-cl": MSVC_COPTS, - "@rules_cc//cc/compiler:clang-cl": MSVC_COPTS, - "@platforms//os:windows": WINDOWS_COPTS, - "//conditions:default": [], - }) - -def ftxui_cc_library( - name, - srcs = [], - hdrs = [], - linkopts = [], - deps = []): - - cc_library( - name = name, - srcs = srcs, - hdrs = hdrs, - linkopts = linkopts, - deps = deps, - strip_include_prefix = "", - include_prefix = "", - includes = [ - "include", - "src", - ], - copts = windows_copts(), - visibility = ["//visibility:public"], - ) - -# Compile all the examples in the examples/ directory. -# This is useful to check the Bazel is always synchronized against CMake -# definitions. -def generate_examples(): - cpp_files = native.glob(["examples/**/*.cpp"]) - - for src in cpp_files: - # Skip failing examples due to the color_info_sorted_2d.ipp dependency. - if src == "examples/component/homescreen.cpp" or \ - src == "examples/dom/color_info_palette256.cpp" or \ - src == "examples/dom/color_gallery.cpp": - continue - - # Turn "examples/component/button.cpp" → "example_component_button" - name = src.replace("/", "_").replace(".cpp", "") - - cc_binary( - name = name, - srcs = [src], - deps = [ - ":component", - ":dom", - ":screen", - ], - copts = windows_copts(), - ) diff --git a/ftxui/cmake/ftxui-config.cmake.in b/ftxui/cmake/ftxui-config.cmake.in deleted file mode 100644 index b04ba33..0000000 --- a/ftxui/cmake/ftxui-config.cmake.in +++ /dev/null @@ -1,6 +0,0 @@ -@PACKAGE_INIT@ - -include(CMakeFindDependencyMacro) -find_dependency(Threads) - -include("${CMAKE_CURRENT_LIST_DIR}/ftxui-targets.cmake") diff --git a/ftxui/cmake/ftxui_benchmark.cmake b/ftxui/cmake/ftxui_benchmark.cmake deleted file mode 100644 index c4082e1..0000000 --- a/ftxui/cmake/ftxui_benchmark.cmake +++ /dev/null @@ -1,21 +0,0 @@ -if (NOT FTXUI_BUILD_TESTS OR - NOT ${CMAKE_VERSION} VERSION_GREATER "3.11.4" OR - WIN32 - ) - return() -endif() - -include(cmake/ftxui_find_google_benchmark.cmake) - -add_executable(ftxui-benchmark - src/ftxui/dom/benchmark_test.cpp - ) -ftxui_set_options(ftxui-benchmark) -target_link_libraries(ftxui-benchmark - PRIVATE dom - PRIVATE benchmark::benchmark - PRIVATE benchmark::benchmark_main - ) -target_include_directories(ftxui-benchmark - PRIVATE src - ) diff --git a/ftxui/cmake/ftxui_coverage.cmake b/ftxui/cmake/ftxui_coverage.cmake deleted file mode 100644 index b92db44..0000000 --- a/ftxui/cmake/ftxui_coverage.cmake +++ /dev/null @@ -1,8 +0,0 @@ -function(ftxui_check_coverage library) - if (FTXUI_ENABLE_COVERAGE) - if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES ".*Clang") - target_compile_options(${library} INTERFACE --coverage -O0 -g) - target_link_libraries(${library} INTERFACE --coverage) - endif() - endif() -endfunction() diff --git a/ftxui/cmake/ftxui_export.cmake b/ftxui/cmake/ftxui_export.cmake deleted file mode 100644 index ae0fcff..0000000 --- a/ftxui/cmake/ftxui_export.cmake +++ /dev/null @@ -1,8 +0,0 @@ -add_library(ftxui::screen ALIAS screen) -add_library(ftxui::dom ALIAS dom) -add_library(ftxui::component ALIAS component) -export( - TARGETS screen dom component - NAMESPACE ftxui:: - FILE "${PROJECT_BINARY_DIR}/ftxui-targets.cmake" -) diff --git a/ftxui/cmake/ftxui_find_google_benchmark.cmake b/ftxui/cmake/ftxui_find_google_benchmark.cmake deleted file mode 100644 index 8e2bdc7..0000000 --- a/ftxui/cmake/ftxui_find_google_benchmark.cmake +++ /dev/null @@ -1,32 +0,0 @@ -# Some developers would be happier with the google benchmark version provided -# from their package manager. Use it if it is installed the package provide -# cmake support. -# https://github.com/ArthurSonzogni/FTXUI/issues/551 -find_package(benchmark QUIET) -if (benchmark_FOUND) - return() -endif() - -option(FETCHCONTENT_UPDATES_DISCONNECTED TRUE) -option(FETCHCONTENT_QUIET FALSE) -include(FetchContent) - -FetchContent_Declare(googlebenchmark - GIT_REPOSITORY "https://github.com/google/benchmark" - GIT_TAG "015d1a091af6937488242b70121858bce8fd40e9" # v1.8.2 - GIT_PROGRESS TRUE -) - -FetchContent_GetProperties(googlebenchmark) -set (BENCHMARK_ENABLE_GTEST_TESTS OFF CACHE INTERNAL "") -set (BENCHMARK_ENABLE_TESTING OFF CACHE INTERNAL "") -if(googlebenchmark_POPULATED) - return() -endif() - -FetchContent_Populate(googlebenchmark) -add_subdirectory( - ${googlebenchmark_SOURCE_DIR} - ${googlebenchmark_BINARY_DIR} - EXCLUDE_FROM_ALL -) diff --git a/ftxui/cmake/ftxui_find_google_test.cmake b/ftxui/cmake/ftxui_find_google_test.cmake deleted file mode 100644 index c7941ce..0000000 --- a/ftxui/cmake/ftxui_find_google_test.cmake +++ /dev/null @@ -1,33 +0,0 @@ -# Some developers would be happier with the gtest version provided from their -# package manager. Use it if it is installed the package provide cmake support. -# https://github.com/ArthurSonzogni/FTXUI/issues/551 -find_package(GTest QUIET) - -if (GTest_FOUND) - return() -endif() - -option(FETCHCONTENT_UPDATES_DISCONNECTED TRUE) -option(FETCHCONTENT_QUIET FALSE) -include(FetchContent) - -FetchContent_Declare(googletest - GIT_REPOSITORY "https://github.com/google/googletest" - GIT_TAG 23ef29555ef4789f555f1ba8c51b4c52975f0907 - GIT_PROGRESS TRUE -) - -FetchContent_GetProperties(googletest) -if(googletest_POPULATED) - return() -endif() - -FetchContent_Populate(googletest) -set(BUILD_GMOCK OFF CACHE INTERNAL "") -set(INSTALL_GTEST OFF CACHE INTERNAL "") -set(gtest_force_shared_crt ON CACHE INTERNAL "") -add_subdirectory( - "${googletest_SOURCE_DIR}" - "${googletest_BINARY_DIR}" - EXCLUDE_FROM_ALL -) diff --git a/ftxui/cmake/ftxui_fuzzer.cmake b/ftxui/cmake/ftxui_fuzzer.cmake deleted file mode 100644 index cb77554..0000000 --- a/ftxui/cmake/ftxui_fuzzer.cmake +++ /dev/null @@ -1,21 +0,0 @@ -if (NOT FTXUI_BUILD_TESTS_FUZZER) - return() -endif() - -set(CMAKE_C_COMPILER clang) -set(CMAKE_CXX_COMPILER clang++) - -function(fuzz source) - set(name "ftxui-${source}") - add_executable(${name} - src/ftxui/component/${source}.cpp - ) - target_include_directories(${name} PRIVATE src) - target_link_libraries(${name} PRIVATE component) - target_compile_options(${name} PRIVATE -fsanitize=fuzzer,address) - target_link_libraries(${name} PRIVATE -fsanitize=fuzzer,address) - target_compile_features(${name} PRIVATE cxx_std_17) -endfunction(fuzz) - -fuzz(terminal_input_parser_test_fuzzer) -fuzz(component_fuzzer) diff --git a/ftxui/cmake/ftxui_install.cmake b/ftxui/cmake/ftxui_install.cmake deleted file mode 100644 index 8200ac9..0000000 --- a/ftxui/cmake/ftxui_install.cmake +++ /dev/null @@ -1,63 +0,0 @@ -if(NOT FTXUI_ENABLE_INSTALL) - return() -endif() - -include(GNUInstallDirs) -include(CMakePackageConfigHelpers) - -# ------------------------------------------------------------------------------ -# Install the library and its public headers into the standard subdirectories -# ------------------------------------------------------------------------------ -install( - TARGETS screen dom component - EXPORT ftxui-targets - ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" - LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" - ) - -install( - DIRECTORY include/ftxui - DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" - ) - -# ------------------------------------------------------------------------------ -# Install the exported cmake targets for use in other CMake projects. -# ------------------------------------------------------------------------------ -install( - EXPORT ftxui-targets - NAMESPACE ftxui:: - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/ftxui" - ) - -# ------------------------------------------------------------------------------ -# Create and install the ftuxi-config.cmake and ftuxi-config-version.cmake files -# needed to support users of find_package() -# ------------------------------------------------------------------------------ -configure_package_config_file( - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/ftxui-config.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/cmake/ftxui-config.cmake" - INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/ftxui/cmake" - PATH_VARS CMAKE_INSTALL_INCLUDEDIR - ) -write_basic_package_version_file( - "${CMAKE_CURRENT_BINARY_DIR}/cmake/ftxui-config-version.cmake" - VERSION ${PACKAGE_VERSION} - COMPATIBILITY SameMajorVersion - ) -install( - FILES - "${CMAKE_CURRENT_BINARY_DIR}/cmake/ftxui-config.cmake" - "${CMAKE_CURRENT_BINARY_DIR}/cmake/ftxui-config-version.cmake" - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/ftxui" - ) - -# ------------------------------------------------------------------------------ -# Create and install pkg-config file for easy use of library in build systems -# other than CMake: -# ------------------------------------------------------------------------------ -configure_file(ftxui.pc.in ${CMAKE_CURRENT_BINARY_DIR}/ftxui.pc @ONLY) -install( - FILES "${CMAKE_CURRENT_BINARY_DIR}/ftxui.pc" - DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig" - ) diff --git a/ftxui/cmake/ftxui_message.cmake b/ftxui/cmake/ftxui_message.cmake deleted file mode 100644 index 5f25f1a..0000000 --- a/ftxui/cmake/ftxui_message.cmake +++ /dev/null @@ -1,18 +0,0 @@ -function(ftxui_message msg) - if (NOT FTXUI_QUIET) - message(STATUS "${msg}") - endif() -endfunction() - -ftxui_message("┌─ FTXUI options ─────────────────────") -ftxui_message("│ FTXUI_BUILD_DOCS : ${FTXUI_BUILD_DOCS}") -ftxui_message("│ FTXUI_BUILD_EXAMPLES : ${FTXUI_BUILD_EXAMPLES}") -ftxui_message("│ FTXUI_BUILD_MODULES : ${FTXUI_BUILD_MODULES}") -ftxui_message("│ FTXUI_BUILD_TESTS : ${FTXUI_BUILD_TESTS}") -ftxui_message("│ FTXUI_BUILD_TESTS_FUZZER : ${FTXUI_BUILD_TESTS_FUZZER}") -ftxui_message("│ FTXUI_CLANG_TIDY : ${FTXUI_CLANG_TIDY}") -ftxui_message("│ FTXUI_DEV_WARNINGS : ${FTXUI_DEV_WARNINGS}") -ftxui_message("│ FTXUI_ENABLE_COVERAGE : ${FTXUI_ENABLE_COVERAGE}") -ftxui_message("│ FTXUI_ENABLE_INSTALL : ${FTXUI_ENABLE_INSTALL}") -ftxui_message("│ FTXUI_QUIET : ${FTXUI_QUIET}") -ftxui_message("└─────────────────────────────────────") diff --git a/ftxui/cmake/ftxui_modules.cmake b/ftxui/cmake/ftxui_modules.cmake deleted file mode 100644 index 3cc0f04..0000000 --- a/ftxui/cmake/ftxui_modules.cmake +++ /dev/null @@ -1,83 +0,0 @@ -if (NOT FTXUI_BUILD_MODULES) - return() -endif() - -add_library(ftxui-modules) - -target_sources(ftxui-modules - PUBLIC FILE_SET CXX_MODULES FILES - src/ftxui/ftxui.cppm - src/ftxui/component.cppm - src/ftxui/component/animation.cppm - src/ftxui/component/captured_mouse.cppm - src/ftxui/component/component.cppm - src/ftxui/component/component_base.cppm - src/ftxui/component/component_options.cppm - src/ftxui/component/event.cppm - src/ftxui/component/loop.cppm - src/ftxui/component/mouse.cppm - src/ftxui/component/receiver.cppm - src/ftxui/component/screen_interactive.cppm - src/ftxui/component/task.cppm - src/ftxui/dom.cppm - src/ftxui/dom/canvas.cppm - src/ftxui/dom/deprecated.cppm - src/ftxui/dom/direction.cppm - src/ftxui/dom/elements.cppm - src/ftxui/dom/flexbox_config.cppm - src/ftxui/dom/linear_gradient.cppm - src/ftxui/dom/node.cppm - src/ftxui/dom/requirement.cppm - src/ftxui/dom/selection.cppm - src/ftxui/dom/table.cppm - src/ftxui/screen.cppm - src/ftxui/screen/box.cppm - src/ftxui/screen/color.cppm - src/ftxui/screen/color_info.cppm - src/ftxui/screen/deprecated.cppm - src/ftxui/screen/image.cppm - src/ftxui/screen/pixel.cppm - src/ftxui/screen/screen.cppm - src/ftxui/screen/string.cppm - src/ftxui/screen/terminal.cppm - src/ftxui/util.cppm - src/ftxui/util/autoreset.cppm - src/ftxui/util/ref.cppm - ) - -target_link_libraries(ftxui-modules - PUBLIC - ftxui::screen - ftxui::dom - ftxui::component - ) - -target_compile_features(ftxui-modules PUBLIC cxx_std_20) -# TODO: Explain why this is needed. -if (CMAKE_COMPILER_IS_GNUCXX) - target_compile_options(ftxui-modules PUBLIC -fmodules-ts) -endif () - -add_library(ftxui::modules ALIAS ftxui-modules) - -if(FTXUI_ENABLE_INSTALL) - - include(GNUInstallDirs) - - install(TARGETS ftxui-modules - EXPORT ftxui-targets - FILE_SET CXX_MODULES - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ftxui - FILE_SET HEADERS - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ftxui - INCLUDES - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ftxui - ) - install(EXPORT ftxui-targets - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ftxui - CXX_MODULES_DIRECTORY ${CMAKE_INSTALL_LIBDIR}/cmake/ftxui - ) - install(FILES my_package-config.cmake - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ftxui - ) -endif() diff --git a/ftxui/cmake/ftxui_package.cmake b/ftxui/cmake/ftxui_package.cmake deleted file mode 100644 index ded9829..0000000 --- a/ftxui/cmake/ftxui_package.cmake +++ /dev/null @@ -1,28 +0,0 @@ -if(NOT FTXUI_ENABLE_INSTALL) - return() -endif() - -if (UNIX AND NOT APPLE) - set(CPACK_GENERATOR "DEB;External;RPM;STGZ;TBZ2;TGZ;TXZ;TZ;TZST;ZIP") -elseif (UNIX AND APPLE) - set(CPACK_GENERATOR "DragNDrop;NuGet;TGZ;ZIP") -elseif (WIN32) - set(CPACK_GENERATOR "DEB;NuGet;TGZ;ZIP") -else() - set(CPACK_GENERATOR "ZIP") -endif() -set(CPACK_DEBIAN_PACKAGE_DEPENDS " ") -set(CPACK_DEBIAN_PACKAGE_HOMEPAGE_URL "https://github.com/ArthurSonzogni/FTXUI/") -set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Arthur Sonzogni") -set(CPACK_DEBIAN_PACKAGE_VERSION ${PROJECT_VERSION}) -set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A simple C++ Terminal UI library") -set(CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/ArthurSonzogni/FTXUI/") -set(CPACK_PACKAGE_NAME "ftxui") -set(CPACK_PACKAGE_VENDOR "Arthur Sonzogni") -set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION}) -set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) -set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR}) -set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH}) -set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") - -include(CPack) diff --git a/ftxui/cmake/ftxui_set_options.cmake b/ftxui/cmake/ftxui_set_options.cmake deleted file mode 100644 index 38a80ee..0000000 --- a/ftxui/cmake/ftxui_set_options.cmake +++ /dev/null @@ -1,105 +0,0 @@ -find_program(CLANG_TIDY_EXE NAMES "clang-tidy" DOC "Path to clang-tidy executable" ) - -function(ftxui_set_options library) - set_target_properties(${library} PROPERTIES VERSION ${PROJECT_VERSION}) - if (NOT ${library} MATCHES "ftxui-*") - set_target_properties(${library} PROPERTIES OUTPUT_NAME "ftxui-${library}") - endif() - - if (FTXUI_CLANG_TIDY) - if (NOT CLANG_TIDY_EXE) - message(FATAL_ERROR "clang-tidy requested but executable not found") - endif() - - set_target_properties(${library} - PROPERTIES CXX_CLANG_TIDY "${CLANG_TIDY_EXE};-warnings-as-errors=*" - ) - - # By using "PUBLIC" as opposed to "SYSTEM INTERFACE", the compiler warning - # are enforced on the headers. This is behind "FTXUI_CLANG_TIDY", so that it - # applies only when developing FTXUI and on the CI. User's of the library - # get only the SYSTEM INTERFACE instead. - target_include_directories(${library} - PUBLIC - $ - ) - else() - target_include_directories(${library} SYSTEM - INTERFACE - $ - ) - endif() - - target_include_directories(${library} SYSTEM - INTERFACE - $ - ) - - target_include_directories(${library} - PRIVATE - $ - $ - ) - - target_compile_features(${library} PUBLIC cxx_std_17) - - # Force Microsoft Visual Studio to decode sources files in UTF-8. This applies - # to the library and the library users. - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") - target_compile_options(${library} PUBLIC "/utf-8") - endif() - - # CMake does automatically add -fPIC when linking a shared library, but it - # does not add it when linking a static library. This is a problem when the - # static library is later linked into a shared library. - # Doing it helps some users. - set_property(TARGET ${library} PROPERTY POSITION_INDEPENDENT_CODE ON) - - # Add as many warning as possible: - if (WIN32) - if (MSVC) - if(FTXUI_DEV_WARNINGS) - target_compile_options(${library} PRIVATE "/W3") - target_compile_options(${library} PRIVATE "/WX") - endif() - target_compile_options(${library} PRIVATE "/wd4244") - target_compile_options(${library} PRIVATE "/wd4267") - target_compile_options(${library} PRIVATE "/D_CRT_SECURE_NO_WARNINGS") - endif() - # Force Win32 to UNICODE - target_compile_definitions(${library} PRIVATE UNICODE _UNICODE) - else() - if(FTXUI_DEV_WARNINGS) - target_compile_options(${library} PRIVATE "-Wall") - target_compile_options(${library} PRIVATE "-Werror") - target_compile_options(${library} PRIVATE "-Wextra") - - target_compile_options(${library} PRIVATE "-Wcast-align") - target_compile_options(${library} PRIVATE "-Wdeprecated") - target_compile_options(${library} PRIVATE "-Wmissing-declarations") - target_compile_options(${library} PRIVATE "-Wnon-virtual-dtor") - target_compile_options(${library} PRIVATE "-Wnull-dereference") - target_compile_options(${library} PRIVATE "-Woverloaded-virtual") - target_compile_options(${library} PRIVATE "-Wpedantic") - target_compile_options(${library} PRIVATE "-Wshadow") - target_compile_options(${library} PRIVATE "-Wunused") - endif() - endif() - - if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") - if(FTXUI_DEV_WARNINGS) - target_compile_options(${library} PRIVATE "-Wdocumentation") - endif() - endif() - - - if (FTXUI_MICROSOFT_TERMINAL_FALLBACK) - target_compile_definitions(${library} - PRIVATE "FTXUI_MICROSOFT_TERMINAL_FALLBACK") - endif() -endfunction() - -if (EMSCRIPTEN) - string(APPEND CMAKE_CXX_FLAGS " -s USE_PTHREADS") - string(APPEND CMAKE_EXE_LINKER_FLAGS " -s PROXY_TO_PTHREAD") -endif() diff --git a/ftxui/cmake/ftxui_test.cmake b/ftxui/cmake/ftxui_test.cmake deleted file mode 100644 index 9f57416..0000000 --- a/ftxui/cmake/ftxui_test.cmake +++ /dev/null @@ -1,83 +0,0 @@ -if (NOT FTXUI_BUILD_TESTS) - return() -endif() - -enable_testing() - -include(cmake/ftxui_find_google_test.cmake) - -add_executable(ftxui-tests - src/ftxui/component/animation_test.cpp - src/ftxui/component/button_test.cpp - src/ftxui/component/collapsible_test.cpp - src/ftxui/component/component_test.cpp - src/ftxui/component/component_test.cpp - src/ftxui/component/container_test.cpp - src/ftxui/component/dropdown_test.cpp - src/ftxui/component/hoverable_test.cpp - src/ftxui/component/input_test.cpp - src/ftxui/component/menu_test.cpp - src/ftxui/component/modal_test.cpp - src/ftxui/component/radiobox_test.cpp - src/ftxui/component/resizable_split_test.cpp - src/ftxui/component/screen_interactive_test.cpp - src/ftxui/component/slider_test.cpp - src/ftxui/component/task_test.cpp - src/ftxui/component/terminal_input_parser_test.cpp - src/ftxui/component/toggle_test.cpp - src/ftxui/dom/blink_test.cpp - src/ftxui/dom/bold_test.cpp - src/ftxui/dom/border_test.cpp - src/ftxui/dom/canvas_test.cpp - src/ftxui/dom/color_test.cpp - src/ftxui/dom/dbox_test.cpp - src/ftxui/dom/dim_test.cpp - src/ftxui/dom/flexbox_helper_test.cpp - src/ftxui/dom/flexbox_test.cpp - src/ftxui/dom/gauge_test.cpp - src/ftxui/dom/gridbox_test.cpp - src/ftxui/dom/hbox_test.cpp - src/ftxui/dom/hyperlink_test.cpp - src/ftxui/dom/italic_test.cpp - src/ftxui/dom/linear_gradient_test.cpp - src/ftxui/dom/scroll_indicator_test.cpp - src/ftxui/dom/selection_test.cpp - src/ftxui/dom/separator_test.cpp - src/ftxui/dom/spinner_test.cpp - src/ftxui/dom/table_test.cpp - src/ftxui/dom/text_test.cpp - src/ftxui/dom/underlined_test.cpp - src/ftxui/dom/vbox_test.cpp - src/ftxui/screen/color_test.cpp - src/ftxui/screen/string_test.cpp - src/ftxui/util/ref_test.cpp -) - -target_link_libraries(ftxui-tests - PRIVATE component - PRIVATE GTest::gtest - PRIVATE GTest::gtest_main -) -target_include_directories(ftxui-tests - PRIVATE src -) -target_compile_features(ftxui-tests PRIVATE cxx_std_20) - -# Disable unity build for tests. There are several files defining the same -# function in different anonymous namespaces. This is not allowed in unity -# builds, as it would result in multiple definitions of the same function. -set_target_properties(ftxui-tests PROPERTIES UNITY_BUILD OFF) - -if (FTXUI_MICROSOFT_TERMINAL_FALLBACK) - target_compile_definitions(ftxui-tests - PRIVATE "FTXUI_MICROSOFT_TERMINAL_FALLBACK") -endif() - -include(GoogleTest) -gtest_discover_tests(ftxui-tests - DISCOVERY_TIMEOUT 600 -) - -#set(CMAKE_CTEST_ARGUMENTS "--rerun-failed --output-on-failure") -#set_tests_properties(gen_init_queries PROPERTIES FIXTURES_SETUP f_init_queries) -#set_tests_properties(test PROPERTIES FIXTURES_REQUIRED f_init_queries) diff --git a/ftxui/cmake/iwyu.cmake b/ftxui/cmake/iwyu.cmake deleted file mode 100644 index d7d2a4a..0000000 --- a/ftxui/cmake/iwyu.cmake +++ /dev/null @@ -1,7 +0,0 @@ -find_program(iwyu_path NAMES include-what-you-use iwyu) -if(iwyu_path) - set_property(TARGET ${lib} - PROPERTY "${iwyu_path}" -Xiwyu - --mapping_file "${CMAKE_CURRENT_SOURCE_DIR}/iwyu.imp" - ) -endif() diff --git a/ftxui/codecov.yml b/ftxui/codecov.yml deleted file mode 100644 index e4cf1fc..0000000 --- a/ftxui/codecov.yml +++ /dev/null @@ -1,12 +0,0 @@ -codecov: - require_ci_to_pass: no - notify: - after_n_builds: 4 - wait_for_ci: yes - -coverage: - precision: 2 - round: down - range: "50...100" - -comment: false diff --git a/ftxui/doc/CMakeLists.txt b/ftxui/doc/CMakeLists.txt deleted file mode 100644 index fbbf567..0000000 --- a/ftxui/doc/CMakeLists.txt +++ /dev/null @@ -1,77 +0,0 @@ -if(NOT FTXUI_BUILD_DOCS) - return() -endif() - -find_package(Doxygen) -if (NOT DOXYGEN_FOUND) - message("Doxygen need to be installed to generate the doxygen documentation") - return() -endif() - -include(FetchContent) -FetchContent_Declare( - doxygen-awesome-css - GIT_REPOSITORY https://github.com/jothepro/doxygen-awesome-css.git - GIT_TAG v2.3.4 - -) -FetchContent_MakeAvailable(doxygen-awesome-css) -FetchContent_GetProperties(doxygen-awesome-css SOURCE_DIR AWESOME_CSS_DIR) - -# Generate example list for documentation -set(DOM_EXAMPLES "") -set(COMPONENT_EXAMPLES "") - -get_property(EXAMPLES GLOBAL PROPERTY FTXUI::EXAMPLES) - -foreach(example IN LISTS EXAMPLES) - if(example MATCHES "^dom/.*") - list(APPEND DOM_EXAMPLES "${example}") - elseif(example MATCHES "^component/.*") - list(APPEND COMPONENT_EXAMPLES "${example}") - else() - message(ERROR "Unknown example '${example}'") - endif() -endforeach() - -macro(write_example_list file title page examples) - file(WRITE "${file}" "@page ${page} ${title}\n") - file(APPEND "${file}" "@tableofcontents\n") - - foreach(example IN LISTS ${examples}) - get_filename_component(name "${example}" NAME_WE) - file(APPEND "${file}" "# ${name}\n") - - # Add a markdown to the demo. URL example: - # https://arthursonzogni.github.io/FTXUI/examples/?file=component/canvas_animated - file(APPEND "${file}" "[Demo](https://arthursonzogni.github.io/FTXUI/examples/?file=${example})\n") - - file(APPEND "${file}" "@include examples/${example}.cpp\n") - file(APPEND "${file}" "\n") - endforeach() - - # Reference to the examples - foreach(example IN LISTS ${examples}) - get_filename_component(name "${example}" NAME_WE) - file(APPEND "${file}" "@example examples/${example}.cpp\n") - endforeach() -endmacro() - -write_example_list("${CMAKE_CURRENT_BINARY_DIR}/dom_examples.md" - "Example" - module-dom-examples - DOM_EXAMPLES) -write_example_list("${CMAKE_CURRENT_BINARY_DIR}/component_examples.md" - "Example" - module-component-examples - COMPONENT_EXAMPLES) - -configure_file(Doxyfile.in Doxyfile @ONLY) - -# note the option ALL which allows to build the docs together with the application -add_custom_target(doc - COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT "Generating API documentation with Doxygen" - VERBATIM - ) diff --git a/ftxui/doc/Doxyfile.in b/ftxui/doc/Doxyfile.in deleted file mode 100644 index 44a30a6..0000000 --- a/ftxui/doc/Doxyfile.in +++ /dev/null @@ -1,2807 +0,0 @@ -# Doxyfile 1.9.8 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a double hash (##) is considered a comment and is placed in -# front of the TAG it is preceding. -# -# All text after a single hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists, items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (\" \"). -# -# Note: -# -# Use doxygen to compare the used configuration file with the template -# configuration file: -# doxygen -x [configFile] -# Use doxygen to compare the used configuration file with the template -# configuration file without replacing the environment variables or CMake type -# replacement variables: -# doxygen -x_noenv [configFile] - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the configuration -# file that follow. The default is UTF-8 which is also the encoding used for all -# text before the first occurrence of this tag. Doxygen uses libiconv (or the -# iconv built into libc) for the transcoding. See -# https://www.gnu.org/software/libiconv/ for the list of possible encodings. -# The default value is: UTF-8. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by -# double-quotes, unless you are using Doxywizard) that should identify the -# project for which the documentation is generated. This name is used in the -# title of most generated pages and in a few other places. -# The default value is: My Project. - -PROJECT_NAME = FTXUI - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. This -# could be handy for archiving the generated documentation or if some version -# control system is used. - -PROJECT_NUMBER = @PROJECT_VERSION@ - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer a -# quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = "C++ functional terminal UI." - -# With the PROJECT_LOGO tag one can specify a logo or an icon that is included -# in the documentation. The maximum height of the logo should not exceed 55 -# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy -# the logo to the output directory. - -PROJECT_LOGO = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path -# into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If -# left blank the current directory will be used. - -OUTPUT_DIRECTORY = ./doxygen - -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 -# sub-directories (in 2 levels) under the output directory of each output format -# and will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where -# putting all generated files in the same directory would otherwise causes -# performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to -# control the number of sub-directories. -# The default value is: NO. - -CREATE_SUBDIRS = NO - -# Controls the number of sub-directories that will be created when -# CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every -# level increment doubles the number of directories, resulting in 4096 -# directories at level 8 which is the default and also the maximum value. The -# sub-directories are organized in 2 levels, the first level always has a fixed -# number of 16 directories. -# Minimum value: 0, maximum value: 8, default value: 8. -# This tag requires that the tag CREATE_SUBDIRS is set to YES. - -CREATE_SUBDIRS_LEVEL = 8 - -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII -# characters to appear in the names of generated files. If set to NO, non-ASCII -# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode -# U+3044. -# The default value is: NO. - -ALLOW_UNICODE_NAMES = YES - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian, -# Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English -# (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek, -# Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with -# English messages), Korean, Korean-en (Korean with English messages), Latvian, -# Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, -# Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, -# Swedish, Turkish, Ukrainian and Vietnamese. -# The default value is: English. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member -# descriptions after the members that are listed in the file and class -# documentation (similar to Javadoc). Set to NO to disable this. -# The default value is: YES. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief -# description of a member or function before the detailed description -# -# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. -# The default value is: YES. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator that is -# used to form the text in various listings. Each string in this list, if found -# as the leading text of the brief description, will be stripped from the text -# and the result, after processing the whole list, is used as the annotated -# text. Otherwise, the brief description is used as-is. If left blank, the -# following values are used ($name is automatically replaced with the name of -# the entity):The $name class, The $name widget, The $name file, is, provides, -# specifies, contains, represents, a, an and the. - -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief -# description. -# The default value is: NO. - -ALWAYS_DETAILED_SEC = YES - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. -# The default value is: NO. - -INLINE_INHERITED_MEMB = YES - -# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path -# before files name in the file list and in the header files. If set to NO the -# shortest path that makes the file name unique will be used -# The default value is: YES. - -FULL_PATH_NAMES = NO - -# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. -# Stripping is only done if one of the specified strings matches the left-hand -# part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to -# strip. -# -# Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. -# This tag requires that the tag FULL_PATH_NAMES is set to YES. - -STRIP_FROM_PATH = @PROJECT_SOURCE_DIR@ \ - @PROJECT_BINARY_DIR@ - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the -# path mentioned in the documentation of a class, which tells the reader which -# header file to include in order to use a class. If left blank only the name of -# the header file containing the class definition is used. Otherwise one should -# specify the list of include paths that are normally passed to the compiler -# using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but -# less readable) file names. This can be useful is your file systems doesn't -# support long names like on DOS, Mac, or CD-ROM. -# The default value is: NO. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the -# first line (until the first dot) of a Javadoc-style comment as the brief -# description. If set to NO, the Javadoc-style will behave just like regular Qt- -# style comments (thus requiring an explicit @brief command for a brief -# description.) -# The default value is: NO. - -JAVADOC_AUTOBRIEF = NO - -# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line -# such as -# /*************** -# as being the beginning of a Javadoc-style comment "banner". If set to NO, the -# Javadoc-style will behave just like regular comments and it will not be -# interpreted by doxygen. -# The default value is: NO. - -JAVADOC_BANNER = NO - -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first -# line (until the first dot) of a Qt-style comment as the brief description. If -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus -# requiring an explicit \brief command for a brief description.) -# The default value is: NO. - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a -# multi-line C++ special comment block (i.e. a block of //! or /// comments) as -# a brief description. This used to be the default behavior. The new default is -# to treat a multi-line C++ comment block as a detailed description. Set this -# tag to YES if you prefer the old behavior instead. -# -# Note that setting this tag to YES also means that rational rose comments are -# not recognized any more. -# The default value is: NO. - -MULTILINE_CPP_IS_BRIEF = NO - -# By default Python docstrings are displayed as preformatted text and doxygen's -# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the -# doxygen's special commands can be used and the contents of the docstring -# documentation blocks is shown as doxygen documentation. -# The default value is: YES. - -PYTHON_DOCSTRING = YES - -# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the -# documentation from any documented member that it re-implements. -# The default value is: YES. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new -# page for each member. If set to NO, the documentation of a member will be part -# of the file/class/namespace that contains it. -# The default value is: NO. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen -# uses this value to replace tabs by spaces in code fragments. -# Minimum value: 1, maximum value: 16, default value: 4. - -TAB_SIZE = 2 - -# This tag can be used to specify a number of aliases that act as commands in -# the documentation. An alias has the form: -# name=value -# For example adding -# "sideeffect=@par Side Effects:^^" -# will allow you to put the command \sideeffect (or @sideeffect) in the -# documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". Note that you cannot put \n's in the value part of an alias -# to insert newlines (in the resulting output). You can put ^^ in the value part -# of an alias to insert a newline as if a physical newline was in the original -# file. When you need a literal { or } or , in the value part of an alias you -# have to escape them by means of a backslash (\), this can lead to conflicts -# with the commands \{ and \} for these it is advised to use the version @{ and -# @} or use a double escape (\\{ and \\}) - -ALIASES = -ALIASES += iframe{1}="
" - - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. For -# instance, some of the names that are used will be different. The list of all -# members will be omitted, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or -# Python sources only. Doxygen will then generate output that is more tailored -# for that language. For instance, namespaces will be presented as packages, -# qualified scopes will look different, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources. Doxygen will then generate output that is tailored for Fortran. -# The default value is: NO. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for VHDL. -# The default value is: NO. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice -# sources only. Doxygen will then generate output that is more tailored for that -# language. For instance, namespaces will be presented as modules, types will be -# separated into more groups, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_SLICE = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given -# extension. Doxygen has a built-in mapping, but you can override or extend it -# using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, -# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice, -# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: -# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser -# tries to guess whether the code is fixed or free formatted code, this is the -# default for Fortran type files). For instance to make doxygen treat .inc files -# as Fortran files (default is PHP), and .f files as C (default is Fortran), -# use: inc=Fortran f=C. -# -# Note: For files without extension you can use no_extension as a placeholder. -# -# Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. When specifying no_extension you should add -# * to the FILE_PATTERNS. -# -# Note see also the list of default file extension mappings. - -EXTENSION_MAPPING = - - -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments -# according to the Markdown format, which allows for more readable -# documentation. See https://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in -# case of backward compatibilities issues. -# The default value is: YES. - -MARKDOWN_SUPPORT = YES - -# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up -# to that level are automatically included in the table of contents, even if -# they do not have an id attribute. -# Note: This feature currently applies only to Markdown headings. -# Minimum value: 0, maximum value: 99, default value: 5. -# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. - -TOC_INCLUDE_HEADINGS = 5 - -# The MARKDOWN_ID_STYLE tag can be used to specify the algorithm used to -# generate identifiers for the Markdown headings. Note: Every identifier is -# unique. -# Possible values are: DOXYGEN use a fixed 'autotoc_md' string followed by a -# sequence number starting at 0 and GITHUB use the lower case version of title -# with any whitespace replaced by '-' and punctuation characters removed. -# The default value is: DOXYGEN. -# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. - -MARKDOWN_ID_STYLE = GITHUB - -# When enabled doxygen tries to link words that correspond to documented -# classes, or namespaces to their corresponding documentation. Such a link can -# be prevented in individual cases by putting a % sign in front of the word or -# globally by setting AUTOLINK_SUPPORT to NO. -# The default value is: YES. - -AUTOLINK_SUPPORT = YES - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. -# The default value is: NO. - -BUILTIN_STL_SUPPORT = YES - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. -# The default value is: NO. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. -# The default value is: NO. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate -# getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. -# This will only work if the methods are indeed getting or setting a simple -# type. If this is not the case, or you want to show the methods anyway, you -# should set this option to NO. -# The default value is: YES. - -IDL_PROPERTY_SUPPORT = NO - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. -# The default value is: NO. - -DISTRIBUTE_GROUP_DOC = NO - -# If one adds a struct or class to a group and this option is enabled, then also -# any nested class or struct is added to the same group. By default this option -# is disabled and one has to add nested compounds explicitly via \ingroup. -# The default value is: NO. - -GROUP_NESTED_COMPOUNDS = NO - -# Set the SUBGROUPING tag to YES to allow class member groups of the same type -# (for instance a group of public functions) to be put as a subgroup of that -# type (e.g. under the Public Functions section). Set it to NO to prevent -# subgrouping. Alternatively, this can be done per class using the -# \nosubgrouping command. -# The default value is: YES. - -SUBGROUPING = YES - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions -# are shown inside the group in which they are included (e.g. using \ingroup) -# instead of on a separate page (for HTML and Man pages) or section (for LaTeX -# and RTF). -# -# Note that this feature does not work in combination with -# SEPARATE_MEMBER_PAGES. -# The default value is: NO. - -INLINE_GROUPED_CLASSES = YES - -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions -# with only public data fields or simple typedef fields will be shown inline in -# the documentation of the scope in which they are defined (i.e. file, -# namespace, or group documentation), provided this scope is documented. If set -# to NO, structs, classes, and unions are shown on a separate page (for HTML and -# Man pages) or section (for LaTeX and RTF). -# The default value is: NO. - -INLINE_SIMPLE_STRUCTS = NO - -# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or -# enum is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically be -# useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. -# The default value is: NO. - -TYPEDEF_HIDES_STRUCT = YES - -# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This -# cache is used to resolve symbols given their name and scope. Since this can be -# an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The -# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range -# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest -# the optimal cache size from a speed point of view. -# Minimum value: 0, maximum value: 9, default value: 0. - -LOOKUP_CACHE_SIZE = 0 - -# The NUM_PROC_THREADS specifies the number of threads doxygen is allowed to use -# during processing. When set to 0 doxygen will based this on the number of -# cores available in the system. You can set it explicitly to a value larger -# than 0 to get more control over the balance between CPU load and processing -# speed. At this moment only the input processing can be done using multiple -# threads. Since this is still an experimental feature the default is set to 1, -# which effectively disables parallel processing. Please report any issues you -# encounter. Generating dot graphs in parallel is controlled by the -# DOT_NUM_THREADS setting. -# Minimum value: 0, maximum value: 32, default value: 1. - -NUM_PROC_THREADS = 4 - -# If the TIMESTAMP tag is set different from NO then each generated page will -# contain the date or date and time when the page was generated. Setting this to -# NO can help when comparing the output of multiple runs. -# Possible values are: YES, NO, DATETIME and DATE. -# The default value is: NO. - -TIMESTAMP = NO - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in -# documentation are documented, even if no documentation was available. Private -# class members and static file members will be hidden unless the -# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. -# Note: This will also disable the warnings about undocumented members that are -# normally produced when WARNINGS is set to YES. -# The default value is: NO. - -EXTRACT_ALL = YES - -# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will -# be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual -# methods of a class will be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIV_VIRTUAL = NO - -# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal -# scope will be included in the documentation. -# The default value is: NO. - -EXTRACT_PACKAGE = NO - -# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be -# included in the documentation. -# The default value is: NO. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined -# locally in source files will be included in the documentation. If set to NO, -# only classes defined in header files are included. Does not have any effect -# for Java sources. -# The default value is: YES. - -EXTRACT_LOCAL_CLASSES = NO - -# This flag is only useful for Objective-C code. If set to YES, local methods, -# which are defined in the implementation section but not in the interface are -# included in the documentation. If set to NO, only methods in the interface are -# included. -# The default value is: NO. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base name of -# the file that contains the anonymous namespace. By default anonymous namespace -# are hidden. -# The default value is: NO. - -EXTRACT_ANON_NSPACES = NO - -# If this flag is set to YES, the name of an unnamed parameter in a declaration -# will be determined by the corresponding definition. By default unnamed -# parameters remain unnamed in the output. -# The default value is: YES. - -RESOLVE_UNNAMED_PARAMS = YES - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all -# undocumented members inside documented classes or files. If set to NO these -# members will be included in the various overviews, but no documentation -# section is generated. This option has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_MEMBERS = YES - -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. If set -# to NO, these classes will be included in the various overviews. This option -# will also hide undocumented C++ concepts if enabled. This option has no effect -# if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_CLASSES = YES - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -# declarations. If set to NO, these declarations will be included in the -# documentation. -# The default value is: NO. - -HIDE_FRIEND_COMPOUNDS = YES - -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any -# documentation blocks found inside the body of a function. If set to NO, these -# blocks will be appended to the function's detailed documentation block. -# The default value is: NO. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation that is typed after a -# \internal command is included. If the tag is set to NO then the documentation -# will be excluded. Set it to YES to include the internal documentation. -# The default value is: NO. - -INTERNAL_DOCS = YES - -# With the correct setting of option CASE_SENSE_NAMES doxygen will better be -# able to match the capabilities of the underlying filesystem. In case the -# filesystem is case sensitive (i.e. it supports files in the same directory -# whose names only differ in casing), the option must be set to YES to properly -# deal with such files in case they appear in the input. For filesystems that -# are not case sensitive the option should be set to NO to properly deal with -# output files written for symbols that only differ in casing, such as for two -# classes, one named CLASS and the other named Class, and to also support -# references to files without having to specify the exact matching casing. On -# Windows (including Cygwin) and MacOS, users should typically set this option -# to NO, whereas on Linux or other Unix flavors it should typically be set to -# YES. -# Possible values are: SYSTEM, NO and YES. -# The default value is: SYSTEM. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with -# their full class and namespace scopes in the documentation. If set to YES, the -# scope will be hidden. -# The default value is: NO. - -HIDE_SCOPE_NAMES = YES - -# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will -# append additional text to a page's title, such as Class Reference. If set to -# YES the compound reference will be hidden. -# The default value is: NO. - -HIDE_COMPOUND_REFERENCE= NO - -# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class -# will show which file needs to be included to use the class. -# The default value is: YES. - -SHOW_HEADERFILE = YES - -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of -# the files that are included by a file in the documentation of that file. -# The default value is: YES. - -SHOW_INCLUDE_FILES = NO - -# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each -# grouped member an include statement to the documentation, telling the reader -# which file to include in order to use the member. -# The default value is: NO. - -SHOW_GROUPED_MEMB_INC = NO - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include -# files with double quotes in the documentation rather than with sharp brackets. -# The default value is: NO. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the -# documentation for inline members. -# The default value is: YES. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the -# (detailed) documentation of file and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. -# The default value is: YES. - -SORT_MEMBER_DOCS = NO - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief -# descriptions of file, namespace and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. Note that -# this will also influence the order of the classes in the class list. -# The default value is: NO. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the -# (brief and detailed) documentation of class members so that constructors and -# destructors are listed first. If set to NO the constructors will appear in the -# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. -# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief -# member documentation. -# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting -# detailed member documentation. -# The default value is: NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy -# of group names into alphabetical order. If set to NO the group names will -# appear in their defined order. -# The default value is: NO. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by -# fully-qualified names, including namespaces. If set to NO, the class list will -# be sorted only by class name, not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the alphabetical -# list. -# The default value is: NO. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper -# type resolution of all parameters of a function it will reject a match between -# the prototype and the implementation of a member function even if there is -# only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still -# accept a match between prototype and implementation in such cases. -# The default value is: NO. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo -# list. This list is created by putting \todo commands in the documentation. -# The default value is: YES. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test -# list. This list is created by putting \test commands in the documentation. -# The default value is: YES. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug -# list. This list is created by putting \bug commands in the documentation. -# The default value is: YES. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) -# the deprecated list. This list is created by putting \deprecated commands in -# the documentation. -# The default value is: YES. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional documentation -# sections, marked by \if ... \endif and \cond -# ... \endcond blocks. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the -# initial value of a variable or macro / define can have for it to appear in the -# documentation. If the initializer consists of more lines than specified here -# it will be hidden. Use a value of 0 to hide initializers completely. The -# appearance of the value of individual variables and macros / defines can be -# controlled using \showinitializer or \hideinitializer command in the -# documentation regardless of this setting. -# Minimum value: 0, maximum value: 10000, default value: 30. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at -# the bottom of the documentation of classes and structs. If set to YES, the -# list will mention the files that were used to generate the documentation. -# The default value is: YES. - -SHOW_USED_FILES = YES - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This -# will remove the Files entry from the Quick Index and from the Folder Tree View -# (if specified). -# The default value is: YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces -# page. This will remove the Namespaces entry from the Quick Index and from the -# Folder Tree View (if specified). -# The default value is: YES. - -SHOW_NAMESPACES = NO - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command command input-file, where command is the value of the -# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file -# version. For an example see the documentation. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can -# optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. See also section "Changing the -# layout of pages" for information. -# -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE -# tag is left empty. - -LAYOUT_FILE = @CMAKE_CURRENT_SOURCE_DIR@/DoxygenLayout.xml - -# The CITE_BIB_FILES tag can be used to specify one or more bib files containing -# the reference definitions. This must be a list of .bib files. The .bib -# extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. -# For LaTeX the style of the bibliography can be controlled using -# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the -# search path. See also \cite for info how to create references. - -CITE_BIB_FILES = - -#--------------------------------------------------------------------------- -# Configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the -# messages are off. -# The default value is: NO. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES -# this implies that the warnings are on. -# -# Tip: Turn warnings on while writing the documentation. -# The default value is: YES. - -WARNINGS = YES - -# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate -# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. -# The default value is: YES. - -WARN_IF_UNDOCUMENTED = YES - -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as documenting some parameters in -# a documented function twice, or documenting parameters that don't exist or -# using markup commands wrongly. -# The default value is: YES. - -WARN_IF_DOC_ERROR = YES - -# If WARN_IF_INCOMPLETE_DOC is set to YES, doxygen will warn about incomplete -# function parameter documentation. If set to NO, doxygen will accept that some -# parameters have no documentation without warning. -# The default value is: YES. - -WARN_IF_INCOMPLETE_DOC = YES - -# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that -# are documented, but have no documentation for their parameters or return -# value. If set to NO, doxygen will only warn about wrong parameter -# documentation, but not about the absence of documentation. If EXTRACT_ALL is -# set to YES then this flag will automatically be disabled. See also -# WARN_IF_INCOMPLETE_DOC -# The default value is: NO. - -WARN_NO_PARAMDOC = NO - -# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, doxygen will warn about -# undocumented enumeration values. If set to NO, doxygen will accept -# undocumented enumeration values. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. -# The default value is: NO. - -WARN_IF_UNDOC_ENUM_VAL = NO - -# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when -# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS -# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but -# at the end of the doxygen process doxygen will return with a non-zero status. -# If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS_PRINT then doxygen behaves -# like FAIL_ON_WARNINGS but in case no WARN_LOGFILE is defined doxygen will not -# write the warning messages in between other messages but write them at the end -# of a run, in case a WARN_LOGFILE is defined the warning messages will be -# besides being in the defined file also be shown at the end of a run, unless -# the WARN_LOGFILE is defined as - i.e. standard output (stdout) in that case -# the behavior will remain as with the setting FAIL_ON_WARNINGS. -# Possible values are: NO, YES, FAIL_ON_WARNINGS and FAIL_ON_WARNINGS_PRINT. -# The default value is: NO. - -WARN_AS_ERROR = NO - -# The WARN_FORMAT tag determines the format of the warning messages that doxygen -# can produce. The string should contain the $file, $line, and $text tags, which -# will be replaced by the file and line number from which the warning originated -# and the warning text. Optionally the format may contain $version, which will -# be replaced by the version of the file (if it could be obtained via -# FILE_VERSION_FILTER) -# See also: WARN_LINE_FORMAT -# The default value is: $file:$line: $text. - -WARN_FORMAT = "$file:$line: $text" - -# In the $text part of the WARN_FORMAT command it is possible that a reference -# to a more specific place is given. To make it easier to jump to this place -# (outside of doxygen) the user can define a custom "cut" / "paste" string. -# Example: -# WARN_LINE_FORMAT = "'vi $file +$line'" -# See also: WARN_FORMAT -# The default value is: at line $line of file $file. - -WARN_LINE_FORMAT = "at line $line of file $file" - -# The WARN_LOGFILE tag can be used to specify a file to which warning and error -# messages should be written. If left blank the output is written to standard -# error (stderr). In case the file specified cannot be opened for writing the -# warning and error messages are written to standard error. When as file - is -# specified the warning and error messages are written to standard output -# (stdout). - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# Configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag is used to specify the files and/or directories that contain -# documented source files. You may enter file names like myfile.cpp or -# directories like /usr/src/myproject. Separate the files or directories with -# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING -# Note: If this tag is empty the current directory is searched. - -INPUT = \ - @CMAKE_CURRENT_SOURCE_DIR@/introduction.md \ - @CMAKE_CURRENT_SOURCE_DIR@/getting-started.md \ - @CMAKE_CURRENT_SOURCE_DIR@/installation.md \ - @CMAKE_CURRENT_SOURCE_DIR@/module.md \ - @CMAKE_CURRENT_SOURCE_DIR@/module-screen.md \ - @CMAKE_CURRENT_SOURCE_DIR@/module-dom.md \ - @CMAKE_CURRENT_SOURCE_DIR@/module-component.md \ - @CMAKE_CURRENT_SOURCE_DIR@ \ - @CMAKE_SOURCE_DIR@/include \ - @CMAKE_SOURCE_DIR@/src \ - @CMAKE_CURRENT_BINARY_DIR@ \ - @CMAKE_SOURCE_DIR@/examples \ - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses -# libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: -# https://www.gnu.org/software/libiconv/) for the list of possible encodings. -# See also: INPUT_FILE_ENCODING -# The default value is: UTF-8. - -INPUT_ENCODING = UTF-8 - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses The INPUT_FILE_ENCODING tag can be used to specify -# character encoding on a per file pattern basis. Doxygen will compare the file -# name with each pattern and apply the encoding instead of the default -# INPUT_ENCODING) if there is a match. The character encodings are a list of the -# form: pattern=encoding (like *.php=ISO-8859-1). See cfg_input_encoding -# "INPUT_ENCODING" for further information on supported encodings. - -INPUT_FILE_ENCODING = - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and -# *.h) to filter out the source-files in the directories. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# read by doxygen. -# -# Note the list of default checked file patterns might differ from the list of -# default file extension mappings. -# -# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cxxm, -# *.cpp, *.cppm, *.c++, *.c++m, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, -# *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, *.h++, *.ixx, *.l, *.cs, *.d, *.php, -# *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to be -# provided as doxygen C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, -# *.f18, *.f, *.for, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice. - -FILE_PATTERNS = *.c \ - *.cc \ - *.cpp \ - *.ipp \ - *.h \ - *.hpp \ - *.md \ - *.cppm \ - -# The RECURSIVE tag can be used to specify whether or not subdirectories should -# be searched for input files as well. -# The default value is: NO. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should be -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. -# -# Note that relative paths are relative to the directory from which doxygen is -# run. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. -# The default value is: NO. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories for example use the pattern */test/* - -EXCLUDE_PATTERNS = *test.cpp \ - *take_any_args.hpp - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# ANamespace::AClass, ANamespace::*Test - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or directories -# that contain example code fragments that are included (see the \include -# command). - -EXAMPLE_PATH += @PROJECT_SOURCE_DIR@/examples -EXAMPLE_PATH += @PROJECT_SOURCE_DIR@/include -EXAMPLE_PATH += @PROJECT_SOURCE_DIR@/src - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank all -# files are included. - -EXAMPLE_PATTERNS = *.cpp - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude commands -# irrespective of the value of the RECURSIVE tag. -# The default value is: NO. - -EXAMPLE_RECURSIVE = YES - -# The IMAGE_PATH tag can be used to specify one or more files or directories -# that contain images that are to be included in the documentation (see the -# \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command: -# -# -# -# where is the value of the INPUT_FILTER tag, and is the -# name of an input file. Doxygen will then use the output that the filter -# program writes to standard output. If FILTER_PATTERNS is specified, this tag -# will be ignored. -# -# Note that the filter must not add or remove lines; it is applied before the -# code is scanned, but not when the output code is generated. If lines are added -# or removed, the anchors will not be placed correctly. -# -# Note that doxygen will use the data processed and written to standard output -# for further processing, therefore nothing else, like debug statements or used -# commands (so in case of a Windows batch file always use @echo OFF), should be -# written to standard output. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: pattern=filter -# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how -# filters are used. If the FILTER_PATTERNS tag is empty or if none of the -# patterns match the file name, INPUT_FILTER is applied. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will also be used to filter the input files that are used for -# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). -# The default value is: NO. - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and -# it is also possible to disable source filtering for a specific pattern using -# *.ext= (so without naming a filter). -# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. - -FILTER_SOURCE_PATTERNS = - -# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that -# is part of the input, its contents will be placed on the main page -# (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. - -USE_MDFILE_AS_MAINPAGE = @CMAKE_CURRENT_SOURCE_DIR@/introduction.md - -# The Fortran standard specifies that for fixed formatted Fortran code all -# characters from position 72 are to be considered as comment. A common -# extension is to allow longer lines before the automatic comment starts. The -# setting FORTRAN_COMMENT_AFTER will also make it possible that longer lines can -# be processed before the automatic comment starts. -# Minimum value: 7, maximum value: 10000, default value: 72. - -FORTRAN_COMMENT_AFTER = 72 - -#--------------------------------------------------------------------------- -# Configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will be -# generated. Documented entities will be cross-referenced with these sources. -# -# Note: To get rid of all source code in the generated output, make sure that -# also VERBATIM_HEADERS is set to NO. -# The default value is: NO. - -SOURCE_BROWSER = YES - -# Setting the INLINE_SOURCES tag to YES will include the body of functions, -# classes and enums directly into the documentation. -# The default value is: NO. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any -# special comment blocks from generated source code fragments. Normal C, C++ and -# Fortran comments will always remain visible. -# The default value is: YES. - -STRIP_CODE_COMMENTS = NO - -# If the REFERENCED_BY_RELATION tag is set to YES then for each documented -# entity all documented functions referencing it will be listed. -# The default value is: NO. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES then for each documented function -# all documented entities called/used by that function will be listed. -# The default value is: NO. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set -# to YES then the hyperlinks from functions in REFERENCES_RELATION and -# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will -# link to the documentation. -# The default value is: YES. - -REFERENCES_LINK_SOURCE = YES - -# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the -# source code will show a tooltip with additional information such as prototype, -# brief description and links to the definition and documentation. Since this -# will make the HTML file larger and loading of large files a bit slower, you -# can opt to disable this feature. -# The default value is: YES. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -SOURCE_TOOLTIPS = YES - -# If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in -# source browser. The htags tool is part of GNU's global source tagging system -# (see https://www.gnu.org/software/global/global.html). You will need version -# 4.8.6 or higher. -# -# To use it do the following: -# - Install the latest version of global -# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file -# - Make sure the INPUT points to the root of the source tree -# - Run doxygen as normal -# -# Doxygen will invoke htags (and that will in turn invoke gtags), so these -# tools must be available from the command line (i.e. in the search path). -# -# The result: instead of the source browser generated by doxygen, the links to -# source code will now point to the output of htags. -# The default value is: NO. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a -# verbatim copy of the header file for each class for which an include is -# specified. Set to NO to disable this. -# See also: Section \class. -# The default value is: YES. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# Configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all -# compounds will be generated. Enable this if the project contains a lot of -# classes, structs, unions or interfaces. -# The default value is: YES. - -ALPHABETICAL_INDEX = NO - -# The IGNORE_PREFIX tag can be used to specify a prefix (or a list of prefixes) -# that should be ignored while generating the index headers. The IGNORE_PREFIX -# tag works for classes, function and member names. The entity will be placed in -# the alphabetical list under the first letter of the entity name that remains -# after removing the prefix. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output -# The default value is: YES. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. -# The default directory is: html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each -# generated HTML page (for example: .htm, .php, .asp). -# The default value is: .html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a -# standard header. -# -# To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. -# the setting GENERATE_TREEVIEW). It is highly recommended to start with a -# default header using -# doxygen -w html new_header.html new_footer.html new_stylesheet.css -# YourConfigFile -# and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally -# uses. -# Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description -# of the possible markers and block names see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_HEADER = @CMAKE_CURRENT_SOURCE_DIR@/header.html - -# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard -# footer. See HTML_HEADER for more information on how to generate a default -# footer and what special commands can be used inside the footer. See also -# section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FOOTER = @CMAKE_CURRENT_SOURCE_DIR@/footer.html - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style -# sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. -# See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. -# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as -# it is more robust and this tag (HTML_STYLESHEET) will in the future become -# obsolete. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_STYLESHEET = - -# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined -# cascading style sheets that are included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. -# This is preferred over using HTML_STYLESHEET since it does not replace the -# standard style sheet and is therefore more robust against future updates. -# Doxygen will copy the style sheet files to the output directory. -# Note: The order of the extra style sheet files is of importance (e.g. the last -# style sheet in the list overrules the setting of the previous ones in the -# list). -# Note: Since the styling of scrollbars can currently not be overruled in -# Webkit/Chromium, the styling will be left out of the default doxygen.css if -# one or more extra stylesheets have been specified. So if scrollbar -# customization is desired it has to be added explicitly. For an example see the -# documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_STYLESHEET = \ - @AWESOME_CSS_DIR@/doxygen-awesome.css \ - @CMAKE_CURRENT_SOURCE_DIR@/stylesheet.css - - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that the -# files will be copied as-is; there are no commands or markers available. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_FILES += @AWESOME_CSS_DIR@/doxygen-awesome-fragment-copy-button.js -HTML_EXTRA_FILES += @AWESOME_CSS_DIR@/doxygen-awesome-paragraph-link.js -HTML_EXTRA_FILES += @AWESOME_CSS_DIR@/doxygen-awesome-interactive-toc.js -HTML_EXTRA_FILES += @AWESOME_CSS_DIR@/doxygen-awesome-tabs.js -HTML_COPY_CLIPBOARD = NO - -# The HTML_COLORSTYLE tag can be used to specify if the generated HTML output -# should be rendered with a dark or light theme. -# Possible values are: LIGHT always generate light mode output, DARK always -# generate dark mode output, AUTO_LIGHT automatically set the mode according to -# the user preference, use light mode if no preference is set (the default), -# AUTO_DARK automatically set the mode according to the user preference, use -# dark mode if no preference is set and TOGGLE allow to user to switch between -# light and dark mode via a button. -# The default value is: AUTO_LIGHT. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE = LIGHT - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen -# will adjust the colors in the style sheet and background images according to -# this color. Hue is specified as an angle on a color-wheel, see -# https://en.wikipedia.org/wiki/Hue for more information. For instance the value -# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 -# purple, and 360 is red again. -# Minimum value: 0, maximum value: 359, default value: 220. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use gray-scales only. A -# value of 255 will produce the most vivid colors. -# Minimum value: 0, maximum value: 255, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_SAT = 200 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the -# luminance component of the colors in the HTML output. Values below 100 -# gradually make the output lighter, whereas values above 100 make the output -# darker. The value divided by 100 is the actual gamma applied, so 80 represents -# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not -# change the gamma. -# Minimum value: 40, maximum value: 240, default value: 80. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML -# documentation will contain a main index with vertical navigation menus that -# are dynamically created via JavaScript. If disabled, the navigation index will -# consists of multiple levels of tabs that are statically embedded in every HTML -# page. Disable this option to support browsers that do not have JavaScript, -# like the Qt help browser. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_MENUS = YES - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_SECTIONS = YES - -# If the HTML_CODE_FOLDING tag is set to YES then classes and functions can be -# dynamically folded and expanded in the generated HTML source code. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_CODE_FOLDING = YES - -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries -# shown in the various tree structured indices initially; the user can expand -# and collapse entries dynamically later on. Doxygen will expand the tree to -# such a level that at most the specified number of entries are visible (unless -# a fully collapsed tree already exceeds this amount). So setting the number of -# entries 1 will produce a full collapsed tree by default. 0 is a special value -# representing an infinite number of entries and will result in a full expanded -# tree by default. -# Minimum value: 0, maximum value: 9999, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_INDEX_NUM_ENTRIES = 200 - -# If the GENERATE_DOCSET tag is set to YES, additional index files will be -# generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: -# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To -# create a documentation set, doxygen will generate a Makefile in the HTML -# output directory. Running make will produce the docset in that directory and -# running make install will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy -# genXcode/_index.html for more information. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_DOCSET = NO - -# This tag determines the name of the docset feed. A documentation feed provides -# an umbrella under which multiple documentation sets from a single provider -# (such as a company or product suite) can be grouped. -# The default value is: Doxygen generated docs. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# This tag determines the URL of the docset feed. A documentation feed provides -# an umbrella under which multiple documentation sets from a single provider -# (such as a company or product suite) can be grouped. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_FEEDURL = - -# This tag specifies a string that should uniquely identify the documentation -# set bundle. This should be a reverse domain-name style string, e.g. -# com.mycompany.MyDocSet. Doxygen will append .docset to the name. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_BUNDLE_ID = com.ArthurSonzogni - -# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. -# The default value is: org.doxygen.Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_ID = com.ArthurSonzogni - -# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. -# The default value is: Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_NAME = ArthurSonzogni - -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three -# additional HTML index files: index.hhp, index.hhc, and index.hhk. The -# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# on Windows. In the beginning of 2021 Microsoft took the original page, with -# a.o. the download links, offline the HTML help workshop was already many years -# in maintenance mode). You can download the HTML help workshop from the web -# archives at Installation executable (see: -# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo -# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe). -# -# The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML -# files are now used as the Windows 98 help format, and will replace the old -# Windows help format (.hlp) on all Windows platforms in the future. Compressed -# HTML files also contain an index, a table of contents, and you can search for -# words in the documentation. The HTML workshop also contains a viewer for -# compressed HTML files. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_HTMLHELP = NO - -# The CHM_FILE tag can be used to specify the file name of the resulting .chm -# file. You can add a path in front of the file if the result should not be -# written to the html output directory. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_FILE = - -# The HHC_LOCATION tag can be used to specify the location (absolute path -# including file name) of the HTML help compiler (hhc.exe). If non-empty, -# doxygen will try to run the HTML help compiler on the generated index.hhp. -# The file has to be specified with full path. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -HHC_LOCATION = - -# The GENERATE_CHI flag controls if a separate .chi index file is generated -# (YES) or that it should be included in the main .chm file (NO). -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -GENERATE_CHI = NO - -# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) -# and project file content. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_INDEX_ENCODING = - -# The BINARY_TOC flag controls whether a binary table of contents is generated -# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it -# enables the Previous and Next buttons. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members to -# the table of contents of the HTML help documentation and to the tree view. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -TOC_EXPAND = NO - -# The SITEMAP_URL tag is used to specify the full URL of the place where the -# generated documentation will be placed on the server by the user during the -# deployment of the documentation. The generated sitemap is called sitemap.xml -# and placed on the directory specified by HTML_OUTPUT. In case no SITEMAP_URL -# is specified no sitemap is generated. For information about the sitemap -# protocol see https://www.sitemaps.org -# This tag requires that the tag GENERATE_HTML is set to YES. - -SITEMAP_URL = - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that -# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help -# (.qch) of the generated HTML documentation. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify -# the file name of the resulting .qch file. The path specified is relative to -# the HTML output folder. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help -# Project output. For more information please see Qt Help Project / Namespace -# (see: -# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt -# Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: -# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). -# The default value is: doc. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_VIRTUAL_FOLDER = doc - -# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom -# filter to add. For more information please see Qt Help Project / Custom -# Filters (see: -# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: -# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's filter section matches. Qt Help Project / Filter Attributes (see: -# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_SECT_FILTER_ATTRS = - -# The QHG_LOCATION tag can be used to specify the location (absolute path -# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to -# run qhelpgenerator on the generated .qhp file. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be -# generated, together with the HTML files, they form an Eclipse help plugin. To -# install this plugin and make it available under the help contents menu in -# Eclipse, the contents of the directory containing the HTML and XML files needs -# to be copied into the plugins directory of eclipse. The name of the directory -# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. -# After copying Eclipse needs to be restarted before the help appears. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the Eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have this -# name. Each documentation set should have its own identifier. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# If you want full control over the layout of the generated HTML pages it might -# be necessary to disable the index and replace it with your own. The -# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top -# of each HTML page. A value of NO enables the index and the value YES disables -# it. Since the tabs in the index contain the same information as the navigation -# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -DISABLE_INDEX = NO - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. If the tag -# value is set to YES, a side panel will be generated containing a tree-like -# index structure (just like the one that is generated for HTML Help). For this -# to work a browser that supports JavaScript, DHTML, CSS and frames is required -# (i.e. any modern browser). Windows users are probably better off using the -# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can -# further fine tune the look of the index (see "Fine-tuning the output"). As an -# example, the default style sheet generated by doxygen has an example that -# shows how to put an image at the root of the tree instead of the PROJECT_NAME. -# Since the tree basically has the same information as the tab index, you could -# consider setting DISABLE_INDEX to YES when enabling this option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_TREEVIEW = YES - -# When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the -# FULL_SIDEBAR option determines if the side bar is limited to only the treeview -# area (value NO) or if it should extend to the full height of the window (value -# YES). Setting this to YES gives a layout similar to -# https://docs.readthedocs.io with more room for contents, but less room for the -# project logo, title, and description. If either GENERATE_TREEVIEW or -# DISABLE_INDEX is set to NO, this option has no effect. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FULL_SIDEBAR = YES - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. -# -# Note that a value of 0 will completely suppress the enum values from appearing -# in the overview section. -# Minimum value: 0, maximum value: 20, default value: 4. -# This tag requires that the tag GENERATE_HTML is set to YES. - -ENUM_VALUES_PER_LINE = 1 - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used -# to set the initial width (in pixels) of the frame in which the tree is shown. -# Minimum value: 0, maximum value: 1500, default value: 250. -# This tag requires that the tag GENERATE_HTML is set to YES. - -TREEVIEW_WIDTH = 250 - -# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to -# external symbols imported via tag files in a separate window. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -EXT_LINKS_IN_WINDOW = NO - -# If the OBFUSCATE_EMAILS tag is set to YES, doxygen will obfuscate email -# addresses. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -OBFUSCATE_EMAILS = YES - -# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg -# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see -# https://inkscape.org) to generate formulas as SVG images instead of PNGs for -# the HTML output. These images will generally look nicer at scaled resolutions. -# Possible values are: png (the default) and svg (looks nicer but requires the -# pdf2svg or inkscape tool). -# The default value is: png. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FORMULA_FORMAT = png - -# Use this tag to change the font size of LaTeX formulas included as images in -# the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML -# output directory to force them to be regenerated. -# Minimum value: 8, maximum value: 50, default value: 10. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_FONTSIZE = 10 - -# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands -# to create new LaTeX commands to be used in formulas as building blocks. See -# the section "Including formulas" for details. - -FORMULA_MACROFILE = - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# https://www.mathjax.org) which uses client side JavaScript for the rendering -# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX -# installed or if you want to formulas look prettier in the HTML output. When -# enabled you may also need to install MathJax separately and configure the path -# to it using the MATHJAX_RELPATH option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -USE_MATHJAX = NO - -# With MATHJAX_VERSION it is possible to specify the MathJax version to be used. -# Note that the different versions of MathJax have different requirements with -# regards to the different settings, so it is possible that also other MathJax -# settings have to be changed when switching between the different MathJax -# versions. -# Possible values are: MathJax_2 and MathJax_3. -# The default value is: MathJax_2. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_VERSION = MathJax_2 - -# When MathJax is enabled you can set the default output format to be used for -# the MathJax output. For more details about the output format see MathJax -# version 2 (see: -# http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3 -# (see: -# http://docs.mathjax.org/en/latest/web/components/output.html). -# Possible values are: HTML-CSS (which is slower, but has the best -# compatibility. This is the name for Mathjax version 2, for MathJax version 3 -# this will be translated into chtml), NativeMML (i.e. MathML. Only supported -# for NathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This -# is the name for Mathjax version 3, for MathJax version 2 this will be -# translated into HTML-CSS) and SVG. -# The default value is: HTML-CSS. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_FORMAT = HTML-CSS - -# When MathJax is enabled you need to specify the location relative to the HTML -# output directory using the MATHJAX_RELPATH option. The destination directory -# should contain the MathJax.js script. For instance, if the mathjax directory -# is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax -# Content Delivery Network so you can quickly see the result without installing -# MathJax. However, it is strongly recommended to install a local copy of -# MathJax from https://www.mathjax.org before deployment. The default value is: -# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2 -# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3 -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest - -# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax -# extension names that should be enabled during MathJax rendering. For example -# for MathJax version 2 (see -# https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions): -# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols -# For example for MathJax version 3 (see -# http://docs.mathjax.org/en/latest/input/tex/extensions/index.html): -# MATHJAX_EXTENSIONS = ams -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_EXTENSIONS = - -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces -# of code that will be used on startup of the MathJax code. See the MathJax site -# (see: -# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an -# example see the documentation. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_CODEFILE = - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and -# should work on any modern browser. Note that when using HTML help -# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) -# there is already a search function so this one should typically be disabled. -# For large projects the javascript based search engine can be slow, then -# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to -# search using the keyboard; to jump to the search box use + S -# (what the is depends on the OS and browser, but it is typically -# , /