From 007a52f0b59d98751d3a4ca2de0f0965c5c1453f Mon Sep 17 00:00:00 2001 From: Branislav Stojkovic Date: Thu, 10 Jan 2019 19:47:22 +0100 Subject: [PATCH] When loaded from an existing file "Potentiometer Symbol" doesn't retain the specified orientation --- .../diylc/components/Abstract3LegSymbol.java | 66 ++++++++------- .../components/semiconductors/BJTSymbol.java | 76 +++++++++--------- .../components/semiconductors/JFETSymbol.java | 63 +++++++-------- .../semiconductors/MOSFETSymbol.java | 71 ++++++++-------- diylc/diylc-swing/lib/diylc-core.jar | Bin 251094 -> 251094 bytes diylc/diylc-swing/library/main.jar | Bin 479799 -> 479869 bytes diylc/diylc-swing/update.xml | 4 + 7 files changed, 146 insertions(+), 134 deletions(-) diff --git a/diylc/diylc-library/src/org/diylc/components/Abstract3LegSymbol.java b/diylc/diylc-library/src/org/diylc/components/Abstract3LegSymbol.java index 30891a4a..f0a4ca2c 100644 --- a/diylc/diylc-library/src/org/diylc/components/Abstract3LegSymbol.java +++ b/diylc/diylc-library/src/org/diylc/components/Abstract3LegSymbol.java @@ -89,7 +89,11 @@ public abstract class Abstract3LegSymbol extends AbstractComponent { g2d.setColor(finalColor); // Draw transistor - + + if (this.body == null) { + this.body = getBody(); + applyOrientation(this.body); + } Shape[] body = getBody(); AffineTransform old = g2d.getTransform(); @@ -166,7 +170,7 @@ public abstract class Abstract3LegSymbol extends AbstractComponent { return controlPoints[0].y; } - private void updateControlPoints() { + protected void updateControlPoints() { int pinSpacing = (int) PIN_SPACING.convertToPixels(); // Update control points. int x = controlPoints[0].x; @@ -178,7 +182,17 @@ public abstract class Abstract3LegSymbol extends AbstractComponent { controlPoints[1].y = y - pinSpacing * 2; controlPoints[2].x = x + f * pinSpacing * 2; - controlPoints[2].y = y + pinSpacing * 2; + controlPoints[2].y = y + pinSpacing * 2; + + if (getOrientation() != Orientation.DEFAULT) + { + Point first = this.controlPoints[0]; + double angle = Double.parseDouble(getOrientation().name().replace("_", "")); + AffineTransform rotate = AffineTransform.getRotateInstance(Math.toRadians(angle), first.x, first.y); + for (int i = 1; i < this.controlPoints.length; i++) { + rotate.transform(this.controlPoints[i], this.controlPoints[i]); + } + } } @Override @@ -206,7 +220,8 @@ public abstract class Abstract3LegSymbol extends AbstractComponent { public void setControlPoint(Point point, int index) { controlPoints[index].setLocation(point); - refreshDrawing(); + // make sure we have a new drawing + body = null; } @EditableProperty @@ -217,7 +232,9 @@ public abstract class Abstract3LegSymbol extends AbstractComponent { public void setFlip(SymbolFlipping flip) { this.flip = flip; - refreshDrawing(); + updateControlPoints(); + // make sure we have a new drawing + body = null; } @EditableProperty @@ -249,29 +266,24 @@ public abstract class Abstract3LegSymbol extends AbstractComponent { public void setOrientation(Orientation orientation) { this.orientation = orientation; - refreshDrawing(); - } - - protected void refreshDrawing() { - updateControlPoints(); - // make sure we have a new drawing + updateControlPoints(); + // make sure we have a new drawing body = null; - getBody(); - - if (getOrientation() == Orientation.DEFAULT) - return; - - Point first = this.controlPoints[0]; - double angle = Double.parseDouble(getOrientation().name().replace("_", "")); - AffineTransform rotate = AffineTransform.getRotateInstance(Math.toRadians(angle), first.x, first.y); - for (int i = 1; i < this.controlPoints.length; i++) { - rotate.transform(this.controlPoints[i], this.controlPoints[i]); - } - if (this.body != null) { - for (int i = 0; i < this.body.length; i++) { - this.body[i] = rotate.createTransformedShape(this.body[i]); - } - } + } + + protected void applyOrientation(Shape[] body) { + if (getOrientation() == Orientation.DEFAULT) + return; + + Point first = this.controlPoints[0]; + double angle = Double.parseDouble(getOrientation().name().replace("_", "")); + AffineTransform rotate = AffineTransform.getRotateInstance(Math.toRadians(angle), first.x, first.y); + + if (body != null) { + for (int i = 0; i < body.length; i++) { + body[i] = rotate.createTransformedShape(body[i]); + } + } } /** diff --git a/diylc/diylc-library/src/org/diylc/components/semiconductors/BJTSymbol.java b/diylc/diylc-library/src/org/diylc/components/semiconductors/BJTSymbol.java index 6c538b8a..86113a8f 100644 --- a/diylc/diylc-library/src/org/diylc/components/semiconductors/BJTSymbol.java +++ b/diylc/diylc-library/src/org/diylc/components/semiconductors/BJTSymbol.java @@ -45,49 +45,48 @@ public class BJTSymbol extends Abstract3LegSymbol { protected BJTPolarity polarity = BJTPolarity.NPN; public Shape[] getBody() { - if (body == null) { - body = new Shape[3]; - int x = controlPoints[0].x; - int y = controlPoints[0].y; - int pinSpacing = (int) PIN_SPACING.convertToPixels(); + Shape[] body = new Shape[3]; + int x = controlPoints[0].x; + int y = controlPoints[0].y; + int pinSpacing = (int) PIN_SPACING.convertToPixels(); - GeneralPath polyline = new GeneralPath(); + GeneralPath polyline = new GeneralPath(); - polyline.moveTo(x + pinSpacing / 2, y - pinSpacing); - polyline.lineTo(x + pinSpacing / 2, y + pinSpacing); + polyline.moveTo(x + pinSpacing / 2, y - pinSpacing); + polyline.lineTo(x + pinSpacing / 2, y + pinSpacing); - body[0] = polyline; + body[0] = polyline; - polyline = new GeneralPath(); + polyline = new GeneralPath(); - polyline.moveTo(x, y); - polyline.lineTo(x + pinSpacing / 2, y); - polyline.moveTo(x + pinSpacing / 2, y - pinSpacing / 2); - polyline.lineTo(x + pinSpacing * 2, y - pinSpacing); - polyline.lineTo(x + pinSpacing * 2, y - pinSpacing * 2); - polyline.moveTo(x + pinSpacing / 2, y + pinSpacing / 2); - polyline.lineTo(x + pinSpacing * 2, y + pinSpacing); - polyline.lineTo(x + pinSpacing * 2, y + pinSpacing * 2); - body[1] = polyline; + polyline.moveTo(x, y); + polyline.lineTo(x + pinSpacing / 2, y); + polyline.moveTo(x + pinSpacing / 2, y - pinSpacing / 2); + polyline.lineTo(x + pinSpacing * 2, y - pinSpacing); + polyline.lineTo(x + pinSpacing * 2, y - pinSpacing * 2); + polyline.moveTo(x + pinSpacing / 2, y + pinSpacing / 2); + polyline.lineTo(x + pinSpacing * 2, y + pinSpacing); + polyline.lineTo(x + pinSpacing * 2, y + pinSpacing * 2); + body[1] = polyline; - Area arrow; - double theta; - if (polarity == BJTPolarity.NPN) { - theta = Math.atan(1.0 / 3); - arrow = - new Area(new Polygon(new int[] {x + pinSpacing, x + pinSpacing, x + pinSpacing * 10 / 6}, new int[] { - y - pinSpacing / 5 + pinSpacing / 2, y + pinSpacing / 5 + pinSpacing / 2, y + pinSpacing / 2}, 3)); - arrow.transform(AffineTransform.getRotateInstance(theta, x + pinSpacing / 2, y + pinSpacing / 2)); - } else { - theta = -Math.atan(1.0 / 3); - arrow = - new Area( - new Polygon(new int[] {x + pinSpacing, x + pinSpacing * 10 / 6, x + pinSpacing * 10 / 6}, new int[] { - y - pinSpacing / 2, y - pinSpacing / 5 - pinSpacing / 2, y + pinSpacing / 5 - pinSpacing / 2}, 3)); - arrow.transform(AffineTransform.getRotateInstance(theta, x + pinSpacing / 2, y - pinSpacing / 2)); - } - body[2] = arrow; + Area arrow; + double theta; + if (polarity == BJTPolarity.NPN) { + theta = Math.atan(1.0 / 3); + arrow = + new Area(new Polygon(new int[] {x + pinSpacing, x + pinSpacing, x + pinSpacing * 10 / 6}, new int[] { + y - pinSpacing / 5 + pinSpacing / 2, y + pinSpacing / 5 + pinSpacing / 2, y + pinSpacing / 2}, 3)); + arrow.transform(AffineTransform.getRotateInstance(theta, x + pinSpacing / 2, y + pinSpacing / 2)); + } else { + theta = -Math.atan(1.0 / 3); + arrow = + new Area( + new Polygon(new int[] {x + pinSpacing, x + pinSpacing * 10 / 6, x + pinSpacing * 10 / 6}, new int[] { + y - pinSpacing / 2, y - pinSpacing / 5 - pinSpacing / 2, y + pinSpacing / 5 - pinSpacing / 2}, 3)); + arrow.transform(AffineTransform.getRotateInstance(theta, x + pinSpacing / 2, y - pinSpacing / 2)); } + body[2] = arrow; + return body; } @@ -115,8 +114,7 @@ public class BJTSymbol extends Abstract3LegSymbol { public void setPolarity(BJTPolarity polarity) { this.polarity = polarity; - - - refreshDrawing(); + + body = null; } } diff --git a/diylc/diylc-library/src/org/diylc/components/semiconductors/JFETSymbol.java b/diylc/diylc-library/src/org/diylc/components/semiconductors/JFETSymbol.java index 3a213f53..0c8d7e6f 100644 --- a/diylc/diylc-library/src/org/diylc/components/semiconductors/JFETSymbol.java +++ b/diylc/diylc-library/src/org/diylc/components/semiconductors/JFETSymbol.java @@ -42,44 +42,43 @@ public class JFETSymbol extends Abstract3LegSymbol { protected FETPolarity polarity = FETPolarity.NEGATIVE; - public Shape[] getBody() { - if (body == null) { - body = new Shape[3]; - int x = controlPoints[0].x; - int y = controlPoints[0].y; - int pinSpacing = (int) PIN_SPACING.convertToPixels(); + public Shape[] getBody() { + Shape[] body = new Shape[3]; + int x = controlPoints[0].x; + int y = controlPoints[0].y; + int pinSpacing = (int) PIN_SPACING.convertToPixels(); - GeneralPath polyline = new GeneralPath(); + GeneralPath polyline = new GeneralPath(); - polyline.moveTo(x + pinSpacing, y - pinSpacing); - polyline.lineTo(x + pinSpacing, y + pinSpacing); + polyline.moveTo(x + pinSpacing, y - pinSpacing); + polyline.lineTo(x + pinSpacing, y + pinSpacing); - body[0] = polyline; + body[0] = polyline; - polyline = new GeneralPath(); + polyline = new GeneralPath(); - polyline.moveTo(x, y); - polyline.lineTo(x + pinSpacing, y); - polyline.moveTo(x + pinSpacing, y - pinSpacing * 7 / 8); - polyline.lineTo(x + pinSpacing * 2, y - pinSpacing * 7 / 8); - polyline.lineTo(x + pinSpacing * 2, y - pinSpacing * 2); - polyline.moveTo(x + pinSpacing, y + pinSpacing * 7 / 8); - polyline.lineTo(x + pinSpacing * 2, y + pinSpacing * 7 / 8); - polyline.lineTo(x + pinSpacing * 2, y + pinSpacing * 2); - body[1] = polyline; + polyline.moveTo(x, y); + polyline.lineTo(x + pinSpacing, y); + polyline.moveTo(x + pinSpacing, y - pinSpacing * 7 / 8); + polyline.lineTo(x + pinSpacing * 2, y - pinSpacing * 7 / 8); + polyline.lineTo(x + pinSpacing * 2, y - pinSpacing * 2); + polyline.moveTo(x + pinSpacing, y + pinSpacing * 7 / 8); + polyline.lineTo(x + pinSpacing * 2, y + pinSpacing * 7 / 8); + polyline.lineTo(x + pinSpacing * 2, y + pinSpacing * 2); + body[1] = polyline; - Polygon arrow; - if (polarity == FETPolarity.NEGATIVE) { - arrow = - new Polygon(new int[] {x + pinSpacing * 2 / 6, x + pinSpacing * 2 / 6, x + pinSpacing * 6 / 6}, new int[] { - y - pinSpacing / 5, y + pinSpacing / 5, y}, 3); - } else { - arrow = - new Polygon(new int[] {x + pinSpacing / 6, x + pinSpacing * 5 / 6, x + pinSpacing * 5 / 6}, new int[] {y, - y + pinSpacing / 5, y - pinSpacing / 5}, 3); - } - body[2] = arrow; + Polygon arrow; + if (polarity == FETPolarity.NEGATIVE) { + arrow = + new Polygon(new int[] {x + pinSpacing * 2 / 6, x + pinSpacing * 2 / 6, x + pinSpacing * 6 / 6}, new int[] { + y - pinSpacing / 5, y + pinSpacing / 5, y}, 3); + } else { + arrow = + new Polygon(new int[] {x + pinSpacing / 6, x + pinSpacing * 5 / 6, x + pinSpacing * 5 / 6}, new int[] {y, + y + pinSpacing / 5, y - pinSpacing / 5}, 3); } + body[2] = arrow; + return body; } @@ -108,6 +107,6 @@ public class JFETSymbol extends Abstract3LegSymbol { public void setPolarity(FETPolarity polarity) { this.polarity = polarity; - refreshDrawing(); + body = null; } } diff --git a/diylc/diylc-library/src/org/diylc/components/semiconductors/MOSFETSymbol.java b/diylc/diylc-library/src/org/diylc/components/semiconductors/MOSFETSymbol.java index bab2965b..e749f8e1 100644 --- a/diylc/diylc-library/src/org/diylc/components/semiconductors/MOSFETSymbol.java +++ b/diylc/diylc-library/src/org/diylc/components/semiconductors/MOSFETSymbol.java @@ -42,47 +42,46 @@ public class MOSFETSymbol extends Abstract3LegSymbol { protected FETPolarity polarity = FETPolarity.NEGATIVE; - public Shape[] getBody() { - if (body == null) { - body = new Shape[3]; - int x = controlPoints[0].x; - int y = controlPoints[0].y; - int pinSpacing = (int) PIN_SPACING.convertToPixels(); + public Shape[] getBody() { + Shape[] body = new Shape[3]; + int x = controlPoints[0].x; + int y = controlPoints[0].y; + int pinSpacing = (int) PIN_SPACING.convertToPixels(); - GeneralPath polyline = new GeneralPath(); + GeneralPath polyline = new GeneralPath(); - polyline.moveTo(x + pinSpacing / 2, y - pinSpacing + 1); - polyline.lineTo(x + pinSpacing / 2, y + pinSpacing - 1); - polyline.moveTo(x + pinSpacing, y - pinSpacing + 1); - polyline.lineTo(x + pinSpacing, y + pinSpacing - 1); - body[0] = polyline; + polyline.moveTo(x + pinSpacing / 2, y - pinSpacing + 1); + polyline.lineTo(x + pinSpacing / 2, y + pinSpacing - 1); + polyline.moveTo(x + pinSpacing, y - pinSpacing + 1); + polyline.lineTo(x + pinSpacing, y + pinSpacing - 1); + body[0] = polyline; - polyline = new GeneralPath(); + polyline = new GeneralPath(); - polyline.moveTo(x + pinSpacing, y - pinSpacing); - polyline.lineTo(x + pinSpacing * 2, y - pinSpacing); - polyline.moveTo(x + pinSpacing, y + pinSpacing); - polyline.lineTo(x + pinSpacing * 2, y + pinSpacing); - polyline.moveTo(x, y); - polyline.lineTo(x + pinSpacing / 2, y); - polyline.moveTo(x + pinSpacing * 2, y - pinSpacing * 2); - polyline.lineTo(x + pinSpacing * 2, y - pinSpacing); - polyline.moveTo(x + pinSpacing * 2, y + pinSpacing * 2); - polyline.lineTo(x + pinSpacing * 2, y + pinSpacing); - body[1] = polyline; + polyline.moveTo(x + pinSpacing, y - pinSpacing); + polyline.lineTo(x + pinSpacing * 2, y - pinSpacing); + polyline.moveTo(x + pinSpacing, y + pinSpacing); + polyline.lineTo(x + pinSpacing * 2, y + pinSpacing); + polyline.moveTo(x, y); + polyline.lineTo(x + pinSpacing / 2, y); + polyline.moveTo(x + pinSpacing * 2, y - pinSpacing * 2); + polyline.lineTo(x + pinSpacing * 2, y - pinSpacing); + polyline.moveTo(x + pinSpacing * 2, y + pinSpacing * 2); + polyline.lineTo(x + pinSpacing * 2, y + pinSpacing); + body[1] = polyline; - Polygon arrow; - if (polarity == FETPolarity.NEGATIVE) { - arrow = - new Polygon(new int[] {x + pinSpacing * 8 / 6, x + pinSpacing * 8 / 6, x + pinSpacing * 12 / 6}, new int[] { - y + pinSpacing * 6 / 5, y + pinSpacing * 4 / 5, y + pinSpacing}, 3); - } else { - arrow = - new Polygon(new int[] {x + pinSpacing * 7 / 6, x + pinSpacing * 11 / 6, x + pinSpacing * 11 / 6}, - new int[] {y - pinSpacing, y - pinSpacing * 6 / 5, y - pinSpacing * 4 / 5}, 3); - } - body[2] = arrow; + Polygon arrow; + if (polarity == FETPolarity.NEGATIVE) { + arrow = + new Polygon(new int[] {x + pinSpacing * 8 / 6, x + pinSpacing * 8 / 6, x + pinSpacing * 12 / 6}, new int[] { + y + pinSpacing * 6 / 5, y + pinSpacing * 4 / 5, y + pinSpacing}, 3); + } else { + arrow = + new Polygon(new int[] {x + pinSpacing * 7 / 6, x + pinSpacing * 11 / 6, x + pinSpacing * 11 / 6}, + new int[] {y - pinSpacing, y - pinSpacing * 6 / 5, y - pinSpacing * 4 / 5}, 3); } + body[2] = arrow; + return body; } @@ -111,6 +110,6 @@ public class MOSFETSymbol extends Abstract3LegSymbol { public void setPolarity(FETPolarity polarity) { this.polarity = polarity; - refreshDrawing(); + body = null; } } diff --git a/diylc/diylc-swing/lib/diylc-core.jar b/diylc/diylc-swing/lib/diylc-core.jar index b95dba76e8f757b6364923d949100517977e9804..a93dfaa598ae608e77ad641217ad2e5736782677 100644 GIT binary patch delta 4316 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 delta 4316 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 X7-wD8Vis1hNr#IZb diff --git a/diylc/diylc-swing/update.xml b/diylc/diylc-swing/update.xml index 102fa6e4..87d12258 100644 --- a/diylc/diylc-swing/update.xml +++ b/diylc/diylc-swing/update.xml @@ -2166,6 +2166,10 @@ BUG_FIX Project font gets reverted to "Square721 BT" on Undo + + BUG_FIX + When loaded from an existing file "Potentiometer Symbol" doesn't retain the specified orientation + https://github.com/bancika/diy-layout-creator/releases