feat(lcd): use Montserrat clock and battery icon assets
This commit is contained in:
+33
-3
@@ -124,9 +124,38 @@ DMA 等待超时后禁止继续复用可能仍被硬件读取的缓冲,GFX 传
|
||||
|
||||
左上显示系统本地时间,尚未同步时显示 `--:--`。当前配置为中国标准时间;时区应通过现有时间服务配置,不在显示模块硬编码。
|
||||
|
||||
右上显示领域层提供的电量百分比、有效性及充电状态。未知时显示 `--%`,充电显示绿色电池及闪电缺口,低电量显示红色。显示层不得从 ADC 电压自行重算电量。
|
||||
右上只显示电池图标,不再显示百分比。电量有效性及充电状态仍来自领域层;
|
||||
未知电量时暂不显示图标,避免把未知值画成某个电量档位。显示层不得从 ADC
|
||||
电压自行重算电量。旧底部低电量提示保留。
|
||||
|
||||
状态栏复用内置 5×7 点阵数字和程序绘制图标,无需额外字体包。GFX 状态栏为 320×40 RGB565 图层,只在内容变化时刷新。PNG 表情在每帧合成时更新状态;二维码和屏幕边界测试不叠加它。
|
||||
时间改用现有 LVGL 依赖中的 Montserrat 14 字形,仅提取 `0..9`、冒号及横线,
|
||||
不缩放,保留原始 4-bit Alpha。白字及黑色偏移阴影直接合成到已有缓冲,
|
||||
并非创建 GFX label,也不启动 LVGL GUI。字形数组常量位于 Flash,无动态字形缓存。
|
||||
电池使用用户提供的 `battery_icons.zip` 中 40×20 的十张透明 PNG(五档及充电版本),
|
||||
位于 `(272,12)`(320 像素宽时);不采用 80×40 版本,不拉伸、不改图标画风。
|
||||
电量分档:0~10→1、11~25→25、26~50→50、51~75→75、76~100→100。
|
||||
图标名表示视觉档位,不是重新计算 SOC;充电状态选择对应带闪电版本。
|
||||
PNG 原图和优化图均保留,但实际编译为 RGB565+A8 调色板+游程数组,
|
||||
每条游程为“数量、调色板索引”,与表情的四字节 RLE 不同。
|
||||
在 Flash 中流式读取并按 Alpha 混合,不解码成常驻纹理。
|
||||
GFX 状态栏仍为 320×40 RGB565 图层,只在内容变化时刷新。PNG 表情在每帧合成时
|
||||
更新状态;二维码和屏幕边界测试不叠加它。两种后端使用同一字体和图标。
|
||||
|
||||
资源生成:`tools/prepare_status_hud_assets.py`;原图及优化图:
|
||||
`components/platform/assets/status_hud/battery_source/` 与 `battery_optimized/`;
|
||||
实际编译:`components/platform/src/generated/lcd_status_assets.c`,私有描述见
|
||||
`components/platform/internal/lcd_status_assets.h`。运行生成脚本会重建优化 PNG/C,
|
||||
原 PNG 不覆盖;首次导入可指定 `--import-zip <压缩包路径>`,日常验证用 `--check`。
|
||||
需要 Pillow;字形来自现有依赖,不需要下载新字体。
|
||||
|
||||
本次 HUD 构建镜像 3,105,872 B,相对前一版 3,094,176 B 增加 11,696 B。
|
||||
生成资产的 ESP32-S3 对象只读数据为 12,083 B:字形位图 425 B、字形描述 96 B、
|
||||
十图标压缩载荷 11,442 B、图标描述 120 B。原十 PNG 9,973 B,优化后 9,806 B;
|
||||
压缩载荷仍比优化 PNG 大 1,636 B,选择它是为避免 PNG 解码及额外像素缓存,
|
||||
不能称作最小 Flash。新增常驻/初始化像素 PSRAM、普通堆、静态可写 RAM、DMA
|
||||
均为 0;复用原状态栏/行缓冲,仍有局部栈和绘制 CPU 成本,需实机测量。
|
||||
四个主机显示测试、ESP-IDF 5.5.4 构建及日志关闭/GFX 关闭的 LCD 编译均通过;
|
||||
字体大小、图标显示、充电插拔及最低内存仍待实机验收。
|
||||
|
||||
当前不能据此声称已实现任意中文文字。后续中文提示需要选择字体、字符子集、布局及字形缓存策略;数字时间和电量不需要引入完整中文字库或大型界面框架。
|
||||
|
||||
@@ -393,7 +422,8 @@ python3 tools/test_lcd_listening_gfx.py
|
||||
| 不需要触摸/复杂 GUI,精致流畅为主 | 局部 GFX 图层,不迁移完整 LVGL GUI |
|
||||
| 拆分原表情,允许性能适配但整体保持 | 待机/listening 拆分与固定静态层;后续延续原画风,大幅变化需确认 |
|
||||
| 眼睛向中间闭合,避免重影和撕裂 | 单一轮廓、闭眼弧线、缓存和连续传输;没有 TE,不能承诺零撕裂 |
|
||||
| 统一所有返回待机入口、补时间电量 | 已实现统一后端及 HUD;不能覆盖新 pending;数字点阵不代表任意中文文字 |
|
||||
| 统一所有返回待机入口、补时间电量 | 已实现统一后端及 HUD;不能覆盖新 pending;Montserrat 数字子集不代表任意中文文字 |
|
||||
| 时间使用 Montserrat 14、移除电量数值、使用提供的电池图标 | 直接合成字形子集和 40×20 图标;构建与主机检查通过,待实机验收 |
|
||||
| 增加可开关日志、计算具体帧数 | 已有 emote_fps/emote_cost;区分步骤/实际更新/面板扫描率 |
|
||||
| 全中文开发说明与 AI 注意事项 | 本指南、资产台账及 AGENTS.md 中文 GFX 约束;原有仓库架构规范保留 |
|
||||
| listening 也迁移为流畅表情并报告开销 | 已接入,开销见上表;保持业务监听生命周期与旧 PNG 后备 |
|
||||
|
||||
Reference in New Issue
Block a user