pub trait Frame: Copy + Default {
    type Mtx: Matrix;

    const COLS: usize = ;
    const ROWS: usize = ;

    fn row_plan(&self, row: usize) -> &RowPlan;
    fn row_plan_mut(&mut self, row: usize) -> &mut RowPlan;

    fn set<T>(&mut self, image: &T)
    where
        T: Render + ?Sized
, { ... } }
Expand description

A ‘Compiled’ representation of an image to be displayed.

Frames are populated from images implementing [Render], then passed on to [Display::set_frame()].

Implementing Frame

Implementations of Frame do two things:

  • specify the [Matrix] used to convert between image and matrix coordinates
  • act like an array of [RowPlan]s, one for each matrix row.

Note that implementations of Frame must also implement Copy and Default.

Example implementation

#[derive(Copy, Clone)]
struct SimpleFrame (
    [RowPlan; 3]
);

impl Default for SimpleFrame {
    fn default() -> SimpleFrame {
        SimpleFrame([RowPlan::default(); SimpleFrame::ROWS])
    }
}

impl Frame for SimpleFrame {
    type Mtx = SimpleMatrix;

    fn row_plan(&self, row: usize) -> &RowPlan {
        &self.0[row]
    }

    fn row_plan_mut(&mut self, row: usize) -> &mut RowPlan {
        &mut self.0[row]
    }
}

Required Associated Types

The Matrix used to convert between image and matrix coordinates.

Provided Associated Constants

The number of pins connected to LED columns.

The number of pins connected to LED rows.

Required Methods

Returns a reference to the RowPlan for a row of LEDs.

Panics

Panics if row is not in the range 0..ROWS

Returns a mutable reference to the RowPlan for a row of LEDs.

Panics

Panics if row is not in the range 0..ROWS

Provided Methods

Stores a new image into the frame.

Example:

frame.set(GreyscaleImage::blank());

Implementors