Files
STM32F4-Base/Drivers/BSP/UI/ui_tokens.h
T
wandering1 0f7b5a87fb chore(编号): 存量编号全量转语义短语,门禁识别面与语料同批重打
登记簿、文档与代码注释里的存量字母加数字编号(N-x / S-x / T-x / E-x / A-x / 卡号)
一律改写为语义短语,净删 2,028 处引用;删除基线与待确认、并行分道方案、排期详述、
采集保护收尾 4 篇(内容已并入 docs/任务规划/README 与登记簿)。

门禁机器与三张账同批重打:check_ids.py 新增变更记录行豁免与第二根护栏
undecidable_total_ceiling;check_test_traceability.py 只加 stdout/stderr UTF-8
reconfigure(TC_RE 未动);check_cubemx_survival.py 的 --write 固定 newline=LF;
id_registry / id_aliases(+19 条 retired-to-phrase)/ id_known_backlog 重打。

test/ 56 个文件同步 TC 标签语义化,其中 18 个 TU 改了 CHECK / printf 里的标签文字,
是本批唯一改变构建产物的文件集合。

为什么合成一笔、不拆四笔(实测撞闸,非偏好):pre-commit 跑钩子前会 stash 未 staged
部分,拆开后中间提交必然是「新规则 + 旧语料」——实跑可判定 85.15% < 基线 86.00%、
不可判定 1,453 > 上限 1,166,编号门禁直接拦下。编号识别面与它描述的语料只能同码移动。

实跑基线(工作区全量):754 文件 / 8,230 处编号字面量 / 可判定 7,079 = 86.01%
(基线 86.0%,容差 0.1pp)/ 不可判定绝对数 1,151(上限 1,166)/ 校验 1-6 错误级 0 /
告警 = 悬空 2(App/algo/freq.c 的 S2,属 §4.4 同号不同义)+ 孤儿 50。

基线从 84.0 抬到 86.0 的理由见 docs/门禁说明/id-check.md §7.6:本批真删了 2,028 处
引用,可判定面随真实内容上升,不是把分母做小。同批新增排除 docs/硬件平台/ 语料,使
识别面少 264 处——芯片手册位号与网表料号不属编号空间(registry 有 excluded_paths_note)。

⚠ 余量只剩 0.11pp(约 10 处)与绝对数 15 处:把「可判定的引用」改成散文会立刻撞第二
根护栏。另遗留一项:id_aliases 里 retired 的 N / S / T / A 别名没有 scope(U1~U5 有),
今后有人新写一个 A-4,校验 3 不会响,只能靠人,建议下批补 scope。

固件不变证据:115 个 .c/.h 剥注释并归一字符串后与 HEAD 逐字节全等,残留代码差异 0;
App / Src / Drivers 的字符串字面量零改动。@build 0 错误 0 警告;40/40 主机套件、2,889
断言全通过;覆盖率 line 89.2% / func 92.6%;pre-commit 48 钩子 --all-files 全绿;
check_doc_links --all 通过(176 文档,章节引用无法判定 0);逐字节卫生核过:14 个带
BOM 文件与 HEAD 一致、0 个 CR、0 个 U+FFFD,字符串字面量纯 ASCII。

.cubemx_survival_baseline.json 的 watchdog-module 哈希 56bf27 变 2bb051 属合法:
Src/freertos.c 的 USER CODE 区内只有注释文字随编号改写,代码未变。

同批带上体积同码凭证与 RAM 台账行(@build 之后盖戳):RW_IRAM1 79,008 B / 60.3%,
RW_CCM 57,376 B / 87.9%,阈值 92%。
2026-10-26 12:28:14 +08:00

69 lines
4.5 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
* 模块名称:UI Design Tokens (UI 设计令牌层 L0)
* 模块功能:UI 视觉骨架的唯一取值来源——屏幕几何、内容页骨架(标题/页脚/文本
* 条带/选中带内缩)、列表页原型(首行顶/行距/带高/两列 x/每页行数)、
* 滚动条宽、文本缓冲长度、1bpp 语义色、UI 任务节拍与待机阈值;
* 各页面/框架文件只引用本头令牌,不再自带同值字面量
* (治理背景见 docs/问题记录/项目审查与优化建议报告.md §6.3 L0);
* 纯取值定义,不含任何逻辑;改一处即全局生效,改前必须跑 ui-verify 像素回归
* 适用平台:STM32F407ZGTx / PC 模拟器(两端共用)
* 作者:王建锋
* 创建日期:2026-10-15
* 修改记录:
* v1.0 2026-10-15 王建锋 创建初始版本(收编散落各 UI 文件的布局/颜色/缓冲魔数,
* 纯替换、零行为变化;像素与替换前逐位一致)
*/
#ifndef UI_TOKENS_H
#define UI_TOKENS_H
/*
* 依赖说明:
* 1. 屏幕几何(UI_SCREEN_W / UI_SCREEN_H / UI_FB_SIZE)的**权威定义在 ui_port.h**
* (显示端口,MCU 与模拟器两端共用),本头复用而不重复定义——避免同名宏二次定义。
* 2. 语义色宏展开为 LVGL 取色函数调用,故引用方须已包含 "lvgl.h"
* (UI 各 .c 均经 ui_content_page.h / ui_menu_view.h 等间接包含)。
*/
#include "ui_port.h"
/* ── 内容页骨架(框架 ui_content_page.c 与各自绘页共用)────────────────────── */
#define UI_TITLE_Y 2 /* 标题放置 y(居中;CJK 字形顶距 +1 → 墨迹自 y=3 起) */
#define UI_PAGE_LINE_Y 143 /* 页脚"第 X 页,共 Y 页"放置 y */
#define UI_TEXT_BAND_H 15 /* 单行文本条带下延量(字体行高 13 + 余量):y2 = y + 本值 */
#define UI_BUF_STRLEN 32 /* 动态行 / 页脚文本缓冲长度(含 NUL;超出行带即被裁切) */
#define UI_SEL_BAND_INSET_L 2 /* 选中白带左内缩(x1 = 本值) */
#define UI_SEL_BAND_INSET_R 3 /* 选中白带右内缩(x2 = 屏宽 - 本值,即止于 x=156) */
#define UI_FOOTER_X 6 /* 页脚文本左起 x(左对齐留白,与实机一致) */
/* ── 列表页原型(交流量/直流量/运行记录/自检记录/网口设置共用一套骨架)──────── */
#define UI_LIST_TOP 24 /* 首行槽顶 y */
#define UI_ROW_PITCH 14 /* 行距(相邻行槽顶间距) */
#define UI_ROW_BAND_H 13 /* 选中白带高(= 字体行高;selectable 页须 >0 否则选中行不可见) */
#define UI_LIST_LEFT_X 7 /* 左列 x(名) */
#define UI_LIST_RIGHT_X 101 /* 右列 x(值) */
#define UI_LIST_ROWS 8u /* 每页可见行数 */
/* ── 菜单显示层 ───────────────────────────────────────────────────────────── */
#define UI_SCROLLBAR_W 4 /* 自动滚动条宽(px;行超框高时出现) */
/* ── 1bpp 语义色(LV_COLOR_FORMAT_I1)─────────────────────────────────────── */
/*
* 本屏只有黑白两值,但保留语义名:换色深时只改本段即可平移,不必回改各绘制点。
* 极性(实测,勿凭直觉改):文本/分隔线/边框一律取 white(1bpp 下即"暗墨"),
* black 是底;选中行反显 = 白底黑字,故 SEL 前景取 black、SEL 背景取 white。
*/
#define UI_COL_FG lv_color_white() /* 墨:文本 / 分隔线 / 边框 / 滚动条 */
#define UI_COL_BG lv_color_black() /* 底:黑 */
#define UI_COL_SEL_FG lv_color_black() /* 选中行字色(反显后为黑字) */
#define UI_COL_SEL_BG lv_color_white() /* 选中行带底色(反显后为白带) */
/* ── UI 任务与待机策略 ────────────────────────────────────────────────────── */
#define UI_TASK_TICK_MS 10 /* uiTask 主循环周期:LVGL 推进步长 = osDelay 时长 */
#define UI_STANDBY_IDLE_MS 60000u /* 无操作进入待机屏的阈值(ms) */
#endif /* UI_TOKENS_H */