Size Preset Profiles

本页把当前提供的几档 size 模板整理成可直接复用的起始配置,目标不是给出唯一答案,而是帮助用户快速选一个合理起点。

建议和以下文档一起看:

  • size_selection_guide.md

  • canvas_feature_size_report.md

  • widget_feature_size_report.md

  • hq_size_report.md

  • size_preset_validation.md

对应模板文件位于:

  • example/HelloSizeAnalysis/ConfigProfiles/tiny_rom/app_egui_config.h

  • example/HelloSizeAnalysis/ConfigProfiles/basic_ui/app_egui_config.h

  • example/HelloSizeAnalysis/ConfigProfiles/dashboard/app_egui_config.h

  • example/HelloSizeAnalysis/ConfigProfiles/full_feature/app_egui_config.h

1. 使用原则

这些模板只负责“全局配置起点”,不负责替你决定业务代码里是否真的引用某个 widget 或绘制路径。

因此需要区分两层:

  • 第一层:EGUI_CONFIG_* 这类全局开关,由模板直接给出。

  • 第二层:具体 widget、canvas path、HQ path 是否被引用,由应用代码自己决定。

也就是说:

  • 有全局总开关的能力,优先用模板做裁剪。

  • 没有全局总开关的能力,优先通过“不引用对应 API 或 widget”让编译器和链接器回收代码。

2. 四档模板总览

Profile

目标

核心特点

tiny_rom

极限 ROM 裁剪

关闭 mask、codec、增强绘制、阴影、图层、触摸、默认 HQ 和额外图片格式

basic_ui

常规 UI 页面

保留触摸、滚动条、快速文字绘制,关闭 mask、codec、图层和默认 HQ

dashboard

看板 / 仪表 / 展示页

打开 QOI/RLE、增强绘制和阴影,保留触摸,仍然关闭 mask 和默认 HQ

full_feature

高配设备 / 演示工程

打开 mask、双 codec、图层、多点触控、焦点、额外图片格式,默认 HQ 仍保持关闭

3. tiny_rom

适合场景:

  • 小屏

  • 小 ROM

  • 以状态显示和基础交互为主

当前模板直接关闭了这些开关:

  • EGUI_CONFIG_FUNCTION_SUPPORT_MASK

  • EGUI_CONFIG_FUNCTION_IMAGE_CODEC_QOI

  • EGUI_CONFIG_FUNCTION_IMAGE_CODEC_RLE

  • EGUI_CONFIG_FUNCTION_WIDGET_ENHANCED_DRAW

  • EGUI_CONFIG_FUNCTION_SUPPORT_SHADOW

  • EGUI_CONFIG_FUNCTION_SUPPORT_LAYER

  • EGUI_CONFIG_FUNCTION_SUPPORT_SCROLLBAR

  • EGUI_CONFIG_FUNCTION_SUPPORT_TOUCH

  • EGUI_CONFIG_FUNCTION_SUPPORT_FOCUS

  • EGUI_CONFIG_CIRCLE_DEFAULT_ALGO_HQ

  • EGUI_CONFIG_FUNCTION_FONT_STD_FAST_DRAW

  • EGUI_CONFIG_FUNCTION_IMAGE_FORMAT_RGB565_8

  • EGUI_CONFIG_FUNCTION_IMAGE_FORMAT_ALPHA_8

仍然保留:

  • EGUI_CONFIG_FUNCTION_SUPPORT_KEY

建议:

  • 从这档开始时,不要默认引入重控件。

  • 只有业务明确需要时,再向上加功能。

4. basic_ui

适合场景:

  • 设置页

  • 表单页

  • 常规触摸交互

当前模板的特点:

  • 打开 SCROLLBARTOUCHEGUI_CONFIG_FUNCTION_FONT_STD_FAST_DRAW

  • 关闭 MASKQOIRLELAYERFOCUS、默认 HQ

  • 仍然保持增强绘制和阴影关闭

建议:

  • 这档适合作为绝大多数普通 UI 应用的起点。

  • 如果项目后续没有压缩图片资源,可以继续保持 codec 关闭。

5. dashboard

适合场景:

  • 看板

  • 仪表

  • 展示型页面

当前模板的特点:

  • 打开 QOIRLE

  • 打开 WIDGET_ENHANCED_DRAW

  • 打开 SHADOW

  • 保留 TOUCHSCROLLBAR

  • 仍然关闭 MASKLAYERFOCUS、默认 HQ

建议:

  • 这档适合已经接受更高视觉成本的项目。

  • 如果实际项目并不使用压缩图片资源,可以回退关闭 QOI/RLE

6. full_feature

适合场景:

  • 高配 MCU

  • 演示工程

  • 不以极限 ROM 为目标的项目

当前模板额外打开了:

  • EGUI_CONFIG_FUNCTION_SUPPORT_MASK

  • EGUI_CONFIG_FUNCTION_SUPPORT_LAYER

  • EGUI_CONFIG_FUNCTION_SUPPORT_MULTI_TOUCH

  • EGUI_CONFIG_FUNCTION_SUPPORT_KEY

  • EGUI_CONFIG_FUNCTION_SUPPORT_FOCUS

  • EGUI_CONFIG_FUNCTION_IMAGE_FORMAT_RGB565_8

  • EGUI_CONFIG_FUNCTION_IMAGE_FORMAT_ALPHA_8

同时保留:

  • QOI / RLE

  • WIDGET_ENHANCED_DRAW

  • SHADOW

  • TOUCH

  • SCROLLBAR

注意:

  • 即使是 full_feature,当前模板也没有把 EGUI_CONFIG_CIRCLE_DEFAULT_ALGO_HQ 改成 1

  • HQ 仍建议按场景显式启用,而不是作为全局默认行为。

7. 这些模板已经不再依赖 USER_CFLAGS

当前 size 分析链路已经改为:

  • 把模板内容写入应用本地的 override 头文件

  • 再由应用自己的 app_egui_config.h 体系接管

因此:

  • 批量报告脚本不再依赖 USER_CFLAGS 做 profile 切换

  • 模板的推荐用法是“复制到应用目录”或“作为应用本地 override 的来源”

8. 推荐使用顺序

建议这样使用这些模板:

  1. 先从最接近目标的 profile 起步。

  2. 先确认全局 EGUI_CONFIG_* 是否合理。

  3. 再根据业务代码决定是否真正引入某些 widget、canvas path 和 _hq 路径。

  4. 最后用 size_report.mdsize_preset_validation.md 做验证。

如果你现在没有明确判断,默认建议:

  • 普通 UI 项目从 basic_ui 起步

  • 小 ROM 项目从 tiny_rom 起步

  • 仪表 / 看板项目从 dashboard 起步

  • 演示或高配设备项目从 full_feature 起步