function diagLine(lastMouseClickPos, zoom, cursorLocation) { let x0 = Math.floor(lastMouseClickPos[0]/zoom); let y0 = Math.floor(lastMouseClickPos[1]/zoom); let x1 = Math.floor(cursorLocation[0]/zoom); let y1 = Math.floor(cursorLocation[1]/zoom); let dx = Math.abs(x1-x0); let dy = Math.abs(y1-y0); let sx = (x0 < x1 ? 1 : -1); let sy = (y0 < y1 ? 1 : -1); let err = dx-dy; const brushSize = tool.line.brushSize; const canvas = document.getElementById('tmp-canvas'); const context = canvas.getContext('2d'); context.fillStyle=currentGlobalColor; context.clearRect(0, 0, canvas.width, canvas.height); canvas.style.zIndex = parseInt(currentLayer.canvas.style.zIndex, 10) + 1; //console.log(canvas.style.zIndex, currentLayer.canvas.style.zIndex); while (true) { if (currentTool.name !== 'line') return; context.fillRect(x0-Math.floor(brushSize/2), y0-Math.floor(brushSize/2), brushSize, brushSize); //if we've reached the end goal, exit the loop if ((x0==x1) && (y0==y1)) break; var e2 = 2*err; if (e2 >-dy) { err -=dy; x0+=sx; } if (e2 < dx) { err +=dx; y0+=sy; } } }