added hexGradiant function for value based color readouts

This commit is contained in:
bluesaxman 2022-04-07 16:57:41 -06:00
parent a4d3afd265
commit 2ca87fbb55

View File

@ -151,3 +151,34 @@ class buiWindow {
function close () { 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");
}