Skip to main content

Crate embassy_ssd1306_graphics

Crate embassy_ssd1306_graphics 

Source
Expand description

§embassy-ssd1306-graphics

Couche graphique 2D no_std pour écrans OLED SSD1306 (128×64), construite au-dessus de embassy-ssd1306.

§Rôle exact de ce crate

Le driver embassy-ssd1306 fournit déjà :

  • draw_pixel(), draw_hline(), draw_vline()
  • draw_rect(), draw_filled_rect()
  • draw_char(), draw_str(), draw_i16()
  • draw_bitmap()
  • clear(), fill(), flush()

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

FonctionAlgorithme
line()Bresenham integer-only
circleMidpoint integer-only
fill_circleMidpoint + hlines
triangle3 appels à line()
ellipseMidpoint généralisé
bezier_quadDe Casteljau integer-only
fill_triangleScanline integer-only

§Architecture

┌──────────────────────────────────────┐
│          Votre application           │
│  line() / circle() / triangle() …   │
│  oled.draw_str() / oled.draw_i16()  │  ← driver direct pour le texte
└──────────┬───────────────────────────┘
           │ &mut Graphics       │ &mut Ssd1306
┌──────────▼───────────┐         │
│  Graphics (ce crate) │         │
│  clipping · pixel()  │         │
└──────────┬───────────┘         │
           └─────────────────────┘
                   │ draw_pixel()
┌──────────────────▼───────────────────┐
│       embassy-ssd1306 (driver)       │
│  framebuffer · I2C · flush()         │
└──────────────────────────────────────┘

§Patron de borrow

Graphics tient un &mut Ssd1306 pour toute sa durée de vie. Pour appeler oled.flush(), oled.clear() ou oled.draw_str(), gfx doit être sorti de portée au préalable.

loop {
    oled.clear();
    {
        let mut gfx = Graphics::new(&mut oled);
        line(&mut gfx, 0, 0, 127, 63, true);
        circle(&mut gfx, 64, 32, 20, true);
    } // ← borrow libéré
    oled.draw_str(40, 3, b"RPi2350");
    oled.flush().await.unwrap();
}

Structs§

Graphics
Contexte graphique.

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.