Browse Source

Fixed examples and more small improvements

embedded-hal-1.0
Chris 8 years ago
parent
commit
520317f351
  1. 2
      examples/embedded_linux_epd1in54/src/main.rs
  2. 4
      examples/embedded_linux_epd4in2/src/main.rs
  3. 2
      src/color.rs
  4. 3
      src/epd1in54/mod.rs
  5. 6
      src/epd2in9/mod.rs
  6. 6
      src/epd4in2/constants.rs
  7. 5
      src/epd4in2/mod.rs
  8. 28
      src/graphics.rs
  9. 19
      src/lib.rs

2
examples/embedded_linux_epd1in54/src/main.rs

@ -6,8 +6,10 @@ extern crate eink_waveshare_rs;
use eink_waveshare_rs::{ use eink_waveshare_rs::{
epd1in54::{
EPD1in54, EPD1in54,
Buffer1in54, Buffer1in54,
},
graphics::{Display, DisplayRotation}, graphics::{Display, DisplayRotation},
color::Color, color::Color,
WaveshareDisplay, WaveshareDisplay,

4
examples/embedded_linux_epd4in2/src/main.rs

@ -6,8 +6,10 @@ extern crate eink_waveshare_rs;
use eink_waveshare_rs::{ use eink_waveshare_rs::{
epd4in2::{
EPD4in2, EPD4in2,
Buffer4in2, Buffer4in2,
},
graphics::{Display, DisplayRotation}, graphics::{Display, DisplayRotation},
color::Color, color::Color,
WaveshareDisplay, WaveshareDisplay,
@ -162,7 +164,7 @@ fn run() -> Result<(), std::io::Error> {
println!("Now test new graphics with default rotation and some special stuff:"); println!("Now test new graphics with default rotation and some special stuff:");
let mut display = DisplayEink42BlackWhite::default(); display.clear_buffer(Color::White);
// draw a analog clock // draw a analog clock
display.draw( display.draw(

2
src/color.rs

@ -48,7 +48,7 @@ impl Color {
} }
// Inverses the given color from Black to White or from White to Black // Inverses the given color from Black to White or from White to Black
fn inverse_color(color: &Color) -> Color { pub(crate) fn inverse_color(color: &Color) -> Color {
match color { match color {
Color::White => Color::Black, Color::White => Color::Black,
Color::Black => Color::White, Color::Black => Color::White,

3
src/epd1in54/mod.rs

@ -40,7 +40,8 @@ use traits::{WaveshareDisplay};
use interface::DisplayInterface; use interface::DisplayInterface;
pub mod graphics; mod graphics;
pub use epd1in54::graphics::Buffer1in54BlackWhite as Buffer1in54;
/// EPD1in54 driver /// EPD1in54 driver
/// ///

6
src/epd2in9/mod.rs

@ -19,9 +19,9 @@
//! epd4in2.sleep(); //! epd4in2.sleep();
//! ``` //! ```
const WIDTH: u32 = 128; pub const WIDTH: u32 = 128;
const HEIGHT: u32 = 296; pub const HEIGHT: u32 = 296;
const DEFAULT_BACKGROUND_COLOR: Color = Color::White; pub const DEFAULT_BACKGROUND_COLOR: Color = Color::White;
use hal::{ use hal::{
blocking::{delay::*, spi::Write}, blocking::{delay::*, spi::Write},

6
src/epd4in2/constants.rs

@ -1,8 +1,8 @@
use color::Color; use color::Color;
pub(crate) const WIDTH: u32 = 400; pub const WIDTH: u32 = 400;
pub(crate) const HEIGHT: u32 = 300; pub const HEIGHT: u32 = 300;
pub(crate) const DEFAULT_BACKGROUND_COLOR: Color = Color::White; pub const DEFAULT_BACKGROUND_COLOR: Color = Color::White;
pub(crate) const LUT_VCOM0: [u8; 44] = [ pub(crate) const LUT_VCOM0: [u8; 44] = [
0x00, 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, 0x17, 0x00, 0x00, 0x00, 0x02,

5
src/epd4in2/mod.rs

@ -56,14 +56,15 @@ use interface::DisplayInterface;
//The Lookup Tables for the Display //The Lookup Tables for the Display
pub(crate) mod constants; //TODO: Limit to crate::drawing pub(crate) mod constants; //TODO: Limit to crate::drawing
use self::constants::*; pub use self::constants::*;
use color::Color; use color::Color;
pub(crate) mod command; pub(crate) mod command;
use self::command::Command; use self::command::Command;
pub mod graphics; mod graphics;
pub use self::graphics::Buffer4in2;
/// EPD4in2 driver /// EPD4in2 driver

28
src/graphics.rs

@ -43,6 +43,12 @@ impl<'a> Display<'a> {
&self.buffer &self.buffer
} }
pub fn clear_buffer(&mut self, background_color: Color) {
for elem in &mut self.buffer.iter_mut() {
*elem = background_color.get_byte_value();
}
}
pub fn set_rotation(&mut self, rotation: DisplayRotation) { pub fn set_rotation(&mut self, rotation: DisplayRotation) {
self.rotation = rotation; self.rotation = rotation;
} }
@ -120,7 +126,27 @@ pub(crate) fn rotation(x: u32, y: u32, width: u32, height: u32, rotation: Displa
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::{DisplayRotation, outside_display, rotation}; use super::{DisplayRotation, outside_display, rotation, Display};
use color::Color;
#[test]
fn buffer_clear() {
use epd4in2::constants::{WIDTH, HEIGHT};
let mut buffer = [Color::Black.get_byte_value(); WIDTH as usize / 8 * HEIGHT as usize];
let mut display = Display::new(WIDTH, HEIGHT, &mut buffer);
for &byte in display.buffer.iter() {
assert_eq!(byte, Color::Black.get_byte_value());
}
display.clear_buffer(Color::White);
for &byte in display.buffer.iter() {
assert_eq!(byte, Color::White.get_byte_value());
}
}
#[test] #[test]
fn rotation_overflow() { fn rotation_overflow() {

19
src/lib.rs

@ -63,26 +63,13 @@ pub mod color;
mod interface; mod interface;
#[cfg(feature = "epd4in2")] #[cfg(feature = "epd4in2")]
mod epd4in2; pub mod epd4in2;
#[cfg(feature = "epd4in2")]
pub use epd4in2::EPD4in2;
#[cfg(feature = "epd4in2")]
pub use epd4in2::graphics::Buffer4in2;
#[cfg(feature = "epd1in54")] #[cfg(feature = "epd1in54")]
mod epd1in54; pub mod epd1in54;
#[cfg(feature = "epd1in54")]
pub use epd1in54::EPD1in54;
#[cfg(feature = "epd1in54")]
pub use epd1in54::graphics::Buffer1in54BlackWhite as Buffer1in54;
#[cfg(feature = "epd2in9")] #[cfg(feature = "epd2in9")]
mod epd2in9; pub mod epd2in9;
///2in9 eink
#[cfg(feature = "epd2in9")]
///2in9 eink
pub use epd2in9::EPD2in9;
#[cfg(any(feature = "epd1in54", feature = "epd2in9"))] #[cfg(any(feature = "epd1in54", feature = "epd2in9"))]
pub(crate) mod type_a; pub(crate) mod type_a;

Loading…
Cancel
Save