Boréale 项目 · borealis 的分支

为你的应用打造 Switch 风格的界面,适配每一块屏幕

Aurore 是一个面向手柄、电视和触摸屏的 C++ 界面库。开箱即与 Nintendo Switch 的菜单如出一辙,也可以改造成任何其他风格。

尚无发布版本:子模块跟随 main。

Aurore 的演示,使用默认外观 Cadran:左侧是图标导轨,还有卡片、标签和按钮,底部是手柄按键提示。

运行平台

  • Nintendo Switch
  • Android
  • iOS
  • Windows
  • macOS
  • Linux
  • PS4
  • PS Vita
  • Browser

一个界面只需几行 XML

用 XML 描述界面,以 flexbox 布局;在 C++ 中绑定它的视图。焦点会自动跟随十字键,触摸和鼠标同样可用,每种颜色都跟随主题。

15 分钟动手搭建 →

界面 resources/xml/activity/hello.xml
<!-- resources/xml/activity/hello.xml -->
<aurore:AppletFrame>
    <aurore:Box
        title="Hello"
        axis="column"
        alignItems="center"
        justifyContent="center"
        gap="20">

        <aurore:Label
            text="@i18n/hello/welcome"
            fontSize="24" />

        <aurore:Button
            id="hello_button"
            style="primary"
            width="300"
            text="Say hello" />

    </aurore:Box>
</aurore:AppletFrame>
它的 Activity hello_activity.hpp
// hello_activity.hpp
#include <aurore.hpp>

class HelloActivity : public aurore::Activity
{
  public:
    CONTENT_FROM_XML_RES("activity/hello.xml");

    void onContentAvailable() override
    {
        button->registerClickAction([](aurore::View*) {
            aurore::Application::notify("Hello!");
            return true;
        });
    }

  private:
    AURORE_BIND(aurore::Button, button, "hello_button");
};
显示效果

Hello

欢迎使用 Aurore!

返回

在线演示

真正的演示,就在你的浏览器里

用 Emscripten 编译的 Aurore 演示:与 Switch 上相同的代码,由 WebGL 2 绘制。可用键盘、鼠标、触摸屏或屏幕上的手柄操作;所有主题和语言一应俱全。

在浏览器中试用

功能

游戏机菜单所需的一切

Cadran

独特的外观,无需一行代码

Cadran 是 PlayGuard 和 PlayShelf 的外观,也是 Aurore 的默认外观:图标导轨、卡片、模态窗口、操作菜单、矢量图标、浅色和深色主题,语言和主题可在应用运行时切换。aurore::Application::setCadran(false) 可保留 borealis 原本的外观。

Cadran 套件 →

主题文件夹:冬季

截图

不同外观下的演示

Aurore 的新增内容

延续 borealis

Aurore 跟随上游(xfangfang/borealis),并加入从其他分支挑选的修复和功能,以及其应用所需的内容:除修复外,每一项都需要主动开启。

所有改动及其 API →

Aurore 与 borealis 并排对比 →

  • 主题:主题文件和文件夹、由一种强调色生成的调色板、预设、图片、标志、图标、装饰和粒子,全部实时切换。
  • 样式:按状态设置的样式(焦点、按下、禁用、悬停)、过渡动画、数据绑定和无障碍标签。
  • 视图:复用单元格的网格和行、上下文菜单、图标按钮、Markdown。
  • 布局:Yoga 3、gap、焦点可跨行移动的 flexWrap、每个角单独的圆角、渐变。
  • 文字:每个标签的字体缩放、自动缩小以适应、干净的换行。
  • 焦点与提示:焦点不再丢失在隐藏或销毁的视图中;底栏提示保持稳定。
  • 平台:SDL 下手柄重新连接、浏览器(Emscripten)、Switch 上 deko3d 的命令内存。
  • 速度:文字或尺寸不变时不重新布局,XML 属性按需注册,释放未使用的纹理。

使用

在你的项目中

  1. 以 C++20 构建你的项目,并启用 RTTI 和异常。
  2. 将 Aurore 添加为子模块,并把它的 resources 文件夹复制到你的项目根目录。
    git submodule add -b main https://github.com/JigSawFr/aurore.git library/aurore
    git submodule update --init --recursive
  3. 在你的 CMakeLists.txt 中,于 project() 之前包含 commonOption.cmake 和 toolchain.cmake,之后添加该库,并链接 Aurore::aurore。
  4. 用 -DAURORE_PLATFORM=… 选择平台:DESKTOP、SWITCH、PSV、PS4、ANDROID、IOS。

从零开始?template/ 是一个可为桌面和 Switch 构建的最小应用。

从 borealis 迁移?更换子模块,然后把 brls::、<borealis.hpp> 和 BRLS_ 改成 Aurore 的名称:一次查找替换即可。 →

构建演示

在 Linux、macOS 或 Windows 上;其他平台的命令与 CI 中的相同。 →

git clone --recursive https://github.com/JigSawFr/aurore.git
cd aurore
cmake --preset desktop-glfw
cmake --build --preset desktop-glfw
./build/desktop-glfw/aurore_demo

基于 borealis 打造

运行在它之上的应用

文档

文档

许可证

borealis 的代码采用 Apache 2.0 许可证;Aurore 的默认外观 Cadran 采用 GPLv3,用它构建的应用也是如此。由 JigSawFr 维护的自由软件。