mirror of
				https://github.com/ArthurSonzogni/FTXUI.git
				synced 2025-10-31 18:48:11 +08:00 
			
		
		
		
	 14da21b0ee
			
		
	
	14da21b0ee
	
	
	
		
			
			* Remove @ingroup from class member definitions * Add the documentation for every public classes.
		
			
				
	
	
		
			211 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			211 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // Copyright 2020 Arthur Sonzogni. All rights reserved.
 | |
| // Use of this source code is governed by the MIT license that can be found in
 | |
| // the LICENSE file.
 | |
| #ifndef FTXUI_DOM_ELEMENTS_HPP
 | |
| #define FTXUI_DOM_ELEMENTS_HPP
 | |
| 
 | |
| #include <functional>
 | |
| #include <memory>
 | |
| 
 | |
| #include "ftxui/dom/canvas.hpp"
 | |
| #include "ftxui/dom/direction.hpp"
 | |
| #include "ftxui/dom/flexbox_config.hpp"
 | |
| #include "ftxui/dom/linear_gradient.hpp"
 | |
| #include "ftxui/dom/node.hpp"
 | |
| #include "ftxui/screen/box.hpp"
 | |
| #include "ftxui/screen/color.hpp"
 | |
| #include "ftxui/screen/terminal.hpp"
 | |
| #include "ftxui/util/ref.hpp"
 | |
| 
 | |
| namespace ftxui {
 | |
| class Node;
 | |
| using Element = std::shared_ptr<Node>;
 | |
| using Elements = std::vector<Element>;
 | |
| using Decorator = std::function<Element(Element)>;
 | |
| using GraphFunction = std::function<std::vector<int>(int, int)>;
 | |
| 
 | |
| /// @brief BorderStyle is an enumeration that represents the different styles
 | |
| /// of borders that can be applied to elements in the terminal UI.
 | |
| ///
 | |
| /// BorderStyle is an enumeration that represents the different styles of
 | |
| /// borders that can be applied to elements in the terminal UI.
 | |
| /// It is used to define the visual appearance of borders around elements,
 | |
| /// such as windows, frames, or separators.
 | |
| /// @ingroup dom
 | |
| enum BorderStyle {
 | |
|   LIGHT,
 | |
|   DASHED,
 | |
|   HEAVY,
 | |
|   DOUBLE,
 | |
|   ROUNDED,
 | |
|   EMPTY,
 | |
| };
 | |
| 
 | |
| // Pipe elements into decorator togethers.
 | |
| // For instance the next lines are equivalents:
 | |
| // -> text("ftxui") | bold | underlined
 | |
| // -> underlined(bold(text("FTXUI")))
 | |
| Element operator|(Element, Decorator);
 | |
| Element& operator|=(Element&, Decorator);
 | |
| Elements operator|(Elements, Decorator);
 | |
| Decorator operator|(Decorator, Decorator);
 | |
| 
 | |
| // --- Widget ---
 | |
| Element text(std::string text);
 | |
| Element vtext(std::string text);
 | |
| Element separator();
 | |
| Element separatorLight();
 | |
| Element separatorDashed();
 | |
| Element separatorHeavy();
 | |
| Element separatorDouble();
 | |
| Element separatorEmpty();
 | |
| Element separatorStyled(BorderStyle);
 | |
| Element separator(Pixel);
 | |
| Element separatorCharacter(std::string);
 | |
| Element separatorHSelector(float left,
 | |
|                            float right,
 | |
|                            Color unselected_color,
 | |
|                            Color selected_color);
 | |
| Element separatorVSelector(float up,
 | |
|                            float down,
 | |
|                            Color unselected_color,
 | |
|                            Color selected_color);
 | |
| Element gauge(float progress);
 | |
| Element gaugeLeft(float progress);
 | |
| Element gaugeRight(float progress);
 | |
| Element gaugeUp(float progress);
 | |
| Element gaugeDown(float progress);
 | |
| Element gaugeDirection(float progress, Direction direction);
 | |
| Element border(Element);
 | |
| Element borderLight(Element);
 | |
| Element borderDashed(Element);
 | |
| Element borderHeavy(Element);
 | |
| Element borderDouble(Element);
 | |
| Element borderRounded(Element);
 | |
| Element borderEmpty(Element);
 | |
| Decorator borderStyled(BorderStyle);
 | |
| Decorator borderStyled(BorderStyle, Color);
 | |
| Decorator borderStyled(Color);
 | |
| Decorator borderWith(const Pixel&);
 | |
| Element window(Element title, Element content, BorderStyle border = ROUNDED);
 | |
| Element spinner(int charset_index, size_t image_index);
 | |
| Element paragraph(const std::string& text);
 | |
| Element paragraphAlignLeft(const std::string& text);
 | |
| Element paragraphAlignRight(const std::string& text);
 | |
| Element paragraphAlignCenter(const std::string& text);
 | |
| Element paragraphAlignJustify(const std::string& text);
 | |
| Element graph(GraphFunction);
 | |
| Element emptyElement();
 | |
| Element canvas(ConstRef<Canvas>);
 | |
| Element canvas(int width, int height, std::function<void(Canvas&)>);
 | |
| Element canvas(std::function<void(Canvas&)>);
 | |
| 
 | |
| // -- Decorator ---
 | |
| Element bold(Element);
 | |
| Element dim(Element);
 | |
| Element italic(Element);
 | |
| Element inverted(Element);
 | |
| Element underlined(Element);
 | |
| Element underlinedDouble(Element);
 | |
| Element blink(Element);
 | |
| Element strikethrough(Element);
 | |
| Decorator color(Color);
 | |
| Decorator bgcolor(Color);
 | |
| Decorator color(const LinearGradient&);
 | |
| Decorator bgcolor(const LinearGradient&);
 | |
| Element color(Color, Element);
 | |
| Element bgcolor(Color, Element);
 | |
| Element color(const LinearGradient&, Element);
 | |
| Element bgcolor(const LinearGradient&, Element);
 | |
| Decorator focusPosition(int x, int y);
 | |
| Decorator focusPositionRelative(float x, float y);
 | |
| Element automerge(Element child);
 | |
| Decorator hyperlink(std::string link);
 | |
| Element hyperlink(std::string link, Element child);
 | |
| Element selectionStyleReset(Element);
 | |
| Decorator selectionColor(Color foreground);
 | |
| Decorator selectionBackgroundColor(Color foreground);
 | |
| Decorator selectionForegroundColor(Color foreground);
 | |
| Decorator selectionStyle(std::function<void(Pixel&)> style);
 | |
| 
 | |
| // --- Layout is
 | |
| // Horizontal, Vertical or stacked set of elements.
 | |
| Element hbox(Elements);
 | |
| Element vbox(Elements);
 | |
| Element dbox(Elements);
 | |
| Element flexbox(Elements, FlexboxConfig config = FlexboxConfig());
 | |
| Element gridbox(std::vector<Elements> lines);
 | |
| 
 | |
| Element hflow(Elements);  // Helper: default flexbox with row direction.
 | |
| Element vflow(Elements);  // Helper: default flexbox with column direction.
 | |
| 
 | |
| // -- Flexibility ---
 | |
| // Define how to share the remaining space when not all of it is used inside a
 | |
| // container.
 | |
| Element flex(Element);         // Expand/Minimize if possible/needed.
 | |
| Element flex_grow(Element);    // Expand element if possible.
 | |
| Element flex_shrink(Element);  // Minimize element if needed.
 | |
| 
 | |
| Element xflex(Element);         // Expand/Minimize if possible/needed on X axis.
 | |
| Element xflex_grow(Element);    // Expand element if possible on X axis.
 | |
| Element xflex_shrink(Element);  // Minimize element if needed on X axis.
 | |
| 
 | |
| Element yflex(Element);         // Expand/Minimize if possible/needed on Y axis.
 | |
| Element yflex_grow(Element);    // Expand element if possible on Y axis.
 | |
| Element yflex_shrink(Element);  // Minimize element if needed on Y axis.
 | |
| 
 | |
| Element notflex(Element);  // Reset the flex attribute.
 | |
| Element filler();          // A blank expandable element.
 | |
| 
 | |
| // -- Size override;
 | |
| enum WidthOrHeight { WIDTH, HEIGHT };
 | |
| enum Constraint { LESS_THAN, EQUAL, GREATER_THAN };
 | |
| Decorator size(WidthOrHeight, Constraint, int value);
 | |
| 
 | |
| // --- Frame ---
 | |
| // A frame is a scrollable area. The internal area is potentially larger than
 | |
| // the external one. The internal area is scrolled in order to make visible the
 | |
| // focused element.
 | |
| Element frame(Element);
 | |
| Element xframe(Element);
 | |
| Element yframe(Element);
 | |
| Element focus(Element);
 | |
| Element select(Element e);  // Deprecated - Alias for focus.
 | |
| 
 | |
| // --- Cursor ---
 | |
| // Those are similar to `focus`, but also change the shape of the cursor.
 | |
| Element focusCursorBlock(Element);
 | |
| Element focusCursorBlockBlinking(Element);
 | |
| Element focusCursorBar(Element);
 | |
| Element focusCursorBarBlinking(Element);
 | |
| Element focusCursorUnderline(Element);
 | |
| Element focusCursorUnderlineBlinking(Element);
 | |
| 
 | |
| // --- Misc ---
 | |
| Element vscroll_indicator(Element);
 | |
| Element hscroll_indicator(Element);
 | |
| Decorator reflect(Box& box);
 | |
| // Before drawing the |element| clear the pixel below. This is useful in
 | |
| // combinaison with dbox.
 | |
| Element clear_under(Element element);
 | |
| 
 | |
| // --- Util --------------------------------------------------------------------
 | |
| Element hcenter(Element);
 | |
| Element vcenter(Element);
 | |
| Element center(Element);
 | |
| Element align_right(Element);
 | |
| Element nothing(Element element);
 | |
| 
 | |
| namespace Dimension {
 | |
| Dimensions Fit(Element&, bool extend_beyond_screen = false);
 | |
| }  // namespace Dimension
 | |
| 
 | |
| }  // namespace ftxui
 | |
| 
 | |
| // Make container able to take any number of children as input.
 | |
| #include "ftxui/dom/take_any_args.hpp"
 | |
| 
 | |
| // Include old definitions using wstring.
 | |
| #include "ftxui/dom/deprecated.hpp"
 | |
| #endif  // FTXUI_DOM_ELEMENTS_HPP
 |