Aurore 与 borealis

borealis 能做的一切,以及它所欠缺的

Aurore 是 xfangfang/borealis(其 wiliwili 分支)改名后为 PlayGuard 和 PlayShelf 继续发展的版本。borealis 拥有的一切都保留:视图、平台、驱动。下面是新增的内容和改变之处。

对比对象:Aurore 的 main,以及 Aurore 起步处 borealis wiliwili 的最新提交。Aurore 尚未发布版本。

Aurore 的来历
  1. natinusala/borealis最初的库
  2. xfangfang/borealis · wiliwili为 wiliwili 建的分支,Aurore 由此起步
  3. 来自其他分支的 45 个提交连同作者一起引入
  4. 来自 PlayGuard 的 21 个提交PlayGuard 自己的 borealis 补丁
  5. JigSawFr/Aurore改名并继续发展

一览

Aurore 新增

borealis 没有的

Cadran 默认开启,一次调用即可关闭;其余功能在应用需要时随时可用。

并排对比

两者都有的,以及差别所在

左边是当前 wiliwili 分支的 borealis,右边是 Aurore。

外观与布局

borealis wiliwiliAurore
外观自有外观,接近 Switch默认 Cadran;一次调用即可换回 borealis 的外观
颜色浅色和深色两套主题,写死在代码中每种颜色都是主题键,可在应用运行时切换
布局Yoga 2.0.0Yoga 3.2.1,标准 flexbox,gap,焦点可跨行移动的 flexWrap
圆角与渐变所有角使用同一半径每个角单独设置半径,水平渐变,从代码创建渐变
焦点高亮闪动的边框在视图间平滑移动,一段时间后可淡出
图片在界面线程中加载可在后台解码;过大的图片在解码前即被拒绝

文字与输入

borealis wiliwiliAurore
翻译4 种语言:英语、法语、俄语、简体中文15 种语言,覆盖库、Cadran、提示和无障碍
切换语言启动时加载一次应用运行时,用 loadTranslations()
文本查找查找时使用异常不使用异常,可从任意线程安全调用
Switch 以外的字体附带 Switch 风格字体自由字体 Inter 和 PromptFont;中文、日文和韩文使用系统字体
键盘回车、Esc、方向键,别的不多手柄的每个按键都对应一个键,可重新映射
焦点隐藏的盒子也可能获得焦点隐藏或已销毁的视图绝不持有焦点

构建与平台

borealis wiliwiliAurore
语言C++17C++20,启用 RTTI 和异常
CMake 目标borealisAurore::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.27Yoga 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.0borealis 的代码为 Apache 2.0;Cadran 为 GPLv3,因此用 Aurore 构建的应用也是

修复

一路修好的问题

来自 borealis 的其他分支、PlayGuard 的补丁,以及 Aurore 自身的工作。

  • 输入阻塞计数器不再溢出回绕。
  • 已销毁的视图不再被当作焦点;丢失的焦点会传到父框架。
  • 导航会跳过隐藏的框架和滑块。
  • SDL 下的手柄:拔出即关闭,重新连接后全部重新读取,短于一帧的按键也不会丢失。
  • 每个回收列表检查自身宽度;清空删除池期间排队的视图会被保留。
  • 字体解析器只在字体自身数据范围内读取。
  • 日志每行立即写出。
  • 已禁用的按钮不能再被点击。

取自 borealis 大家庭

这些提交保留了作者和 cherry picked from 行;其他的则重新编写,并在提交中注明出处。

迁移

应用需要改什么

大多数应用改名之后即可原样构建运行。指南列出每一行,以及之后要在屏幕上检查的地方。

  • 名称:没有兼容层,每个 brls 名称都有对应的 Aurore 名称;查找替换即可。
  • 构建:C++20、Aurore::aurore 目标、AURORE_* 选项。
  • 许可证:Cadran 会链接进每个应用,因此用 Aurore 构建的应用为 GPLv3。

从 borealis 迁移 →

my-app:borealis → Aurore
#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

项目

有文档、有测试、有发布

要把应用从 borealis 迁移过来?

指南一步步带你完成:子模块、构建、资源、外观、名称。