You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.4 KiB
72 lines
2.4 KiB
if(String.prototype.padStart == null) {
|
|
String.prototype.padStart = function(length, fill) {
|
|
var padding = "";
|
|
while(padding.length + this.length < length)
|
|
padding += fill.substr(0, length - (padding.length + this.length));
|
|
return padding + this;
|
|
}
|
|
}
|
|
|
|
try {
|
|
eval("let x;"); // this will break the try catch pre-ECMAScript 6
|
|
var html5 = document.getElementsByClassName("html5");
|
|
for(var i = 0; i < html5.length; i++) {
|
|
html5[i].classList.remove("html5");
|
|
}
|
|
} catch(e) {}
|
|
|
|
function updateColor(color) {
|
|
var rgb = [0, 0, 0];
|
|
|
|
|
|
// Parse into RGB values
|
|
if(typeof color == "object") { // Split RGB
|
|
var colors = color.getElementsByTagName("input");
|
|
for(var i = 0; i < colors.length; i++) {
|
|
rgb[i] = parseInt(colors[i].value);
|
|
}
|
|
} else {
|
|
// Remove any extra formatting
|
|
color = color.toLowerCase().replace(/\s+/g, " ").replace(/#/g, "").replace(/0x/g, "");
|
|
|
|
if(color.length == 3) { // Three digit hex
|
|
for(var i = 0; i < rgb.length; i++)
|
|
rgb[i] = parseInt(color[i] + color[i], 16);
|
|
} else if(color.length == 6) { // Six digit hex
|
|
for(var i = 0; i < rgb.length; i++)
|
|
rgb[i] = parseInt(color.substr(i * 2, 2), 16);
|
|
} else if(color.length == 4) { // BGR15
|
|
var val = parseInt(color, 16);
|
|
rgb[0] = Math.round(( val & 0x1F) * 255 / 31);
|
|
rgb[1] = Math.round(((val >> 0x5) & 0x1F) * 255 / 31);
|
|
rgb[2] = Math.round(((val >> 0xA) & 0x1F) * 255 / 31);
|
|
} else {
|
|
return alert("Error: Invalid color!");
|
|
}
|
|
}
|
|
|
|
// Ensure the colors are valid
|
|
for(var i = 0; i < rgb.length; i++) {
|
|
if(rgb[i] < 0x00 || rgb[i] > 0xFF)
|
|
return alert("Error: Invalid color!");
|
|
}
|
|
|
|
// Write to all inputs
|
|
var hex = "#";
|
|
for(var i = 0; i < rgb.length; i++)
|
|
hex += rgb[i].toString(16).padStart(2, "0").toUpperCase();
|
|
document.getElementById("html-text").value = hex;
|
|
document.getElementById("html-color").value = hex;
|
|
|
|
var bgr15 = ((Math.round(rgb[2] * 31 / 255) & 0x1F) << 10 | (Math.round(rgb[1] * 31 / 255) & 0x1F) << 5 | (Math.round(rgb[0] * 31 / 255) & 0x1F));
|
|
document.getElementById("bgr15-no-bit15").value = "0x" + bgr15.toString(16).padStart(4, "0").toUpperCase();
|
|
document.getElementById("bgr15-bit15").value = "0x" + (bgr15 | 1 << 15).toString(16).padStart(4, "0").toUpperCase();
|
|
|
|
document.getElementById("rgb-r").value = rgb[0];
|
|
document.getElementById("rgb-g").value = rgb[1];
|
|
document.getElementById("rgb-b").value = rgb[2];
|
|
|
|
document.getElementById("preview").style.backgroundColor = hex;
|
|
}
|
|
|
|
updateColor("#000000"); |