'Open Jack 1/4"' and 'Potentiometer Panel' now tolerate connections anywhere on the lugs instead of dead center only

This commit is contained in:
Bane Stojkovic
2025-04-30 22:34:23 +02:00
parent 355c9f2b49
commit b4bcc25f66
3 changed files with 70 additions and 12 deletions
@@ -296,5 +296,21 @@
</changes>
<url>https://github.com/bancika/diy-layout-creator/releases</url>
</org.diylc.appframework.update.Version>
<org.diylc.appframework.update.Version>
<versionNumber>
<major>5</major>
<minor>4</minor>
<build>0</build>
</versionNumber>
<releaseDate>2025-04-21 00:00:00.000 CET</releaseDate>
<name></name>
<changes>
<org.diylc.appframework.update.Change>
<changeType>IMPROVEMENT</changeType>
<description>'Open Jack 1/4"' and 'Potentiometer Panel' now tolerate connections anywhere on the lugs instead of dead center only</description>
</org.diylc.appframework.update.Change>
</changes>
<url>https://github.com/bancika/diy-layout-creator/releases</url>
</org.diylc.appframework.update.Version>
</a>
</java.util.Arrays_-ArrayList>
@@ -129,15 +129,24 @@ public class OpenJack1_4 extends AbstractMultiPartComponent<OpenJackType> {
if (alpha < MAX_ALPHA) {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
}
g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : BASE_COLOR);
g2d.setColor(Constants.TRANSPARENT_COLOR);
drawingObserver.startTrackingContinuityArea(true);
g2d.fill(body[1]);
g2d.fill(body[2]);
if (body[3] != null)
g2d.fill(body[3]);
g2d.fill(body[4]);
g2d.fill(body[5]);
if (body[6] != null)
g2d.fill(body[6]);
drawingObserver.stopTrackingContinuityArea();
if (!outlineMode) {
g2d.setColor(BASE_COLOR);
g2d.fill(body[1]);
g2d.fill(body[2]);
if (body[3] != null)
g2d.fill(body[3]);
}
g2d.setComposite(oldComposite);
// }
@@ -193,7 +202,7 @@ public class OpenJack1_4 extends AbstractMultiPartComponent<OpenJackType> {
public Area[] getBody() {
if (body == null) {
body = new Area[4];
body = new Area[7];
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
@@ -224,6 +233,13 @@ public class OpenJack1_4 extends AbstractMultiPartComponent<OpenJackType> {
body[1] = tip;
// no-hole tip for continuity
tip =
new Area(new RoundRectangle2D.Double(x - springWidth / 2, y - holeToEdge, springWidth, springLength
- ringDiameter / 2, springWidth, springWidth));
tip.subtract(wafer);
body[4] = tip;
Area sleeve =
new Area(new RoundRectangle2D.Double(x - springWidth / 2, y - holeToEdge, springWidth, springLength,
springWidth, springWidth));
@@ -237,6 +253,17 @@ public class OpenJack1_4 extends AbstractMultiPartComponent<OpenJackType> {
body[2] = sleeve;
// no-hole sleeve for continuity
sleeve =
new Area(new RoundRectangle2D.Double(x - springWidth / 2, y - holeToEdge, springWidth, springLength,
springWidth, springWidth));
sleeve.transform(AffineTransform.getRotateInstance(getValue() == OpenJackType.SWITCHED ? SLEEVE_SWITCHED_THETA : SLEEVE_THETA, x, centerY));
sleeve.add(new Area(new Ellipse2D.Double(x - ringDiameter / 2, centerY - ringDiameter / 2, ringDiameter,
ringDiameter)));
sleeve.subtract(new Area(new Ellipse2D.Double(x - innerDiameter / 2, centerY - innerDiameter / 2, innerDiameter,
innerDiameter)));
body[5] = sleeve;
if (getValue() != OpenJackType.MONO) {
Area ringOrSwitch =
new Area(new RoundRectangle2D.Double(x - springWidth / 2, y - holeToEdge, springWidth, springLength,
@@ -248,6 +275,15 @@ public class OpenJack1_4 extends AbstractMultiPartComponent<OpenJackType> {
outerDiameter)));
body[3] = ringOrSwitch;
ringOrSwitch =
new Area(new RoundRectangle2D.Double(x - springWidth / 2, y - holeToEdge, springWidth, springLength,
springWidth, springWidth));
ringOrSwitch.transform(AffineTransform.getRotateInstance(getValue() == OpenJackType.SWITCHED ? SWITCH_THETA : RING_THETA, x, centerY));
ringOrSwitch.subtract(new Area(new Ellipse2D.Double(x - outerDiameter / 2, centerY - outerDiameter / 2, outerDiameter,
outerDiameter)));
body[6] = ringOrSwitch;
}
// Rotate if needed
@@ -121,7 +121,7 @@ public class PotentiometerPanel extends AbstractPotentiometer implements ILayere
if (body == null) {
// mandatory: 0, 1, 2 pins, 3 body, 9 wafer
// optional: 4, 5, 6 lugs, 7 nut, 8 shaft
body = new Area[10];
body = new Area[13];
// Add lugs.
int pinWidth = (int) PIN_SIZE.convertToPixels();
@@ -210,6 +210,7 @@ public class PotentiometerPanel extends AbstractPotentiometer implements ILayere
new Area(new Ellipse2D.Double(controlPoints[i].getX() - lugDiameter / 2, controlPoints[i].getY() - lugDiameter / 2,
lugDiameter, lugDiameter));
body[4 + i] = area;
body[10 + i] = new Area(area);
}
for (int i = 0; i < 3; i++) {
@@ -272,6 +273,11 @@ public class PotentiometerPanel extends AbstractPotentiometer implements ILayere
case 9:
g2d.setColor(getWaferColor());
break;
case 10:
case 11:
case 12:
g2d.setColor(Constants.TRANSPARENT_COLOR);
break;
default:
g2d.setColor(getBodyColor());
}
@@ -281,11 +287,11 @@ public class PotentiometerPanel extends AbstractPotentiometer implements ILayere
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
}
if (!outlineMode) {
// if (i >= 3 && i <= 6)
// drawingObserver.startTrackingContinuityArea(true);
if (i >= 10)
drawingObserver.startTrackingContinuityArea(true);
g2d.fill(shape);
// if (i >= 3 && i <= 6)
// drawingObserver.stopTrackingContinuityArea();
if (i >= 10)
drawingObserver.stopTrackingContinuityArea();
}
g2d.setComposite(oldComposite);
Color finalBorderColor;