Um ecrã são poucas linhas de XML
Descreve o ecrã em XML, disposto com flexbox; liga as suas vistas em C++. O foco segue o botão direcional sozinho, o toque e o rato também funcionam, e cada cor segue o tema.
<!-- 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>// 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
Bem-vindo à Aurore!
Voltar
Demo ao vivo
A verdadeira demo, no teu navegador
A demo da Aurore compilada com Emscripten: o mesmo código que numa Switch, desenhado com WebGL 2. O teclado, o rato, um ecrã tátil ou o comando no ecrã; todos os temas e idiomas.
Funcionalidades
Tudo o que o menu de uma consola precisa
Feita para comandos
O foco move-se sozinho com o botão direcional; o toque e o rato também funcionam, e o rodapé mostra os botões que fazem alguma coisa.
Disposição flexbox
Cada vista é disposta pelo Yoga, descrita em XML, com código só onde importa.
gap,flexWrap, um raio por canto.Gráficos vetoriais
Acelerados por hardware com o nanovg: OpenGL, Direct3D 11, deko3d na Switch, GXM na Vita, à escala de um televisor.
Componentes prontos
Separadores, listas e grelhas que reciclam as células, células de definições, caixas de diálogo, folhas de ações, avisos, controlos deslizantes, Markdown, todos com o estilo de um tema.
Temas
Cada cor é uma chave do tema. Ficheiros e pastas de tema trazem paletas, imagens, logótipos, ícones e decorações, trocados com a app em execução, com o contraste verificado.
15 idiomas
Um catálogo JSON por idioma, trocado com a app em execução; emoji a cores e texto da direita para a esquerda como opções.
Ferramentas
Um banco de testes com tempo simulado e comparação de capturas de ecrã, um inspetor (F12), recarregamento a quente de XML e temas, um profiler, um modelo de app.
A caixa de ferramentas
Registo, animações, temporizadores, tarefas em segundo plano, armazenamento: o que uma app precisa à volta dos seus ecrãs.
Cadran
Um aspeto próprio, sem uma linha de código
O Cadran, o aspeto do PlayGuard e do PlayShelf, é o predefinido da Aurore: uma barra de ícones, cartões, janelas modais, folhas de ações, ícones vetoriais, um tema claro e um escuro, idioma e tema trocados com a app em execução. aurore::Application::setCadran(false) mantém o do borealis.
Capturas de ecrã
A demo, com vários aspetos












O que a Aurore acrescenta
O borealis, continuado
A Aurore segue o projeto original (xfangfang/borealis) e acrescenta correções e funcionalidades vindas de outros forks, e o que as suas apps precisam: cada uma opcional, exceto as correções.
- Temas: ficheiros e pastas de tema, paletas a partir de uma cor de destaque, predefinições, imagens, logótipos, ícones, decorações e partículas, tudo trocado em direto.
- Estilos: estilos por estado (foco, premido, desativado, ao passar o ponteiro), transições, ligação de dados e etiquetas de acessibilidade.
- Vistas: uma grelha e uma linha que reciclam, menus de contexto, botões de ícone, Markdown.
- Disposição: Yoga 3,
gap,flexWrapcom o foco de uma linha para outra, um raio por canto, gradientes. - Texto: uma escala de letra para cada etiqueta, redução para caber, quebras de linha limpas.
- Foco e indicações: o foco já não se perde em vistas ocultas ou destruídas; indicações estáveis no rodapé.
- Plataformas: comandos religados com SDL, o navegador (Emscripten), a memória de instruções do deko3d na Switch.
- Velocidade: sem nova disposição para um texto ou tamanho inalterados, atributos XML registados a pedido, texturas não usadas libertadas.
Usa-a
No teu projeto
- Compila o teu projeto como C++20, com RTTI e exceções.
- Adiciona a Aurore como submódulo e copia a pasta
resourcesdela para a raiz do teu projeto.git submodule add -b main https://github.com/JigSawFr/aurore.git library/aurore git submodule update --init --recursive - No teu
CMakeLists.txt, incluicommonOption.cmakeetoolchain.cmakeantes deproject(), adiciona a biblioteca depois e ligaAurore::aurore. - Escolhe a plataforma com
-DAURORE_PLATFORM=…:DESKTOP,SWITCH,PSV,PS4,ANDROID,IOS.
Começas do zero? template/ é uma app mínima que compila para o computador e para a Switch.
Vens do borealis? Troca o submódulo e depois muda o nome de brls::, <borealis.hpp> e BRLS_ para os da Aurore: um procurar e substituir. →
Compilar a demo
Em Linux, macOS ou Windows; os comandos das outras plataformas são os da 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_demoFeito com o borealis
Apps que correm nela
- PlayGuardControlo parental para a Nintendo Switch, na própria consola
- PlayShelfUma biblioteca de jogos, catálogo e transferências para a Switch
- Moonlight-SwitchStreaming de jogos Moonlight para a Switch
- wiliwiliCliente bilibili para PC, PS4, PS Vita, Xbox e Switch
- switchfinCliente Jellyfin para PC, PS4 e Switch
- SimpleModDownloaderMods do GameBanana, transferidos na Switch
Documentação
Documentação
Licença
O código do borealis está sob a licença Apache 2.0; o Cadran, o aspeto predefinido da Aurore, é GPLv3, tal como uma app criada com ele. Software livre, mantido por JigSawFr.