diff --git a/diylc/diylc-core/src/main/resources/update.xml b/diylc/diylc-core/src/main/resources/update.xml
index a9a78cc96..84997ad8c 100644
--- a/diylc/diylc-core/src/main/resources/update.xml
+++ b/diylc/diylc-core/src/main/resources/update.xml
@@ -689,6 +689,10 @@
BUG_FIX
Opening an older project with a perfboard or another board warned that the file references unknown component properties
+
+ BUG_FIX
+ Transistors in TO-92, TO-1, TO-126, TO-220 and TO-3 packages drew circles around their pins in outline mode; only the body outline and the label are drawn now
+
https://github.com/bancika/diy-layout-creator/releases
diff --git a/diylc/diylc-library/src/main/java/org/diylc/components/semiconductors/AbstractTransistorPackage.java b/diylc/diylc-library/src/main/java/org/diylc/components/semiconductors/AbstractTransistorPackage.java
index 8bfdc2ed1..4b989ee43 100644
--- a/diylc/diylc-library/src/main/java/org/diylc/components/semiconductors/AbstractTransistorPackage.java
+++ b/diylc/diylc-library/src/main/java/org/diylc/components/semiconductors/AbstractTransistorPackage.java
@@ -254,17 +254,14 @@ public abstract class AbstractTransistorPackage extends AbstractLabeledComponent
return new Rectangle2D.Double(minX - margin, minY - margin, maxX - minX + 2 * margin, maxY - minY + 2 * margin);
}
- // drawn after the body so that pins stay visible whatever its alpha; a null pinColor draws only
- // the outline
+ // drawn after the body so that pins stay visible whatever its alpha
protected void drawPins(Graphics2D g2d, int pinSize, Color pinColor, Color pinBorderColor) {
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1f));
for (Point2D point : controlPoints) {
Shape pin = new Ellipse2D.Double(point.getX() - pinSize / 2, point.getY() - pinSize / 2,
pinSize, pinSize);
- if (pinColor != null) {
- g2d.setColor(pinColor);
- g2d.fill(pin);
- }
+ g2d.setColor(pinColor);
+ g2d.fill(pin);
g2d.setColor(pinBorderColor);
g2d.draw(pin);
}
diff --git a/diylc/diylc-library/src/main/java/org/diylc/components/semiconductors/TransistorTO1.java b/diylc/diylc-library/src/main/java/org/diylc/components/semiconductors/TransistorTO1.java
index d41714dd0..b5484b84e 100644
--- a/diylc/diylc-library/src/main/java/org/diylc/components/semiconductors/TransistorTO1.java
+++ b/diylc/diylc-library/src/main/java/org/diylc/components/semiconductors/TransistorTO1.java
@@ -233,8 +233,9 @@ public class TransistorTO1 extends AbstractTransistorPackage {
}
g2d.draw(mainArea);
- drawPins(g2d, pinSize, outlineMode ? null : PIN_COLOR,
- outlineMode ? theme.getOutlineColor() : PIN_BORDER_COLOR);
+ if (!outlineMode) {
+ drawPins(g2d, pinSize, PIN_COLOR, PIN_BORDER_COLOR);
+ }
// Draw label.
g2d.setFont(project.getFont());
diff --git a/diylc/diylc-library/src/main/java/org/diylc/components/semiconductors/TransistorTO126.java b/diylc/diylc-library/src/main/java/org/diylc/components/semiconductors/TransistorTO126.java
index 19d4d9bf6..a84a785c4 100644
--- a/diylc/diylc-library/src/main/java/org/diylc/components/semiconductors/TransistorTO126.java
+++ b/diylc/diylc-library/src/main/java/org/diylc/components/semiconductors/TransistorTO126.java
@@ -295,8 +295,9 @@ public class TransistorTO126 extends AbstractTransistorPackage {
g2d.setComposite(oldComposite);
- drawPins(g2d, pinSize, outlineMode ? null : PIN_COLOR,
- outlineMode ? theme.getOutlineColor() : PIN_BORDER_COLOR);
+ if (!outlineMode) {
+ drawPins(g2d, pinSize, PIN_COLOR, PIN_BORDER_COLOR);
+ }
// Draw label.
g2d.setFont(project.getFont());
diff --git a/diylc/diylc-library/src/main/java/org/diylc/components/semiconductors/TransistorTO220.java b/diylc/diylc-library/src/main/java/org/diylc/components/semiconductors/TransistorTO220.java
index 915cd7741..43ddcb0ca 100644
--- a/diylc/diylc-library/src/main/java/org/diylc/components/semiconductors/TransistorTO220.java
+++ b/diylc/diylc-library/src/main/java/org/diylc/components/semiconductors/TransistorTO220.java
@@ -333,8 +333,9 @@ public class TransistorTO220 extends AbstractTransistorPackage {
g2d.draw(tabArea);
}
- drawPins(g2d, pinSize, outlineMode ? null : PIN_COLOR,
- outlineMode ? theme.getOutlineColor() : PIN_BORDER_COLOR);
+ if (!outlineMode) {
+ drawPins(g2d, pinSize, PIN_COLOR, PIN_BORDER_COLOR);
+ }
// Draw label.
g2d.setFont(project.getFont());
diff --git a/diylc/diylc-library/src/main/java/org/diylc/components/semiconductors/TransistorTO3.java b/diylc/diylc-library/src/main/java/org/diylc/components/semiconductors/TransistorTO3.java
index 9d5c4b2bb..4043bfe20 100644
--- a/diylc/diylc-library/src/main/java/org/diylc/components/semiconductors/TransistorTO3.java
+++ b/diylc/diylc-library/src/main/java/org/diylc/components/semiconductors/TransistorTO3.java
@@ -365,16 +365,16 @@ public class TransistorTO3 extends AbstractLabeledComponent
// the pins leave through the bottom of the case, so they are drawn over it to stay visible
// whatever its alpha
- for (int i = 0; i < 2; i++) {
- Point2D point = getControlPoint(i);
- if (!outlineMode) {
+ if (!outlineMode) {
+ for (int i = 0; i < 2; i++) {
+ Point2D point = getControlPoint(i);
g2d.setColor(PIN_COLOR);
g2d.fillOval((int) Math.round(point.getX() - pinSize / 2),
(int) Math.round(point.getY() - pinSize / 2), pinSize, pinSize);
+ g2d.setColor(PIN_BORDER_COLOR);
+ g2d.drawOval((int) Math.round(point.getX() - pinSize / 2),
+ (int) Math.round(point.getY() - pinSize / 2), pinSize, pinSize);
}
- g2d.setColor(outlineMode ? theme.getOutlineColor() : PIN_BORDER_COLOR);
- g2d.drawOval((int) Math.round(point.getX() - pinSize / 2),
- (int) Math.round(point.getY() - pinSize / 2), pinSize, pinSize);
}
// Draw label.
diff --git a/diylc/diylc-library/src/main/java/org/diylc/components/semiconductors/TransistorTO92.java b/diylc/diylc-library/src/main/java/org/diylc/components/semiconductors/TransistorTO92.java
index 759ef6fa0..992685ae2 100644
--- a/diylc/diylc-library/src/main/java/org/diylc/components/semiconductors/TransistorTO92.java
+++ b/diylc/diylc-library/src/main/java/org/diylc/components/semiconductors/TransistorTO92.java
@@ -223,8 +223,9 @@ public class TransistorTO92 extends AbstractTransistorPackage {
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
g2d.draw(mainArea);
- drawPins(g2d, pinSize, outlineMode ? null : PIN_COLOR,
- outlineMode ? theme.getOutlineColor() : PIN_BORDER_COLOR);
+ if (!outlineMode) {
+ drawPins(g2d, pinSize, PIN_COLOR, PIN_BORDER_COLOR);
+ }
// Draw label.
g2d.setFont(project.getFont());