Mercurial > hg > forks > multipaint-js
view mpui.js @ 46:31bfa78dba15
Clean up and fix the flood fill functions.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Wed, 04 Jul 2018 17:34:22 +0300 |
parents | f7bd82b817fc |
children | 33a63f851a3b |
line wrap: on
line source
var mpMachine = 0; var mpMachines = { 0 : "C64 hires", 10 : "C64 multicolor", 6 : "ZX Spectrum", 5 : "MSX1 mode 2", 9 : "Plus4 hires", 19 : "Plus4 multicolor", 2 : "Amstrad CPC mode 0", }; var mpSources = [ "draw_inputs.pde", "draw_outputs.pde", "draw_smart.pde", "events.pde", "exporters.pde", "Interface.pde", "multipaint.pde", ]; function stGE(obname) { return document.getElementById(obname); } function stCE(obname, obid) { var mob = document.createElement(obname); if (obid) mob.id = obid; return mob; } function stClearChildren(obnode) { while (obnode.firstChild) obnode.removeChild(obnode.firstChild); } function stPRE(mstr) { return mstr.toLowerCase().replace(/[^a-z0-9]/g, "_"); } function stAddEventOb(obname, evobj, evtype, evcallback, evparam) { if (evobj == null || typeof(evobj) == 'undefined') { console.log("Event object '"+ obname +"' == null."); return; } evobj.addEventListener(evtype, evcallback, false); evobj.evparam = evparam; } function stAddEvent(obname, evtype, evcallback, evparam) { stAddEventOb(obname, stGE(obname), evtype, evcallback, evparam); } function mpShowMachineSelector() { var mpCanvas = stGE("mpCanvas"); mpCanvas.style.display = "none"; var mpUI = stGE("mpUI"); mobj = stCE("h2"); mobj.textContent = "Multipaint.JS" mpUI.appendChild(mobj); var mdiv = stCE("div"); mpUI.appendChild(mdiv); mobj = stCE("p"); mobj.textContent = "Choose your target machine:"; mdiv.appendChild(mobj); mobj = stCE("select", "machineID"); for (var key in mpMachines) { var opt = stCE("option"); opt.value = key; opt.textContent = mpMachines[key]; mobj.appendChild(opt); } mdiv.appendChild(mobj); mobj = stCE("button", "selectID"); mobj.textContent = "RUN"; stAddEventOb(mobj.name, mobj, "click", mpMachineSelected); mdiv.appendChild(mobj); mobj = stCE("div"); mobj.innerHTML = "<p><b>Things that are known NOT to work:</b></p>"+ "<ul>"+ "<li>Native Multipaint save/load</li>"+ "<li>Source / PRG import/export</li>"+ "<li>PNG/JPEG import/export</li>"+ "<li> .. there may be bugs.</li>"+ "</ul>"+ "<p><b>NOTICE!</b> When loading/importing, you click on the load icon (or press key) and a HTML file selector button will appear "+ "ON THE BOTTOM. You need to click that, too. Sorry, that can't be automated because of pop-up blocking etc..</p>"; mpUI.appendChild(mobj); mobj = stCE("hr"); mpUI.appendChild(mobj); } function mpMachineSelected() { var mpUI = stGE("mpUI"); var id = stGE("machineID"); mpMachine = id.selectedIndex >= 0 ? id.options[id.selectedIndex].value : 0; stClearChildren(mpUI); var mpCanvas = stGE("mpCanvas"); mpCanvas.style.display = "block"; window.location.href = window.location.href +"?"+ mpMachine.toString(); mpRunSketch(mpCanvas); } function mpStart() { stGE("mpNote").innerHTML = "<a href=\"http://multipaint.kameli.net/\">Multipaint</a> (C) 2016-2017 <b>Tero 'Dr. TerrorZ' Heikkinen</b>, "+ "ProcessingJS port and modifications by <b>Matti 'ccr' Hämäläinen</b> (2018)"; var slink = window.location.href; var spos, found = false; if ((spos = slink.indexOf("?")) >= 0) { var tmp = parseInt(unescape(slink.substr(spos + 1))); for (var key in mpMachines) { if (key == tmp) { mpMachine = key; found = true; break; } } } if (found) { mpRunSketch(stGE("mpCanvas")); } else { stAddEventOb("DOM", document, "DOMContentLoaded", mpShowMachineSelector); } }