Коротко
borealis: 4, Aurore: 15
каталогов перевода, переключаемых на ходу
borealis: C++17, Aurore: C++20
стандарт языка, с RTTI и исключениями
borealis: Yoga 2, Aurore: Yoga 3
стандартный flexbox CSS, с
gapиflexWrapborealis: 7, Aurore: 8
платформ: к семи добавился браузер
Новое в Aurore
Чего нет в borealis
Cadran включён по умолчанию и выключается одним вызовом; остальное ждёт, когда приложению понадобится.
Cadran, свой облик
Включён по умолчанию: панель значков, карточки, листы и диалоги, около шестидесяти векторных значков.
setCadran(false)сохраняет облик borealis.Темы в файлах
Файлы и папки
.theme: палитра из одного акцентного цвета, пресеты, девять времён года и праздников, изображения, украшения. Контраст каждой темы проверяется.Стили и привязка данных
Атрибуты
focus:,pressed:,disabled:иhover:, анимированные переходы, значения, привязанные из XML черезbind.Доступность
Роль, подпись и значение у каждого представления, озвучка фокуса на 15 языках, две высококонтрастные темы, масштаб текста, уменьшение движения.
Текст на любой письменности
Цветные эмодзи, иврит и арабский справа налево, FreeType как опция, свой шрифт у каждой подписи, ужатие под размер, кэш измерений.
Тестовый стенд
Без экрана, на имитированных часах: геймпад, клавиатура, касания и мышь вызовами, скриншоты сравниваются с эталонами, плюс цели для фаззинга.
Инспектор, перезагрузка, профилировщик
F12 или L3+R3 открывает поверх приложения дерево, блочную модель и обращения к теме; XML и темы перезагружаются при сохранении; бенчмарк ловит регрессии.
Плотность и маленькие экраны
Свободные, компактные или плотные размеры в
dp, атрибутыcompact:для узких экранов, пресет для маленького экрана одним вызовом.
Бок о бок
Что есть у обоих и чем это отличается
Слева borealis, каким остаётся его ветка wiliwili; справа 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, свободные шрифты; китайский, японский и корейский — из системы |
| Клавиатура | Enter, Escape, стрелки и почти ничего больше | Каждая кнопка контроллера на клавише, с переназначением |
| Фокус | Скрытый блок мог его получить | Скрытые и уничтоженные представления его не удерживают |
Сборка и платформы
| 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 удалена |
| Открытие ссылок | Любой адрес, через оболочку | Только 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.
#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 и вики.
Непрерывная интеграция
Сверх сборок borealis: форматирование, демо под ASan и UBSan, тесты, документация; действия закреплены за коммитами.
Выпуски
Conventional Commits и release-please, журнал изменений,
AURORE_VERSION_AT_LEASTв коде.Участие и безопасность
CONTRIBUTING.mdдля участников,SECURITY.mdдля закрытых сообщений об уязвимостях.Шаблон
В репозитории,
template/: минимальное приложение для компьютера и Switch.Уведомления
Уведомления о сторонних компонентах поставляются с каждым приложением; инструменты проверяют их и версии встроенных библиотек.
Переносите приложение с borealis?
Руководство ведёт шаг за шагом: подмодуль, сборка, ресурсы, облик, имена.