|
slot 0.0.1
A real time UI render framework
|


Public 成员函数 | |
| Host (DX12Render &render, ui::BaseNode &root) | |
| ~Host () | |
| ui::PanelGroupNode * | GetGroup () const |
| ui::BaseNode * | GetRoot () const |
| bool | IsClosePending () const |
| void | RebuildBatch () |
| void | SynchronizeWindow () |
| void | Update () |
| void | Draw () |
Private 成员函数 | |
| bool | IsRootAlive () const |
| LRESULT | ResolveNonClientHit (LPARAM lParam) const |
| void | RenderInteractiveResizeFrame () |
| LRESULT | HandleWindowMessage (HWND window, UINT message, WPARAM wParam, LPARAM lParam) override |
| void | Resize () |
| void | SynchronizeRectFromWindow () |
Private 成员函数 继承自 z8::Win32WindowHost | |
| Win32WindowHost ()=default | |
| virtual | ~Win32WindowHost () |
| void | AttachWindow (HWND window, EventTarget &inputTarget, HWND coordinateWindow=nullptr) |
| void | DetachWindow () |
| bool | DispatchInputMessage (HWND window, UINT message, WPARAM wParam, LPARAM lParam, LRESULT &result) |
Private 属性 | |
| DX12Render * | Render = nullptr |
| ui::BaseNode * | Root = nullptr |
| ui::PanelGroupNode * | Group = nullptr |
| ui::SceneNode * | Scene = nullptr |
| HWND | Wnd = nullptr |
| DX12WindowSurface | Surface |
| DX12DepthStencil | DepthTarget |
| std::unique_ptr< DX12RenderBatch > | Batch |
| int | Width = 1 |
| int | Height = 1 |
| unsigned | Dpi = USER_DEFAULT_SCREEN_DPI |
| float | DpiScale = 1.0f |
| bool | ResizePending = false |
| bool | SuppressWindowSync = false |
| bool | ClosePending = false |
| bool | InSizeMove = false |
|
inline |

|
inline |

|
inline |


|
inline |
|
inline |
|
inline |
|
inlineprivate |
判断非拥有 Root 是否仍由 Layout 持有。
Panel 提交到其他 Group 时会在当前 WNDPROC 内销毁旧 Group,而 Host 必须 延迟到下一帧 Reconcile 才能安全销毁 HWND。Nodes 已在提交末尾重建, 所以纯地址查询可以封住这段窗口消息重入期,且不会解引用悬空指针。

|
inline |


|
inlineprivate |


|
inlineprivate |


|
inlineprivate |
将 Floating HWND 的可见边缘统一交给 Win32 非客户区状态机。
point 使用屏幕坐标;ScreenToClient 后允许出现负数和超出客户区的值, 因而同一判断同时覆盖系统 frame 外侧与 UI 客户区内侧,消除两套 resize 捕获在左/上边缘竞争导致的概率性失效。


|
inlineprivate |


|
inline |

|
inline |


|
private |
|
private |
仅包含 SceneNode 的宿主创建深度目标,普通 Panel 不承担额外显存。
|
private |
|
private |
|
private |
缓存创建时的节点类型,避免延迟回收窗口对悬空 Root 再次执行 RTTI。
|
private |
|
private |
|
private |
|
private |
|
private |
Floating HWND 独占呈现表面,但复用主渲染器的设备、队列与 PSO。
|
private |