var imageDataToMove; var originalDataPosition; var canMoveSelection = false; var lastMovePos; var selectionCanceled = false; // TODO: move with arrows function updateMovePreview(mouseEvent) { lastMousePos = getCursorPosition(mouseEvent); // clear the entire tmp layer TMPLayer.context.clearRect(0, 0, TMPLayer.canvas.width, TMPLayer.canvas.height); // put the image data with offset TMPLayer.context.putImageData( imageDataToMove, Math.round(lastMousePos[0] / zoom - imageDataToMove.width / 2), Math.round(lastMousePos[1] / zoom - imageDataToMove.height / 2)); lastMovePos = lastMousePos; moveSelection(lastMousePos[0] / zoom, lastMousePos[1] / zoom, imageDataToMove.width, imageDataToMove.height) } function endSelection() { TMPLayer.context.clearRect(0, 0, TMPLayer.canvas.width, TMPLayer.canvas.height); VFXLayer.context.clearRect(0, 0, VFXLayer.canvas.width, VFXLayer.canvas.height); let underlyingImageData = currentLayer.context.getImageData(startX, startY, endX - startX, endY - startY); for (let i=0; i