mirror of
https://github.com/lospec/pixel-editor.git
synced 2023-08-10 21:12:51 +03:00
Fixed cut bug, deleted _copyPaste.js
This commit is contained in:
parent
b4c069c156
commit
1d33259abf
@ -55,13 +55,13 @@ const TopMenuModule = (() => {
|
|||||||
break;
|
break;
|
||||||
// REFACTOR: move the binding to the Selection IIFE or something like that once it's done
|
// REFACTOR: move the binding to the Selection IIFE or something like that once it's done
|
||||||
case 'Paste':
|
case 'Paste':
|
||||||
Events.on('click', currSubmenuButton, pasteSelection);
|
Events.on('click', currSubmenuButton, function(){Events.emit("ctrl+v");});
|
||||||
break;
|
break;
|
||||||
case 'Copy':
|
case 'Copy':
|
||||||
Events.on('click', currSubmenuButton, copySelection);
|
Events.on('click', currSubmenuButton, function(){Events.emit("ctrl+c");});
|
||||||
break;
|
break;
|
||||||
case 'Cut':
|
case 'Cut':
|
||||||
Events.on('click', currSubmenuButton, cutSelectionTool);
|
Events.on('click', currSubmenuButton, function(){Events.emit("ctrl+x");});
|
||||||
break;
|
break;
|
||||||
case 'Cancel':
|
case 'Cancel':
|
||||||
//Events.on('click', currSubmenuButton, tool.pencil.switchTo);
|
//Events.on('click', currSubmenuButton, tool.pencil.switchTo);
|
||||||
|
@ -1,85 +0,0 @@
|
|||||||
// Data saved when copying or cutting
|
|
||||||
let clipboardData;
|
|
||||||
// Tells if the user is pasting something or not
|
|
||||||
let isPasting = false;
|
|
||||||
|
|
||||||
// Coordinates of the copied (or cut) selection
|
|
||||||
let copiedStartX;
|
|
||||||
let copiedStartY;
|
|
||||||
let copiedEndX;
|
|
||||||
let copiedEndY;
|
|
||||||
|
|
||||||
/** Copies the current selection to the clipboard
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
function copySelection() {
|
|
||||||
copiedEndX = endX;
|
|
||||||
copiedEndY = endY;
|
|
||||||
|
|
||||||
copiedStartX = startX;
|
|
||||||
copiedStartY = startY;
|
|
||||||
// Getting the selected pixels
|
|
||||||
clipboardData = currentLayer.context.getImageData(startX, startY, endX - startX + 1, endY - startY + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Pastes the clipboard data onto the current layer
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
function pasteSelection() {
|
|
||||||
// Can't paste if the layer is locked
|
|
||||||
if (currentLayer.isLocked) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Cancel the current selection
|
|
||||||
endSelection();
|
|
||||||
|
|
||||||
// I'm pasting
|
|
||||||
isPasting = true;
|
|
||||||
// Putting the image data on the tmp layer
|
|
||||||
TMPLayer.context.putImageData(clipboardData, copiedStartX, copiedStartY);
|
|
||||||
|
|
||||||
// Setting up the move tool to move the pasted value
|
|
||||||
selectionCanceled = false;
|
|
||||||
imageDataToMove = clipboardData;
|
|
||||||
firstTimeMove = false;
|
|
||||||
isRectSelecting = false;
|
|
||||||
|
|
||||||
// Switching to the move tool
|
|
||||||
tool.moveselection.switchTo();
|
|
||||||
// Updating the rectangle preview
|
|
||||||
moveSelection(
|
|
||||||
copiedStartX + (copiedEndX - copiedStartX) / 2,
|
|
||||||
copiedStartY + (copiedEndY - copiedStartY) / 2,
|
|
||||||
clipboardData.width, clipboardData.height);
|
|
||||||
//drawRect(copiedStartX, copiedEndX, copiedStartY, copiedEndY);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Cuts the current selection and copies it to the clipboard
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
function cutSelectionTool() {
|
|
||||||
// Saving the coordinates
|
|
||||||
copiedEndX = endX;
|
|
||||||
copiedEndY = endY;
|
|
||||||
|
|
||||||
copiedStartX = startX;
|
|
||||||
copiedStartY = startY;
|
|
||||||
|
|
||||||
// Getting the selected pixels
|
|
||||||
// If I'm already moving a selection
|
|
||||||
if (imageDataToMove !== undefined) {
|
|
||||||
// I just save that selection in the clipboard
|
|
||||||
clipboardData = imageDataToMove;
|
|
||||||
// And clear the underlying space
|
|
||||||
TMPLayer.context.clearRect(0, 0, TMPLayer.canvas.width, TMPLayer.canvas.height);
|
|
||||||
// The image has been cleared, so I don't have anything to move anymore
|
|
||||||
imageDataToMove = undefined;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// Otherwise, I copy the current selection into the clipboard
|
|
||||||
copySelection();
|
|
||||||
// And clear the selection
|
|
||||||
currentLayer.context.clearRect(startX - 0.5, startY - 0.5, endX - startX + 1, endY - startY + 1);
|
|
||||||
}
|
|
||||||
}
|
|
@ -44,7 +44,6 @@
|
|||||||
|
|
||||||
/**functions**/
|
/**functions**/
|
||||||
//=include _checkerboard.js
|
//=include _checkerboard.js
|
||||||
//=include _copyPaste.js
|
|
||||||
//=include _resizeCanvas.js
|
//=include _resizeCanvas.js
|
||||||
//=include _resizeSprite.js
|
//=include _resizeSprite.js
|
||||||
//=include _colorPicker.js
|
//=include _colorPicker.js
|
||||||
|
@ -4,6 +4,7 @@ class MoveSelectionTool extends Tool {
|
|||||||
endTool = undefined;
|
endTool = undefined;
|
||||||
switchFunc = undefined;
|
switchFunc = undefined;
|
||||||
lastCopiedSelection = undefined;
|
lastCopiedSelection = undefined;
|
||||||
|
cutting = false;
|
||||||
|
|
||||||
constructor (name, options, switchFunc, endTool) {
|
constructor (name, options, switchFunc, endTool) {
|
||||||
super(name, options, switchFunc);
|
super(name, options, switchFunc);
|
||||||
@ -20,9 +21,11 @@ class MoveSelectionTool extends Tool {
|
|||||||
|
|
||||||
copySelection() {
|
copySelection() {
|
||||||
this.lastCopiedSelection = this.currSelection;
|
this.lastCopiedSelection = this.currSelection;
|
||||||
|
this.cutting = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
cutSelection() {
|
cutSelection() {
|
||||||
|
this.cutting = true;
|
||||||
this.lastCopiedSelection = this.currSelection;
|
this.lastCopiedSelection = this.currSelection;
|
||||||
this.endSelection();
|
this.endSelection();
|
||||||
this.currSelection = this.lastCopiedSelection;
|
this.currSelection = this.lastCopiedSelection;
|
||||||
@ -35,7 +38,11 @@ class MoveSelectionTool extends Tool {
|
|||||||
if (this.lastCopiedSelection === undefined)
|
if (this.lastCopiedSelection === undefined)
|
||||||
return;
|
return;
|
||||||
// Finish the current selection and start a new one with the same data
|
// Finish the current selection and start a new one with the same data
|
||||||
this.endSelection();
|
if (!this.cutting) {
|
||||||
|
this.endSelection();
|
||||||
|
}
|
||||||
|
this.cutting = false;
|
||||||
|
|
||||||
this.switchFunc(this);
|
this.switchFunc(this);
|
||||||
this.currSelection = this.lastCopiedSelection;
|
this.currSelection = this.lastCopiedSelection;
|
||||||
|
|
||||||
@ -46,10 +53,11 @@ class MoveSelectionTool extends Tool {
|
|||||||
new HistoryState().EditCanvas();
|
new HistoryState().EditCanvas();
|
||||||
}
|
}
|
||||||
|
|
||||||
onStart(mousePos) {
|
onStart(mousePos, mouseTarget) {
|
||||||
super.onStart(mousePos);
|
super.onStart(mousePos, mouseTarget);
|
||||||
|
|
||||||
if (!this.cursorInSelectedArea(mousePos)) {
|
if (!this.cursorInSelectedArea(mousePos) &&
|
||||||
|
!Util.isChildOfByClass(mouseTarget, "editor-top-menu")) {
|
||||||
this.endSelection();
|
this.endSelection();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user