Represents a dock node in the layout tree. More...
#include <dock_tree.h>
Public Types | |
| enum class | Type : std::uint8_t { kLeaf , kSplit } |
Public Member Functions | |
| DockNode ()=default | |
| std::unique_ptr< DockNode > | Clone () const |
| void | SplitInPlace (SplitDirection dir, float ratio, std::unique_ptr< DockNode > new_child, bool new_child_first) |
| bool | PromoteSingleChild () |
| const PanelEntry * | FindPanel (const std::string &panel_id) const |
| bool | IsSplit () const |
| bool | IsLeaf () const |
| bool | IsRoot () const |
| void | AddPanel (const LayoutPanel &panel) |
| void | Split (ImGuiDir direction, float ratio) |
| LayoutPanel * | FindPanel (const std::string &panel_id) |
| size_t | CountPanels () const |
| std::unique_ptr< DockNode > | Clone () const |
Static Public Member Functions | |
| static std::unique_ptr< DockNode > | MakeLeaf (std::vector< PanelEntry > panels) |
| static std::unique_ptr< DockNode > | MakeSplit (SplitDirection dir, float ratio, std::unique_ptr< DockNode > a, std::unique_ptr< DockNode > b) |
Public Attributes | |
| DockNodeId | id = kInvalidDockNodeId |
| Type | type = Type::kLeaf |
| std::vector< PanelEntry > | panels |
| int | active_tab_index = 0 |
| SplitDirection | split_direction = SplitDirection::kLeft |
| float | split_ratio = 0.5f |
| std::unique_ptr< DockNode > | child_a |
| std::unique_ptr< DockNode > | child_b |
| DockNodeType | type = DockNodeType::Leaf |
| ImGuiID | node_id = 0 |
| ImGuiDir | split_dir = ImGuiDir_None |
| std::unique_ptr< DockNode > | child_left |
| std::unique_ptr< DockNode > | child_right |
| std::vector< LayoutPanel > | panels |
| ImGuiDockNodeFlags | flags = ImGuiDockNodeFlags_None |
Represents a dock node in the layout tree.
Hierarchical structure representing the docking layout. Can be a split (with two children) or a leaf (containing panels).
Definition at line 61 of file dock_tree.h.
|
strong |
| Enumerator | |
|---|---|
| kLeaf | |
| kSplit | |
Definition at line 62 of file dock_tree.h.
|
default |
|
static |
Definition at line 44 of file dock_tree.cc.
References yaze::editor::layout_designer::internal::AllocateDockNodeId(), kLeaf, and panels.
Referenced by yaze::editor::layout_designer::ApplyDropSuggestion(), yaze::editor::UserSettings::ApplyPanelLayoutDefaultsRevision(), and SplitInPlace().

|
static |
Definition at line 53 of file dock_tree.cc.
References yaze::editor::layout_designer::internal::AllocateDockNodeId(), and kSplit.

| std::unique_ptr< DockNode > yaze::editor::layout_designer::DockNode::Clone | ( | ) | const |
Definition at line 66 of file dock_tree.cc.
References active_tab_index, child_a, child_b, id, panels, split_direction, split_ratio, and type.
| void yaze::editor::layout_designer::DockNode::SplitInPlace | ( | SplitDirection | dir, |
| float | ratio, | ||
| std::unique_ptr< DockNode > | new_child, | ||
| bool | new_child_first ) |
Definition at line 84 of file dock_tree.cc.
References active_tab_index, child_a, child_b, kSplit, MakeLeaf(), panels, split_direction, split_ratio, and type.
Referenced by yaze::editor::layout_designer::ApplyDropSuggestion().

| bool yaze::editor::layout_designer::DockNode::PromoteSingleChild | ( | ) |
| const PanelEntry * yaze::editor::layout_designer::DockNode::FindPanel | ( | const std::string & | panel_id | ) | const |
|
inline |
Definition at line 87 of file layout_definition.h.
References yaze::editor::layout_designer::Split, and type.
Referenced by yaze::editor::layout_designer::anonymous_namespace{layout_designer_window.cc}::ApplyLayoutToDockspace(), yaze::editor::layout_designer::LayoutDesignerWindow::DrawDockNode(), yaze::editor::layout_designer::LayoutDesignerWindow::DrawDockNodeTree(), yaze::editor::layout_designer::LayoutDesignerWindow::DrawNodeProperties(), and yaze::editor::layout_designer::LayoutSerializer::SerializeDockNode().
|
inline |
Definition at line 88 of file layout_definition.h.
References yaze::editor::layout_designer::Leaf, yaze::editor::layout_designer::Root, and type.
Referenced by yaze::editor::layout_designer::LayoutDesignerWindow::AddPanelToTarget(), yaze::editor::layout_designer::LayoutDesignerWindow::DrawDockNode(), yaze::editor::layout_designer::LayoutDesignerWindow::GenerateDockBuilderCode(), and yaze::editor::layout_designer::LayoutSerializer::SerializeDockNode().
|
inline |
Definition at line 89 of file layout_definition.h.
References yaze::editor::layout_designer::Root, and type.
Referenced by yaze::editor::layout_designer::LayoutDesignerWindow::DrawDockNodeTree().
| void yaze::editor::layout_designer::DockNode::AddPanel | ( | const LayoutPanel & | panel | ) |
Definition at line 13 of file layout_definition.cc.
References panels, yaze::editor::layout_designer::Split, and type.
Referenced by yaze::editor::layout_designer::LayoutDesignerWindow::AddPanelToTarget().
| void yaze::editor::layout_designer::DockNode::Split | ( | ImGuiDir | direction, |
| float | ratio ) |
Definition at line 21 of file layout_definition.cc.
References child_left, child_right, yaze::editor::layout_designer::Leaf, panels, yaze::editor::layout_designer::Split, split_dir, split_ratio, and type.
Referenced by yaze::editor::layout_designer::LayoutDesignerWindow::AddPanelToTarget().
| LayoutPanel * yaze::editor::layout_designer::DockNode::FindPanel | ( | const std::string & | panel_id | ) |
Definition at line 42 of file layout_definition.cc.
References child_left, child_right, yaze::editor::layout_designer::Leaf, panels, and type.
| size_t yaze::editor::layout_designer::DockNode::CountPanels | ( | ) | const |
Definition at line 67 of file layout_definition.cc.
References child_left, child_right, yaze::editor::layout_designer::Leaf, panels, yaze::editor::layout_designer::Root, and type.
| std::unique_ptr< DockNode > yaze::editor::layout_designer::DockNode::Clone | ( | ) | const |
| DockNodeId yaze::editor::layout_designer::DockNode::id = kInvalidDockNodeId |
Definition at line 67 of file dock_tree.h.
Referenced by Clone(), yaze::editor::layout_designer::LayoutDesignerPanel::Draw(), yaze::editor::layout_designer::anonymous_namespace{dock_tree.cc}::FindNodeInSubtree(), yaze::editor::layout_designer::anonymous_namespace{dock_tree_json.cc}::NodeToJson(), and yaze::editor::layout_designer::anonymous_namespace{dock_tree.cc}::ValidateNode().
| Type yaze::editor::layout_designer::DockNode::type = Type::kLeaf |
Definition at line 69 of file dock_tree.h.
Referenced by AddPanel(), yaze::editor::anonymous_namespace{layout_manager.cc}::ApplyDockNodeRecursive(), yaze::editor::layout_designer::ApplyDropSuggestion(), Clone(), yaze::editor::anonymous_namespace{layout_manager.cc}::CollectPanelIdsInSubtree(), CountPanels(), yaze::editor::layout_designer::LayoutDesignerWindow::DeleteNode(), yaze::editor::layout_designer::LayoutDesignerPanel::Draw(), yaze::editor::layout_designer::LayoutDesignerPanel::DrawPropertiesColumn(), yaze::editor::layout_designer::anonymous_namespace{dock_tree.cc}::FindNodeInSubtree(), FindPanel(), FindPanel(), IsLeaf(), IsRoot(), IsSplit(), yaze::editor::layout_designer::anonymous_namespace{dock_tree_renderer.cc}::LayoutNodeRecursive(), yaze::editor::layout_designer::anonymous_namespace{dock_tree_json.cc}::NodeToJson(), PromoteSingleChild(), yaze::editor::layout_designer::LayoutSerializer::SerializeDockNode(), Split(), SplitInPlace(), and yaze::editor::layout_designer::anonymous_namespace{dock_tree.cc}::ValidateNode().
| std::vector<PanelEntry> yaze::editor::layout_designer::DockNode::panels |
Definition at line 72 of file dock_tree.h.
Referenced by AddPanel(), yaze::editor::layout_designer::LayoutDesignerWindow::AddPanelToTarget(), yaze::editor::anonymous_namespace{layout_manager.cc}::ApplyDockNodeRecursive(), yaze::editor::layout_designer::ApplyDropSuggestion(), yaze::editor::layout_designer::anonymous_namespace{layout_designer_window.cc}::ApplyLayoutToDockspace(), Clone(), yaze::editor::anonymous_namespace{layout_manager.cc}::CollectPanelIdsInSubtree(), CountPanels(), yaze::editor::layout_designer::LayoutDesignerWindow::DeleteNode(), yaze::editor::layout_designer::LayoutDesignerWindow::DrawDockNode(), yaze::editor::layout_designer::LayoutDesignerWindow::DrawDockNodeTree(), yaze::editor::layout_designer::LayoutDesignerWindow::DrawNodeProperties(), yaze::editor::layout_designer::LayoutDesignerPanel::DrawPropertiesColumn(), FindPanel(), FindPanel(), yaze::editor::layout_designer::LayoutDesignerWindow::GenerateDockBuilderCode(), MakeLeaf(), yaze::editor::layout_designer::anonymous_namespace{dock_tree_json.cc}::NodeToJson(), yaze::editor::layout_designer::LayoutSerializer::SerializeDockNode(), Split(), SplitInPlace(), and yaze::editor::layout_designer::anonymous_namespace{dock_tree.cc}::ValidateNode().
| int yaze::editor::layout_designer::DockNode::active_tab_index = 0 |
Definition at line 73 of file dock_tree.h.
Referenced by yaze::editor::layout_designer::ApplyDropSuggestion(), Clone(), yaze::editor::layout_designer::LayoutDesignerPanel::DrawPropertiesColumn(), yaze::editor::layout_designer::anonymous_namespace{dock_tree_json.cc}::NodeToJson(), SplitInPlace(), and yaze::editor::layout_designer::anonymous_namespace{dock_tree.cc}::ValidateNode().
| SplitDirection yaze::editor::layout_designer::DockNode::split_direction = SplitDirection::kLeft |
Definition at line 76 of file dock_tree.h.
Referenced by yaze::editor::anonymous_namespace{layout_manager.cc}::ApplyDockNodeRecursive(), Clone(), yaze::editor::layout_designer::LayoutDesignerPanel::Draw(), yaze::editor::layout_designer::LayoutDesignerPanel::DrawPropertiesColumn(), yaze::editor::layout_designer::anonymous_namespace{dock_tree_renderer.cc}::LayoutNodeRecursive(), yaze::editor::layout_designer::anonymous_namespace{dock_tree_json.cc}::NodeToJson(), and SplitInPlace().
| float yaze::editor::layout_designer::DockNode::split_ratio = 0.5f |
Definition at line 77 of file dock_tree.h.
Referenced by yaze::editor::anonymous_namespace{layout_manager.cc}::ApplyDockNodeRecursive(), yaze::editor::layout_designer::anonymous_namespace{layout_designer_window.cc}::ApplyLayoutToDockspace(), Clone(), yaze::editor::layout_designer::LayoutDesignerWindow::DeleteNode(), yaze::editor::layout_designer::LayoutDesignerPanel::Draw(), yaze::editor::layout_designer::LayoutDesignerWindow::DrawDockNode(), yaze::editor::layout_designer::LayoutDesignerWindow::DrawDockNodeTree(), yaze::editor::layout_designer::LayoutDesignerWindow::DrawNodeProperties(), yaze::editor::layout_designer::LayoutDesignerPanel::DrawPropertiesColumn(), yaze::editor::layout_designer::LayoutDesignerWindow::GenerateDockBuilderCode(), yaze::editor::layout_designer::anonymous_namespace{dock_tree_renderer.cc}::LayoutNodeRecursive(), yaze::editor::layout_designer::anonymous_namespace{dock_tree_json.cc}::NodeToJson(), yaze::editor::layout_designer::LayoutSerializer::SerializeDockNode(), Split(), SplitInPlace(), and yaze::editor::layout_designer::anonymous_namespace{dock_tree.cc}::ValidateNode().
| std::unique_ptr<DockNode> yaze::editor::layout_designer::DockNode::child_a |
Definition at line 78 of file dock_tree.h.
Referenced by yaze::editor::anonymous_namespace{layout_manager.cc}::ApplyDockNodeRecursive(), yaze::editor::layout_designer::ApplyDropSuggestion(), Clone(), yaze::editor::anonymous_namespace{layout_manager.cc}::CollectPanelIdsInSubtree(), yaze::editor::layout_designer::anonymous_namespace{dock_tree.cc}::FindNodeInSubtree(), FindPanel(), yaze::editor::layout_designer::HitTestSplitBoundary(), yaze::editor::layout_designer::anonymous_namespace{dock_tree_renderer.cc}::LayoutNodeRecursive(), yaze::editor::layout_designer::anonymous_namespace{dock_tree_json.cc}::NodeToJson(), PromoteSingleChild(), SplitInPlace(), and yaze::editor::layout_designer::anonymous_namespace{dock_tree.cc}::ValidateNode().
| std::unique_ptr<DockNode> yaze::editor::layout_designer::DockNode::child_b |
Definition at line 79 of file dock_tree.h.
Referenced by yaze::editor::anonymous_namespace{layout_manager.cc}::ApplyDockNodeRecursive(), yaze::editor::layout_designer::ApplyDropSuggestion(), Clone(), yaze::editor::anonymous_namespace{layout_manager.cc}::CollectPanelIdsInSubtree(), yaze::editor::layout_designer::anonymous_namespace{dock_tree.cc}::FindNodeInSubtree(), FindPanel(), yaze::editor::layout_designer::HitTestSplitBoundary(), yaze::editor::layout_designer::anonymous_namespace{dock_tree_renderer.cc}::LayoutNodeRecursive(), yaze::editor::layout_designer::anonymous_namespace{dock_tree_json.cc}::NodeToJson(), PromoteSingleChild(), SplitInPlace(), and yaze::editor::layout_designer::anonymous_namespace{dock_tree.cc}::ValidateNode().
| DockNodeType yaze::editor::layout_designer::DockNode::type = DockNodeType::Leaf |
Definition at line 69 of file layout_definition.h.
| ImGuiID yaze::editor::layout_designer::DockNode::node_id = 0 |
Definition at line 70 of file layout_definition.h.
| ImGuiDir yaze::editor::layout_designer::DockNode::split_dir = ImGuiDir_None |
Definition at line 73 of file layout_definition.h.
Referenced by yaze::editor::layout_designer::anonymous_namespace{layout_designer_window.cc}::ApplyLayoutToDockspace(), yaze::editor::layout_designer::LayoutDesignerWindow::DeleteNode(), yaze::editor::layout_designer::LayoutDesignerWindow::DrawDockNode(), yaze::editor::layout_designer::LayoutDesignerWindow::DrawDockNodeTree(), yaze::editor::layout_designer::LayoutDesignerWindow::DrawNodeProperties(), yaze::editor::layout_designer::LayoutDesignerWindow::GenerateDockBuilderCode(), yaze::editor::layout_designer::LayoutSerializer::SerializeDockNode(), and Split().
| std::unique_ptr<DockNode> yaze::editor::layout_designer::DockNode::child_left |
Definition at line 77 of file layout_definition.h.
Referenced by yaze::editor::layout_designer::LayoutDesignerWindow::AddPanelToTarget(), yaze::editor::layout_designer::anonymous_namespace{layout_designer_window.cc}::ApplyLayoutToDockspace(), CountPanels(), yaze::editor::layout_designer::LayoutDesignerWindow::DeleteNode(), yaze::editor::layout_designer::LayoutDesignerWindow::DrawDockNode(), yaze::editor::layout_designer::LayoutDesignerWindow::DrawDockNodeTree(), FindPanel(), yaze::editor::layout_designer::LayoutDesignerWindow::GenerateDockBuilderCode(), yaze::editor::layout_designer::LayoutSerializer::SerializeDockNode(), and Split().
| std::unique_ptr<DockNode> yaze::editor::layout_designer::DockNode::child_right |
Definition at line 78 of file layout_definition.h.
Referenced by yaze::editor::layout_designer::LayoutDesignerWindow::AddPanelToTarget(), yaze::editor::layout_designer::anonymous_namespace{layout_designer_window.cc}::ApplyLayoutToDockspace(), CountPanels(), yaze::editor::layout_designer::LayoutDesignerWindow::DeleteNode(), yaze::editor::layout_designer::LayoutDesignerWindow::DrawDockNode(), yaze::editor::layout_designer::LayoutDesignerWindow::DrawDockNodeTree(), FindPanel(), yaze::editor::layout_designer::LayoutDesignerWindow::GenerateDockBuilderCode(), yaze::editor::layout_designer::LayoutSerializer::SerializeDockNode(), and Split().
| std::vector<LayoutPanel> yaze::editor::layout_designer::DockNode::panels |
Definition at line 81 of file layout_definition.h.
| ImGuiDockNodeFlags yaze::editor::layout_designer::DockNode::flags = ImGuiDockNodeFlags_None |
Definition at line 84 of file layout_definition.h.
Referenced by yaze::editor::layout_designer::LayoutDesignerWindow::DeleteNode(), yaze::editor::layout_designer::LayoutDesignerWindow::DrawDockNode(), yaze::editor::layout_designer::LayoutDesignerWindow::DrawNodeProperties(), and yaze::editor::layout_designer::LayoutDesignerWindow::GenerateDockBuilderCode().