slot 0.0.1
A real time UI render framework
载入中...
搜索中...
未找到
Public 成员函数 | Public 属性 | Private 成员函数 | Private 属性 | 所有成员列表
z8::ui::Layout类 参考

#include <Layout.h>

类 z8::ui::Layout 继承关系图:
Inheritance graph
[图例]
z8::ui::Layout 的协作图:
Collaboration graph
[图例]

Public 成员函数

 Layout ()
 
 ~Layout () override
 
void RebuildIndex ()
 
BaseNodeFind (const std::string &key) const
 
void Calculate (float width, float height)
 
void ActivateFloating (BaseNode &node)
 
void MarkDirty ()
 
bool ConsumeDirty ()
 
bool ContainsNode (const BaseNode *node) const
 
void SetRoot (std::unique_ptr< BaseNode > root)
 
std::vector< GameObject * > GetUO () const
 
std::vector< GameObject * > GetMainUO () const
 
std::vector< GameObject * > GetSubtreeUO (const BaseNode &root) const
 
std::vector< TextNode * > GetMainTexts () const
 
std::vector< TextNode * > GetSubtreeTexts (const BaseNode &root) const
 
SceneNodeGetSceneNode () const
 
void WriteTerminal (const std::string &message) const
 
DockRect GetDockPreview () const
 
size_t GetPanelDebugBorderCount () const
 
EventReply OnKeyDown (KeyArgs args) override
 
EventReply OnKeyUp (KeyArgs args) override
 
EventReply OnTextInput (wchar_t character) override
 
EventReply OnMouseDown (MouseMovArgs args) override
 
EventReply OnMouseMove (MouseMovArgs args) override
 
EventReply OnMouseDrag (MouseMovArgs args) override
 
EventReply OnMouseUp (MouseMovArgs args) override
 
EventReply OnMouseWheel (MouseWheelArgs args) override
 
MouseCursor GetMouseCursor (MouseMovArgs args) const override
 
void OnPointerCaptureLost () override
 
- Public 成员函数 继承自 z8::EventTarget
virtual ~EventTarget ()=default
 

Public 属性

std::unique_ptr< BaseNodeRoot
 
std::vector< BaseNode * > Nodes
 
std::vector< DrawNode * > Visuals
 
std::vector< TextNode * > Texts
 
std::vector< SceneNode * > Scenes
 
std::vector< TerminalNode * > Terminals
 
DockWorkspace Dock
 
std::unique_ptr< RectNodeDockPreviewVisual
 
bool DebugPanelBorders = false
 
bool Dirty = true
 
BaseNodeCapturedTarget = nullptr
 
BehaviorNodeCapturedHandler = nullptr
 
DockNodeID CapturedSplitter = 0
 
BehaviorNodeHoveredHandler = nullptr
 
BehaviorNodePressedHandler = nullptr
 
BehaviorNodeFocusedHandler = nullptr
 

Private 成员函数

void BringToFront (BaseNode *node)
 
void CancelTreeCaptures (BaseNode *node)
 
void CloseMenusOutside (BaseNode *target)
 
bool CommitPanelDrop (float clientX, float clientY)
 
BehaviorNodeFindBehaviorNode (BaseNode *node) const
 
BaseNodeHitAt (float x, float y) const
 
void IndexTree (BaseNode *node)
 
void NormalizePanelGroups (BaseNode &parent)
 
void ResetInteractionStates (BaseNode *node)
 
bool RemoveClosedPanelGroups (BaseNode &parent)
 
void UpdatePanelDebugVisuals ()
 
void UpdateTextOcclusion ()
 
void UpdateTree (BaseNode &node, float parentX, float parentY, const DirectX::XMFLOAT4 &clip, bool dispatchAfterLayout, bool parentVisible=true)
 
void UpdateDockPreview ()
 
void UpdateHoveredHandler (float x, float y)
 
void SetFocusedHandler (BehaviorNode *handler)
 

Private 属性

std::vector< DrawNode * > LaterTextOccluders
 
std::vector< std::unique_ptr< RectNode > > PanelDebugVisuals
 

详细描述

UI 树的布局与输入路由器。

构造及析构函数说明

◆ Layout()

Layout::Layout ( )
explicit
函数调用图:

◆ ~Layout()

Layout::~Layout ( )
overridedefault

成员函数说明

◆ ActivateFloating()

void Layout::ActivateFloating ( BaseNode & node)

原生 Floating HWND 激活时同步画家顺序和输入命中优先级。

函数调用图:

◆ BringToFront()

void Layout::BringToFront ( BaseNode * node)
private
函数调用图:
这是这个函数的调用关系图:

◆ Calculate()

void Layout::Calculate ( float width,
float height )
函数调用图:
这是这个函数的调用关系图:

◆ CancelTreeCaptures()

void Layout::CancelTreeCaptures ( BaseNode * node)
private
函数调用图:
这是这个函数的调用关系图:

◆ CloseMenusOutside()

void Layout::CloseMenusOutside ( BaseNode * target)
private

点击菜单层级外时关闭所有顶层弹出目录,不改变稳定节点拓扑。

这是这个函数的调用关系图:

◆ CommitPanelDrop()

bool Layout::CommitPanelDrop ( float clientX,
float clientY )
private

按统一 DragSession 提交 Panel 成员迁移,并在需要时创建单页 Group。

函数调用图:
这是这个函数的调用关系图:

◆ ConsumeDirty()

bool Layout::ConsumeDirty ( )
这是这个函数的调用关系图:

◆ ContainsNode()

bool Layout::ContainsNode ( const BaseNode * node) const

仅按地址确认非拥有节点是否仍在当前树中;允许调用方传入已失效但不解引用的观察指针。

◆ Find()

BaseNode * Layout::Find ( const std::string & key) const
这是这个函数的调用关系图:

◆ FindBehaviorNode()

BehaviorNode * Layout::FindBehaviorNode ( BaseNode * node) const
private
这是这个函数的调用关系图:

◆ GetDockPreview()

DockRect Layout::GetDockPreview ( ) const

返回当前 Dock 或浮动候选预览;Idle 时返回空矩形。

这是这个函数的调用关系图:

◆ GetMainTexts()

std::vector< TextNode * > Layout::GetMainTexts ( ) const
函数调用图:

◆ GetMainUO()

std::vector< GameObject * > Layout::GetMainUO ( ) const

主 HWND 只绘制 DockTree 内容;Floating 子树由各自原生宿主呈现。

函数调用图:
这是这个函数的调用关系图:

◆ GetMouseCursor()

z8::MouseCursor Layout::GetMouseCursor ( MouseMovArgs args) const
overridevirtual

重载 z8::EventTarget .

函数调用图:
这是这个函数的调用关系图:

◆ GetPanelDebugBorderCount()

size_t z8::ui::Layout::GetPanelDebugBorderCount ( ) const
inline

返回 Panel 子树中当前参与绘制的红色节点边界数量。

◆ GetSceneNode()

SceneNode * Layout::GetSceneNode ( ) const

返回第一个可见场景视口;当前 DX12 后端以单场景相机渲染该视口。

这是这个函数的调用关系图:

◆ GetSubtreeTexts()

std::vector< TextNode * > Layout::GetSubtreeTexts ( const BaseNode & root) const

◆ GetSubtreeUO()

std::vector< GameObject * > Layout::GetSubtreeUO ( const BaseNode & root) const

返回指定节点完整子树的视觉对象,供原生 Floating 宿主建立批次。

◆ GetUO()

std::vector< GameObject * > Layout::GetUO ( ) const
这是这个函数的调用关系图:

◆ HitAt()

BaseNode * Layout::HitAt ( float x,
float y ) const
private
这是这个函数的调用关系图:

◆ IndexTree()

void Layout::IndexTree ( BaseNode * node)
private
函数调用图:
这是这个函数的调用关系图:

◆ MarkDirty()

void z8::ui::Layout::MarkDirty ( )
inline

◆ NormalizePanelGroups()

void Layout::NormalizePanelGroups ( BaseNode & parent)
private

把未分组 Panel 包装为单页 PanelGroup,Dock 树只管理 Group。

函数调用图:
这是这个函数的调用关系图:

◆ OnKeyDown()

EventReply Layout::OnKeyDown ( KeyArgs args)
overridevirtual

重载 z8::EventTarget .

函数调用图:
这是这个函数的调用关系图:

◆ OnKeyUp()

EventReply Layout::OnKeyUp ( KeyArgs args)
overridevirtual

重载 z8::EventTarget .

函数调用图:
这是这个函数的调用关系图:

◆ OnMouseDown()

EventReply Layout::OnMouseDown ( MouseMovArgs args)
overridevirtual

重载 z8::EventTarget .

函数调用图:
这是这个函数的调用关系图:

◆ OnMouseDrag()

EventReply Layout::OnMouseDrag ( MouseMovArgs args)
overridevirtual

重载 z8::EventTarget .

函数调用图:
这是这个函数的调用关系图:

◆ OnMouseMove()

EventReply Layout::OnMouseMove ( MouseMovArgs args)
overridevirtual

重载 z8::EventTarget .

函数调用图:
这是这个函数的调用关系图:

◆ OnMouseUp()

EventReply Layout::OnMouseUp ( MouseMovArgs args)
overridevirtual

重载 z8::EventTarget .

函数调用图:
这是这个函数的调用关系图:

◆ OnMouseWheel()

EventReply Layout::OnMouseWheel ( MouseWheelArgs args)
overridevirtual

重载 z8::EventTarget .

函数调用图:
这是这个函数的调用关系图:

◆ OnPointerCaptureLost()

void Layout::OnPointerCaptureLost ( )
overridevirtual

重载 z8::EventTarget .

函数调用图:
这是这个函数的调用关系图:

◆ OnTextInput()

EventReply Layout::OnTextInput ( wchar_t character)
overridevirtual

重载 z8::EventTarget .

函数调用图:
这是这个函数的调用关系图:

◆ RebuildIndex()

void Layout::RebuildIndex ( )
函数调用图:
这是这个函数的调用关系图:

◆ RemoveClosedPanelGroups()

bool Layout::RemoveClosedPanelGroups ( BaseNode & parent)
private

回收请求关闭或已无页面的 Group,并同步清除 Dock/Floating 归属。

函数调用图:
这是这个函数的调用关系图:

◆ ResetInteractionStates()

void Layout::ResetInteractionStates ( BaseNode * node)
private

拓扑更新后从仍存活的树清除短期视觉状态,避免复用节点残留 Hover。

函数调用图:
这是这个函数的调用关系图:

◆ SetFocusedHandler()

void Layout::SetFocusedHandler ( BehaviorNode * handler)
private

切换唯一键盘焦点并同步控件视觉状态。

函数调用图:
这是这个函数的调用关系图:

◆ SetRoot()

void Layout::SetRoot ( std::unique_ptr< BaseNode > root)
函数调用图:

◆ UpdateDockPreview()

void Layout::UpdateDockPreview ( )
private
函数调用图:
这是这个函数的调用关系图:

◆ UpdateHoveredHandler()

void Layout::UpdateHoveredHandler ( float x,
float y )
private

根据与渲染一致的最上层命中结果切换唯一 Hover 控件。

函数调用图:
这是这个函数的调用关系图:

◆ UpdatePanelDebugVisuals()

void Layout::UpdatePanelDebugVisuals ( )
private

根据最终屏幕坐标刷新 Panel 子树诊断覆盖层,不修改节点自身主题状态。

这是这个函数的调用关系图:

◆ UpdateTextOcclusion()

void Layout::UpdateTextOcclusion ( )
private

按画家顺序计算后续不透明浮层对 DirectWrite 文字的裁剪片段。

函数调用图:
这是这个函数的调用关系图:

◆ UpdateTree()

void Layout::UpdateTree ( BaseNode & node,
float parentX,
float parentY,
const DirectX::XMFLOAT4 & clip,
bool dispatchAfterLayout,
bool parentVisible = true )
private
函数调用图:
这是这个函数的调用关系图:

◆ WriteTerminal()

void Layout::WriteTerminal ( const std::string & message) const

把运行时消息广播给当前布局中的所有 TerminalNode。

这是这个函数的调用关系图:

类成员变量说明

◆ CapturedHandler

BehaviorNode* z8::ui::Layout::CapturedHandler = nullptr

◆ CapturedSplitter

DockNodeID z8::ui::Layout::CapturedSplitter = 0

◆ CapturedTarget

BaseNode* z8::ui::Layout::CapturedTarget = nullptr

◆ DebugPanelBorders

bool z8::ui::Layout::DebugPanelBorders = false

数字键 3 控制的 Panel 边界诊断开关。

◆ Dirty

bool z8::ui::Layout::Dirty = true

◆ Dock

DockWorkspace z8::ui::Layout::Dock

当前窗口的 Dock 结构、浮动归属和唯一拖拽会话。

◆ DockPreviewVisual

std::unique_ptr<RectNode> z8::ui::Layout::DockPreviewVisual

拖动候选覆盖层独立于 DockTree,渲染后不参与命中或布局决策。

◆ FocusedHandler

BehaviorNode* z8::ui::Layout::FocusedHandler = nullptr

◆ HoveredHandler

BehaviorNode* z8::ui::Layout::HoveredHandler = nullptr

当前唯一 Hover/Pressed 控件;非拥有指针只在本轮稳定控件树内有效。

◆ LaterTextOccluders

std::vector<DrawNode *> z8::ui::Layout::LaterTextOccluders
private

逐帧复用的非拥有遮挡索引,避免菜单打开期间为每个文字反复分配。

◆ Nodes

std::vector<BaseNode *> z8::ui::Layout::Nodes

◆ PanelDebugVisuals

std::vector<std::unique_ptr<RectNode> > z8::ui::Layout::PanelDebugVisuals
private

◆ PressedHandler

BehaviorNode* z8::ui::Layout::PressedHandler = nullptr

◆ Root

std::unique_ptr<BaseNode> z8::ui::Layout::Root

◆ Scenes

std::vector<SceneNode *> z8::ui::Layout::Scenes

◆ Terminals

std::vector<TerminalNode *> z8::ui::Layout::Terminals

◆ Texts

std::vector<TextNode *> z8::ui::Layout::Texts

◆ Visuals

std::vector<DrawNode *> z8::ui::Layout::Visuals

该类的文档由以下文件生成: