À propos du projet
rui est une bibliothèque d'interface déclarative pour Rust conçue pour consolider les trois piliers du développement Web - structure, style et comportement - en une seule expression Rust. Contrairement aux frameworks qui reposent sur des moteurs de rendu externes ou des arbres de dépendances lourds, rui est entièrement autonome. Il intègre son propre parseur TrueType, rasteriseur de glyphes, antialiasing, disposition de texte et écrivain PNG, garantissant que l'interface est rendue de manière identique sur macOS, Windows, Linux (X11/Wayland) et WebAssembly, car le même code dessine chaque pixel.
La bibliothèque adopte une approche fonctionnelle où la vue est une fonction pure de l'état, et les gestionnaires d'événements sont des fonctions qui modifient directement l'état, éliminant ainsi le besoin de modèles de mutabilité intérieure comme `Rc` ou `RefCell`. La mise en style est intégrée directement dans la chaîne de composants via des appels de méthode (par exemple, `.pad()`, `.center()`, `.hover_fill()`), et les couleurs sont définies par des rôles sémantiques (par exemple, `Tone::Surface`) qui se résolvent par rapport au thème actif. Cela garantit une apparence cohérente entre les modes clair et foncé sans feuilles de style séparées.
rui suit une philosophie de "fondations, pas un catalogue". Il ne fournit pas de widgets complexes pré-conçus comme des cases à cocher ou des curseurs. À la place, il fournit sept primitives puissantes (telles que `draw`, `on_drag` et `ease`) qui permettent aux développeurs de composer ces contrôles eux-mêmes. Cette approche garantit que les composants de l'interface utilisateur sont personnalisables et libres des contraintes d'une bibliothèque de widgets rigide. Les éléments intégrés comme `button`, `text` et `row` sont eux-mêmes des recettes construites sur ces primitives, servant d'implémentations de référence.
L'accessibilité est un pilier architectural fondamental. L'arbre d'éléments double comme l'arbre d'accessibilité, dérivant automatiquement les rôles, les noms et les états de la structure de l'interface utilisateur. Cela garantit que les lecteurs d'écran et les technologies d'assistance reçoivent des informations précises sans nécessiter d'annotation manuelle. La bibliothèque impose des conventions d'accessibilité à travers des tests rigoureux, garantissant que les éléments interactifs ont des identités appropriées et que la gestion de la focalisation est cohérente.
Le test est pris en charge par un `Harness` déterministe qui pilote le pipeline de rendu réel dans un environnement sans tête. Il permet des assertions précises sur la disposition, la sortie pixel et les états d'interaction. Une police de test synthétique est utilisée pour garantir que les mesures de texte sont cohérentes sur différentes machines, permettant des tests d'intégration et de parité fiables.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.