88 lines
3.7 KiB
Markdown
88 lines
3.7 KiB
Markdown
# 功能变更 ID: Feature-20260416-0009
|
||
|
||
> 适用场景:记录小到中等规模的功能、接口、行为、默认值或配置变化。
|
||
> 不适用场景:新增核心模块、重大模块重构、架构级设计,请使用“新增功能模块”模板。
|
||
|
||
## 基本信息
|
||
|
||
- ID: Feature-20260416-0009
|
||
- 标题: KEY2 使用新布局 API 重构与联动刷新
|
||
- 状态:开发中
|
||
- 类型:修改
|
||
- 级别:L2 中等
|
||
- 模块: 测试用例 / Layout API 迁移样例
|
||
- 版本 / 分支: 当前工作区
|
||
- 环境: Windows + EasyX
|
||
- 负责人: Codex 协作修改
|
||
|
||
## 变更背景
|
||
|
||
- 背景:
|
||
- `KEY2` 原有布局主要依赖旧 `setAnchor(...)` 语义,无法清晰表达“固定尺寸 + 比例位移”。
|
||
- 32 位位号标签与位按钮分别按各自尺寸参与比例位移,窗口拉伸后会发生错位。
|
||
- 位按钮点击后,下面的十六进制、十进制与二进制显示区刷新链散落在多个回调中,维护成本高且容易漏更新。
|
||
- 目标:
|
||
- 把 `KEY2` 改成新布局 API 的首个完整迁移样例。
|
||
- 修复位标签与位按钮 resize 后错位问题。
|
||
- 让位按钮、位操作按钮、配置区按钮共用一条统一的显示刷新链。
|
||
- 不做什么:[可选]
|
||
- 不重构 `KEY1 / KEY5`
|
||
- 不引入 `KEY2` 以外的新功能
|
||
|
||
## 变更内容
|
||
|
||
- 变更摘要:
|
||
- 重构 `KEY2` 位选择区为“每一位一个小 Canvas 单元”。
|
||
- 使用新布局 API 重排 `KEY2` 的选择区、功能区、数值显示区、二进制显示区与配置区。
|
||
- 抽出统一的 bit 快照、应用、显示刷新链,收口位按钮与功能按钮的联动。
|
||
- 新增项:[可选]
|
||
- `KEY2` 内部的布局辅助策略函数
|
||
- `snapshotBits / applyBits / refreshDisplaysWithBits` 这类统一刷新路径
|
||
- 修改项:[可选]
|
||
- 32 位位标签与位按钮的组织方式
|
||
- 顶层区域的拉伸策略
|
||
- 一键置 0 / 一键置 1 / 左移 / 右移 / 位取反 / signed toggle 的显示刷新方式
|
||
- 删除 / 废弃项:[可选]
|
||
- 废弃旧的“位标签和位按钮分别做比例位移”的选择区组织方式
|
||
- 废弃散在多个回调中的局部显示刷新
|
||
- 受影响的文件 / 类 / 函数:
|
||
- [`z-testDome.cpp`](D:/programming/imGUI-easyX/imGui-easyX/app/z-testDome.cpp)
|
||
- 对外 API / 属性变化:[可选]
|
||
- 无框架级 API 变化,属于测试用例迁移
|
||
|
||
## 行为对照
|
||
|
||
- 变更前:
|
||
- 32 位位标签与位按钮在窗口拉伸后会发生错位。
|
||
- 位按钮点击后,显示区更新链不统一,后续维护难度高。
|
||
- `KEY2` 的多个区域仍依赖旧锚点表达,窗口拉伸时不够稳定。
|
||
- 变更后:
|
||
- 每一位作为独立单元整体位移,位标签与位按钮不再分离漂移。
|
||
- 位按钮、一键置 0/1、位取反、左移、右移、signed toggle 均通过统一刷新链更新显示区。
|
||
- 顶层五个区域在窗口拉伸后继续铺满可用空间,内部小控件保持固定尺寸。
|
||
- 兼容性说明:兼容
|
||
- 迁移说明:[可选]
|
||
- 这是新布局 API 的示例迁移,不影响其它 `KEY` 入口。
|
||
|
||
## 验证与落地
|
||
|
||
- 验证方式:
|
||
- 编译 `z-testDome.cpp /DKEY=2`
|
||
- 编译 `z-testDome.cpp /DKEY=5`
|
||
- 手动验证 `KEY2`:
|
||
- 窗口横向拉伸
|
||
- 位按钮点击
|
||
- 位取反 / 左移 / 右移
|
||
- 一键置 0 / 一键置 1
|
||
- 有符号 / 无符号切换
|
||
- 验证结果:
|
||
- 编译级验证通过。
|
||
- GUI 手动验证待本机继续确认。
|
||
- 关联 BUG / Fix:[可选]
|
||
- 无单独 BUG 记录,本次属于布局 API 落地后的示例迁移
|
||
- Commit:
|
||
- PR:[可选]
|
||
- 发布版本:[可选]
|
||
- 备注:[可选]
|
||
- 当前功能区采用左/中/右固定宽度面板布局;窗口变宽时可稳定铺满,若后续需要进一步适配极窄窗口,再考虑把功能区做成等比分栏。
|