diff --git a/index.js b/index.js index ddf919c..3a4225b 100644 --- a/index.js +++ b/index.js @@ -16,7 +16,9 @@ container.style.width = `${WIDTH * 16}px`; const canvas = document.createElement('div'); canvas.className = 'canvas'; canvas.addEventListener('mousedown', () => mouseDown = true); +const pixels = []; for(let y = 0; y < HEIGHT; y++) { + const pxRow = []; const row = document.createElement('div'); row.className = 'row'; for(let x = 0; x < WIDTH; x++) { @@ -28,8 +30,10 @@ for(let y = 0; y < HEIGHT; y++) { pixel.style.backgroundColor = brushColor; }); row.appendChild(pixel); + pxRow.push(pixel); } canvas.appendChild(row); + pixels.push(pxRow); } container.appendChild(canvas); @@ -52,4 +56,52 @@ title.innerText = 'BRUSH COLOR'; palette.appendChild(title); container.appendChild(palette); -document.body.appendChild(container); \ No newline at end of file +// File reader +/* + + + */ +const fileDiv = document.createElement('div'); +const fileInput = document.createElement('input'); +fileInput.setAttribute('type', 'file'); +fileDiv.appendChild(fileInput); +const btnLoad = document.createElement('input'); +btnLoad.setAttribute('type', 'button'); +btnLoad.setAttribute('value', 'Load'); +btnLoad.addEventListener('click', () => { + const reader = new FileReader(); + reader.addEventListener('load', () => { + const img = new Image(); + img.onload = () => { + const canvas = document.createElement('canvas'); + canvas.setAttribute('visibility', 'hidden'); + canvas.width = img.width; + canvas.height = img.height; + document.body.appendChild(canvas); + const ctx = canvas.getContext('2d'); + ctx.drawImage(img, 0, 0, img.width, img.height); + for(let y = 0; y < img.height / 16; y++) { + for(let x = 0; x < img.width / 16; x++) { + const p = ctx.getImageData(x * 16 + 8, y * 16 + 8, 1, 1).data; + const hex = "#" + ("000000" + rgbToHex(p[0], p[1], p[2])).slice(-6); + if(y >= pixels.length) continue; + if(x >= pixels[y].length) continue; + pixels[y][x].style.backgroundColor = hex; + } + } + document.body.removeChild(canvas); + }; + img.src = reader.result; + }, false); + reader.readAsDataURL(fileInput.files[0]); +}); +fileDiv.appendChild(btnLoad); + +function rgbToHex(r, g, b) { + if (r > 255 || g > 255 || b > 255) + throw "Invalid color component"; + return ((r << 16) | (g << 8) | b).toString(16); +} + +document.body.appendChild(container); +document.body.appendChild(fileDiv);