一覽
borealis: 4, Aurore: 15
翻譯目錄,可在 App 執行時切換
borealis: C++17, Aurore: C++20
語言標準,啟用 RTTI 和例外處理
borealis: Yoga 2, Aurore: Yoga 3
標準 CSS flexbox,支援
gap和flexWrapborealis: 7, Aurore: 8
平台:七個之外新增瀏覽器
Aurore 新增
borealis 沒有的
Cadran 預設開啟,一次呼叫即可關閉;其餘功能在 App 需要時隨時可用。
Cadran,自有外觀
預設開啟:圖示軌道、卡片、面板和對話框、約六十個向量圖示。
setCadran(false)可保留 borealis 的外觀。以檔案定義的主題
.theme檔案和資料夾:由一種強調色產生的調色盤、預設集、九個季節與節日、圖片、裝飾。每個主題的對比度都經過檢查。樣式與資料繫結
focus:、pressed:、disabled:和hover:屬性,動畫轉場,用bind從 XML 繫結的值。無障礙
每個檢視都有角色、標籤和值,15 種語言的焦點朗讀,兩套高對比主題,文字縮放,減少動態效果。
適用各種文字
彩色表情符號,由右至左的希伯來文和阿拉伯文,可選用的 FreeType,每個標籤各自的字型,自動縮小以容納的文字,測量結果快取。
測試框架
不需螢幕,在模擬時鐘上執行:以呼叫操作手把、鍵盤、觸控和滑鼠,截圖與參考圖比對,另有模糊測試目標。
檢查器、熱重載、效能分析器
按 F12 或 L3+R3 在 App 上方開啟檢視樹、盒模型和主題查詢;XML 和主題儲存即重載;基準測試會發現效能退步。
密度與小螢幕
以
dp表示的寬鬆、緊湊或密集尺寸,針對窄螢幕的compact:屬性,一次呼叫即可套用小螢幕預設集。
並列對照
兩者都有的,以及差別所在
左邊是目前 wiliwili 分支的 borealis,右邊是 Aurore。
外觀與版面
| borealis wiliwili | Aurore | |
|---|---|---|
| 外觀 | 自有外觀,接近 Switch | 預設 Cadran;一次呼叫即可換回 borealis 的外觀 |
| 顏色 | 淺色和深色兩套主題,寫死在程式碼中 | 每種顏色都是主題鍵,可在 App 執行時切換 |
| 版面 | Yoga 2.0.0 | Yoga 3.2.1,標準 flexbox,gap,焦點可跨行移動的 flexWrap |
| 圓角與漸層 | 所有角使用同一半徑 | 每個角各自的半徑,水平漸層,從程式碼建立漸層 |
| 焦點醒目提示 | 閃動的邊框 | 在檢視間平滑移動,一段時間後可淡出 |
| 圖片 | 在介面執行緒中載入 | 可在背景解碼;過大的圖片在解碼前即被拒絕 |
文字與輸入
| borealis wiliwili | Aurore | |
|---|---|---|
| 翻譯 | 4 種語言:英文、法文、俄文、簡體中文 | 15 種語言,涵蓋程式庫、Cadran、提示和無障礙 |
| 切換語言 | 啟動時載入一次 | App 執行時,用 loadTranslations() |
| 文字查詢 | 查詢時使用例外 | 不使用例外,可從任何執行緒安全呼叫 |
| Switch 以外的字型 | 附帶 Switch 風格字型 | 自由字型 Inter 和 PromptFont;中文、日文和韓文使用系統字型 |
| 鍵盤 | Enter、Esc、方向鍵,其他不多 | 控制器的每個按鈕都對應一個按鍵,可重新對應 |
| 焦點 | 隱藏的方塊也可能取得焦點 | 隱藏或已銷毀的檢視絕不持有焦點 |
建置與平台
| 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 |
| 開啟連結 | 任何網址,透過 shell | 僅 http 和 https,不透過 shell |
| 授權 | Apache 2.0 | borealis 的程式碼為 Apache 2.0;Cadran 為 GPLv3,因此用 Aurore 建置的 App 也是 |
修正
一路修好的問題
來自 borealis 的其他分支、PlayGuard 的修補,以及 Aurore 本身的工作。
- 輸入封鎖計數器不再溢位繞回。
- 已銷毀的檢視不再被當作焦點;遺失的焦點會傳到父框架。
- 導覽會略過隱藏的框架和滑桿。
- SDL 下的控制器:拔除即關閉,重新連線後全部重新讀取,短於一格畫面的按壓也不會遺失。
- 每個重複利用清單檢查自身寬度;清空刪除池期間排入佇列的檢視會被保留。
- 字型剖析器只在字型本身的資料範圍內讀取。
- 記錄器每一行都立即寫出。
- 停用的按鈕不能再被點擊。
取自 borealis 大家族
這些提交保留了作者和 cherry picked from 行;其他的則重新撰寫,並在提交中註明出處。
轉換
App 需要改什麼
大多數 App 改名之後即可原樣建置執行。指南列出每一行,以及之後要在畫面上檢查的地方。
- 名稱:沒有相容層,每個
brls名稱都有對應的 Aurore 名稱;搜尋取代就好。 - 建置:C++20、
Aurore::aurore目標、AURORE_*選項。 - 授權:Cadran 會連結進每個 App,因此用 Aurore 建置的 App 為 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 和 wiki。
持續整合
在 borealis 的建置之外:格式檢查、在 ASan 和 UBSan 下執行的展示、測試、文件;Actions 固定到提交。
發布
Conventional Commits 和 release-please、更新紀錄、程式碼中的
AURORE_VERSION_AT_LEAST。貢獻與安全
CONTRIBUTING.md給貢獻者,SECURITY.md用於私下回報漏洞。範本
儲存庫中的
template/:適用於桌面和 Switch 的最小 App。聲明
每個 App 都附帶第三方聲明;工具會檢查這些聲明以及內建程式庫的版本。
要把 App 從 borealis 轉換過來?
指南一步步帶你完成:子模組、建置、資源、外觀、名稱。