UNPKG

demolishedtexture

Version:

Procedual texture generator for Demolished or what ever you want.Renders base64 strings and/or binary.

78 lines (77 loc) 3.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var demolishedTexture_1 = require("../src/demolishedTexture"); window["GeneratorPixel"] = demolishedTexture_1.TextureGen.G; window["Generator2D"] = demolishedTexture_1.CanvasTextureGen.G; document.addEventListener("DOMContentLoaded", function () { var instance; var sel = document.querySelector.bind(document); var showError = function (message) { sel(".error pre").textContent = message; }; var formatBytes = function (bytes, decimals) { if (bytes == 0) return "0 Byte"; var k = 1024; var sizes = ["Bytes", "KB", "MB", "GB", "TB", "PB"]; var i = Math.floor(Math.log(bytes) / Math.log(k)); return parseFloat((bytes / Math.pow(k, i)).toFixed(decimals)) + " " + sizes[i]; }; var sizeOfBase64String = function (base64String) { if (!base64String) return 0; var padding = (base64String.match(/(=*)$/) || [])[1].length; return 4 * Math.ceil((base64String.length / 3)) - padding; }; var toFile = function (context, fn) { instance.toBlob(fn); }; var createSrc = function (context, frag, size) { var mi = context == "GeneratorPixel" ? "pixel, x, y, w, h,v" : "ctx,x,y,w,h"; var source = "\n " + context + "(" + size + "," + size + ",function(" + mi + ") {\n " + frag + "\n });"; return source; }; var editor = CodeMirror.fromTextArea(document.getElementById("texture-editor"), { mode: "text/javascript", theme: "neonsyntax", lineWrapping: true, lineNumbers: true, styleActiveLine: true, matchBrackets: true }); var dt = performance.now() / 1000; var update = function () { showError(""); var context = sel("select#sel-context").value; var size = sel("select#texture-size").value; var frag = editor.getValue(); var source = createSrc(context, frag, size); instance = eval(source); var base64 = instance.toBase64(); var el = sel("img.result"); sel("#size").textContent = formatBytes(sizeOfBase64String(base64), 2); sel("#size-gen").textContent = formatBytes(source.length + 1280, 2); el.setAttribute("src", base64); }; sel("#btn-export").addEventListener("click", function () { var context = sel("select#sel-context").value; var download = sel("#download"); download.classList.remove("d-none"); download.textContent = "Wait..."; toFile(context, function (b) { var url = URL.createObjectURL(b); download.setAttribute("href", url); download.textContent = "result.png"; }); }); editor.on("change", function (e) { var bounce = -(dt - (performance.now() / 1000)); if (bounce > 0.5) update(); dt = performance.now() / 1000; }); window.onerror = function (ex) { showError(ex.toString()); }; update(); });