Fixed examples and more small improvements
parent
3b0b5962ec
commit
520317f351
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
///
|
///
|
||||||
|
|
|
||||||
|
|
@ -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},
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
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…
Reference in New Issue