From 874c9dea83accf6e271e9f31ae3872eaca331c81 Mon Sep 17 00:00:00 2001 From: bancika Date: Wed, 15 Apr 2020 20:35:27 +0200 Subject: [PATCH] fix submini tube orientation --- .../diylc/components/tube/SubminiTube.java | 86 +++++++++---------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/diylc/diylc-library/src/org/diylc/components/tube/SubminiTube.java b/diylc/diylc-library/src/org/diylc/components/tube/SubminiTube.java index 6f91a46e..6ec8c9e9 100644 --- a/diylc/diylc-library/src/org/diylc/components/tube/SubminiTube.java +++ b/diylc/diylc-library/src/org/diylc/components/tube/SubminiTube.java @@ -134,7 +134,7 @@ public class SubminiTube extends AbstractTransparentComponent { @Override public VisibilityPolicy getControlPointVisibilityPolicy(int index) { - return VisibilityPolicy.ALWAYS; + return getFolded() ? VisibilityPolicy.ALWAYS : VisibilityPolicy.WHEN_SELECTED; } @Override @@ -166,18 +166,18 @@ public class SubminiTube extends AbstractTransparentComponent { switch (orientation) { case DEFAULT: dx = 0; - dy = leadSpacing; + dy = -leadSpacing; break; case _90: - dx = -leadSpacing; + dx = leadSpacing; dy = 0; break; case _180: dx = 0; - dy = -leadSpacing; + dy = leadSpacing; break; case _270: - dx = leadSpacing; + dx = -leadSpacing; dy = 0; break; default: @@ -191,33 +191,33 @@ public class SubminiTube extends AbstractTransparentComponent { int centerY = (controlPoints[controlPoints.length - 2].y + y) / 2; switch (orientation) { case DEFAULT: - if (folded) - dx += length + leadLength + diameter / 2; - else - dx = -leadSpacing; - dy = 0; - break; - case _90: - dx = 0; - if (folded) - dy += length + leadLength + diameter / 2; - else - dy = -leadSpacing; - break; - case _180: if (folded) dx -= length + leadLength + diameter / 2; else dx = leadSpacing; dy = 0; break; - case _270: + case _90: dx = 0; if (folded) dy -= length + leadLength + diameter / 2; else dy = leadSpacing; break; + case _180: + if (folded) + dx += length + leadLength + diameter / 2; + else + dx = -leadSpacing; + dy = 0; + break; + case _270: + dx = 0; + if (folded) + dy += length + leadLength + diameter / 2; + else + dy = -leadSpacing; + break; } controlPoints[controlPoints.length - 1].setLocation(centerX + dx, centerY + dy); } @@ -263,30 +263,30 @@ public class SubminiTube extends AbstractTransparentComponent { if (folded) { switch (orientation) { - case DEFAULT: - body[0] = new Area(new RoundRectangle2D.Double(centerX + leadLength, centerY - diameter / 2, - length, diameter, edgeRadius, edgeRadius)); - body[0].add(new Area(new RoundRectangle2D.Double(centerX + leadLength + length - diameter / 2, centerY - diameter / 8, - diameter, diameter / 4, diameter / 4, diameter / 4))); - break; - case _90: - body[0] = new Area(new RoundRectangle2D.Double(centerX - diameter / 2, centerY + leadLength, - diameter, length, edgeRadius, edgeRadius)); - body[0].add(new Area(new RoundRectangle2D.Double(centerX - diameter / 8, centerY + leadLength + length - diameter / 2, - diameter / 4, diameter, diameter / 4, diameter / 4))); - break; - case _180: + case DEFAULT: body[0] = new Area(new RoundRectangle2D.Double(centerX - leadLength - length, centerY - diameter / 2, length, diameter, edgeRadius, edgeRadius)); body[0].add(new Area(new RoundRectangle2D.Double(centerX - leadLength - length - diameter / 2, centerY - diameter / 8, diameter, diameter / 4, diameter / 4, diameter / 4))); break; - case _270: + case _90: body[0] = new Area(new RoundRectangle2D.Double(centerX - diameter / 2, centerY - leadLength - length, diameter, length, edgeRadius, edgeRadius)); body[0].add(new Area(new RoundRectangle2D.Double(centerX - diameter / 8, centerY - leadLength - length - diameter / 2, diameter / 4, diameter, diameter / 4, diameter / 4))); break; + case _180: + body[0] = new Area(new RoundRectangle2D.Double(centerX + leadLength, centerY - diameter / 2, + length, diameter, edgeRadius, edgeRadius)); + body[0].add(new Area(new RoundRectangle2D.Double(centerX + leadLength + length - diameter / 2, centerY - diameter / 8, + diameter, diameter / 4, diameter / 4, diameter / 4))); + break; + case _270: + body[0] = new Area(new RoundRectangle2D.Double(centerX - diameter / 2, centerY + leadLength, + diameter, length, edgeRadius, edgeRadius)); + body[0].add(new Area(new RoundRectangle2D.Double(centerX - diameter / 8, centerY + leadLength + length - diameter / 2, + diameter / 4, diameter, diameter / 4, diameter / 4))); + break; default: throw new RuntimeException("Unexpected orientation: " + orientation); } @@ -357,7 +357,7 @@ public class SubminiTube extends AbstractTransparentComponent { int centerX = (controlPoints[controlPoints.length - (getTopLead() ? 2 : 1)].x + controlPoints[0].x) / 2; int centerY = (controlPoints[controlPoints.length - (getTopLead() ? 2 : 1)].y + controlPoints[0].y) / 2; double increment = getDiameter().convertToPixels() / getPinCount().getValue(); - if (orientation == Orientation._90 || orientation == Orientation._180) + if (orientation == Orientation.DEFAULT || orientation == Orientation._270) increment = -increment; double startX = centerX - increment * (getPinCount().getValue() - 1) / 2; double startY = centerY - increment * (getPinCount().getValue() - 1) / 2; @@ -368,34 +368,34 @@ public class SubminiTube extends AbstractTransparentComponent { case DEFAULT: g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness)); g2d.setColor(finalPinBorderColor); - g2d.drawLine(point.x, point.y, point.x + leadLength - leadThickness / 2, (int)(startY + increment * i)); + g2d.drawLine(point.x, point.y, point.x - leadLength - leadThickness / 2, (int)(startY + increment * i)); g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2)); g2d.setColor(finalPinColor); - g2d.drawLine(point.x, point.y, point.x + leadLength - leadThickness / 2, (int)(startY + increment * i)); + g2d.drawLine(point.x, point.y, point.x - leadLength - leadThickness / 2, (int)(startY + increment * i)); break; case _90: g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness)); g2d.setColor(finalPinBorderColor); - g2d.drawLine(point.x, point.y, (int)(startX + increment * i), point.y + leadLength - leadThickness / 2); + g2d.drawLine(point.x, point.y, (int)(startX + increment * i), point.y - leadLength); g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2)); g2d.setColor(finalPinColor); - g2d.drawLine(point.x, point.y, (int)(startX + increment * i), point.y + leadLength - leadThickness / 2); + g2d.drawLine(point.x, point.y, (int)(startX + increment * i), point.y - leadLength); break; case _180: g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness)); g2d.setColor(finalPinBorderColor); - g2d.drawLine(point.x, point.y, point.x - leadLength - leadThickness / 2, (int)(startY + increment * i)); + g2d.drawLine(point.x, point.y, point.x + leadLength - leadThickness / 2, (int)(startY + increment * i)); g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2)); g2d.setColor(finalPinColor); - g2d.drawLine(point.x, point.y, point.x - leadLength - leadThickness / 2, (int)(startY + increment * i)); + g2d.drawLine(point.x, point.y, point.x + leadLength - leadThickness / 2, (int)(startY + increment * i)); break; case _270: g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness)); g2d.setColor(finalPinBorderColor); - g2d.drawLine(point.x, point.y, (int)(startX + increment * i), point.y - leadLength); + g2d.drawLine(point.x, point.y, (int)(startX + increment * i), point.y + leadLength - leadThickness / 2); g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2)); g2d.setColor(finalPinColor); - g2d.drawLine(point.x, point.y, (int)(startX + increment * i), point.y - leadLength); + g2d.drawLine(point.x, point.y, (int)(startX + increment * i), point.y + leadLength - leadThickness / 2); break; } }