Initial Commit
This commit is contained in:
119
node_modules/color-space/hsv.js
generated
vendored
Normal file
119
node_modules/color-space/hsv.js
generated
vendored
Normal file
@@ -0,0 +1,119 @@
|
||||
/**
|
||||
* @module color-space/hsv
|
||||
*/
|
||||
import rgb from './rgb.js';
|
||||
import hsl from './hsl.js';
|
||||
|
||||
|
||||
var hsv = {
|
||||
name: 'hsv',
|
||||
min: [0, 0, 0],
|
||||
max: [360, 100, 100],
|
||||
channel: ['hue', 'saturation', 'value'],
|
||||
alias: ['HSV', 'HSB'],
|
||||
|
||||
rgb: function (hsv) {
|
||||
var h = hsv[0] / 60,
|
||||
s = hsv[1] / 100,
|
||||
v = hsv[2] / 100,
|
||||
hi = (Math.floor(h) % 6);
|
||||
|
||||
var f = h - Math.floor(h),
|
||||
p = 255 * v * (1 - s),
|
||||
q = 255 * v * (1 - (s * f)),
|
||||
t = 255 * v * (1 - (s * (1 - f)));
|
||||
v *= 255;
|
||||
|
||||
switch (hi) {
|
||||
case 0:
|
||||
return [v, t, p];
|
||||
case 1:
|
||||
return [q, v, p];
|
||||
case 2:
|
||||
return [p, v, t];
|
||||
case 3:
|
||||
return [p, q, v];
|
||||
case 4:
|
||||
return [t, p, v];
|
||||
case 5:
|
||||
return [v, p, q];
|
||||
}
|
||||
},
|
||||
|
||||
hsl: function (hsv) {
|
||||
var h = hsv[0],
|
||||
s = hsv[1] / 100,
|
||||
v = hsv[2] / 100,
|
||||
sl, l;
|
||||
|
||||
l = (2 - s) * v;
|
||||
sl = s * v;
|
||||
sl /= (l <= 1) ? l : 2 - l;
|
||||
sl = sl || 0;
|
||||
l /= 2;
|
||||
|
||||
return [h, sl * 100, l * 100];
|
||||
}
|
||||
};
|
||||
|
||||
export default (hsv);
|
||||
|
||||
|
||||
//append rgb
|
||||
rgb.hsv = function (rgb) {
|
||||
var r = rgb[0],
|
||||
g = rgb[1],
|
||||
b = rgb[2],
|
||||
min = Math.min(r, g, b),
|
||||
max = Math.max(r, g, b),
|
||||
delta = max - min,
|
||||
h, s, v;
|
||||
|
||||
if (max === 0) {
|
||||
s = 0;
|
||||
}
|
||||
else {
|
||||
s = (delta / max * 100);
|
||||
}
|
||||
|
||||
if (max === min) {
|
||||
h = 0;
|
||||
}
|
||||
else if (r === max) {
|
||||
h = (g - b) / delta;
|
||||
}
|
||||
else if (g === max) {
|
||||
h = 2 + (b - r) / delta;
|
||||
}
|
||||
else if (b === max) {
|
||||
h = 4 + (r - g) / delta;
|
||||
}
|
||||
|
||||
//FIXME h is possibly undefined
|
||||
//@ts-ignore
|
||||
h = Math.min(h * 60, 360);
|
||||
|
||||
if (h < 0) {
|
||||
h += 360;
|
||||
}
|
||||
|
||||
v = ((max / 255) * 1000) / 10;
|
||||
|
||||
return [h, s, v];
|
||||
};
|
||||
|
||||
|
||||
|
||||
//extend hsl
|
||||
hsl.hsv = function (hsl) {
|
||||
var h = hsl[0],
|
||||
s = hsl[1] / 100,
|
||||
l = hsl[2] / 100,
|
||||
sv, v;
|
||||
l *= 2;
|
||||
s *= (l <= 1) ? l : 2 - l;
|
||||
v = (l + s) / 2;
|
||||
sv = (2 * s) / (l + s) || 0;
|
||||
|
||||
return [h, sv * 100, v * 100];
|
||||
};
|
||||
Reference in New Issue
Block a user