pluggable color scales. fix contour cam

This commit is contained in:
Stewart Allen 2020-11-11 08:27:16 -05:00
commit 0eabb0a2f2
2 changed files with 37 additions and 6 deletions

View file

@ -46,6 +46,7 @@
PRO.extrudePerMM = extrudePerMM;
PRO.constReplace = constReplace;
PRO.poly2polyEmit = poly2polyEmit;
PRO.tip2tipEmit = tip2tipEmit;
PRO.addPrintPoints = addPrintPoints;
PRO.parseSVG = function(code, offset) {

View file

@ -508,14 +508,27 @@
}
// hsv values all = 0 to 1
function hsv2rgb(hsv) {
function hsv2rgb(hsv, mode) {
const { h, s, v } = hsv;
const ss = 1 / 5;
const div = {linear: 5, pastel: 3}[mode] || 5;
const ss = 1 / div;
const seg = Math.floor(h / ss);
const rem = h - (seg * ss);
const inc = (rem / ss);
const dec = (1 - inc);
const rgb = {r: 0, g: 0, b: 0};
switch (div) {
case 3: color3(rgb, inc, seg); break;
case 5: color5(rgb, inc, seg); break;
}
rgb.r = ((rgb.r * 255 * v) & 0xff) << 16;
rgb.g = ((rgb.g * 255 * v) & 0xff) << 8;
rgb.b = ((rgb.b * 255 * v) & 0xff);
return rgb.r | rgb.g | rgb.b;
}
function color5(rgb, inc, seg) {
const dec = 1 - inc;
switch (seg) {
case 0:
rgb.r = 1;
@ -543,10 +556,27 @@
rgb.b = dec;
break;
}
rgb.r = ((rgb.r * 255 * v) & 0xff) << 16;
rgb.g = ((rgb.g * 255 * v) & 0xff) << 8;
rgb.b = ((rgb.b * 255 * v) & 0xff);
return rgb.r | rgb.g | rgb.b;
}
function color3(rgb, inc, seg) {
const dec = 1 - inc;
switch (seg) {
case 0:
rgb.r = dec;
rgb.g = inc;
rgb.b = 0;
break;
case 1:
rgb.r = 0;
rgb.g = dec;
rgb.b = inc;
break;
case 2:
rgb.r = inc/2;
rgb.g = 0;
rgb.b = dec/2 + 0.5;
break;
}
}
})();