一览
borealis: 4, Aurore: 15
翻译目录,可在应用运行时切换
borealis: C++17, Aurore: C++20
语言标准,启用 RTTI 和异常
borealis: Yoga 2, Aurore: Yoga 3
标准 CSS flexbox,支持
gap和flexWrapborealis: 7, Aurore: 8
平台:七个之外新增浏览器
Aurore 新增
borealis 没有的
Cadran 默认开启,一次调用即可关闭;其余功能在应用需要时随时可用。
Cadran,自有外观
默认开启:图标导轨、卡片、面板和对话框、约六十个矢量图标。
setCadran(false)可保留 borealis 的外观。文件化的主题
.theme文件和文件夹:由一种强调色生成的调色板、预设、九个季节与节日、图片、装饰。每个主题的对比度都经过检查。样式与数据绑定
focus:、pressed:、disabled:和hover:属性,动画过渡,用bind从 XML 绑定的值。无障碍
每个视图都有角色、标签和值,15 种语言的焦点播报,两套高对比度主题,文字缩放,减弱动态效果。
适用于各种文字
彩色表情符号,从右到左的希伯来语和阿拉伯语,可选的 FreeType,每个标签单独的字体,自动缩小以适应的文字,测量结果缓存。
测试框架
无需屏幕,运行在模拟时钟上:通过调用操作手柄、键盘、触摸和鼠标,截图与参考图比对,另有模糊测试目标。
检查器、热重载、性能分析器
按 F12 或 L3+R3 在应用上方打开视图树、盒模型和主题查询;XML 和主题保存即重载;基准测试会发现性能退化。
密度与小屏幕
以
dp表示的宽松、紧凑或密集尺寸,针对窄屏的compact:属性,一次调用即可套用小屏幕预设。
并排对比
两者都有的,以及差别所在
左边是当前 wiliwili 分支的 borealis,右边是 Aurore。
外观与布局
| borealis wiliwili | Aurore | |
|---|---|---|
| 外观 | 自有外观,接近 Switch | 默认 Cadran;一次调用即可换回 borealis 的外观 |
| 颜色 | 浅色和深色两套主题,写死在代码中 | 每种颜色都是主题键,可在应用运行时切换 |
| 布局 | Yoga 2.0.0 | Yoga 3.2.1,标准 flexbox,gap,焦点可跨行移动的 flexWrap |
| 圆角与渐变 | 所有角使用同一半径 | 每个角单独设置半径,水平渐变,从代码创建渐变 |
| 焦点高亮 | 闪动的边框 | 在视图间平滑移动,一段时间后可淡出 |
| 图片 | 在界面线程中加载 | 可在后台解码;过大的图片在解码前即被拒绝 |
文字与输入
| borealis wiliwili | Aurore | |
|---|---|---|
| 翻译 | 4 种语言:英语、法语、俄语、简体中文 | 15 种语言,覆盖库、Cadran、提示和无障碍 |
| 切换语言 | 启动时加载一次 | 应用运行时,用 loadTranslations() |
| 文本查找 | 查找时使用异常 | 不使用异常,可从任意线程安全调用 |
| Switch 以外的字体 | 附带 Switch 风格字体 | 自由字体 Inter 和 PromptFont;中文、日文和韩文使用系统字体 |
| 键盘 | 回车、Esc、方向键,别的不多 | 手柄的每个按键都对应一个键,可重新映射 |
| 焦点 | 隐藏的盒子也可能获得焦点 | 隐藏或已销毁的视图绝不持有焦点 |
构建与平台
| borealis wiliwili | Aurore | |
|---|---|---|
| 语言 | C++17 | C++20,启用 RTTI 和异常 |
| CMake 目标 | borealis | Aurore::aurore, Aurore::test |
| 选项 | PLATFORM_*, USE_*, BRLS_* | AURORE_*、预设、可重定位安装 |
| 构建系统 | CMake 和 xmake | 仅 CMake |
| 平台 | 桌面、Switch、PS Vita、PS4、Android、iOS、tvOS | 同上,外加浏览器(Emscripten、WebGL 2) |
| 内置库 | Yoga 2.0.0, SDL 2.28.5, tinyxml2 9.0.0, nlohmann/json 3.11, glad 0.1.27 | Yoga 3.2.1, SDL 2.32.10, tinyxml2 11.0.0, nlohmann/json 3.12.0, glad 2.0.8 |
| Switch 音效 | 链接 libpulsar,但音效已关闭 | 已移除 libpulsar |
| 打开链接 | 任意地址,经由 shell | 仅 http 和 https,不经 shell |
| 许可证 | Apache 2.0 | borealis 的代码为 Apache 2.0;Cadran 为 GPLv3,因此用 Aurore 构建的应用也是 |
修复
一路修好的问题
来自 borealis 的其他分支、PlayGuard 的补丁,以及 Aurore 自身的工作。
- 输入阻塞计数器不再溢出回绕。
- 已销毁的视图不再被当作焦点;丢失的焦点会传到父框架。
- 导航会跳过隐藏的框架和滑块。
- SDL 下的手柄:拔出即关闭,重新连接后全部重新读取,短于一帧的按键也不会丢失。
- 每个回收列表检查自身宽度;清空删除池期间排队的视图会被保留。
- 字体解析器只在字体自身数据范围内读取。
- 日志每行立即写出。
- 已禁用的按钮不能再被点击。
取自 borealis 大家庭
这些提交保留了作者和 cherry picked from 行;其他的则重新编写,并在提交中注明出处。
迁移
应用需要改什么
大多数应用改名之后即可原样构建运行。指南列出每一行,以及之后要在屏幕上检查的地方。
- 名称:没有兼容层,每个
brls名称都有对应的 Aurore 名称;查找替换即可。 - 构建:C++20、
Aurore::aurore目标、AURORE_*选项。 - 许可证:Cadran 会链接进每个应用,因此用 Aurore 构建的应用为 GPLv3。
#include <borealis.hpp>#include <aurore.hpp>brls::Application::init();aurore::Application::init();BRLS_BIND(brls::Button, button, "go");AURORE_BIND(aurore::Button, button, "go");<brls:Box axis="column"><aurore:Box axis="column">textColor="@theme/brls/text"textColor="@theme/aurore/text"target_link_libraries(app borealis)target_link_libraries(app PRIVATE Aurore::aurore)cmake -DPLATFORM_DESKTOP=ON -DUSE_SDL2=ONcmake -DAURORE_PLATFORM=DESKTOP -DAURORE_WINDOW=SDL2BRLS_LANG=fr ./appAURORE_LANG=fr ./app
项目
有文档、有测试、有发布
文档
本站有 18 篇指南和 API 参考;borealis 则是 README 和 wiki。
持续集成
在 borealis 的构建之外:格式检查、ASan 和 UBSan 下运行的演示、测试、文档;Actions 固定到提交。
发布
Conventional Commits 和 release-please、更新日志、代码中的
AURORE_VERSION_AT_LEAST。贡献与安全
CONTRIBUTING.md面向贡献者,SECURITY.md用于私下报告漏洞。模板
仓库中的
template/:适用于桌面和 Switch 的最小应用。声明
每个应用都附带第三方声明;工具会检查这些声明以及内置库的版本。
要把应用从 borealis 迁移过来?
指南一步步带你完成:子模块、构建、资源、外观、名称。