|
|
- /* Paste mode will paste the selection made with the copy mode */
- define([], function() {
-
- function initGui() {
- PaintApp.elements.pasteButton = document.getElementById('paste-button');
- PaintApp.paletteModesButtons.push(PaintApp.elements.pasteButton);
- PaintApp.elements.pasteButton.addEventListener('click', function() {
- PaintApp.paletteRemoveActiveClass();
- PaintApp.addActiveClassToElement(PaintApp.elements.pasteButton);
- PaintApp.switchMode('Paste');
- });
- }
-
- var Copy = {
- dataImage: undefined,
- initGui: initGui,
-
- onMouseDown: function(event) {
- return function() {
-
- /* We hide the floating element */
- if (PaintApp.data.currentElement) {
- PaintApp.data.currentElement.element.parentElement.removeChild(PaintApp.data.currentElement.element);
- PaintApp.data.currentElement = undefined;
- }
-
- /* Check for paste data */
- if (!PaintApp.modes.Paste.dataImage) {
- return;
- }
-
- PaintApp.modes.Paste.releasedFinger = false;
- PaintApp.handleCurrentFloatingElement();
-
- var left = event.point.x - PaintApp.modes.Paste.dataImage.width / 2 + 'px';
- var top = event.point.y + 55 - PaintApp.modes.Paste.dataImage.height / 2 + 'px';
- var ctx = PaintApp.elements.canvas.getContext('2d');
- var p = event.point;
-
- /* We create an img dom element where the user clicked */
- var element = document.createElement('img');
- element.src = PaintApp.modes.Paste.dataImage.data;
- element.style.width = PaintApp.modes.Paste.dataImage.width + 'px';
- element.style.height = PaintApp.modes.Paste.dataImage.height + 'px';
- element.style.position = 'absolute';
- element.style.left = left;
- element.style.padding = '0px';
- element.style.border = '5px dotted #500';
- element.style.top = top;
-
- document.body.appendChild(element);
-
- /* We store the floating element */
- PaintApp.data.currentElement = {
- type: 'paste',
- element: element,
- startPoint: {
- x: parseInt(element.style.left) + element.getBoundingClientRect().width / 2,
- y: parseInt(element.style.top) + element.getBoundingClientRect().height / 2
- }
- };
-
- /* This will prevent bugs for mobile platforms if the user just do a single tap we won't get onMouseDrag and onMouseUp correctly*/
- if (PaintApp.modes.Paste.releasedFinger) {
- ctx = PaintApp.elements.canvas.getContext('2d');
-
- /* We draw the copied area to the canvas where the user clicked */
- ctx.drawImage(PaintApp.data.currentElement.element, 5 + PaintApp.data.currentElement.element.getBoundingClientRect().left, PaintApp.data.currentElement.element.getBoundingClientRect().top - 55 + 5);
-
- /* If the activity is shared we send the element to everyone */
- if (PaintApp.data.isShared) {
- var drawImage = {
- src: PaintApp.collaboration.compress(PaintApp.data.currentElement.element.src),
- left: PaintApp.data.currentElement.element.getBoundingClientRect().left,
- top: PaintApp.data.currentElement.element.getBoundingClientRect().top - 55 + 5,
- width: PaintApp.data.currentElement.element.getBoundingClientRect().width,
- height: PaintApp.data.currentElement.element.getBoundingClientRect().height
- };
- PaintApp.collaboration.sendMessage({
- action: 'drawImage',
- data: drawImage
- })
- }
- PaintApp.data.currentElement.element.parentElement.removeChild(PaintApp.data.currentElement.element);
- PaintApp.data.currentElement = undefined;
- PaintApp.saveCanvas();
- }
- }();
- },
-
- onMouseDrag: function(event) {
- if (!PaintApp.data.currentElement) {
- return;
- }
-
- /* We move the floating pasting where the mouse is dragged */
- var left = event.point.x - PaintApp.modes.Paste.dataImage.width / 2 + 'px';
- var top = event.point.y + 55 - PaintApp.modes.Paste.dataImage.height / 2 + 'px';
- PaintApp.data.currentElement.element.style.left = left;
- PaintApp.data.currentElement.element.style.top = top;
- },
-
- onMouseUp: function(event) {
- PaintApp.modes.Paste.releasedFinger = true;
- if (!PaintApp.data.currentElement) {
- return;
- }
- var ctx = PaintApp.elements.canvas.getContext('2d');
-
- /* We draw the copied area to the canvas where the user clicked */
- ctx.drawImage(PaintApp.data.currentElement.element, PaintApp.data.currentElement.element.getBoundingClientRect().left, PaintApp.data.currentElement.element.getBoundingClientRect().top - 55, PaintApp.data.currentElement.element.getBoundingClientRect().width, PaintApp.data.currentElement.element.getBoundingClientRect().height);
-
- /* If the activity is shared we send the element to everyone */
- if (PaintApp.data.isShared) {
- var drawImage = {
- src: PaintApp.data.currentElement.element.src,
- left: PaintApp.data.currentElement.element.getBoundingClientRect().left,
- top: PaintApp.data.currentElement.element.getBoundingClientRect().top - 55,
- width: PaintApp.data.currentElement.element.getBoundingClientRect().width,
- height: PaintApp.data.currentElement.element.getBoundingClientRect().height
- };
- PaintApp.collaboration.sendMessage({
- action: 'drawImage',
- data: drawImage
- })
- }
-
- PaintApp.data.currentElement.element.parentElement.removeChild(PaintApp.data.currentElement.element);
- PaintApp.data.currentElement = undefined;
- PaintApp.saveCanvas();
- }
- };
- return Copy;
- });
|