From 0ffc57ae785e090c41e128d8b6cef53f3f33cf26 Mon Sep 17 00:00:00 2001 From: Jonas Zeunert Date: Mon, 30 Dec 2024 16:20:19 +0100 Subject: [PATCH] Switch to binary msg --- src/flutr.rs | 3 +-- src/pixelmsgs.rs | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/flutr.rs b/src/flutr.rs index 2b91ec9..840a305 100644 --- a/src/flutr.rs +++ b/src/flutr.rs @@ -15,8 +15,7 @@ impl FlutR { pub fn flut(&mut self) { for msg in self.msgs.clone() { - dbg!(&msg); - let result = self.stream.write(msg.as_str().as_bytes()); + let result = self.stream.write(&msg); match result { Ok(_) => (), Err(err) => eprintln!("{err}"), diff --git a/src/pixelmsgs.rs b/src/pixelmsgs.rs index 4218ff7..6ba35a9 100644 --- a/src/pixelmsgs.rs +++ b/src/pixelmsgs.rs @@ -1,6 +1,7 @@ use image::Rgb; -pub type PixelMsgs = Vec; +pub type PixelMsg = [u8; 10]; +pub type PixelMsgs = Vec; pub trait Add { fn add(&mut self, item: (u32, u32, &Rgb)); @@ -8,11 +9,16 @@ pub trait Add { impl Add for PixelMsgs { fn add(&mut self, item: (u32, u32, &Rgb)) { + let pb: &[u8] = &[80, 66]; + let x = (item.0 as u16).to_le_bytes(); + let y = (item.1 as u16).to_le_bytes(); + let color: &Rgb = item.2; - let r = color.0[0]; - let g = color.0[1]; - let b = color.0[2]; - let msg = format!("PX {} {} {r:02x}{g:02x}{b:02x}\n", item.0, item.1); - self.push(msg); + let r = color.0[0].to_le_bytes(); + let g = color.0[1].to_le_bytes(); + let b = color.0[2].to_le_bytes(); + + let msg = [pb, &x, &y, &r, &g, &b, &[0]].concat(); + self.push(msg.try_into().unwrap()); } }