From ac4777e50c1435541a17ef4338c54648ac32a169 Mon Sep 17 00:00:00 2001 From: clerie Date: Sun, 14 Jan 2024 00:17:19 +0100 Subject: [PATCH] Use pairs of buffer values to render braille --- src/cpuusagebuffer.rs | 16 +++++++++++++--- src/lib.rs | 1 + src/main.rs | 3 +-- src/vectools.rs | 17 +++++++++++++++++ 4 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 src/vectools.rs diff --git a/src/cpuusagebuffer.rs b/src/cpuusagebuffer.rs index aea58b3..822a8ea 100644 --- a/src/cpuusagebuffer.rs +++ b/src/cpuusagebuffer.rs @@ -2,6 +2,7 @@ use crate::cpustats::get_cpu_usage; use crate::cpustats::get_clk_tck; use crate::ansiiescape; use crate::braille::braille_symbol; +use crate::vectools::ValuePairs; pub struct CpuUsageBuffer { clk_tck: u32, @@ -48,6 +49,15 @@ fn cpu_usages_to_braille(a: u32, b: u32) -> u8 { a_braille + shift_braille_one_col(b_braille) } +fn max(a: u32, b: u32) -> u32 { + if a > b { + return a; + } + else { + return b; + } +} + impl CpuUsageBuffer { pub fn new() -> Self { let first_value = get_cpu_usage(); @@ -73,9 +83,9 @@ impl CpuUsageBuffer { pub fn braille(&self) -> String { let mut out: String = String::new(); for n in 0..(self.cpu_num()) { - for u in &self.buffer { - out += &cpu_usage_to_color(u[n]); - out += &braille_symbol(cpu_usages_to_braille(u[n], u[n])); + for u in ValuePairs::new(self.buffer.clone().into_iter()) { + out += &cpu_usage_to_color(max(u.0[n], u.1[n])); + out += &braille_symbol(cpu_usages_to_braille(u.0[n], u.1[n])); } out += &ansiiescape::reset(); out += "\n"; diff --git a/src/lib.rs b/src/lib.rs index 45c5efe..db255d8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2,3 +2,4 @@ pub mod ansiiescape; pub mod braille; pub mod cpustats; pub mod cpuusagebuffer; +pub mod vectools; diff --git a/src/main.rs b/src/main.rs index b0b1088..af46013 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,11 +2,10 @@ use std::thread::sleep; use std::time; use fuedra_schwitzt::cpuusagebuffer::CpuUsageBuffer; use fuedra_schwitzt::ansiiescape::cursor_up; +use fuedra_schwitzt::vectools; fn main() { - - // Init buffer let mut buffer = CpuUsageBuffer::new(); diff --git a/src/vectools.rs b/src/vectools.rs new file mode 100644 index 0000000..4f3e8ab --- /dev/null +++ b/src/vectools.rs @@ -0,0 +1,17 @@ +pub struct ValuePairs { + iter: I, +} + +impl ValuePairs { + pub fn new(iter: I) -> ValuePairs { + ValuePairs { iter } + } +} + + +impl Iterator for ValuePairs { + type Item = (I::Item, I::Item); + fn next(&mut self) -> Option { + Some((self.iter.next()?, self.iter.next()?)) + } +}