slot 0.0.1
A real time UI render framework
载入中...
搜索中...
未找到
BaseNode.h
浏览该文件的文档.
1//
2// Created by zhou_zhengming on 2026/7/29.
3//
4
5#pragma once
6#include "Core/Event.h"
9
10#include <DirectXMath.h>
11
12#include <memory>
13#include <string>
14#include <vector>
15
16namespace z8::ui {
24using ClipRect = DirectX::XMFLOAT4;
25class BaseNode : public virtual IProperty {
26public:
27 std::string Key;
30 BaseNode *Parent = nullptr;
31 std::vector<std::unique_ptr<BaseNode>> Children;
32
33 float Left = 0.0f;
34 float Top = 0.0f;
35 float Width = 0.0f;
36 float Height = 0.0f;
37 float ChildOffsetX = 0.0f;
38 float ChildOffsetY = 0.0f;
39 bool ClipChildren = false;
40 bool Visible = true;
42 bool EffectiveVisible = true;
47 bool LayoutManaged = false;
48 ClipRect VisibleClip = {-100000.0f, -100000.0f, 100000.0f, 100000.0f};
49
50public:
52 ~BaseNode() override;
53 BaseNode(const BaseNode &) = delete;
54 BaseNode &operator=(const BaseNode &) = delete;
55
56 virtual const char *TypeName() const;
58 virtual bool RoutesToScene() const { return false; }
59 bool SetProperty(const std::string &name, const std::string &value) override;
60 virtual BaseNode *ContentHost();
61 bool Contains(float x, float y) const;
62 bool Contains(MouseMovArgs args) const;
67 virtual BaseNode *AddChild(std::unique_ptr<BaseNode> child);
68 void RemoveChildrenFrom(size_t first);
69
70 virtual void OnAfterLayout() {}
71 virtual void Synchronize() {}
72 virtual void DispatchAfterLayout();
73};
74} // namespace z8::ui
资源的强类型引用,同时覆盖持久化 ID 与运行时索引两种边界。
Definition ResourceRef.h:36
Definition BaseNode.h:25
BaseNode * Parent
Definition BaseNode.h:30
void RemoveChildrenFrom(size_t first)
Definition BaseNode.cpp:35
bool Visible
Definition BaseNode.h:40
virtual void DispatchAfterLayout()
Definition BaseNode.cpp:23
LayoutBox Computed
Definition BaseNode.h:29
virtual void Synchronize()
Definition BaseNode.h:71
LayoutStyle Style
Definition BaseNode.h:28
float Top
Definition BaseNode.h:34
virtual BaseNode * ContentHost()
Definition BaseNode.cpp:42
bool LayoutManaged
Definition BaseNode.h:47
bool ClipChildren
Definition BaseNode.h:39
virtual BaseNode * AddChild(std::unique_ptr< BaseNode > child)
Definition BaseNode.cpp:27
~BaseNode() override
std::string Key
Definition BaseNode.h:27
bool Contains(float x, float y) const
Definition BaseNode.cpp:14
virtual void OnAfterLayout()
Definition BaseNode.h:70
float ChildOffsetY
Definition BaseNode.h:38
float Width
Definition BaseNode.h:35
float ChildOffsetX
Definition BaseNode.h:37
float Height
Definition BaseNode.h:36
std::vector< std::unique_ptr< BaseNode > > Children
Definition BaseNode.h:31
BaseNode(const BaseNode &)=delete
bool SetProperty(const std::string &name, const std::string &value) override
Definition BaseNode.cpp:46
virtual bool RoutesToScene() const
Definition BaseNode.h:58
float Left
Definition BaseNode.h:33
ClipRect VisibleClip
Definition BaseNode.h:48
BaseNode & operator=(const BaseNode &)=delete
bool EffectiveVisible
Definition BaseNode.h:42
virtual const char * TypeName() const
Definition BaseNode.cpp:44
Definition IProperty.h:10
Definition Application.h:18
DirectX::XMFLOAT4 ClipRect
Definition BaseNode.h:24
Definition Event.h:41
Definition LayoutTypes.h:42
Definition LayoutTypes.h:21