Skip to main content

Crate embassy_st7789v_graphics

Crate embassy_st7789v_graphics 

Source
Expand description

§embassy-st7789v-graphics

Couche graphique 2D no_std pour écrans TFT LCD ST7789V 240×320, construite au-dessus de embassy-st7789v.

§Rôle exact de ce crate

Le driver embassy-st7789v fournit déjà :

  • draw_pixel(), draw_hline(), draw_vline()
  • draw_rect(), fill_rect(), fill_screen()
  • draw_char(), draw_str(), draw_i16(), draw_u32(), draw_f32()
  • draw_char_scaled(), draw_str_scaled()
  • draw_bitmap()
  • set_orientation(), set_invert()

Ce crate ne duplique rien. Il ajoute uniquement les primitives géométriques que le driver ne propose pas :

FonctionAlgorithme
line()Bresenham integer-only
circle()Midpoint integer-only
fill_circle()Midpoint + hlines
triangle()3 appels à line()
fill_triangleScanline integer-only
ellipseMidpoint généralisé
bezier_quadDe Casteljau integer-only

§Architecture

┌──────────────────────────────────────────────────┐
│               Votre application                  │
│  line() / circle() / triangle() …               │
│  ecran.draw_str() / ecran.draw_f32() …          │  ← driver direct pour le texte
└──────────┬───────────────────────────────────────┘
           │ &mut Graphics
┌──────────▼──────────────────┐
│  Graphics (ce crate)        │
│  clipping · pixel() async   │
└──────────┬──────────────────┘
           │ draw_pixel() async
┌──────────▼──────────────────────────────────────┐
│     embassy-st7789v (driver)                    │
│  framebuffer SPI · RAMWR · fill_rect() …       │
└─────────────────────────────────────────────────┘

§Patron de borrow

Graphics tient un &mut St7789v pour toute sa durée de vie. Pour appeler les méthodes du driver directement (texte, remplissage, orientation…), gfx doit être sorti de portée au préalable.

loop {
    ecran.fill_screen(Color::BLACK).await.unwrap();
    {
        let mut gfx = Graphics::new(&mut ecran);
        line(&mut gfx, 0, 0, 239, 319, Color::WHITE).await;
        circle(&mut gfx, 120, 160, 60, Color::CYAN).await;
    } // ← borrow libéré
    ecran.draw_str(8, 10, b"BONJOUR", Color::YELLOW, Color::BLACK).await.unwrap();
}

§Note sur les erreurs SPI

Les fonctions de ce crate ignorent silencieusement les erreurs SPI (comme le fait également embassy-ssd1306-graphics pour le bus I2C). Si votre application requiert une gestion d’erreur fine, utilisez directement ecran.draw_pixel().

Structs§

Graphics
Contexte graphique pour le ST7789V 240×320.

Functions§

bezier_quad
Trace une courbe de Bézier quadratique (3 points de contrôle).
circle
Trace le contour d’un cercle.
ellipse
Trace le contour d’une ellipse.
fill_circle
Remplit un cercle (disque plein).
fill_triangle
Remplit un triangle défini par trois sommets.
line
Trace une ligne entre (x0, y0) et (x1, y1).
triangle
Trace le contour d’un triangle défini par trois sommets.