slot 0.0.1
A real time UI render framework
载入中...
搜索中...
未找到
DockWorkspace.h
浏览该文件的文档.
1#pragma once
2
3#include "UI/Dock/DockTree.h"
4
5#include <unordered_map>
6
7namespace z8::ui {
8class BaseNode;
9class PanelGroupNode;
10class PanelNode;
11
14
48
55
61public:
64
65 void ApplyLayout(float width, float height);
66 void BeginDrag(BaseNode &panel, float clientX, float clientY);
68 size_t sourceTabIndex, float clientX, float clientY);
69 void CancelDrag();
70 bool CommitDrag(float clientX, float clientY);
71 DockSide DetectSide(const DockRect &rect, float clientX, float clientY) const;
72 const PanelDockState *GetState(const BaseNode &panel) const;
74 std::vector<BaseNode *> GetFloatingPanels() const;
75 bool IsDocked(const BaseNode &panel) const;
76 bool IsFloating(const BaseNode &panel) const;
79 const DockRect &floatingRect);
80 void Reconcile(const std::vector<BaseNode *> &nodes);
82 bool Remove(BaseNode &panel);
83 void UpdateDrag(float clientX, float clientY);
86 bool ResizeSplitter(DockNodeID split, float clientX, float clientY);
87 std::string DumpDebug() const;
89 bool Validate(std::string *error = nullptr) const;
90
91private:
92 std::unordered_map<BaseNode *, PanelDockState> States;
93 std::vector<BaseNode *> PendingInitialPanels;
96
97 void ApplyPanelRect(BaseNode &panel, const DockRect &rect, bool visible);
98 void BuildInitialTree(const std::vector<BaseNode *> &panels, float width,
99 float height);
100};
101
102} // namespace z8::ui
资源的强类型引用,同时覆盖持久化 ID 与运行时索引两种边界。
Definition ResourceRef.h:36
Definition BaseNode.h:25
Definition DockTree.h:70
Definition DockWorkspace.h:60
void UpdateDrag(float clientX, float clientY)
Definition DockWorkspace.cpp:260
void Reconcile(const std::vector< BaseNode * > &nodes)
Definition DockWorkspace.cpp:97
bool Remove(BaseNode &panel)
Definition DockWorkspace.cpp:436
std::string LastTransactionTrace
Definition DockWorkspace.h:95
std::string DumpDebug() const
Definition DockWorkspace.cpp:489
const PanelDockState * GetState(const BaseNode &panel) const
Definition DockWorkspace.cpp:445
std::unordered_map< BaseNode *, PanelDockState > States
Definition DockWorkspace.h:92
void BeginDrag(BaseNode &panel, float clientX, float clientY)
Definition DockWorkspace.cpp:183
PanelDragSession Drag
Definition DockWorkspace.h:63
void BeginPanelDrag(PanelNode &panel, PanelGroupNode &sourceGroup, size_t sourceTabIndex, float clientX, float clientY)
Definition DockWorkspace.cpp:212
void ApplyLayout(float width, float height)
Definition DockWorkspace.cpp:150
bool CommitDrag(float clientX, float clientY)
Definition DockWorkspace.cpp:358
bool IsDocked(const BaseNode &panel) const
Definition DockWorkspace.cpp:465
void BuildInitialTree(const std::vector< BaseNode * > &panels, float width, float height)
Definition DockWorkspace.cpp:39
std::vector< BaseNode * > GetFloatingPanels() const
Definition DockWorkspace.cpp:456
std::vector< BaseNode * > PendingInitialPanels
Definition DockWorkspace.h:93
bool PlaceNew(BaseNode &group, DockNodeID target, DockSide side, const DockRect &floatingRect)
Definition DockWorkspace.cpp:411
bool UpdateFloatingRect(BaseNode &panel, const DockRect &rect)
Definition DockWorkspace.cpp:475
void CancelDrag()
Definition DockWorkspace.cpp:409
bool IsFloating(const BaseNode &panel) const
Definition DockWorkspace.cpp:470
bool ResizeSplitter(DockNodeID split, float clientX, float clientY)
Definition DockWorkspace.cpp:484
void ApplyPanelRect(BaseNode &panel, const DockRect &rect, bool visible)
Definition DockWorkspace.cpp:137
DockTree Tree
Definition DockWorkspace.h:62
DockSide DetectSide(const DockRect &rect, float clientX, float clientY) const
Definition DockWorkspace.cpp:243
bool Validate(std::string *error=nullptr) const
Definition DockWorkspace.cpp:504
Definition PanelGroupNode.h:64
Definition PanelNode.h:19
Definition Application.h:18
DockSide
Definition DockTree.h:27
DragPayloadType
Definition DockWorkspace.h:13
PanelDragState
Definition DockWorkspace.h:12
PanelPlacement
Definition DockTree.h:28
std::uint64_t DockNodeID
Definition DockTree.h:11
Definition DockTree.h:35
Definition DockTree.h:14
Definition DockWorkspace.h:50
PanelPlacement Placement
Definition DockWorkspace.h:51
DockRect FloatingRect
Definition DockWorkspace.h:53
Definition DockWorkspace.h:16
int SourceTabIndex
Definition DockWorkspace.h:30
BaseNode * Panel
Definition DockWorkspace.h:28
float MouseClientY
Definition DockWorkspace.h:38
PanelDragState State
Definition DockWorkspace.h:17
float PressClientX
Definition DockWorkspace.h:35
PanelNode * PayloadPanel
Definition DockWorkspace.h:19
float MouseClientX
Definition DockWorkspace.h:37
PanelGroupNode * TargetGroup
Definition DockWorkspace.h:26
DragPayloadType PayloadType
Definition DockWorkspace.h:18
float GrabOffsetX
Definition DockWorkspace.h:39
DockRect SourceFloatingRect
Definition DockWorkspace.h:34
DockRect FloatingPreviewRect
Definition DockWorkspace.h:41
DockNodeID DockTarget
Definition DockWorkspace.h:42
DockRect DockPreviewRect
Definition DockWorkspace.h:46
float PressClientY
Definition DockWorkspace.h:36
float GrabOffsetY
Definition DockWorkspace.h:40
PanelGroupNode * PayloadGroup
Definition DockWorkspace.h:20
bool SourceWasFloating
Definition DockWorkspace.h:31
bool PreviewVisible
Definition DockWorkspace.h:33
DockSide Side
Definition DockWorkspace.h:43
int TargetTabIndex
Definition DockWorkspace.h:45
PanelGroupNode * SourceGroup
Definition DockWorkspace.h:21
DockNodeID SourceNode
Definition DockWorkspace.h:29