mirror eraser
This commit is contained in:
parent
c9dd3644a4
commit
74aba78424
|
@ -47,7 +47,6 @@ class BrushTool extends ResizableTool {
|
|||
console.log("Drawing under the horizontal axis");
|
||||
mirrorPrevY = Math.floor(midY - Math.abs(midY - prevMousePosY));
|
||||
mirrorCurrentY = Math.floor(midY - Math.abs(midY - currMousePosY));
|
||||
|
||||
}
|
||||
|
||||
this.mirrorDraw(
|
||||
|
|
|
@ -27,51 +27,82 @@ class EraserTool extends ResizableTool {
|
|||
);
|
||||
}
|
||||
|
||||
let midX = (currFile.canvasSize[0] / 2);
|
||||
let midY = (currFile.canvasSize[1] / 2);
|
||||
let prevMousePosX = Math.floor(this.prevMousePos[0] / currFile.zoom);
|
||||
let prevMousePosY = Math.floor(this.prevMousePos[1] / currFile.zoom);
|
||||
let currMousePosX = Math.floor(this.currMousePos[0] / currFile.zoom);
|
||||
let currMousePosY = Math.floor(this.currMousePos[1] / currFile.zoom);
|
||||
let mirrorPrevX, mirrorPrevY, mirrorCurrentX, mirrorCurrentY;
|
||||
|
||||
// If Horizontal Symmetry mode is activated
|
||||
// draw specular
|
||||
if (currFile.hSymmetricLayer.isEnabled) {
|
||||
// if the current mouse position is over the horizontal axis
|
||||
let originalSize = currFile.canvasSize;
|
||||
let midY = (originalSize[1] / 2);
|
||||
let prevMousePosY = Math.floor(this.prevMousePos[1] / currFile.zoom);
|
||||
let currMousePosY = Math.floor(this.currMousePos[1] / currFile.zoom);
|
||||
|
||||
console.log("midY: " + midY);
|
||||
console.log("currMouseY: " + currMousePosY);
|
||||
|
||||
if (currMousePosY <= midY) {
|
||||
console.log("Drawing over the horizontal axis");
|
||||
let mirrorPrevY = Math.floor(midY + Math.abs(midY - prevMousePosY));
|
||||
let mirrorCurrentY = Math.floor(midY + Math.abs(midY - currMousePosY));
|
||||
|
||||
this.mirrorDraw(mirrorPrevY, mirrorCurrentY);
|
||||
mirrorPrevY = Math.floor(midY + Math.abs(midY - prevMousePosY));
|
||||
mirrorCurrentY = Math.floor(midY + Math.abs(midY - currMousePosY));
|
||||
} else {
|
||||
console.log("Drawing under the horizontal axis");
|
||||
let mirrorPrevY = Math.floor(midY - Math.abs(midY - prevMousePosY));
|
||||
let mirrorCurrentY = Math.floor(midY - Math.abs(midY - currMousePosY));
|
||||
|
||||
this.mirrorDraw(mirrorPrevY, mirrorCurrentY);
|
||||
mirrorPrevY = Math.floor(midY - Math.abs(midY - prevMousePosY));
|
||||
mirrorCurrentY = Math.floor(midY - Math.abs(midY - currMousePosY));
|
||||
}
|
||||
this.mirrorErase(
|
||||
Math.floor(this.prevMousePos[0] / currFile.zoom),
|
||||
mirrorPrevY,
|
||||
Math.floor(this.currMousePos[0] / currFile.zoom),
|
||||
mirrorCurrentY,
|
||||
true, false
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
if (currFile.vSymmetricLayer.isEnabled) {
|
||||
// console.log("midX => " + midX);
|
||||
// console.log("currMouseX => " + currMousePosX);
|
||||
|
||||
// if the current mouse position is over the horizontal axis
|
||||
if (currMousePosX <= midX) {
|
||||
mirrorPrevX = Math.floor(midX + Math.abs(midX - prevMousePosX));
|
||||
mirrorCurrentX = Math.floor(midX + Math.abs(midX - currMousePosX));
|
||||
} else {
|
||||
mirrorPrevX = Math.floor(midX - Math.abs(midX - prevMousePosX));
|
||||
mirrorCurrentX = Math.floor(midX - Math.abs(midX - currMousePosX));
|
||||
}
|
||||
|
||||
this.mirrorErase(
|
||||
mirrorPrevX,
|
||||
Math.floor(this.prevMousePos[1] / currFile.zoom),
|
||||
mirrorCurrentX,
|
||||
Math.floor(this.currMousePos[1] / currFile.zoom),
|
||||
false, true
|
||||
);
|
||||
}
|
||||
|
||||
if (currFile.hSymmetricLayer.isEnabled && currFile.vSymmetricLayer.isEnabled) {
|
||||
// Based on current mouse position we can infer which quadrant is the remaining one
|
||||
this.mirrorErase(mirrorPrevX, mirrorPrevY, mirrorCurrentX, mirrorCurrentY, true, true);
|
||||
}
|
||||
|
||||
currFile.currentLayer.updateLayerPreview();
|
||||
}
|
||||
|
||||
mirrorDraw(mirrorPrevY, mirrorCurrentY) {
|
||||
mirrorErase(prevX, prevY, currX, currY, isHorizontal, isVertical) {
|
||||
let horizontalFactor = (isHorizontal) ? 1 : 0;
|
||||
let verticalFactor = (isVertical) ? 1 : 0;
|
||||
if (this.currSize % 2 === 0) {
|
||||
currFile.currentLayer.drawLine(
|
||||
Math.floor(this.prevMousePos[0] / currFile.zoom),
|
||||
Math.floor(mirrorPrevY),
|
||||
Math.floor(this.currMousePos[0] / currFile.zoom),
|
||||
Math.floor(mirrorCurrentY),
|
||||
prevX,
|
||||
prevY,
|
||||
currX,
|
||||
currY,
|
||||
this.currSize
|
||||
);
|
||||
} else {
|
||||
currFile.currentLayer.drawLine(
|
||||
Math.floor(this.prevMousePos[0] / currFile.zoom),
|
||||
Math.floor(mirrorPrevY - 1),
|
||||
Math.floor(this.currMousePos[0] / currFile.zoom),
|
||||
Math.floor(mirrorCurrentY - 1),
|
||||
prevX - verticalFactor,
|
||||
prevY - horizontalFactor,
|
||||
currX - verticalFactor,
|
||||
currY - horizontalFactor,
|
||||
this.currSize
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue