summaryrefslogtreecommitdiff
path: root/racer-tracer/src/util.rs
diff options
context:
space:
mode:
authorSakarias Johansson <sakarias.johansson@goodbyekansas.com>2023-01-05 19:26:18 +0100
committerSakarias Johansson <sakarias.johansson@goodbyekansas.com>2023-01-05 19:26:18 +0100
commit372bc5b09c50cf2440e8f7762dd260cefd7bba7f (patch)
tree31e92013ca02c2ee2e71cdc40cd9fdc008432143 /racer-tracer/src/util.rs
parentcf7bd1aec7e9908f80bfc014fc53a1144e17ccb5 (diff)
downloadracer-tracer-372bc5b09c50cf2440e8f7762dd260cefd7bba7f.tar.gz
racer-tracer-372bc5b09c50cf2440e8f7762dd260cefd7bba7f.tar.xz
racer-tracer-372bc5b09c50cf2440e8f7762dd260cefd7bba7f.zip
⚡ Prepare asyncness
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.
Diffstat (limited to 'racer-tracer/src/util.rs')
-rw-r--r--racer-tracer/src/util.rs43
1 files changed, 43 insertions, 0 deletions
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
+}