/* Eraser mode is like pen mode but with #fff color */
|
|
define([], function() {
|
|
|
|
function initGui() {
|
|
PaintApp.elements.eraserButton = document.getElementById('eraser-button');
|
|
PaintApp.paletteModesButtons.push(PaintApp.elements.eraserButton);
|
|
PaintApp.elements.eraserButton.addEventListener('click', function() {
|
|
PaintApp.paletteRemoveActiveClass();
|
|
PaintApp.addActiveClassToElement(PaintApp.elements.eraserButton);
|
|
PaintApp.switchMode('Eraser');
|
|
});
|
|
}
|
|
|
|
var Eraser = {
|
|
initGui: initGui,
|
|
onMouseDown: function(event) {
|
|
PaintApp.modes.Eraser.point = event.point;
|
|
var ctx = PaintApp.elements.canvas.getContext('2d');
|
|
|
|
/* We draw a single point on mouse down */
|
|
ctx.beginPath();
|
|
ctx.strokeStyle = '#fff';
|
|
ctx.lineCap = 'round';
|
|
ctx.lineWidth = PaintApp.data.size;
|
|
ctx.moveTo(event.point.x + 1, event.point.y + 1);
|
|
ctx.lineTo(event.point.x, event.point.y);
|
|
ctx.stroke();
|
|
|
|
/* If the activity is shared, we send the point to everyone */
|
|
if (PaintApp.data.isShared) {
|
|
|
|
PaintApp.collaboration.sendMessage({
|
|
action: 'path',
|
|
data: {
|
|
lineWidth: PaintApp.data.size,
|
|
lineCap: 'round',
|
|
strokeStyle: '#fff',
|
|
from: {
|
|
x: event.point.x + 1,
|
|
y: event.point.y + 1
|
|
},
|
|
to: {
|
|
x: event.point.x,
|
|
y: event.point.y
|
|
}
|
|
}
|
|
});
|
|
}
|
|
},
|
|
onMouseDrag: function(event) {
|
|
if (!PaintApp.modes.Eraser.point) {
|
|
return;
|
|
}
|
|
|
|
var ctx = PaintApp.elements.canvas.getContext('2d');
|
|
|
|
/* We draw the move between points on mouse drag */
|
|
ctx.beginPath();
|
|
ctx.strokeStyle = '#fff';
|
|
ctx.lineCap = 'round';
|
|
ctx.lineWidth = PaintApp.data.size;
|
|
ctx.moveTo(PaintApp.modes.Eraser.point.x, PaintApp.modes.Eraser.point.y);
|
|
ctx.lineTo(event.point.x, event.point.y);
|
|
ctx.stroke();
|
|
|
|
/* If the activity is shared, we send the move to everyone */
|
|
if (PaintApp.data.isShared) {
|
|
PaintApp.collaboration.sendMessage({
|
|
action: 'path',
|
|
data: {
|
|
lineWidth: PaintApp.data.size,
|
|
lineCap: 'round',
|
|
strokeStyle: '#fff',
|
|
from: {
|
|
x: event.point.x + 1,
|
|
y: event.point.y + 1
|
|
},
|
|
to: {
|
|
x: event.point.x,
|
|
y: event.point.y
|
|
}
|
|
}
|
|
});
|
|
}
|
|
PaintApp.modes.Eraser.point = event.point;
|
|
},
|
|
onMouseUp: function(event) {
|
|
PaintApp.saveCanvas();
|
|
}
|
|
};
|
|
return Eraser;
|
|
});
|