From 2ca87fbb552d98c2321ae7104979c4430d87b996 Mon Sep 17 00:00:00 2001 From: bluesaxman Date: Thu, 7 Apr 2022 16:57:41 -0600 Subject: [PATCH] added hexGradiant function for value based color readouts --- libs/blueui.js | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/libs/blueui.js b/libs/blueui.js index 8e979e5..6a08144 100644 --- a/libs/blueui.js +++ b/libs/blueui.js @@ -151,3 +151,34 @@ class buiWindow { function close () { } } + +function hexGradiant( + value=1, + low=0, + high=100, + rwave = n => (100 * Math.sin(n / 10)) + (n - 30) * 2, + gwave = n => (n - 50) * (n - 75) * (0 - 1) / 10 + 100, + bwave = n => (n - 25) * (n - 25) * (0 - 1) / 5 + 100 +) { + var range = Math.max(0,Math.min(1,(value - low)/(high - low)))*100; + + var r = rwave(range) * 2; + var g = gwave(range) * 2; + var b = bwave(range) * 2; + + var brightness = 270; // out of 768 (white) + + // Normaliz rgb values to within the brightness level + if (r+g+b < brightness) { + brightness -= (r+g+b); + r += (brightness/3); + g += (brightness/3); + b += (brightness/3); + } + + return "#"+ + parseInt(Math.min(Math.max(0,r),255).toFixed(0)).toString(16).padStart(2,"0")+ + parseInt(Math.min(Math.max(0,g),255).toFixed(0)).toString(16).padStart(2,"0")+ + parseInt(Math.min(Math.max(0,b),255).toFixed(0)).toString(16).padStart(2,"0"); +} +