From 372bc5b09c50cf2440e8f7762dd260cefd7bba7f Mon Sep 17 00:00:00 2001 From: Sakarias Johansson Date: Thu, 5 Jan 2023 19:26:18 +0100 Subject: =?UTF-8?q?=E2=9A=A1=20Prepare=20asyncness?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Creating a bunch of futures that when completed get the buffers copied to the screen buffer updating the screen as it gets done. It's a bit overkill to create a future per row but it can be changed later. Moved hsv_to_rgb to utils. Don't even think it will be needed later. --- racer-tracer/src/util.rs | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 racer-tracer/src/util.rs (limited to 'racer-tracer/src/util.rs') diff --git a/racer-tracer/src/util.rs b/racer-tracer/src/util.rs new file mode 100644 index 0000000..e223c67 --- /dev/null +++ b/racer-tracer/src/util.rs @@ -0,0 +1,43 @@ +pub fn hsv_to_rgb(h: f64, s: f64, v: f64) -> u32 { + let s: f64 = s / 100.0; + let v: f64 = v / 100.0; + let c: f64 = s * v; + let mut a: f64 = h / 60.0; + a %= 2.0f64; + let x: f64 = c * (1f64 - (a - 1f64).abs()); + let m: f64 = v - c; + + let r: f64; + let g: f64; + let b: f64; + if (0.0..60.0).contains(&h) { + r = c; + g = x; + b = 0.0; + } else if (60.0..120.0).contains(&h) { + r = x; + g = c; + b = 0.0; + } else if (120.0..180.0).contains(&h) { + r = 0.0; + g = c; + b = x; + } else if (180.0..240.0).contains(&h) { + r = 0.0; + g = x; + b = c; + } else if (240.0..300.0).contains(&h) { + r = x; + g = 0.0; + b = c; + } else { + r = c; + g = 0.0; + b = x; + } + + let red: u32 = ((r + m) * 255.0) as u32; + let green: u32 = ((g + m) * 255.0) as u32; + let blue: u32 = ((b + m) * 255.0) as u32; + ((red as u32) << 16) | ((green as u32) << 8) | blue as u32 +} -- cgit v1.2.3