Проект 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!

Назад

Живое демо

Настоящее демо — в вашем браузере

Демо Aurore, собранное Emscripten: тот же код, что и на 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), память команд deko3d на Switch.
  • Скорость: никакой перераскладки для неизменённого текста или размера, 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 подключите commonOption.cmake и toolchain.cmake до project(), добавьте библиотеку после него и слинкуйте 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; Cadran, облик Aurore по умолчанию, — под GPLv3, как и приложение, собранное с ним. Свободное ПО, поддерживаемое JigSawFr.