Initial commit: Backup der Webseiten
- zoesch.de - blitzkiste.net - gruene-hassberge (norbert.zoesch.de) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
169
zoesch.de/whatcolorisit/js/whatcolorisit.js
Normal file
169
zoesch.de/whatcolorisit/js/whatcolorisit.js
Normal file
@@ -0,0 +1,169 @@
|
||||
function $(s) {
|
||||
return document.querySelector(s);
|
||||
}
|
||||
|
||||
function pad(str, pad) {
|
||||
return (pad + str).slice(-pad.length - 1);
|
||||
}
|
||||
|
||||
function hex2rgb(hex) {
|
||||
var bigint = parseInt(hex, 16);
|
||||
var r = (bigint >> 16) & 255;
|
||||
var g = (bigint >> 8) & 255;
|
||||
var b = bigint & 255;
|
||||
var rgbArr = [r, g, b];
|
||||
|
||||
return rgbArr;
|
||||
}
|
||||
|
||||
function rgb2xy(rgbArr) {
|
||||
var r4 = rgbArr[0];
|
||||
var g4 = rgbArr[1];
|
||||
var b4 = rgbArr[2];
|
||||
r4 = (r4 > 0.04045) ? Math.pow((r4 + 0.055) / (1.0 + 0.055), 2.4) : (r4 / 12.92);
|
||||
g4 = (g4 > 0.04045) ? Math.pow((g4 + 0.055) / (1.0 + 0.055), 2.4) : (g4 / 12.92);
|
||||
b4 = (b4 > 0.04045) ? Math.pow((b4 + 0.055) / (1.0 + 0.055), 2.4) : (b4 / 12.92);
|
||||
|
||||
//Apply wide gamut conversion D65
|
||||
var X = r4 * 0.664511 + g4 * 0.154324 + b4 * 0.162028;
|
||||
var Y = r4 * 0.283881 + g4 * 0.668433 + b4 * 0.047685;
|
||||
var Z = r4 * 0.000088 + g4 * 0.072310 + b4 * 0.986039;
|
||||
|
||||
var fx = X / (X + Y + Z);
|
||||
var fy = Y / (X + Y + Z);
|
||||
if (isNaN(fx)) {
|
||||
fx = 0.0;
|
||||
}
|
||||
if (isNaN(fy)) {
|
||||
fy = 0.0;
|
||||
}
|
||||
fx = fx.toFixed(3);
|
||||
fy = fy.toFixed(3);
|
||||
|
||||
var result = [fx, fy];
|
||||
return result;
|
||||
}
|
||||
|
||||
function rgb2hsl(rgbArr) {
|
||||
var r1 = rgbArr[0] / 255;
|
||||
var g1 = rgbArr[1] / 255;
|
||||
var b1 = rgbArr[2] / 255;
|
||||
var maxColor = Math.max(r1, g1, b1);
|
||||
var minColor = Math.min(r1, g1, b1);
|
||||
var L = (maxColor + minColor) / 2;
|
||||
var S = 0;
|
||||
var H = 0;
|
||||
if (maxColor != minColor) {
|
||||
if (L < 0.5) {
|
||||
S = (maxColor - minColor) / (maxColor + minColor);
|
||||
} else {
|
||||
S = (maxColor - minColor) / (2.0 - maxColor - minColor);
|
||||
}
|
||||
if (r1 == maxColor) {
|
||||
H = (g1 - b1) / (maxColor - minColor);
|
||||
} else if (g1 == maxColor) {
|
||||
H = 2.0 + (b1 - r1) / (maxColor - minColor);
|
||||
} else {
|
||||
H = 4.0 + (r1 - g1) / (maxColor - minColor);
|
||||
}
|
||||
}
|
||||
L = L * 100;
|
||||
S = S * 100;
|
||||
H = H * 60;
|
||||
if (H < 0) {
|
||||
H += 360;
|
||||
}
|
||||
L = L.toFixed(1);
|
||||
S = S.toFixed(1);
|
||||
H = H.toFixed(1);
|
||||
|
||||
var result = [H, S, L];
|
||||
return result;
|
||||
}
|
||||
|
||||
function rgb2hsv(rgbArr) {
|
||||
var r2 = rgbArr[0] / 255;
|
||||
var g2 = rgbArr[1] / 255;
|
||||
var b2 = rgbArr[2] / 255;
|
||||
var max = Math.max(r2, g2, b2),
|
||||
min = Math.min(r2, g2, b2);
|
||||
var h, s, v = max;
|
||||
var d = max - min;
|
||||
s = max == 0 ? 0 : d / max;
|
||||
if (max == min) {
|
||||
h = 0;
|
||||
} else {
|
||||
switch (max) {
|
||||
case r2:
|
||||
h = (g2 - b2) / d + (g2 < b2 ? 6 : 0);
|
||||
break;
|
||||
case g2:
|
||||
h = (b2 - r2) / d + 2;
|
||||
break;
|
||||
case b2:
|
||||
h = (r2 - g2) / d + 4;
|
||||
break;
|
||||
}
|
||||
h /= 6;
|
||||
}
|
||||
h = (h * 360).toFixed(1);
|
||||
s = (s * 100).toFixed(1);
|
||||
v = (v * 100).toFixed(1);
|
||||
|
||||
var result = [h, s, v];
|
||||
return result;
|
||||
}
|
||||
|
||||
function rgb2cmyk(rgbArr) {
|
||||
var r3 = rgbArr[0];
|
||||
var g3 = rgbArr[1];
|
||||
var b3 = rgbArr[2];
|
||||
var computedK = 0
|
||||
if (r3 == 0 && g3 == 0 && b3 == 0) {
|
||||
computedK = 1;
|
||||
return [0, 0, 0, 1];
|
||||
}
|
||||
var computedC = 1 - (r3 / 255);
|
||||
var computedM = 1 - (g3 / 255);
|
||||
var computedY = 1 - (b3 / 255);
|
||||
var minCMY = Math.min(computedC,
|
||||
Math.min(computedM, computedY));
|
||||
computedC = (computedC - minCMY) / (1 - minCMY);
|
||||
computedM = (computedM - minCMY) / (1 - minCMY);
|
||||
computedY = (computedY - minCMY) / (1 - minCMY);
|
||||
computedK = minCMY;
|
||||
computedC = computedC.toFixed(3);
|
||||
computedM = computedM.toFixed(3);
|
||||
computedY = computedY.toFixed(3);
|
||||
computedK = computedK.toFixed(3);
|
||||
|
||||
return [computedC, computedM, computedY, computedK];
|
||||
}
|
||||
|
||||
(function dotime() {
|
||||
var date = new Date();
|
||||
var hours = pad(date.getHours(), '0');
|
||||
var mins = pad(date.getMinutes(), '0');
|
||||
var secs = pad(date.getSeconds(), '0');
|
||||
var color = '#' + hours + mins + secs;
|
||||
var hex = hours + mins + secs;
|
||||
var rgb = hex2rgb(hex);
|
||||
var xy = rgb2xy(rgb);
|
||||
var hsl = rgb2hsl(rgb);
|
||||
var hsv = rgb2hsv(rgb);
|
||||
var cmyk = rgb2cmyk(rgb);
|
||||
|
||||
$('#time').innerHTML = [hours, mins, secs].join(' : ');
|
||||
$('#color').innerHTML = "HEX " + color;
|
||||
$('#rgbcolor').innerHTML = "RGB " + rgb.join(', ');
|
||||
$('#xycolor').innerHTML = "CIE " + xy.join(', ');
|
||||
$('#hslcolor').innerHTML = "HSL " + hsl[0] + "º, " + hsl[1] + "%, " + hsl[2] + "%";
|
||||
$('#hsvcolor').innerHTML = "HSV " + hsv[0] + "º, " + hsv[1] + "%, " + hsv[2] + "%";
|
||||
$('#cmykcolor').innerHTML = "CMYK " + cmyk.join(', ');
|
||||
|
||||
document.body.style.background = color;
|
||||
|
||||
setTimeout(function() {
|
||||
dotime();
|
||||
}, 1000);
|
||||
}());
|
||||
Reference in New Issue
Block a user