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.
		
			
				
	
	
		
			57 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.4 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_REQUIREMENT_HPP
 | |
| #define FTXUI_DOM_REQUIREMENT_HPP
 | |
| 
 | |
| #include "ftxui/screen/box.hpp"
 | |
| #include "ftxui/screen/screen.hpp"
 | |
| 
 | |
| namespace ftxui {
 | |
| class Node;
 | |
| 
 | |
| /// @brief Requirement is a structure that defines the layout requirements for a
 | |
| /// Node in the terminal user interface.
 | |
| ///
 | |
| /// It specifies the minimum size required to fully draw the element,
 | |
| /// @ingroup dom
 | |
| struct Requirement {
 | |
|   // The required size to fully draw the element.
 | |
|   int min_x = 0;
 | |
|   int min_y = 0;
 | |
| 
 | |
|   // How much flexibility is given to the component.
 | |
|   int flex_grow_x = 0;
 | |
|   int flex_grow_y = 0;
 | |
|   int flex_shrink_x = 0;
 | |
|   int flex_shrink_y = 0;
 | |
| 
 | |
|   // Focus management to support the frame/focus/select element.
 | |
|   struct Focused {
 | |
|     bool enabled = false;
 | |
|     Box box;
 | |
|     Node* node = nullptr;
 | |
|     Screen::Cursor::Shape cursor_shape = Screen::Cursor::Shape::Hidden;
 | |
| 
 | |
|     // Internal for interactions with components.
 | |
|     bool component_active = false;
 | |
| 
 | |
|     // Return whether this requirement should be preferred over the other.
 | |
|     bool Prefer(const Focused& other) const {
 | |
|       if (!other.enabled) {
 | |
|         return false;
 | |
|       }
 | |
|       if (!enabled) {
 | |
|         return true;
 | |
|       }
 | |
| 
 | |
|       return other.component_active && !component_active;
 | |
|     }
 | |
|   };
 | |
|   Focused focused;
 | |
| };
 | |
| 
 | |
| }  // namespace ftxui
 | |
| 
 | |
| #endif  // FTXUI_DOM_REQUIREMENT_HPP
 |