var mouseState = -1; var selectedColor = "black"; var selectedColorBorder = "2px red solid"; var unselectedColorBorder = "2px black solid"; var ROWS = 30; var COLS = 30; var customColorToolbar=false; document.addEventListener("DOMContentLoaded",()=>{ function insertAfter(newNode, existingNode) { existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling); } function componentToHex(c) { var hex = c.toString(16); return hex.length == 1 ? "0" + hex : hex; } function rgbToHex(rgbvalue) { var rawColors = rgbvalue.replace("rgb(","").replace(")","").split(","); return "#" + componentToHex(Number(rawColors[0])) + componentToHex(Number(rawColors[1])) + componentToHex(Number(rawColors[2])); } var canvas = document.getElementsByClassName("canvas")[0]; var toolbar = document.getElementsByClassName("toolbar")[0]; var MouseListener = (e)=>{ e.preventDefault(); if (mouseState>=0) { if (mouseState<2 && e.target.tagName==="TH") { e.target.style.background=selectedColor; } else { e.target.style.background="white"; } } } var MouseClickListener = (e)=>{ e.preventDefault(); } var MouseStateUp = (e)=>{ e.preventDefault(); mouseState = -1; } var MouseStateDown = (e)=>{ e.preventDefault(); mouseState = e.button; if (e.target.tagName==="TH") { if (e.button===0) { e.target.style.background=selectedColor; } else { e.target.style.background="white"; } } } var colorPixelBasedOnID = (x,y,color)=>{ var cell = document.getElementById("pos_"+x+"_"+y); cell.style.background=color; } var generateTable = (columns,rows)=>{ var table = document.createElement("table"); for (var i=0;i{ var customColorInput = document.createElement("input"); customColorInput.type="color" customColorInput.value="#222222" customColorInput.classList.add("customColor") customColorInput.id="customColor" insertAfter(customColorInput,dot); customColorInput.addEventListener("change",(e)=>{ dot.style.background=e.target.value selectedColor=e.target.value }) dot.src="transparent.png"; dot.style.background=customColorInput.value; customColorToolbar=true; } var generateColors = (simple)=>{ for (var i=0;i{ e.preventDefault(); var otherDots = document.getElementsByClassName("dot"); for (var i=0;i{ if (customColorToolbar) { var otherDots = document.getElementsByClassName("dot"); for (var i=0;i{ var table = document.getElementsByTagName("table")[0]; if (e.target.value>table.getElementsByTagName("tr").length) { //Add a new row. //To add a new row, just append a new row and a new set of cells. var newcells = 0; while (table.getElementsByTagName("tr").lengthe.target.value) { //REMOVE X amount of rows. var lastrow = table.getElementsByTagName("tr")[table.getElementsByTagName("tr").length-1] lastrow.remove(); } } ROWS = e.target.value; } var ModifyCols = (e)=>{ var table = document.getElementsByTagName("table")[0]; if (e.target.value>COLS) { //console.log("In here.") while (e.target.value>COLS) { for (var i=0;i{ var data = JSON.parse(localStorage.getItem("save_pixelart")) var ROWSDATA = document.getElementById("rowcontrol") ROWSDATA.value=data["ROWS"] ModifyRows({"target":ROWSDATA}); var COLSDATA = document.getElementById("colcontrol") COLSDATA.value=data["COLS"] ModifyCols({"target":COLSDATA}); if ("CUSTOMCOLOR" in data) { if (!customColorToolbar) { var customColorContainer = document.getElementsByClassName("toolbar")[0]; var dot = document.getElementsByTagName("img")[0]; createCustomColorInput(customColorContainer,dot); } document.getElementsByTagName("img")[0].style.background = data["CUSTOMCOLOR"]; document.getElementById("customColor").value = rgbToHex(data["CUSTOMCOLOR"]); } for (var i=0;i{ var consoleText = document.getElementsByClassName("console")[0]; consoleText.remove(); },2000) } var SaveData = ()=>{ var finalData = {}; for (var i=0;i{ var consoleText = document.getElementsByClassName("console")[0]; consoleText.remove(); },2000) } var generateControls = ()=>{ var rowsLabel = document.createElement("label") rowsLabel.innerHTML = "Rows" rowsLabel.classList.add("tinylabel") var rowsControl = document.createElement("input") rowsControl.type = "number" rowsControl.classList.add("inline") rowsControl.classList.add("small") rowsControl.id = "rowcontrol" rowsControl.value = ROWS; rowsControl.addEventListener("change",ModifyRows) toolbar.appendChild(rowsLabel); toolbar.appendChild(rowsControl); var colsLabel = document.createElement("label") colsLabel.innerHTML = "Cols" colsLabel.classList.add("tinylabel") var colsControl = document.createElement("input") colsControl.type = "number" colsControl.classList.add("inline") colsControl.classList.add("small") colsControl.id = "colcontrol" colsControl.value = COLS; colsControl.addEventListener("change",ModifyCols) toolbar.appendChild(colsLabel); toolbar.appendChild(colsControl); var loadButton = document.createElement("button") loadButton.type = "button" loadButton.innerText = "Load" loadButton.classList.add("loadbutton") loadButton.addEventListener("click",LoadData) var saveButton = document.createElement("button") saveButton.type = "button" saveButton.innerText = "Save" saveButton.classList.add("savebutton") saveButton.addEventListener("click",SaveData) toolbar.appendChild(loadButton); toolbar.appendChild(saveButton); } generateTable(ROWS,COLS); canvas.appendChild(document.createElement("br")) generateColors(false); generateControls(); document.addEventListener("scroll",()=>{ toolbar.style.position="absolute"; toolbar.style.left=window.scrollX+"px"; toolbar.style.bottom=-window.scrollY+"px"; }) })