2 points par GN⁺ 2024-04-02 | Aucun commentaire pour le moment. | Partager sur WhatsApp

De quoi s'agit-il exactement ?

  • Une bibliothèque qui reproduit une grande partie de l’API « Toolbox » du Macintosh Classic ; ce n’est pas une implémentation complète, mais c’est suffisant pour créer quelques applications simples.
  • Une fonctionnalité ajoutée à l’émulateur Apple //e MII, l’un de ces projets qui semblent viser un record du monde en matière d’ajout de fonctionnalités.

Pourquoi ?

  • Il fallait une bibliothèque d’interface pour MII, avec peu de dépendances et sans style « orienté jeu ».
  • Le projet a commencé avec l’UI en mode immédiat Nuklear, mais celle-ci s’est révélée très limitée et peu pratique dès qu’une personnalisation devenait nécessaire.
  • Le moteur de mise en page de l’UI n’était pas satisfaisant et, contrairement à sa promesse de conservation d’état, il maintenait en pratique l’état à partir de valeurs de hachage.
  • Autrefois, les interfaces étaient façonnées avec un vrai savoir-faire ; aujourd’hui, elles sont souvent décidées sans réel sens du design ni de l’utilisabilité.
  • Le développement de sa propre bibliothèque a commencé en réutilisant plusieurs éléments déjà disponibles.

Que peut faire cette bibliothèque ?

  • Elle reprend quelques-uns des « managers » de la Toolbox Macintosh, avec un fonctionnement adapté aux systèmes modernes.
  • Elle est conçue pour dessiner sur un « écran » via un tampon ARGB, que l’on peut ensuite recopier là où c’est nécessaire.
  • La bibliothèque suit les zones « invalidées » et redessine uniquement ce qui est nécessaire afin de minimiser l’overdraw.

En quoi diffère-t-elle de l’original ?

  • Visuellement, elle part de MacOS 8/9, mais supprime entièrement les nuances de gris.
  • Côté API, elle est entièrement asynchrone, et il n’est pas possible de dessiner dans une fenêtre ou un GrafPort à la demande comme avec l’original.
  • Tout est construit autour de mui_window ou mui_control.

Gestionnaire de fenêtres

  • Permet de créer et de dessiner des fenêtres.
  • Dispose d’un maximum de 15 « couches » et peut gérer le clipping, entre autres.

Gestionnaire de menus

  • Fournit une barre de menus, des menus, des coches, des raccourcis clavier, etc., avec une apparence de System 7/8 ou GS/OS.

Gestionnaire de contrôles

  • Fournit des boutons, cases à cocher, boutons radio, barres de défilement (verticales), zones de texte, etc.

Gestionnaire de listes

  • Conçu pour afficher des noms de fichiers, avec prise en charge des touches fléchées, Page Up/Down, molette de défilement, etc.

Alertes

  • Fournit des alertes classiques avec boutons « Annuler » et « OK ».

Fichiers standard

  • Fournit une boîte de dialogue d’ouverture de fichier.

Gestionnaire de ressources

  • Aucun gestionnaire de ressources n’est fourni.

Quelles sont les dépendances ?

  • La seule dépendance externe est libpixman.
  • Utilise libpixman, libcg, stb_truetype.h, stb_ttc.h, etc.

Comment compiler ?

  • Un Makefile simple permet de compiler la bibliothèque ainsi que les tests/démos/exemples avec la commande make à la racine du projet.

Comment l’utiliser ?

  • Le mieux est de partir de mui_shell.c et mui_widgets_demo.c puis de les modifier.
  • Charge mui_widgets_demo.so comme plugin et le recharge automatiquement lorsqu’un changement est détecté.

FAQ !

  • Pas de mode sombre, de thèmes, de fenêtres transparentes, d’effet cube, de menus collants, d’outils ou frameworks dernier cri, de nouveaux bindings de langage, ni de prise en charge de Wayland.

L’avis de GN⁺

  • Cette bibliothèque est un projet intéressant qui réinvente l’interface classique du Macintosh pour des systèmes modernes. Elle peut susciter chez les développeurs une certaine nostalgie des anciens designs d’interface.
  • Une bibliothèque d’interface asynchrone convient davantage au développement d’applications modernes, et cette bibliothèque adopte précisément cette approche contemporaine.
  • Elle peut être particulièrement utile aux développeurs attentifs à l’efficacité des ressources. Le fait de minimiser l’overdraw et de ne redessiner que les zones nécessaires peut aider à optimiser les performances.
  • En revanche, elle ne propose pas de fonctionnalités modernes comme le mode sombre ou les thèmes, et ne répondra donc pas forcément aux besoins de tous les développeurs.
  • Parmi les bibliothèques UI modernes offrant des fonctionnalités similaires, on peut citer des frameworks comme Qt, GTK ou Electron, qui proposent un ensemble de fonctions et un support plus étendus.

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.