1#ifndef YAZE_APP_EDITOR_LAYOUT_LAYOUT_DESIGNER_DOCK_TREE_H_
2#define YAZE_APP_EDITOR_LAYOUT_LAYOUT_DESIGNER_DOCK_TREE_H_
11namespace layout_designer {
84 static std::unique_ptr<DockNode>
MakeLeaf(std::vector<PanelEntry>
panels);
86 std::unique_ptr<DockNode> a,
87 std::unique_ptr<DockNode> b);
90 std::unique_ptr<DockNode>
Clone()
const;
97 std::unique_ptr<DockNode> new_child,
bool new_child_first);
115 std::unique_ptr<DockNode>
root;
132 bool Validate(std::string* error)
const;
DockNodeId AllocateDockNodeId()
void ObserveDockNodeId(DockNodeId id)
DockTree MakeEmptyTree(std::string name)
constexpr DockNodeId kInvalidDockNodeId
Represents a dock node in the layout tree.
const PanelEntry * FindPanel(const std::string &panel_id) const
static std::unique_ptr< DockNode > MakeLeaf(std::vector< PanelEntry > panels)
bool PromoteSingleChild()
std::unique_ptr< DockNode > child_a
std::unique_ptr< DockNode > child_b
static std::unique_ptr< DockNode > MakeSplit(SplitDirection dir, float ratio, std::unique_ptr< DockNode > a, std::unique_ptr< DockNode > b)
SplitDirection split_direction
std::unique_ptr< DockNode > Clone() const
std::vector< PanelEntry > panels
void SplitInPlace(SplitDirection dir, float ratio, std::unique_ptr< DockNode > new_child, bool new_child_first)
std::unique_ptr< DockNode > root
std::uint64_t schema_version
bool Validate(std::string *error) const
const DockNode * FindNode(DockNodeId id) const