Rotating and mirroring boards that display coordinates also changes

coordinate origin
This commit is contained in:
bancika
2020-12-13 16:03:42 +01:00
parent 52750121e3
commit 6c00be0b87
9 changed files with 105 additions and 7 deletions
@@ -27,7 +27,7 @@ import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.Point2D;
import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.components.transform.AbstractBoardTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
@@ -43,7 +43,7 @@ import org.diylc.utils.Constants;
@ComponentDescriptor(name = "Eyelet Board", category = "Boards", author = "Branislav Stojkovic",
zOrder = IDIYComponent.BOARD, instanceNamePrefix = "Board", description = "Perforated board with eyelets",
bomPolicy = BomPolicy.SHOW_ONLY_TYPE_NAME, autoEdit = false, keywordPolicy = KeywordPolicy.SHOW_TYPE_NAME,
transformer = SimpleComponentTransformer.class, enableCache = true)
transformer = AbstractBoardTransformer.class, enableCache = true)
public class EyeletBoard extends AbstractBoard {
private static final long serialVersionUID = 1L;
@@ -27,7 +27,7 @@ import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.Point2D;
import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.components.transform.AbstractBoardTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
@@ -45,7 +45,7 @@ import org.diylc.utils.Constants;
zOrder = IDIYComponent.BOARD, instanceNamePrefix = "Board",
description = "Perforated board as found on some Marshall and Trainwreck amps",
bomPolicy = BomPolicy.SHOW_ONLY_TYPE_NAME, autoEdit = false, keywordPolicy = KeywordPolicy.SHOW_TAG,
keywordTag = "Perf Board", transformer = SimpleComponentTransformer.class)
keywordTag = "Perf Board", transformer = AbstractBoardTransformer.class)
public class MarshallPerfBoard extends AbstractBoard {
private static final long serialVersionUID = 1L;
@@ -27,7 +27,7 @@ import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.Point2D;
import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.components.transform.AbstractBoardTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
@@ -44,7 +44,7 @@ import org.diylc.utils.Constants;
@ComponentDescriptor(name = "Perf Board w/ Pads", category = "Boards", author = "Branislav Stojkovic",
zOrder = IDIYComponent.BOARD, instanceNamePrefix = "Board", description = "Perforated board with solder pads",
bomPolicy = BomPolicy.SHOW_ONLY_TYPE_NAME, autoEdit = false, keywordPolicy = KeywordPolicy.SHOW_TAG,
keywordTag = "Perf Board", transformer = SimpleComponentTransformer.class, enableCache = true)
keywordTag = "Perf Board", transformer = AbstractBoardTransformer.class, enableCache = true)
public class PerfBoard extends AbstractBoard {
private static final long serialVersionUID = 1L;
@@ -0,0 +1,94 @@
package org.diylc.components.transform;
import java.awt.geom.Point2D;
import org.diylc.common.IComponentTransformer;
import org.diylc.components.boards.AbstractBoard;
import org.diylc.components.boards.AbstractBoard.CoordinateOrigin;
import org.diylc.core.IDIYComponent;
public class AbstractBoardTransformer extends SimpleComponentTransformer {
@Override
public void rotate(IDIYComponent<?> component, Point2D center, int direction) {
super.rotate(component, center, direction);
AbstractBoard board = (AbstractBoard)component;
CoordinateOrigin origin = board.getCoordinateOrigin();
if (direction == IComponentTransformer.CLOCKWISE) {
switch (origin) {
case Bottom_Left:
origin = CoordinateOrigin.Top_Left;
break;
case Bottom_Right:
origin = CoordinateOrigin.Bottom_Left;
break;
case Top_Left:
origin = CoordinateOrigin.Top_Right;
break;
case Top_Right:
origin = CoordinateOrigin.Bottom_Right;
break;
}
} else {
switch (origin) {
case Bottom_Left:
origin = CoordinateOrigin.Bottom_Right;
break;
case Bottom_Right:
origin = CoordinateOrigin.Top_Right;
break;
case Top_Left:
origin = CoordinateOrigin.Bottom_Left;
break;
case Top_Right:
origin = CoordinateOrigin.Top_Left;
break;
}
}
board.setCoordinateOrigin(origin);
}
@Override
public void mirror(IDIYComponent<?> component, Point2D center, int direction) {
super.mirror(component, center, direction);
AbstractBoard board = (AbstractBoard)component;
CoordinateOrigin origin = board.getCoordinateOrigin();
if (direction == IComponentTransformer.HORIZONTAL) {
switch (origin) {
case Bottom_Left:
origin = CoordinateOrigin.Bottom_Right;
break;
case Bottom_Right:
origin = CoordinateOrigin.Bottom_Left;
break;
case Top_Left:
origin = CoordinateOrigin.Top_Right;
break;
case Top_Right:
origin = CoordinateOrigin.Top_Left;
break;
}
} else {
switch (origin) {
case Bottom_Left:
origin = CoordinateOrigin.Top_Left;
break;
case Bottom_Right:
origin = CoordinateOrigin.Top_Right;
break;
case Top_Left:
origin = CoordinateOrigin.Bottom_Left;
break;
case Top_Right:
origin = CoordinateOrigin.Top_Right;
break;
}
}
board.setCoordinateOrigin(origin);
}
}
@@ -27,7 +27,7 @@ import org.diylc.common.OrientationHV;
import org.diylc.components.boards.AbstractVeroBoard;
import org.diylc.core.IDIYComponent;
public class VeroBoardTransformer extends SimpleComponentTransformer {
public class VeroBoardTransformer extends AbstractBoardTransformer {
@Override
public void rotate(IDIYComponent<?> component, Point2D center, int direction) {