(function($) { $.fn.brushTool = function(painter) { // SET ESSENTIALS var $canvas = this; $canvas.unbind(); painter.clicks = 0; var startX, startY, endX, endY; var drawLine = function() { $canvas.drawLine({ strokeWidth: painter.stroke, strokeStyle: painter.color, strokeCap: 'round', strokeJoin: 'round', x1: startX, y1: startY, x2: endX, y2: endY }); }; //Canvas Dimensions var cw = 0; var ch = 0; // scale var sx = 0; var sy = 0; $canvas.on(painter.getTouchEventName('mousedown'), function(event) { painter.hist.push(painter.last.src=$canvas[0].toDataURL('image/png')); painter.undoHist.length = 0; rect = $canvas[0].getBoundingClientRect(); if (painter.press === true) {painter.clicks = 0;} if (painter.clicks === 0) { painter.drag = true; startX = event.pageX; startY = event.pageY; endX = (event.clientX - rect.left) * ($canvas[0].width / rect.width); endY = (event.clientY - rect.top) * ($canvas[0].height / rect.height); painter.clicks += 1; } event.preventDefault(); }); $canvas.on(painter.getTouchEventName('mouseup'), function(event) { painter.drag = false; painter.last.src = $canvas[0].toDataURL('image/png'); painter.clicks = 0; event.preventDefault(); }); $canvas.on(painter.getTouchEventName('mousemove'), function(event) { if (painter.drag === true && painter.clicks >= 1) { startX = endX; startY = endY; endX = (event.clientX - rect.left) * ($canvas[0].width / rect.width); endY = (event.clientY - rect.top) * ($canvas[0].height / rect.height); drawLine(); } event.preventDefault(); }); }; })(jQuery);