|
|
|
@@ -11,6 +11,7 @@ let softness = 25; |
|
|
|
let width; |
|
|
|
let height; |
|
|
|
|
|
|
|
let fitScreen = true; |
|
|
|
let paintMode = false; |
|
|
|
|
|
|
|
let scale; |
|
|
|
@@ -255,6 +256,11 @@ document.addEventListener("DOMContentLoaded", e => { |
|
|
|
document.querySelector("#paint-mode").addEventListener("change", e => { |
|
|
|
paintMode = e.target.checked; |
|
|
|
}); |
|
|
|
|
|
|
|
document.querySelector("#fit-screen").addEventListener("change", e => { |
|
|
|
fitScreen = e.target.checked; |
|
|
|
setup(); |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
function load() { |
|
|
|
@@ -327,16 +333,16 @@ function setup() { |
|
|
|
|
|
|
|
const scaleW = availableWidth / baseImg.width; |
|
|
|
const scaleH = availableHeight / baseImg.height; |
|
|
|
scale = Math.min(scaleW, scaleH); |
|
|
|
scale = fitScreen ? Math.min(scaleW, scaleH) : 1; |
|
|
|
|
|
|
|
width = Math.floor(availableWidth * scale / scaleW); |
|
|
|
height = Math.floor(availableHeight * scale / scaleH); |
|
|
|
width = fitScreen ? Math.floor(availableWidth * scale / scaleW) : baseImg.width; |
|
|
|
height = fitScreen ? Math.floor(availableHeight * scale / scaleH) : baseImg.height; |
|
|
|
|
|
|
|
[baseCtx, baseCtxResized, overlayCtx, overlayCtxResized].forEach(ctx => { |
|
|
|
ctx.canvas.width = width; |
|
|
|
ctx.canvas.height = height; |
|
|
|
ctx.canvas.style.left = (availableWidth - width) / 2 + "px"; |
|
|
|
ctx.canvas.style.top = (availableHeight - height) / 2 + "px"; |
|
|
|
ctx.canvas.style.left = fitScreen ? (availableWidth - width) / 2 + "px" : 0; |
|
|
|
ctx.canvas.style.top = fitScreen ? (availableHeight - height) / 2 + "px" : 0; |
|
|
|
}); |
|
|
|
|
|
|
|
baseCtxResized.drawImage(baseImg, 0, 0, width, height); |
|
|
|
|