HTML-Tested-JavaScript
view release on metacpan or search on metacpan
javascript/color_picker.js view on Meta::CPAN
/* r, g, b are between 0-255. h is in [0-360]. v,s in [0-100] */
function htcp_rgb_to_hsv(r, g, b) {
var h, s, v;
var min, max, delta;
r /= 255;
g /= 255;
b /= 255;
min = Math.min(r, g, b);
max = Math.max(r, g, b);
v = max;
delta = max - min;
if (max != 0)
s = delta / max;
else
return [ 0, 0, 0 ];
if( r == max )
h = (g - b) / delta;
else if(g == max)
h = 2 + (b - r) / delta;
else
h = 4 + (r - g) / delta;
h *= 60;
if(h < 0)
h += 360;
else if (isNaN(h))
h = 360;
return [ Math.round(h), Math.round(s * 100), Math.round(v * 100) ];
}
function htcp_client_x(e) { return e.clientX + window.pageXOffset; }
function htcp_client_y(e) { return e.clientY + window.pageYOffset; }
function htcp_save_x_dimensions(el, e, ctx) {
ctx.down_x = htcp_client_x(e);
ctx.el_x = parseFloat(el.style.left);
}
function htcp_save_y_dimensions(el, e, ctx) {
ctx.down_y = htcp_client_y(e);
ctx.el_y = parseFloat(el.style.top);
}
function _htcp_half_height(el) { return (parseFloat(el.offsetHeight) / 2); }
function _htcp_half_width(el) { return (parseFloat(el.offsetWidth) / 2); }
function htcp_move_by_x(el, e, ctx) {
var pos = htcp_client_x(e) - ctx.down_x + ctx.el_x;
var hw = _htcp_half_width(el);
var max = el.parentNode.offsetWidth - hw;
if (pos > max)
pos = max;
else if (pos < -hw)
pos = -hw;
el.style.left = pos + "px";
}
function htcp_move_by_y(el, e, ctx) {
var pos = htcp_client_y(e) - ctx.down_y + ctx.el_y;
var hh = _htcp_half_height(el);
var max = el.parentNode.offsetHeight - hh;
if (pos > max)
pos = max;
else if (pos < -hh)
pos = -hh;
el.style.top = pos + "px";
}
function htcp_listen_for_mouse_events(el, mdown, mmove, mup) {
var myup = function(e) {
e.stopPropagation();
e.preventDefault();
document.removeEventListener("mousemove", mmove, true);
document.removeEventListener("mouseup", myup, true);
mup(e);
}
var mydown = function(e) {
e.stopPropagation();
e.preventDefault();
document.addEventListener("mousemove", mmove, true);
document.addEventListener("mouseup", myup, true);
mdown(e);
}
el.addEventListener("mousedown", mydown, false);
return mydown;
( run in 1.701 second using v1.01-cache-2.11-cpan-119454b85a5 )