50 lines
1.4 KiB
Markdown
50 lines
1.4 KiB
Markdown
|
|
# BaseTheme
|
||
|
|
|
||
|
|
**命名空间**: `XCEngine::Editor::UI`
|
||
|
|
|
||
|
|
**类型**: `header-helper`
|
||
|
|
|
||
|
|
**源文件**: `editor/src/UI/BaseTheme.h`
|
||
|
|
|
||
|
|
**描述**: 定义编辑器默认 Dear ImGui 主题的颜色与尺寸指标。
|
||
|
|
|
||
|
|
## 概述
|
||
|
|
|
||
|
|
`BaseTheme.h` 把编辑器默认外观拆成三层函数:
|
||
|
|
|
||
|
|
- `ApplyBaseThemeColors`
|
||
|
|
- `ApplyBaseThemeMetrics`
|
||
|
|
- `ApplyBaseTheme`
|
||
|
|
|
||
|
|
这让主题既能整体应用,也能在需要时分别覆盖颜色或间距。
|
||
|
|
|
||
|
|
## 当前实现
|
||
|
|
|
||
|
|
- 主题整体是偏中性、低饱和的灰色编辑器风格
|
||
|
|
- Docking 标签、按钮、工具栏、表格、滚动条等颜色都在这里集中定义
|
||
|
|
- 圆角、边框、间距和 padding 也都由这里设置
|
||
|
|
- [`ImGuiSession`](../ImGuiSession/ImGuiSession.md) 和 `Theme.cpp` 会使用这组 helper
|
||
|
|
|
||
|
|
## 设计说明
|
||
|
|
|
||
|
|
商业编辑器通常不会把颜色和 spacing 散落在所有面板里,而是会先建立一套基础主题。
|
||
|
|
这样做的好处是:
|
||
|
|
|
||
|
|
- 新面板默认继承统一视觉语言
|
||
|
|
- 后续品牌化或皮肤切换时有一个集中入口
|
||
|
|
- 设计 token 和实际 ImGui style 之间的边界更清楚
|
||
|
|
|
||
|
|
当前实现已经具备这个方向,虽然还不是完整可换肤系统。
|
||
|
|
|
||
|
|
## 当前限制
|
||
|
|
|
||
|
|
- 主题参数主要是硬编码值
|
||
|
|
- 没有亮色主题或用户配置
|
||
|
|
- 主题切换和局部覆盖机制尚未成体系
|
||
|
|
|
||
|
|
## 相关文档
|
||
|
|
|
||
|
|
- [UI](../UI.md)
|
||
|
|
- [StyleTokens](../StyleTokens/StyleTokens.md)
|
||
|
|
- [ImGuiSession](../ImGuiSession/ImGuiSession.md)
|