Scene Builder
Aperçu
SceneBuilder est le pont entre le modèle de données (GridState) et la
couche de rendu. Il produit un SceneFrame — une liste immuable et ordonnée
de primitives de dessin.
Utilisation
Paramètres
SceneFrame
SceneFrame est produit à neuf à chaque frame — il n'y a pas d'état
mutable entre les frames. Cela rend le pipeline de rendu pur et prévisible.
Ordre de dessin
Les primitives sont ordonnées de l'arrière vers l'avant :
- Remplissages d'arrière-plan (fonds de cellules, lignes alternées)
- Lignes de grille
- Texte et images des cellules
- Superpositions de sélection
- En-têtes (collants, dessinés par-dessus)
- Scrollbars (couche la plus haute)
Le renderer les dessine dans l'ordre — les primitives ultérieures se superposent aux précédentes.
Ce que le builder calcule
Pour chaque frame, le builder :
- Détermine les lignes visibles à partir de
ViewportState - Itère sur les colonnes visibles (colonnes épinglées en premier)
- Émet des primitives
Rectpour les fonds de cellules - Émet des primitives
Linepour les lignes de grille - Formate les valeurs de cellules via
CellFormatet émet des primitivesText - Émet des primitives
Imagepour les cellules au format image - Dessine le surlignage de sélection (
Rectavec remplissage semi-transparent) - Dessine les surlignages de correspondance de recherche
- Dessine la superposition de survol de ligne
- Dessine la ligne d'en-tête collante
- Dessine les scrollbars (flèches, piste, curseur)
- Dessine le retour visuel de déplacement de colonne si actif
Coordonnées logiques
Toutes les coordonnées dans SceneFrame sont en pixels logiques
(pixels CSS). Le renderer est responsable d'appliquer le DPR :
ColumnDragHint
Lorsqu'un utilisateur déplace une colonne pour la réordonner, un
ColumnDragHint fournit un retour visuel :
Le builder affiche un fantôme semi-transparent de la colonne déplacée à la position actuelle de la souris.