diff --git a/index.html b/index.html index 5bdd514..7dff8f5 100644 --- a/index.html +++ b/index.html @@ -23,7 +23,10 @@

Drop a .png or .svg image here

-
+
+ +
+
diff --git a/js/main.js b/js/main.js index 9596022..95f5902 100644 --- a/js/main.js +++ b/js/main.js @@ -10,6 +10,7 @@ new SDFMaker( document.getElementById("setting-radius"), document.getElementById("setting-threshold"), document.getElementById("output-container"), + document.getElementById("button-upload"), document.getElementById("button-generate"), document.getElementById("button-save") ); \ No newline at end of file diff --git a/js/sdfMaker.js b/js/sdfMaker.js index 909ca6e..5a0d4a5 100644 --- a/js/sdfMaker.js +++ b/js/sdfMaker.js @@ -52,6 +52,7 @@ export class SDFMaker { settingRadius, settingThreshold, outputContainer, + buttonUpload, buttonGenerate, buttonSave) { inputTarget.ondrop = event => { @@ -129,6 +130,9 @@ export class SDFMaker { settingThreshold.value = this.#threshold; }; + buttonUpload.oninput = () => { + this.#upload(buttonUpload.files[0]); + }; buttonGenerate.onclick = this.#generate.bind(this); buttonSave.onclick = this.#save.bind(this); @@ -242,40 +246,42 @@ export class SDFMaker { } } - #onDrop(event) { - if (!event.dataTransfer.items) - return; + #processFile(file) { + let upscale = false; - const item = event.dataTransfer.items[0]; + switch (file.type) { + case "image/svg+xml": + upscale = true; - if (item.kind === "file") { - const file = item.getAsFile(); - let upscale = false; + case "image/png": + const reader = new FileReader(); - switch (file.type) { - case "image/svg+xml": - upscale = true; + reader.onload = () => { + const image = new Image(); - case "image/png": - const reader = new FileReader(); + image.onload = () => { + this.#loadImage(file.name, image, upscale); + }; - reader.onload = () => { - const image = new Image(); + image.src = reader.result; + }; - image.onload = () => { - this.#loadImage(file.name, image, upscale); - }; + reader.readAsDataURL(file); - image.src = reader.result; - }; + break; + default: + alert("Only .png files are supported"); + } + } - reader.readAsDataURL(file); + #onDrop(event) { + if (!event.dataTransfer.items) + return; - break; - default: - alert("Only .png files are supported"); - } - } + const item = event.dataTransfer.items[0]; + + if (item.kind === "file") + this.#processFile(item.getAsFile()); } #makeOutputImage(width, height, pixels) { @@ -289,6 +295,10 @@ export class SDFMaker { return image; } + #upload(file) { + this.#processFile(file); + } + #generate() { if (!this.#loaded) return;