mirror of
https://github.com/cccb/servicepoint.git
synced 2025-01-18 18:10:14 +01:00
change transparent line example to wiping_clear
This commit is contained in:
parent
35ae1f20ce
commit
0e393896d3
20
examples/Cargo.lock
generated
20
examples/Cargo.lock
generated
|
@ -219,16 +219,6 @@ dependencies = [
|
||||||
"servicepoint2",
|
"servicepoint2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "moving_transparent_line"
|
|
||||||
version = "0.1.0"
|
|
||||||
dependencies = [
|
|
||||||
"clap",
|
|
||||||
"env_logger",
|
|
||||||
"log",
|
|
||||||
"servicepoint2",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num"
|
name = "num"
|
||||||
version = "0.4.3"
|
version = "0.4.3"
|
||||||
|
@ -524,3 +514,13 @@ name = "windows_x86_64_msvc"
|
||||||
version = "0.52.5"
|
version = "0.52.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"
|
checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wiping_clear"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"clap",
|
||||||
|
"env_logger",
|
||||||
|
"log",
|
||||||
|
"servicepoint2",
|
||||||
|
]
|
||||||
|
|
|
@ -4,6 +4,6 @@ members = [
|
||||||
"announce",
|
"announce",
|
||||||
"game_of_life",
|
"game_of_life",
|
||||||
"moving_line",
|
"moving_line",
|
||||||
"moving_transparent_line",
|
"wiping_clear",
|
||||||
"random_brightness",
|
"random_brightness",
|
||||||
]
|
]
|
||||||
|
|
|
@ -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<u8> = 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));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,5 +1,5 @@
|
||||||
[package]
|
[package]
|
||||||
name = "moving_transparent_line"
|
name = "wiping_clear"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
publish = false
|
publish = false
|
41
examples/wiping_clear/src/main.rs
Normal file
41
examples/wiping_clear/src/main.rs
Normal file
|
@ -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<u8> = enabled_pixels.clone().into();
|
||||||
|
let bit_vec = BitVec::load(&*pixel_data);
|
||||||
|
|
||||||
|
connection.send(BitmapLinearAnd(0, bit_vec)).unwrap();
|
||||||
|
thread::sleep(sleep_duration);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue