瀏覽代碼

Add a button to download an image of the current scene

tags/v0.1.0
Fen Dweller 5 年之前
父節點
當前提交
91a518a470
共有 2 個檔案被更改,包括 27 行新增3 行删除
  1. +4
    -1
      macrovision.html
  2. +23
    -2
      macrovision.js

+ 4
- 1
macrovision.html 查看文件

@@ -64,9 +64,12 @@
<i class="fas fa-bars"></i> <i class="fas fa-bars"></i>
</button> </button>
<span class="menubar-group"> <span class="menubar-group">
<button id="screenshot">
<button id="copy-screenshot">
<i class="fas fa-camera"></i> <i class="fas fa-camera"></i>
</button> </button>
<button id="save-screenshot">
<i class="fas fa-download"></i>
</button>
</span> </span>
<span class="menubar-group" id="spawners"> <span class="menubar-group" id="spawners">




+ 23
- 2
macrovision.js 查看文件

@@ -1365,10 +1365,14 @@ document.addEventListener("DOMContentLoaded", () => {
prepareMenu(); prepareMenu();
prepareEntities(); prepareEntities();


document.querySelector("#screenshot").addEventListener("click", e => {
document.querySelector("#copy-screenshot").addEventListener("click", e => {
copyScreenshot(); copyScreenshot();
toast("Copied to clipboard!"); toast("Copied to clipboard!");
}); });

document.querySelector("#save-screenshot").addEventListener("click", e => {
saveScreenshot();
});
document.querySelector("#toggle-menu").addEventListener("click", e => { document.querySelector("#toggle-menu").addEventListener("click", e => {
const popoutMenu = document.querySelector("#popout-menu"); const popoutMenu = document.querySelector("#popout-menu");
if (popoutMenu.classList.contains("visible")) { if (popoutMenu.classList.contains("visible")) {
@@ -2309,7 +2313,7 @@ function exportCanvas(callback) {
const blob = ctx.canvas.toBlob(callback); const blob = ctx.canvas.toBlob(callback);
} }


function copyScreenshot() {
function generateScreenshot(callback) {
renderToCanvas(); renderToCanvas();


/** @type {CanvasRenderingContext2D} */ /** @type {CanvasRenderingContext2D} */
@@ -2318,7 +2322,14 @@ function copyScreenshot() {
ctx.fillStyle = "#555"; ctx.fillStyle = "#555";
ctx.font = "normal normal lighter 16pt coda"; ctx.font = "normal normal lighter 16pt coda";
ctx.fillText("macrovision.crux.sexy", 10, 25); ctx.fillText("macrovision.crux.sexy", 10, 25);
exportCanvas(blob => { exportCanvas(blob => {
callback(blob);
});
}

function copyScreenshot() {
generateScreenshot(blob => {
navigator.clipboard.write([ navigator.clipboard.write([
new ClipboardItem({ new ClipboardItem({
"image/png": blob "image/png": blob
@@ -2328,6 +2339,16 @@ function copyScreenshot() {
drawScale(false); drawScale(false);
} }


function saveScreenshot() {
generateScreenshot(blob => {
const a = document.createElement("a");
a.href = URL.createObjectURL(blob);
a.setAttribute("download", "macrovision.png");
a.click();
});
drawScale(false);
}

function toast(msg) { function toast(msg) {
div = document.createElement("div"); div = document.createElement("div");
div.innerHTML = msg; div.innerHTML = msg;


Loading…
取消
儲存