diff --git a/src/epd1in54/graphics.rs b/src/epd1in54/graphics.rs index 79f5622..8c7c773 100644 --- a/src/epd1in54/graphics.rs +++ b/src/epd1in54/graphics.rs @@ -1,17 +1,7 @@ -use graphics::{ - outside_display, - rotation, - DisplayRotation, - Display -}; -use color::Color; -use embedded_graphics::prelude::*; - -use epd1in54::{DEFAULT_BACKGROUND_COLOR, WIDTH, HEIGHT}; - -pub struct DisplayEink1in54BlackWhite { - buffer: [u8; WIDTH as usize * HEIGHT as usize / 8], - rotation: DisplayRotation, +use epd4in2::constants::{DEFAULT_BACKGROUND_COLOR, WIDTH, HEIGHT}; + +pub struct DisplayEink1in54BlackWhite { + pub buffer: [u8; WIDTH as usize * HEIGHT as usize / 8], } impl Default for DisplayEink1in54BlackWhite { @@ -20,71 +10,34 @@ impl Default for DisplayEink1in54BlackWhite { buffer: [ DEFAULT_BACKGROUND_COLOR.get_byte_value(); WIDTH as usize * HEIGHT as usize / 8 - ], - rotation: DisplayRotation::default() + ] } } } -impl Display for DisplayEink1in54BlackWhite { - fn buffer(&self) -> &[u8] { - &self.buffer - } - fn set_rotation(&mut self, rotation: DisplayRotation) { - self.rotation = rotation; - } - fn rotation(&self) -> DisplayRotation { - self.rotation - } -} - - -impl Drawing for DisplayEink1in54BlackWhite { - fn draw(&mut self, item_pixels: T) - where - T: Iterator> - { - let width = WIDTH as u32; - let height = HEIGHT as u32; - - for Pixel(UnsignedCoord(x,y), color) in item_pixels { - if outside_display(x, y, width, height, self.rotation) { - return; - } - - let (idx, bit) = rotation(x, y, width, height, self.rotation); - - let idx = idx as usize; - match color { - Color::Black => { - self.buffer[idx] &= !bit; - } - Color::White => { - self.buffer[idx] |= bit; - } - } - } - } -} #[cfg(test)] mod tests { use super::*; - use epd1in54::{DEFAULT_BACKGROUND_COLOR}; + use graphics::{DisplayRotation, Graphics}; use embedded_graphics::coord::Coord; use embedded_graphics::primitives::Line; + use color::Color; + use embedded_graphics::prelude::*; // test buffer length #[test] fn graphics_size() { - let display = DisplayEink1in54BlackWhite::default(); + let mut display1in54 = DisplayEink1in54BlackWhite::default(); + let display = Graphics::new(WIDTH, HEIGHT, &mut display1in54.buffer); assert_eq!(display.buffer().len(), 5000); } // test default background color on all bytes #[test] fn graphics_default() { - let display = DisplayEink1in54BlackWhite::default(); + let mut display1in54 = DisplayEink1in54BlackWhite::default(); + let display = Graphics::new(WIDTH, HEIGHT, &mut display1in54.buffer); for &byte in display.buffer() { assert_eq!(byte, DEFAULT_BACKGROUND_COLOR.get_byte_value()); } @@ -92,7 +45,8 @@ mod tests { #[test] fn graphics_rotation_0() { - let mut display = DisplayEink1in54BlackWhite::default(); + let mut display1in54 = DisplayEink1in54BlackWhite::default(); + let mut display = Graphics::new(WIDTH, HEIGHT, &mut display1in54.buffer); display.draw( Line::new(Coord::new(0, 0), Coord::new(7, 0)) .with_stroke(Some(Color::Black)) @@ -110,7 +64,8 @@ mod tests { #[test] fn graphics_rotation_90() { - let mut display = DisplayEink1in54BlackWhite::default(); + let mut display1in54 = DisplayEink1in54BlackWhite::default(); + let mut display = Graphics::new(WIDTH, HEIGHT, &mut display1in54.buffer); display.set_rotation(DisplayRotation::Rotate90); display.draw( Line::new(Coord::new(0, 192), Coord::new(0, 199)) @@ -129,7 +84,8 @@ mod tests { #[test] fn graphics_rotation_180() { - let mut display = DisplayEink1in54BlackWhite::default(); + let mut display1in54 = DisplayEink1in54BlackWhite::default(); + let mut display = Graphics::new(WIDTH, HEIGHT, &mut display1in54.buffer); display.set_rotation(DisplayRotation::Rotate180); display.draw( Line::new(Coord::new(192, 199), Coord::new(199, 199)) @@ -152,7 +108,8 @@ mod tests { #[test] fn graphics_rotation_270() { - let mut display = DisplayEink1in54BlackWhite::default(); + let mut display1in54 = DisplayEink1in54BlackWhite::default(); + let mut display = Graphics::new(WIDTH, HEIGHT, &mut display1in54.buffer); display.set_rotation(DisplayRotation::Rotate270); display.draw( Line::new(Coord::new(199, 0), Coord::new(199, 7)) diff --git a/src/epd4in2/graphics.rs b/src/epd4in2/graphics.rs index 9980867..af7d3c0 100644 --- a/src/epd4in2/graphics.rs +++ b/src/epd4in2/graphics.rs @@ -1,14 +1,3 @@ -use graphics::{ - outside_display, - rotation, - DisplayRotation, - Display -}; -use color::Color; -use embedded_graphics::prelude::*; - -use graphics::Graphics; - use epd4in2::constants::{DEFAULT_BACKGROUND_COLOR, WIDTH, HEIGHT}; pub struct DisplayEink4in2BlackWhite { @@ -32,9 +21,11 @@ impl Default for DisplayEink4in2BlackWhite { mod tests { use super::*; use epd4in2; - use graphics::Graphics; + use graphics::{DisplayRotation, Graphics}; use embedded_graphics::coord::Coord; use embedded_graphics::primitives::Line; + use color::Color; + use embedded_graphics::prelude::*; // test buffer length #[test] @@ -48,7 +39,7 @@ mod tests { #[test] fn graphics_default() { let mut display4in2 = DisplayEink4in2BlackWhite::default(); - let mut display = Graphics::new(WIDTH, HEIGHT, &mut display4in2.buffer); + let display = Graphics::new(WIDTH, HEIGHT, &mut display4in2.buffer); use epd4in2; for &byte in display.buffer() { assert_eq!(byte, epd4in2::constants::DEFAULT_BACKGROUND_COLOR.get_byte_value()); diff --git a/src/graphics.rs b/src/graphics.rs index 10fc30d..b9a7530 100644 --- a/src/graphics.rs +++ b/src/graphics.rs @@ -19,7 +19,7 @@ impl Default for DisplayRotation { DisplayRotation::Rotate0 } } -use epd4in2::constants::{DEFAULT_BACKGROUND_COLOR, WIDTH, HEIGHT}; +//use epd4in2::constants::{DEFAULT_BACKGROUND_COLOR, WIDTH, HEIGHT}; pub trait Display { fn buffer(&self) -> &[u8]; @@ -63,15 +63,12 @@ impl<'a> Drawing for Graphics<'a> { where T: Iterator> { - let width = WIDTH as u32; - let height = HEIGHT as u32; - for Pixel(UnsignedCoord(x,y), color) in item_pixels { - if outside_display(x, y, width, height, self.rotation) { + if outside_display(x, y, self.width, self.height, self.rotation) { return; } - let (idx, bit) = rotation(x, y, width, height, self.rotation); + let (idx, bit) = rotation(x, y, self.width, self.height, self.rotation); let idx = idx as usize; match color { diff --git a/src/lib.rs b/src/lib.rs index 359b05d..36e54b8 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; +pub use epd4in2::graphics::DisplayEink4in2BlackWhite as Buffer4in2; #[cfg(feature = "epd1in54")] mod epd1in54; #[cfg(feature = "epd1in54")] pub use epd1in54::EPD1in54; #[cfg(feature = "epd1in54")] -pub use epd1in54::graphics::DisplayEink1in54BlackWhite; +pub use epd1in54::graphics::DisplayEink1in54BlackWhite as Buffer1in54; #[cfg(feature = "epd2in9")]