mirror of
https://github.com/ArthurSonzogni/FTXUI.git
synced 2025-09-15 23:48:15 +08:00
Use shared_ptr instead of unique_ptr for elements.
This allow users to pass it into initializer list. Then clang-format will produce 'acceptable' indentations. This fixes: https://github.com/ArthurSonzogni/FTXUI/issues/18
This commit is contained in:
@@ -6,20 +6,22 @@
|
||||
#define FTXUI_DOM_ELEMENTS_HPP
|
||||
|
||||
#include <functional>
|
||||
#include <memory>
|
||||
|
||||
#include "ftxui/dom/node.hpp"
|
||||
#include "ftxui/screen/color.hpp"
|
||||
#include "ftxui/screen/screen.hpp"
|
||||
|
||||
namespace ftxui {
|
||||
|
||||
using Element = std::unique_ptr<Node>;
|
||||
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)>;
|
||||
|
||||
// --- Widget ---
|
||||
Element text(std::wstring text);
|
||||
Element separator();
|
||||
Element separator(void);
|
||||
Element separator(Pixel);
|
||||
Element gauge(float ratio);
|
||||
Element border(Element);
|
||||
|
@@ -14,10 +14,13 @@
|
||||
|
||||
namespace ftxui {
|
||||
|
||||
using Element = std::shared_ptr<Node>;
|
||||
using Elements = std::vector<std::shared_ptr<Node>>;
|
||||
|
||||
class Node {
|
||||
public:
|
||||
Node();
|
||||
Node(std::vector<std::unique_ptr<Node>> children);
|
||||
Node(Elements children);
|
||||
virtual ~Node();
|
||||
|
||||
// Step 1: Compute layout requirement. Tell parent what dimensions this
|
||||
@@ -33,7 +36,7 @@ class Node {
|
||||
// Step 3: Draw this element.
|
||||
virtual void Render(Screen& screen);
|
||||
|
||||
std::vector<std::unique_ptr<Node>> children;
|
||||
std::vector<Element> children;
|
||||
|
||||
protected:
|
||||
Requirement requirement_;
|
||||
|
@@ -31,7 +31,7 @@ struct Pixel {
|
||||
|
||||
struct Dimension {
|
||||
static Dimension Fixed(int);
|
||||
static Dimension Fit(std::unique_ptr<Node>&);
|
||||
static Dimension Fit(std::shared_ptr<Node>&);
|
||||
static Dimension Full();
|
||||
|
||||
int dimx;
|
||||
|
Reference in New Issue
Block a user