Aurore

Un projet Boréale · fork de borealis

Une interface façon Switch pour votre app, sur tous les écrans

Aurore est une bibliothèque d'interface en C++ pour les manettes, les télés et les écrans tactiles. Elle ressemble d'emblée aux menus de la Nintendo Switch, et se restyle en tout autre chose.

Pas encore de version : le sous-module suit main.

La démo d'Aurore dans Cadran, son allure par défaut : un rail d'icônes à gauche, des cartes, des pastilles et des boutons, les touches de la manette en bas.

Où elle tourne

  • Nintendo Switch
  • Android
  • iOS
  • Windows
  • macOS
  • Linux
  • PS4
  • PS Vita
  • Browser

Un écran, c'est quelques lignes de XML

Décrivez l'écran en XML, mis en page en flexbox ; liez ses vues en C++. Le focus suit la croix directionnelle tout seul, le tactile et la souris marchent aussi, et chaque couleur suit le thème.

Le construire en 15 minutes →

L'écran
<!-- 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>
Son activité
// 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");
};

Démo en direct

La vraie démo, dans votre navigateur

La démo d'Aurore compilée avec Emscripten : le même code que sur une Switch, dessiné en WebGL 2. Clavier, souris, écran tactile ou manette à l'écran ; tous les thèmes et toutes les langues.

L'essayer dans le navigateur

Fonctions

Tout ce qu'il faut à un menu de console

Cadran

Une allure à elle, sans une ligne de code

Cadran, l'allure de PlayGuard et PlayShelf, est celle d'Aurore par défaut : un rail d'icônes, des cartes, des modales, des feuilles d'actions, des icônes vectorielles, un thème clair et un sombre, langue et thème changés pendant que l'app tourne. aurore::Application::setCadran(false) garde celle de borealis.

Le kit de Cadran →

Un dossier de thème : Hiver

Captures

La démo, sous plusieurs allures

Ce qu'Aurore ajoute

borealis, poursuivie

Aurore suit l'amont (xfangfang/borealis) et ajoute des corrections et des fonctions reprises d'autres forks, et ce dont ses apps ont besoin : chacune à activer, sauf les corrections.

Chaque changement et son API →

  • Thèmes : fichiers et dossiers de thème, palettes tirées d'une couleur, préréglages, images, logos, icônes, décors et particules, tous changés à la volée.
  • Styles : styles par état (focus, appuyé, désactivé, survol), transitions, liaison de données et libellés d'accessibilité.
  • Vues : une grille et une rangée qui recyclent, des menus contextuels, des boutons-icônes, du Markdown.
  • Mise en page : Yoga 3, gap, flexWrap avec le focus d'une ligne à l'autre, un arrondi par coin, des dégradés.
  • Texte : une échelle de police pour chaque libellé, réduction pour tenir, des retours à la ligne propres.
  • Focus et indications : plus de focus perdu dans une vue cachée ou détruite ; des indications de pied de page stables.
  • Plateformes : manettes reconnectées sous SDL, le navigateur (Emscripten), la mémoire de commandes de deko3d sur la Switch.
  • Vitesse : pas de remise en page pour un texte ou une taille inchangés, attributs XML enregistrés à la demande, textures inutilisées libérées.

L'utiliser

Dans votre projet

  1. Compilez votre projet en C++20, avec RTTI et exceptions.
  2. Ajoutez Aurore en sous-module, et copiez son dossier resources à la racine de votre projet.
    git submodule add -b main https://github.com/JigSawFr/aurore.git library/aurore
    git submodule update --init --recursive
  3. Dans votre CMakeLists.txt, incluez commonOption.cmake et toolchain.cmake avant project(), ajoutez la bibliothèque après, et liez Aurore::aurore.
  4. Choisissez la plateforme avec -DAURORE_PLATFORM=… : DESKTOP, SWITCH, PSV, PS4, ANDROID, IOS.

Vous partez de zéro ? template/ est une app minimale qui se compile pour l'ordinateur et la Switch.

Vous venez de borealis ? brls::, <borealis.hpp> et BRLS_ marchent encore jusqu'à la 1.0 : changer le sous-module suffit. →

Compiler la démo

Sous Linux, macOS ou Windows ; les commandes des autres plateformes sont celles de la 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

Faites avec borealis

Des apps qui tournent dessus

Documentation

Documentation

Licence

Le code de borealis est sous licence Apache 2.0 ; Cadran, l'allure par défaut d'Aurore, est sous GPLv3, et une app construite avec aussi. Un logiciel libre, maintenu par JigSawFr.