diff --git a/src/main/java/de/neemann/digital/draw/graphics/GraphicMinMax.java b/src/main/java/de/neemann/digital/draw/graphics/GraphicMinMax.java index 713276bbd..36d13e344 100644 --- a/src/main/java/de/neemann/digital/draw/graphics/GraphicMinMax.java +++ b/src/main/java/de/neemann/digital/draw/graphics/GraphicMinMax.java @@ -10,7 +10,7 @@ import de.neemann.digital.draw.graphics.text.formatter.GraphicsFormatter; import java.awt.font.FontRenderContext; import java.awt.geom.Rectangle2D; -import static de.neemann.digital.draw.graphics.GraphicSwing.isMirror; +import static de.neemann.digital.draw.graphics.GraphicSwing.getMirrorYOrientation; /** * This class is used to determine the size of shapes or the whole circuit. @@ -113,8 +113,7 @@ public class GraphicMinMax extends Graphic { p = p.sub(width.mul(orientation.getX()).div(2)); } - int oy = orientation.getY(); - if (isMirror(p1, p2, p3)) oy = 2 - oy; + int oy = getMirrorYOrientation(orientation, p1, p2, p3); if (oy != 0) { p = p.sub(height.mul(oy).div(2)); } else diff --git a/src/main/java/de/neemann/digital/draw/graphics/GraphicSVG.java b/src/main/java/de/neemann/digital/draw/graphics/GraphicSVG.java index bbf1c3073..a579c3d9b 100644 --- a/src/main/java/de/neemann/digital/draw/graphics/GraphicSVG.java +++ b/src/main/java/de/neemann/digital/draw/graphics/GraphicSVG.java @@ -13,7 +13,7 @@ import java.nio.charset.StandardCharsets; import java.util.Date; import java.util.HashSet; -import static de.neemann.digital.draw.graphics.GraphicSwing.isMirror; +import static de.neemann.digital.draw.graphics.GraphicSwing.getMirrorYOrientation; /** * Used to create a SVG representation of the circuit. @@ -206,8 +206,7 @@ public class GraphicSVG extends Graphic { } VectorFloat p = new VectorFloat(p1); - int oy = orientation.getY(); - if (isMirror(p1, p2, p3)) oy = 2 - oy; + int oy = getMirrorYOrientation(orientation, p1, p2, p3); switch (oy) { case 1: p = p.add(new VectorFloat(0, style.getFontSize() / 2f - style.getFontSize() / 8f)); diff --git a/src/main/java/de/neemann/digital/draw/graphics/GraphicSwing.java b/src/main/java/de/neemann/digital/draw/graphics/GraphicSwing.java index ac24274d2..0c4fc6609 100644 --- a/src/main/java/de/neemann/digital/draw/graphics/GraphicSwing.java +++ b/src/main/java/de/neemann/digital/draw/graphics/GraphicSwing.java @@ -130,8 +130,7 @@ public class GraphicSwing extends Graphic { } int yoff = 0; - int oy = orientation.getY(); - if (isMirror(p1, p2, p3)) oy = 2 - oy; + int oy = getMirrorYOrientation(orientation, p1, p2, p3); if (oy != 0) { int height = fragment.getHeight(); yoff += height * oy / 3; @@ -144,10 +143,12 @@ public class GraphicSwing extends Graphic { } } - static boolean isMirror(VectorInterface p1, VectorInterface p2, VectorInterface p3) { + static int getMirrorYOrientation(Orientation orientation, VectorInterface p1, VectorInterface p2, VectorInterface p3) { + int oy = orientation.getY(); VectorInterface d0 = p2.sub(p1).toFloat().getOrthogonal(); VectorInterface d1 = p3.sub(p1); - return d1.getX() * d0.getX() + d1.getY() * d0.getY() < 0; + if (d1.getX() * d0.getX() + d1.getY() * d0.getY() < 0) oy = 2 - oy; + return oy; } @Override