|
|
@@ -12,6 +12,33 @@ var Active_Palette_Index = 0; |
|
|
|
var Active_Color_Index = 0; |
|
|
|
|
|
|
|
|
|
|
|
function InvertRGB(hex){ |
|
|
|
var h = (255 - parseInt(hex, 16)).toString(16); |
|
|
|
return (h.length < 2) ? "0" + h : h; |
|
|
|
} |
|
|
|
|
|
|
|
function InvertColor(chex, bw){ |
|
|
|
bw = (bw === true); |
|
|
|
if (chex.indexOf("#") === 0){ |
|
|
|
chex = chex.slice(1); |
|
|
|
} |
|
|
|
if (chex.length === 3){ |
|
|
|
chex = chex[0] + chex[0] + chex[1] + chex[1] + chex[2] + chex[2]; |
|
|
|
} |
|
|
|
if (chex.length !== 6){ |
|
|
|
throw new ValueError("Hex color expected to be 3 or 6 characters long."); |
|
|
|
} |
|
|
|
if (bw) { |
|
|
|
var r = parseInt(chex.slice(0, 2), 16); |
|
|
|
var g = parseInt(chex.slice(2, 4), 16); |
|
|
|
var b = parseInt(chex.slice(4, 6), 16); |
|
|
|
// http://stackoverflow.com/a/3943023/112731 |
|
|
|
return (r * 0.299 + g * 0.587 + b * 0.114) > 186 |
|
|
|
? '#000000' : '#FFFFFF'; |
|
|
|
} |
|
|
|
return "#" + InvertRGB(chex.slice(0, 2)) + InvertRGB(chex.slice(2, 4)) + InvertRGB(chex.slice(4, 6)); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
class CTRLPalettes{ |
|
|
|
constructor(){ |
|
|
@@ -24,7 +51,7 @@ class CTRLPalettes{ |
|
|
|
var handle_syspalette_clicked = function(event){ |
|
|
|
if (this.hasAttribute(ATTRIB_NESIDX)){ |
|
|
|
var idx = parseInt(this.getAttribute(ATTRIB_NESIDX), 16); |
|
|
|
if (idx >= 0 && idx < NESPalette.SystemColors.length){ |
|
|
|
if (idx >= 0 && idx < NESPalette.SystemColor.length){ |
|
|
|
console.log(idx); |
|
|
|
// TODO: Set a selected Tile/Sprite palette index to the color index clicked. |
|
|
|
} |
|
|
@@ -35,6 +62,7 @@ class CTRLPalettes{ |
|
|
|
var idx = parseInt(el.getAttribute(ATTRIB_NESIDX), 16); |
|
|
|
if (idx >= 0 && idx < NESPalette.SystemColor.length){ |
|
|
|
el.style["background-color"] = NESPalette.SystemColor[idx]; |
|
|
|
el.style.color = InvertColor(NESPalette.SystemColor[idx], true); |
|
|
|
el.addEventListener("click", handle_syspalette_clicked); |
|
|
|
} |
|
|
|
}); |