diff --git a/diylc/diylc-core/src/org/diylc/components/AbstractComponent.java b/diylc/diylc-core/src/org/diylc/components/AbstractComponent.java index 4229464a..ddb5076e 100644 --- a/diylc/diylc-core/src/org/diylc/components/AbstractComponent.java +++ b/diylc/diylc-core/src/org/diylc/components/AbstractComponent.java @@ -283,6 +283,6 @@ public abstract class AbstractComponent implements IDIYComponent { @Override public String getControlPointNodeName(int index) { - return Integer.toString(index); + return Integer.toString(index + 1); } } diff --git a/diylc/diylc-library/src/org/diylc/components/guitar/HumbuckerPickup.java b/diylc/diylc-library/src/org/diylc/components/guitar/HumbuckerPickup.java index 8ad1ed29..85270fe3 100644 --- a/diylc/diylc-library/src/org/diylc/components/guitar/HumbuckerPickup.java +++ b/diylc/diylc-library/src/org/diylc/components/guitar/HumbuckerPickup.java @@ -60,6 +60,8 @@ public class HumbuckerPickup extends AbstractTransparentComponent { private static final long serialVersionUID = 1L; + private static final int TERMINAL_FONT_SIZE = 11; + private static Color BASE_COLOR = Color.lightGray; private static Color BOBIN_COLOR1 = Color.decode("#EAE3C6"); private static Color BOBIN_COLOR2 = Color.black; @@ -203,6 +205,35 @@ public class HumbuckerPickup extends AbstractTransparentComponent { Rectangle bounds = body[0].getBounds(); drawCenteredText(g2d, value, bounds.x + bounds.width / 2, bounds.y + bounds.height / 2, HorizontalAlignment.CENTER, VerticalAlignment.CENTER); + + // terminal labels + Point[] points = getControlPoints(); + g2d.setColor(finalBorderColor); + + g2d.setFont(project.getFont().deriveFont(TERMINAL_FONT_SIZE * 1f)); + int dx = 0; + int dy = 0; + switch (orientation) { + case DEFAULT: + dx = (int) (TERMINAL_FONT_SIZE * 0.8); + dy = 0; + break; + case _90: + dx = 0; + dy = (int) (TERMINAL_FONT_SIZE * 0.8); + break; + case _180: + dx = -(int) (TERMINAL_FONT_SIZE * 0.8); + dy = 0; + break; + case _270: + dx = 0; + dy = -(int) (TERMINAL_FONT_SIZE * 0.8); + break; + } + + drawCenteredText(g2d, "N", (points[0].x + points[1].x) / 2 + dx, (points[0].y + points[1].y) / 2 + dy, HorizontalAlignment.CENTER, VerticalAlignment.CENTER); + drawCenteredText(g2d, "S", (points[2].x + points[3].x) / 2 + dx, (points[2].y + points[3].y) / 2 + dy, HorizontalAlignment.CENTER, VerticalAlignment.CENTER); } private Point[] getControlPoints() { diff --git a/diylc/diylc-library/src/org/diylc/components/guitar/SingleCoilPickup.java b/diylc/diylc-library/src/org/diylc/components/guitar/SingleCoilPickup.java index eb7ec39b..577fb102 100644 --- a/diylc/diylc-library/src/org/diylc/components/guitar/SingleCoilPickup.java +++ b/diylc/diylc-library/src/org/diylc/components/guitar/SingleCoilPickup.java @@ -61,7 +61,9 @@ import org.diylc.utils.Constants; keywordPolicy = KeywordPolicy.SHOW_TAG, keywordTag = "Guitar Wiring Diagram") public class SingleCoilPickup extends AbstractTransparentComponent { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; + + private static final int TERMINAL_FONT_SIZE = 11; private static Color BODY_COLOR = Color.white; private static Color BASE_COLOR = Color.gray; @@ -232,7 +234,40 @@ public class SingleCoilPickup extends AbstractTransparentComponent { g2d.setFont(project.getFont()); Rectangle bounds = body[3].getBounds(); drawCenteredText(g2d, value, bounds.x + bounds.width / 2, bounds.y + bounds.height / 2, HorizontalAlignment.CENTER, - VerticalAlignment.CENTER); + VerticalAlignment.CENTER); + + // terminal labels + Point[] points = getControlPoints(); + g2d.setColor(finalBorderColor); + + g2d.setFont(project.getFont().deriveFont(TERMINAL_FONT_SIZE * 1f)); + int dx = 0; + int dy = 0; + switch (orientation) { + case DEFAULT: + dx = 0; + dy = -TERMINAL_FONT_SIZE; + break; + case _90: + dx = TERMINAL_FONT_SIZE; + dy = 0; + break; + case _180: + dx = 0; + dy = TERMINAL_FONT_SIZE; + break; + case _270: + dx = -TERMINAL_FONT_SIZE; + dy = 0; + break; + } + if (getPolarity() == Polarity.North || getPolarity() == Polarity.South) { + drawCenteredText(g2d, getPolarity().name().substring(0, 1), (points[1].x + points[2].x) / 2 + dx, (points[1].y + points[2].y) / 2 + dy, HorizontalAlignment.CENTER, + VerticalAlignment.CENTER); + } else { + drawCenteredText(g2d, "N", (points[0].x + points[1].x) / 2 + dx, (points[0].y + points[1].y) / 2 + dy, HorizontalAlignment.CENTER, VerticalAlignment.CENTER); + drawCenteredText(g2d, "S", (points[2].x + points[3].x) / 2 + dx, (points[2].y + points[3].y) / 2 + dy, HorizontalAlignment.CENTER, VerticalAlignment.CENTER); + } } @SuppressWarnings("incomplete-switch") @@ -377,7 +412,7 @@ public class SingleCoilPickup extends AbstractTransparentComponent { } body[1] = new Area(); - double lugHole = getClosestOdd(lugDiameter / 2); + double lugHole = getClosestOdd(lugDiameter * 0.4); for (int i = getPolarity() == Polarity.Humbucking ? 0 : 1; i < (getPolarity() == Polarity.Humbucking ? 4 : 3); i++) { Point p = points[i]; ((Area)body[1]).add(new Area(new Ellipse2D.Double(p.x - lugDiameter / 2, p.y - lugDiameter / 2, lugDiameter, lugDiameter))); diff --git a/diylc/diylc-swing/library/main.jar b/diylc/diylc-swing/library/main.jar index db236217..904c3f8c 100644 Binary files a/diylc/diylc-swing/library/main.jar and b/diylc/diylc-swing/library/main.jar differ