From 0e393896d321c0b27985c1be62fa9f2ca6fd68ca Mon Sep 17 00:00:00 2001 From: Vinzenz Schroeter Date: Sat, 11 May 2024 19:29:39 +0200 Subject: [PATCH] change transparent line example to wiping_clear --- examples/Cargo.lock | 20 ++++---- examples/Cargo.toml | 2 +- examples/moving_transparent_line/src/main.rs | 47 ------------------- .../Cargo.toml | 2 +- examples/wiping_clear/src/main.rs | 41 ++++++++++++++++ 5 files changed, 53 insertions(+), 59 deletions(-) delete mode 100644 examples/moving_transparent_line/src/main.rs rename examples/{moving_transparent_line => wiping_clear}/Cargo.toml (85%) create mode 100644 examples/wiping_clear/src/main.rs diff --git a/examples/Cargo.lock b/examples/Cargo.lock index 4deacdb..26f6d56 100644 --- a/examples/Cargo.lock +++ b/examples/Cargo.lock @@ -219,16 +219,6 @@ dependencies = [ "servicepoint2", ] -[[package]] -name = "moving_transparent_line" -version = "0.1.0" -dependencies = [ - "clap", - "env_logger", - "log", - "servicepoint2", -] - [[package]] name = "num" version = "0.4.3" @@ -524,3 +514,13 @@ name = "windows_x86_64_msvc" version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" + +[[package]] +name = "wiping_clear" +version = "0.1.0" +dependencies = [ + "clap", + "env_logger", + "log", + "servicepoint2", +] diff --git a/examples/Cargo.toml b/examples/Cargo.toml index 76d1d8b..29c3b3f 100644 --- a/examples/Cargo.toml +++ b/examples/Cargo.toml @@ -4,6 +4,6 @@ members = [ "announce", "game_of_life", "moving_line", - "moving_transparent_line", + "wiping_clear", "random_brightness", ] diff --git a/examples/moving_transparent_line/src/main.rs b/examples/moving_transparent_line/src/main.rs deleted file mode 100644 index 01a3604..0000000 --- a/examples/moving_transparent_line/src/main.rs +++ /dev/null @@ -1,47 +0,0 @@ -use std::thread; -use std::time::Duration; - -use clap::Parser; - -use servicepoint2::{BitVec, Connection, PIXEL_HEIGHT, PIXEL_WIDTH, PixelGrid}; -use servicepoint2::Command::{BitmapLinearOr, BitmapLinearXor}; - -#[derive(Parser, Debug)] -struct Cli { - #[arg(short, long, default_value = "localhost:2342")] - destination: String, -} - -fn main() { - env_logger::builder() - .filter_level(log::LevelFilter::Debug) - .init(); - - let connection = Connection::open(Cli::parse().destination).unwrap(); - - loop { - let mut last = BitVec::new(PIXEL_WIDTH as usize * PIXEL_HEIGHT as usize); - for x_offset in 0..PIXEL_WIDTH as usize { - let mut pixels = PixelGrid::max_sized(); - pixels.fill(false); - - for y in 0..PIXEL_HEIGHT as usize { - pixels.set((y + x_offset) % PIXEL_WIDTH as usize, y, true); - } - - // this works because the pixel grid has max size - let pixel_data: Vec = pixels.into(); - let bit_vec = BitVec::load(&*pixel_data); - - // remove pixels from last iteration - connection.send(BitmapLinearXor(0, last)).unwrap(); - // reduces dropped packages - thread::sleep(Duration::from_millis(1)); - // add pixels from this iteration - connection.send(BitmapLinearOr(0, bit_vec.clone())).unwrap(); - - last = bit_vec; - thread::sleep(Duration::from_millis(1000)); - } - } -} diff --git a/examples/moving_transparent_line/Cargo.toml b/examples/wiping_clear/Cargo.toml similarity index 85% rename from examples/moving_transparent_line/Cargo.toml rename to examples/wiping_clear/Cargo.toml index c38f62f..7e3c843 100644 --- a/examples/moving_transparent_line/Cargo.toml +++ b/examples/wiping_clear/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "moving_transparent_line" +name = "wiping_clear" version = "0.1.0" edition = "2021" publish = false diff --git a/examples/wiping_clear/src/main.rs b/examples/wiping_clear/src/main.rs new file mode 100644 index 0000000..6cf38c4 --- /dev/null +++ b/examples/wiping_clear/src/main.rs @@ -0,0 +1,41 @@ +use std::thread; +use std::time::Duration; + +use clap::Parser; + +use servicepoint2::{BitVec, Connection, PIXEL_HEIGHT, PIXEL_WIDTH, PixelGrid}; +use servicepoint2::Command::BitmapLinearAnd; + +#[derive(Parser, Debug)] +struct Cli { + #[arg(short, long, default_value = "localhost:2342")] + destination: String, + #[arg(short, long = "duration-ms", default_value_t = 5000)] + time: u64, +} + +fn main() { + env_logger::builder() + .filter_level(log::LevelFilter::Info) + .init(); + let cli = Cli::parse(); + + let connection = Connection::open(cli.destination).unwrap(); + let sleep_duration = Duration::from_millis(cli.time / PIXEL_WIDTH as u64); + + let mut enabled_pixels = PixelGrid::new(PIXEL_WIDTH as usize, PIXEL_HEIGHT as usize); + enabled_pixels.fill(true); + + for x_offset in 0..PIXEL_WIDTH as usize { + for y in 0..PIXEL_HEIGHT as usize { + enabled_pixels.set(x_offset % PIXEL_WIDTH as usize, y, false); + } + + // this works because the pixel grid has max size + let pixel_data: Vec = enabled_pixels.clone().into(); + let bit_vec = BitVec::load(&*pixel_data); + + connection.send(BitmapLinearAnd(0, bit_vec)).unwrap(); + thread::sleep(sleep_duration); + } +}