Primitives de scène

ScenePrimitive

Chaque frame est une liste plate de valeurs ScenePrimitive. Il existe cinq variantes :

#[non_exhaustive]
pub enum ScenePrimitive {
    Rect(RectPrimitive),
    Text(TextPrimitive),
    Line(LinePrimitive),
    Polygon(PolygonPrimitive),
    Image(ImagePrimitive),
}

Les renderers personnalises doivent inclure un bras generique (_ => {}) lors du matching de ScenePrimitive, car l'enum est #[non_exhaustive].

RectPrimitive

Rectangle rempli avec contour et coins arrondis optionnels.

ChampTypeDescription
xf64Bord gauche (px logiques)
yf64Bord supérieur (px logiques)
widthf64Largeur (px logiques)
heightf64Hauteur (px logiques)
fillColorCouleur de remplissage
strokeOption<Color>Couleur de contour (None = pas de contour)
stroke_widthf64Épaisseur du contour (px logiques)
corner_radiusf64Rayon des coins (0 = angles vifs)

Utilisé pour : arrière-plans de cellules, en-têtes, rectangles de sélection, éléments de la scrollbar.

TextPrimitive

Texte avec découpage et alignement.

ChampTypeDescription
xf64Bord gauche (px logiques)
yf64Position de la ligne de base y (px logiques)
textStringContenu textuel
colorColorCouleur du texte
font_sizef64Taille de police (px logiques)
boldboolGraisse de police 600
clipOption<[f64; 4]>Rectangle de découpage [x, y, w, h]
alignTextAlignLeft, Center ou Right

Utilisé pour : valeurs de cellules, en-têtes, numéros de lignes, surlignages de recherche.

LinePrimitive

Segment de ligne droite.

ChampTypeDescription
x1, y1f64Point de départ
x2, y2f64Point d'arrivée
colorColorCouleur de la ligne
widthf64Épaisseur de la ligne (px logiques)

Utilisé pour : lignes de grille, bordures d'en-têtes, lignes de séparation.

PolygonPrimitive

Polygone convexe rempli avec coins arrondis optionnels.

ChampTypeDescription
pointsVec<[f64; 2]>Sommets sous forme de paires [x, y]
fillColorCouleur de remplissage
corner_radiusf64Rayon des coins (0 = angles vifs)

Utilisé pour : flèches d'indicateur de tri, boutons fléchés de la scrollbar.

ImagePrimitive

Image chargée depuis une URL.

ChampTypeDescription
urlStringURL de l'image
x, yf64Position (px logiques)
width, heightf64Espace disponible
corner_radiusf64Découpage arrondi
clipOption<[f64; 4]>Rectangle de découpage

Utilisé pour : cellules CellFormat::Image et CellFormat::ImageText.

Color

pub struct Color { pub r: u8, pub g: u8, pub b: u8, pub a: u8 }

Color::rgb(255, 255, 255)      // blanc opaque
Color::rgba(0, 0, 0, 128)      // noir 50% transparent
color.to_css()                  // "rgba(255,255,255,1.0000)"