From 3b0b5962ec92d2167aab801bbf8fae053010e3c5 Mon Sep 17 00:00:00 2001 From: Chris Date: Fri, 19 Oct 2018 16:26:31 +0200 Subject: [PATCH] Streamline a few things --- examples/embedded_linux_epd1in54/src/main.rs | 4 +-- examples/embedded_linux_epd4in2/src/main.rs | 5 +-- src/epd1in54/graphics.rs | 37 +++++--------------- src/epd4in2/graphics.rs | 36 +++++-------------- src/graphics.rs | 9 ++--- src/lib.rs | 4 +-- 6 files changed, 27 insertions(+), 68 deletions(-) diff --git a/examples/embedded_linux_epd1in54/src/main.rs b/examples/embedded_linux_epd1in54/src/main.rs index d3fe524..1bafd82 100644 --- a/examples/embedded_linux_epd1in54/src/main.rs +++ b/examples/embedded_linux_epd1in54/src/main.rs @@ -8,7 +8,7 @@ extern crate eink_waveshare_rs; use eink_waveshare_rs::{ EPD1in54, Buffer1in54, - graphics::{Display, DisplayRotation, DisplayDimension}, + graphics::{Display, DisplayRotation}, color::Color, WaveshareDisplay, }; @@ -126,7 +126,7 @@ fn run() -> Result<(), std::io::Error> { println!("Test all the rotations"); let mut buffer = Buffer1in54::default(); - let mut display = Display::new(buffer.width(), buffer.height(), &mut buffer.buffer); + let mut display = Display::new(epd.width(), epd.height(), &mut buffer.buffer); display.set_rotation(DisplayRotation::Rotate0); display.draw( Font6x8::render_str("Rotate 0!") diff --git a/examples/embedded_linux_epd4in2/src/main.rs b/examples/embedded_linux_epd4in2/src/main.rs index d064359..17d2714 100644 --- a/examples/embedded_linux_epd4in2/src/main.rs +++ b/examples/embedded_linux_epd4in2/src/main.rs @@ -7,7 +7,7 @@ extern crate eink_waveshare_rs; use eink_waveshare_rs::{ EPD4in2, - DisplayEink42BlackWhite, + Buffer4in2, graphics::{Display, DisplayRotation}, color::Color, WaveshareDisplay, @@ -117,7 +117,8 @@ fn run() -> Result<(), std::io::Error> { let mut epd4in2 = EPD4in2::new(&mut spi, cs, busy_in, dc, rst, &mut delay).expect("eink initalize error"); println!("Test all the rotations"); - let mut display = DisplayEink42BlackWhite::default(); + let mut buffer = Buffer4in2::default(); + let mut display = Display::new(epd4in2.width(), epd4in2.height(), &mut buffer.buffer); display.set_rotation(DisplayRotation::Rotate0); display.draw( Font6x8::render_str("Rotate 0!") diff --git a/src/epd1in54/graphics.rs b/src/epd1in54/graphics.rs index d71b9dd..010b974 100644 --- a/src/epd1in54/graphics.rs +++ b/src/epd1in54/graphics.rs @@ -1,19 +1,12 @@ use epd1in54::{DEFAULT_BACKGROUND_COLOR, WIDTH, HEIGHT}; -use graphics::DisplayDimension; -pub struct DisplayEink1in54BlackWhite { - width: u32, - height: u32, +pub struct Buffer1in54BlackWhite { pub buffer: [u8; WIDTH as usize * HEIGHT as usize / 8], } - - -impl Default for DisplayEink1in54BlackWhite { +impl Default for Buffer1in54BlackWhite { fn default() -> Self { - DisplayEink1in54BlackWhite { - width: WIDTH, - height: HEIGHT, + Buffer1in54BlackWhite { buffer: [ DEFAULT_BACKGROUND_COLOR.get_byte_value(); WIDTH as usize * HEIGHT as usize / 8 @@ -22,18 +15,6 @@ impl Default for DisplayEink1in54BlackWhite { } } -impl DisplayDimension for DisplayEink1in54BlackWhite { - fn buffer(&mut self) -> &mut [u8] { - &mut self.buffer - } - fn width(&self) -> u32 { - self.width - } - fn height(&self) -> u32 { - self.height - } -} - #[cfg(test)] mod tests { @@ -47,7 +28,7 @@ mod tests { // test buffer length #[test] fn graphics_size() { - let mut display1in54 = DisplayEink1in54BlackWhite::default(); + let mut display1in54 = Buffer1in54BlackWhite::default(); let display = Display::new(WIDTH, HEIGHT, &mut display1in54.buffer); assert_eq!(display.buffer().len(), 5000); } @@ -55,7 +36,7 @@ mod tests { // test default background color on all bytes #[test] fn graphics_default() { - let mut display1in54 = DisplayEink1in54BlackWhite::default(); + let mut display1in54 = Buffer1in54BlackWhite::default(); let display = Display::new(WIDTH, HEIGHT, &mut display1in54.buffer); for &byte in display.buffer() { assert_eq!(byte, DEFAULT_BACKGROUND_COLOR.get_byte_value()); @@ -64,7 +45,7 @@ mod tests { #[test] fn graphics_rotation_0() { - let mut display1in54 = DisplayEink1in54BlackWhite::default(); + let mut display1in54 = Buffer1in54BlackWhite::default(); let mut display = Display::new(WIDTH, HEIGHT, &mut display1in54.buffer); display.draw( Line::new(Coord::new(0, 0), Coord::new(7, 0)) @@ -83,7 +64,7 @@ mod tests { #[test] fn graphics_rotation_90() { - let mut display1in54 = DisplayEink1in54BlackWhite::default(); + let mut display1in54 = Buffer1in54BlackWhite::default(); let mut display = Display::new(WIDTH, HEIGHT, &mut display1in54.buffer); display.set_rotation(DisplayRotation::Rotate90); display.draw( @@ -103,7 +84,7 @@ mod tests { #[test] fn graphics_rotation_180() { - let mut display1in54 = DisplayEink1in54BlackWhite::default(); + let mut display1in54 = Buffer1in54BlackWhite::default(); let mut display = Display::new(WIDTH, HEIGHT, &mut display1in54.buffer); display.set_rotation(DisplayRotation::Rotate180); display.draw( @@ -127,7 +108,7 @@ mod tests { #[test] fn graphics_rotation_270() { - let mut display1in54 = DisplayEink1in54BlackWhite::default(); + let mut display1in54 = Buffer1in54BlackWhite::default(); let mut display = Display::new(WIDTH, HEIGHT, &mut display1in54.buffer); display.set_rotation(DisplayRotation::Rotate270); display.draw( diff --git a/src/epd4in2/graphics.rs b/src/epd4in2/graphics.rs index ac0f788..586234d 100644 --- a/src/epd4in2/graphics.rs +++ b/src/epd4in2/graphics.rs @@ -1,17 +1,12 @@ use epd4in2::constants::{DEFAULT_BACKGROUND_COLOR, WIDTH, HEIGHT}; -use graphics::DisplayDimension; -pub struct DisplayEink4in2BlackWhite { - width: u32, - height: u32, +pub struct Buffer4in2 { pub buffer: [u8; WIDTH as usize * HEIGHT as usize / 8], } -impl Default for DisplayEink4in2BlackWhite { +impl Default for Buffer4in2 { fn default() -> Self { - DisplayEink4in2BlackWhite { - width: WIDTH, - height: HEIGHT, + Buffer4in2 { buffer: [ DEFAULT_BACKGROUND_COLOR.get_byte_value(); WIDTH as usize * HEIGHT as usize / 8 @@ -20,19 +15,6 @@ impl Default for DisplayEink4in2BlackWhite { } } -impl DisplayDimension for DisplayEink4in2BlackWhite { - fn buffer(&mut self) -> &mut [u8] { - &mut self.buffer - } - fn width(&self) -> u32 { - self.width - } - fn height(&self) -> u32 { - self.height - } -} - - #[cfg(test)] mod tests { @@ -47,7 +29,7 @@ mod tests { // test buffer length #[test] fn graphics_size() { - let mut display4in2 = DisplayEink4in2BlackWhite::default(); + let mut display4in2 = Buffer4in2::default(); let display = Display::new(WIDTH, HEIGHT, &mut display4in2.buffer); assert_eq!(display.buffer().len(), 15000); } @@ -55,7 +37,7 @@ mod tests { // test default background color on all bytes #[test] fn graphics_default() { - let mut display4in2 = DisplayEink4in2BlackWhite::default(); + let mut display4in2 = Buffer4in2::default(); let display = Display::new(WIDTH, HEIGHT, &mut display4in2.buffer); use epd4in2; for &byte in display.buffer() { @@ -65,7 +47,7 @@ mod tests { #[test] fn graphics_rotation_0() { - let mut display4in2 = DisplayEink4in2BlackWhite::default(); + let mut display4in2 = Buffer4in2::default(); let mut display = Display::new(WIDTH, HEIGHT, &mut display4in2.buffer); display.draw( Line::new(Coord::new(0, 0), Coord::new(7, 0)) @@ -84,7 +66,7 @@ mod tests { #[test] fn graphics_rotation_90() { - let mut display4in2 = DisplayEink4in2BlackWhite::default(); + let mut display4in2 = Buffer4in2::default(); let mut display = Display::new(WIDTH, HEIGHT, &mut display4in2.buffer); display.set_rotation(DisplayRotation::Rotate90); display.draw( @@ -104,7 +86,7 @@ mod tests { #[test] fn graphics_rotation_180() { - let mut display4in2 = DisplayEink4in2BlackWhite::default(); + let mut display4in2 = Buffer4in2::default(); let mut display = Display::new(WIDTH, HEIGHT, &mut display4in2.buffer); display.set_rotation(DisplayRotation::Rotate180); display.draw( @@ -128,7 +110,7 @@ mod tests { #[test] fn graphics_rotation_270() { - let mut display4in2 = DisplayEink4in2BlackWhite::default(); + let mut display4in2 = Buffer4in2::default(); let mut display = Display::new(WIDTH, HEIGHT, &mut display4in2.buffer); display.set_rotation(DisplayRotation::Rotate270); display.draw( diff --git a/src/graphics.rs b/src/graphics.rs index fd8b85d..55672b8 100644 --- a/src/graphics.rs +++ b/src/graphics.rs @@ -20,13 +20,6 @@ impl Default for DisplayRotation { } } -pub trait DisplayDimension { - fn buffer(&mut self) -> &mut [u8]; - fn width(&self) -> u32; - fn height(&self) -> u32; -} - - pub struct Display<'a> { width: u32, height: u32, @@ -49,9 +42,11 @@ impl<'a> Display<'a> { pub fn buffer(&self) -> &[u8] { &self.buffer } + pub fn set_rotation(&mut self, rotation: DisplayRotation) { self.rotation = rotation; } + pub fn rotation(&self) -> DisplayRotation { self.rotation } diff --git a/src/lib.rs b/src/lib.rs index 36e54b8..37d9980 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -67,14 +67,14 @@ mod epd4in2; #[cfg(feature = "epd4in2")] pub use epd4in2::EPD4in2; #[cfg(feature = "epd4in2")] -pub use epd4in2::graphics::DisplayEink4in2BlackWhite as Buffer4in2; +pub use epd4in2::graphics::Buffer4in2; #[cfg(feature = "epd1in54")] mod epd1in54; #[cfg(feature = "epd1in54")] pub use epd1in54::EPD1in54; #[cfg(feature = "epd1in54")] -pub use epd1in54::graphics::DisplayEink1in54BlackWhite as Buffer1in54; +pub use epd1in54::graphics::Buffer1in54BlackWhite as Buffer1in54; #[cfg(feature = "epd2in9")]