mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-09 11:03:17 +00:00
93 lines
2.2 KiB
JavaScript
93 lines
2.2 KiB
JavaScript
var p4 = p4 || {};
|
|
|
|
var utilsModule = (function (p4) {
|
|
|
|
|
|
function RGBtoHex(R, G, B) {
|
|
return _toHex(R) + _toHex(G) + _toHex(B);
|
|
}
|
|
function _toHex(N) {
|
|
if (N === null) return "00";
|
|
N = parseInt(N);
|
|
if (N === 0 || isNaN(N)) return "00";
|
|
N = Math.max(0, N);
|
|
N = Math.min(N, 255);
|
|
N = Math.round(N);
|
|
return "0123456789ABCDEF".charAt((N - N % 16) / 16)
|
|
+ "0123456789ABCDEF".charAt(N % 16);
|
|
}
|
|
function hsl2rgb(h, s, l) {
|
|
var m1, m2, hue;
|
|
var r, g, b;
|
|
s /= 100;
|
|
l /= 100;
|
|
if (s === 0)
|
|
r = g = b = (l * 255);
|
|
else {
|
|
if (l <= 0.5)
|
|
m2 = l * (s + 1);
|
|
else
|
|
m2 = l + s - l * s;
|
|
m1 = l * 2 - m2;
|
|
hue = h / 360;
|
|
r = _HueToRgb(m1, m2, hue + 1 / 3);
|
|
g = _HueToRgb(m1, m2, hue);
|
|
b = _HueToRgb(m1, m2, hue - 1 / 3);
|
|
}
|
|
return {
|
|
r: r,
|
|
g: g,
|
|
b: b
|
|
};
|
|
}
|
|
|
|
function _HueToRgb(m1, m2, hue) {
|
|
var v;
|
|
if (hue < 0)
|
|
hue += 1;
|
|
else if (hue > 1)
|
|
hue -= 1;
|
|
|
|
if (6 * hue < 1)
|
|
v = m1 + (m2 - m1) * hue * 6;
|
|
else if (2 * hue < 1)
|
|
v = m2;
|
|
else if (3 * hue < 2)
|
|
v = m1 + (m2 - m1) * (2 / 3 - hue) * 6;
|
|
else
|
|
v = m1;
|
|
|
|
return 255 * v;
|
|
}
|
|
|
|
function is_ctrl_key(event) {
|
|
if (event.altKey)
|
|
return true;
|
|
if (event.ctrlKey)
|
|
return true;
|
|
if (event.metaKey) // apple key opera
|
|
return true;
|
|
if (event.keyCode === 17) // apple key opera
|
|
return true;
|
|
if (event.keyCode === 224) // apple key mozilla
|
|
return true;
|
|
if (event.keyCode === 91) // apple key safari
|
|
return true;
|
|
|
|
return false;
|
|
}
|
|
|
|
function is_shift_key(event) {
|
|
if (event.shiftKey)
|
|
return true;
|
|
return false;
|
|
}
|
|
|
|
return {
|
|
RGBtoHex: RGBtoHex,
|
|
hsl2rgb: hsl2rgb,
|
|
is_ctrl_key: is_ctrl_key,
|
|
is_shift_key: is_shift_key
|
|
};
|
|
}(p4));
|