Aurore и borealis

Всё, что умеет borealis, и то, чего ему не хватало

Aurore — это xfangfang/borealis (его ветка wiliwili), переименованный и развиваемый дальше для PlayGuard и PlayShelf. Всё, что есть в borealis, остаётся: его представления, платформы, драйверы. Вот что добавилось и что изменилось.

Сравниваются main Aurore и вершина ветки wiliwili borealis, с которой начинается Aurore. Выпусков Aurore пока нет.

Откуда Aurore
  1. natinusala/borealisИсходная библиотека
  2. xfangfang/borealis · wiliwiliЕго ветка для wiliwili, с которой начинается Aurore
  3. 45 коммитов из других форковПеренесены вместе с авторами
  4. 21 коммит из PlayGuardЕго собственные патчи к borealis
  5. JigSawFr/AuroreПереименован и развивается дальше

Коротко

Новое в Aurore

Чего нет в borealis

Cadran включён по умолчанию и выключается одним вызовом; остальное ждёт, когда приложению понадобится.

Бок о бок

Что есть у обоих и чем это отличается

Слева borealis, каким остаётся его ветка wiliwili; справа Aurore.

Облик и вёрстка

borealis wiliwiliAurore
ОбликСвой, близкий к облику SwitchCadran по умолчанию; облик borealis — один вызов
ЦветаСветлая и тёмная темы, заданные в кодеКаждый цвет — ключ темы, переключаемый на ходу
ВёрсткаYoga 2.0.0Yoga 3.2.1, стандартный flexbox, gap, flexWrap с фокусом между строками
Углы и градиентыОдин радиус для всех угловРадиус для каждого угла, горизонтальные градиенты, градиенты из кода
Подсветка фокусаПульсирующая рамкаСкользит от представления к представлению, может гаснуть со временем
ИзображенияЗагружаются в потоке интерфейсаМогут декодироваться в фоне; слишком большие отклоняются до декодирования

Текст и ввод

borealis wiliwiliAurore
Переводы4 языка: английский, французский, русский, упрощённый китайский15 языков: для библиотеки, Cadran, подсказок и доступности
Смена языкаЗагружается один раз, при запускеНа ходу, через loadTranslations()
Поиск строкИсключения при поискеБез исключений, безопасно из любого потока
Шрифты вне SwitchШрифты в стиле Switch в комплектеInter и PromptFont, свободные шрифты; китайский, японский и корейский — из системы
КлавиатураEnter, Escape, стрелки и почти ничего большеКаждая кнопка контроллера на клавише, с переназначением
ФокусСкрытый блок мог его получитьСкрытые и уничтоженные представления его не удерживают

Сборка и платформы

borealis wiliwiliAurore
ЯзыкC++17C++20, RTTI и исключения включены
Цель CMakeborealisAurore::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
Звуки на Switchlibpulsar подключена, её звуки выключеныlibpulsar удалена
Открытие ссылокЛюбой адрес, через оболочкуТолько http и https, без оболочки
Лицензия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.

Переход с 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?

Руководство ведёт шаг за шагом: подмодуль, сборка, ресурсы, облик, имена.