avoid some conversion slice to iterator where possible

This commit is contained in:
Valentin Trophime 2024-03-06 14:23:34 +01:00 committed by Yuri Iozzelli
parent 693f0bdd8f
commit 7fa69abd72
2 changed files with 13 additions and 13 deletions

View file

@ -27,14 +27,8 @@ where
if self.bounding_box().contains(point) { if self.bounding_box().contains(point) {
let x = point.x as u16; let x = point.x as u16;
let y = point.y as u16; let y = point.y as u16;
let color = RawU16::from(color).into_inner();
self.draw_raw_iter( self.draw_raw_slice(x, y, x, y, &[color])?;
x,
y,
x,
y,
core::iter::once(RawU16::from(color).into_inner()),
)?;
} }
} }
Ok(()) Ok(())

View file

@ -28,8 +28,7 @@
use embedded_hal::delay::DelayNs; use embedded_hal::delay::DelayNs;
use embedded_hal::digital::OutputPin; use embedded_hal::digital::OutputPin;
use core::iter::once; use display_interface::DataFormat;
use display_interface::DataFormat::{U16BEIter, U8Iter};
use display_interface::WriteOnlyDataCommand; use display_interface::WriteOnlyDataCommand;
#[cfg(feature = "graphics")] #[cfg(feature = "graphics")]
@ -198,15 +197,21 @@ where
IFACE: WriteOnlyDataCommand, IFACE: WriteOnlyDataCommand,
{ {
fn command(&mut self, cmd: Command, args: &[u8]) -> Result { fn command(&mut self, cmd: Command, args: &[u8]) -> Result {
self.interface.send_commands(U8Iter(&mut once(cmd as u8)))?; self.interface.send_commands(DataFormat::U8(&[cmd as u8]))?;
self.interface.send_data(U8Iter(&mut args.iter().cloned())) self.interface.send_data(DataFormat::U8(args))
} }
fn write_iter<I: IntoIterator<Item = u16>>(&mut self, data: I) -> Result { fn write_iter<I: IntoIterator<Item = u16>>(&mut self, data: I) -> Result {
self.command(Command::MemoryWrite, &[])?; self.command(Command::MemoryWrite, &[])?;
use DataFormat::U16BEIter;
self.interface.send_data(U16BEIter(&mut data.into_iter())) self.interface.send_data(U16BEIter(&mut data.into_iter()))
} }
fn write_slice(&mut self, data: &[u16]) -> Result {
self.command(Command::MemoryWrite, &[])?;
self.interface.send_data(DataFormat::U16(data))
}
fn set_window(&mut self, x0: u16, y0: u16, x1: u16, y1: u16) -> Result { fn set_window(&mut self, x0: u16, y0: u16, x1: u16, y1: u16) -> Result {
self.command( self.command(
Command::ColumnAddressSet, Command::ColumnAddressSet,
@ -303,7 +308,8 @@ where
/// ///
/// The expected format is rgb565. /// The expected format is rgb565.
pub fn draw_raw_slice(&mut self, x0: u16, y0: u16, x1: u16, y1: u16, data: &[u16]) -> Result { pub fn draw_raw_slice(&mut self, x0: u16, y0: u16, x1: u16, y1: u16, data: &[u16]) -> Result {
self.draw_raw_iter(x0, y0, x1, y1, data.iter().copied()) self.set_window(x0, y0, x1, y1)?;
self.write_slice(data)
} }
/// Change the orientation of the screen /// Change the orientation of the screen