From 403d0ea4331996596ddf0c54bde9625903900c25 Mon Sep 17 00:00:00 2001 From: Branislav Stojkovic Date: Thu, 28 Feb 2019 19:11:02 +0100 Subject: [PATCH] Added two or four terminal hookup to bass pickups types --- diylc/diylc-library/lib/diylc-core.jar | Bin 267766 -> 267766 bytes .../guitar/AbstractGuitarPickup.java | 190 ++++++++++++ .../AbstractSingleOrHumbuckerPickup.java | 135 +++++++++ .../components/guitar/HumbuckerPickup.java | 153 ++-------- .../components/guitar/JazzBassPickup.java | 103 ++----- .../diylc/components/guitar/P90Pickup.java | 160 +--------- .../diylc/components/guitar/PBassPickup.java | 86 +----- .../components/guitar/SingleCoilPickup.java | 281 +++--------------- .../diylc/netlist/GuitarDiagramAnalyzer.java | 71 +---- diylc/diylc-swing/lib/diylc-core.jar | Bin 267766 -> 267766 bytes diylc/diylc-swing/library/main.jar | Bin 605862 -> 605750 bytes diylc/diylc-swing/update.xml | 4 + 12 files changed, 441 insertions(+), 742 deletions(-) create mode 100644 diylc/diylc-library/src/org/diylc/components/guitar/AbstractGuitarPickup.java create mode 100644 diylc/diylc-library/src/org/diylc/components/guitar/AbstractSingleOrHumbuckerPickup.java diff --git a/diylc/diylc-library/lib/diylc-core.jar b/diylc/diylc-library/lib/diylc-core.jar index 2abd7eb09fb4dd2d3bf89cfea9540cf5240f18f1..ea1c351002c0beae08cf789843669eaa93931c55 100644 GIT binary patch delta 5157 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 DFL_o- delta 5157 zcmY+Hd017|7QpY``&_0NE?h<_FpU%yMa@D4(IN*>6w?&Z6v4{rmA)*^%vX+qg6=iKT4OE66lKH%^zjonEL1tzT(!$J3&6bNICGzi9B zQvdGpShlo{1H5mZt_O{?%^es!Y}!H5W_z9i*9bh;e9>Bwjoc}an=J7#*tD8Mhdrze^h^g4?0FR!r}DgX6A1gpLq08A$D zGH_bZZ!>CI`nw_+eLN9{4GcxwwS!u^ZB1YMwt~->gWoa-IPO=9rknho5t2qsL}(14 zVvIrCv6us+e?%A?ybKHeV{9Wz4u{AHArt2zq)mDVeLME!G%qyHo#Ba48%Y&^F`L@s zJ@+k48XdI?-K(QhY@x#K%WP4S^w}rqZd~z$HK>lQdmU9bHta_C6`O{lO=_GAO3rQW zhc-=HIYQfZ8w4xUH2_o1&dTn1ro3IHFeb{^ApVMk$!J-yCkkQE4;x+r)u~@+VIr55 z%cyEd)nmq%G*^@uk5cMU$74}ac(M|`em_ksRD9+)@G`AVFNfUI{(KGzCjEseO~*1j zV7JF#anTj3JAN?J=?0o!J?deqI{N@j3$lzDzB=a>1a@v5Zo~-}GBBZCNdu~Q*$phS z`VwuiT~{*EX6E&Jv?J1vDN;)#ImsVD{9O zT9BA_x9@{WgF3LB6P%%~qS8%ROhvY1`yq!CWMuZjru(qiO-YJ)!gacOd50VGP*yoJ zOElT&#$H28eVJJx{l}A8Bc1ETTqQVdt*`v;;GqU^h{JfcBfFyg1 z>|J8i6FEnoyoI?cj{a;phS?m*Vv*cNvrcsD5zN|9<}!|DAytN|^>)usX$)g=XtySu zy^FHEsjLu5p1}^`yiWS;$eO99oF*sPsVP64#g?GS#%zm|C; z4c@?3A*FrC;*rK|Va~9Y%A6f64rTT6+Jw>*STf2Me9xX?j=4Xvu_!yVmxZIO^B2|^ zqj)E?myyQ(&hiYfM*WQm|K6#t(RMD|nQ<36u1Q!aBmZRk(D`l#yN^_or7iHyTo#B) zJoDK~q{KoNXn>YnuVimq0`;t6nb@3~Ub{mg)aFc;lfu>JnANd=pxYOZ*q=y#PnZMJ z#3nW!>0k?+g4EH@zCv2n#iEg_Iq!)ineo1G9F#%kd?3o^T5)rvg*JRCQk8*^N9yOu zQ;@E@@G_({cisc(f(QQwX>u>V8mYvKpF)cB=8ut9`>1avO!c%cPsIur4dHXJVTEt- ze+uZaKF8U0y?Sx1W7y-xox)ar!;Cw~?Y`Vvo?^y>m2yAsgAw%p{8x;6IFP3S$?Bfy zC5LpWOS5$}{}{Ec!F)Z^H{ae*Fb@%(#~g(dKjNZS%Q z$0+ehJPKtkzwnXZArC*mOQ2-ygM5txri@8 zTenhU&XGGmXph-N0=?7v7h&o9y}g3G9kgffcrs7%a)$P+J#$pAlJB2}{{8DB0U zK()V|=G9d$=71#XviKO_!ev^50awI4knGT)`HENwlIRM`u2hIHkXT$Lh`36{Cu`7p zmFk&rjXIWejk-~HO}q>4L$8Y&09&tcc|3ZJ5Uf)Y4%*QA-=i{60a%eR5B^PboU?i??CQqaTQ1fK3l**Ofn@IPP@> zQFW9eS%bzpIt76b$$i~JGS1h)P*0ajL_HbructWm^|bDOkEota8dN;ePVQrJU#Y>_ z$CS&mf!aH>fx4R3K#`wo5Y$Mx&5C}_+`&Xb@~~_F>j*Pi)^A5KGH-stxe=Ls+o+pG}C=>U6b^EPAQf> zCsoFCa<^!qdS?53L_Qg1QR*g?BNn#=Z`stk%tQjpN@@! zY%U22Z#yqZ!Z&THM8;<%312XyUc%e=Lp`}4*Gu@SSeQw8Lw{r@&4h!Mtx0;DOL#G_ zF_)r1b;n$q3oyolB!?^{yrG>erTL&*Z7JcyRbxrUAy!mjqLqXfYO@C6FOeig19NMV z%+nyF69iLDd~Wfa&_@qO&b>nl4lzGz3?@G=mr z(4asA4|`HA)gW5~7Y9-;bf9^iaiFAbMoPNeNEH?vX;IuAsq+gQNpixGR**Z K0S`J!ll}`mpTd>^ diff --git a/diylc/diylc-library/src/org/diylc/components/guitar/AbstractGuitarPickup.java b/diylc/diylc-library/src/org/diylc/components/guitar/AbstractGuitarPickup.java new file mode 100644 index 00000000..70fc4a50 --- /dev/null +++ b/diylc/diylc-library/src/org/diylc/components/guitar/AbstractGuitarPickup.java @@ -0,0 +1,190 @@ +/* + * + * DIY Layout Creator (DIYLC). Copyright (c) 2009-2018 held jointly by the individual authors. + * + * This file is part of DIYLC. + * + * DIYLC is free software: you can redistribute it and/or modify it under the terms of the GNU + * General Public License as published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * DIYLC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even + * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General + * Public License for more details. + * + * You should have received a copy of the GNU General Public License along with DIYLC. If not, see + * . + */ +package org.diylc.components.guitar; + +import java.awt.Color; +import java.awt.Graphics2D; +import java.awt.Point; +import java.awt.Shape; + +import org.diylc.common.HorizontalAlignment; +import org.diylc.common.Orientation; +import org.diylc.common.OrientationHV; +import org.diylc.common.VerticalAlignment; +import org.diylc.components.AbstractTransparentComponent; +import org.diylc.core.Project; +import org.diylc.core.VisibilityPolicy; +import org.diylc.core.annotations.EditableProperty; +import org.diylc.core.measures.Size; +import org.diylc.core.measures.SizeUnit; + +public abstract class AbstractGuitarPickup extends AbstractTransparentComponent { + + private static final long serialVersionUID = 1L; + + protected static Size POINT_SPACING = new Size(0.1d, SizeUnit.in); + + protected static final int TERMINAL_FONT_SIZE = 11; + + protected String value = ""; + protected Orientation orientation = Orientation.DEFAULT; + protected transient Shape[] body; + + protected Point controlPoint = new Point(0, 0); + protected Point[] controlPoints = new Point[] {new Point(0, 0), new Point(0, 0), new Point(0, 0), new Point(0, 0)}; + + protected Polarity polarity = Polarity.North; + + public AbstractGuitarPickup() { + updateControlPoints(); + } + + protected void drawTerminalLabels(Graphics2D g2d, Color color, Project project) { + Point[] points = getControlPoints(); + g2d.setColor(color); + + g2d.setFont(project.getFont().deriveFont(TERMINAL_FONT_SIZE * 1f)); + int dx = 0; + int dy = 0; + switch (orientation) { + case DEFAULT: + dx = getControlPointDirection() == OrientationHV.HORIZONTAL ? 0 : (int) (TERMINAL_FONT_SIZE * 0.8); + dy = getControlPointDirection() == OrientationHV.HORIZONTAL ? -TERMINAL_FONT_SIZE : 0; + break; + case _90: + dx = getControlPointDirection() == OrientationHV.HORIZONTAL ? TERMINAL_FONT_SIZE : 0; + dy = getControlPointDirection() == OrientationHV.HORIZONTAL ? 0 : (int) (TERMINAL_FONT_SIZE * 0.8); + break; + case _180: + dx = getControlPointDirection() == OrientationHV.HORIZONTAL ? 0 : -(int) (TERMINAL_FONT_SIZE * 0.8); + dy = getControlPointDirection() == OrientationHV.HORIZONTAL ? TERMINAL_FONT_SIZE : 0; + break; + case _270: + dx = getControlPointDirection() == OrientationHV.HORIZONTAL ? -TERMINAL_FONT_SIZE : 0; + dy = getControlPointDirection() == OrientationHV.HORIZONTAL ? 0 : -(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); + } + + @EditableProperty(name = "Model") + @Override + public String getValue() { + return value; + } + + @Override + public void setValue(String value) { + this.value = value; + } + + @EditableProperty + public Orientation getOrientation() { + return orientation; + } + + public void setOrientation(Orientation orientation) { + this.orientation = orientation; + // Invalidate the body + body = null; + updateControlPoints(); + } + + protected Point[] getControlPoints() { + if (controlPoints == null) { + controlPoints = + new Point[] {controlPoint, new Point(controlPoint.x, controlPoint.y), + new Point(controlPoint.x, controlPoint.y), new Point(controlPoint.x, controlPoint.y)}; + updateControlPoints(); + } + return controlPoints; + } + + @Override + public int getControlPointCount() { + return getControlPoints().length; + } + + @Override + public VisibilityPolicy getControlPointVisibilityPolicy(int index) { + return VisibilityPolicy.ALWAYS; + } + + + @Override + public Point getControlPoint(int index) { + return getControlPoints()[index]; + } + + @Override + public void setControlPoint(Point point, int index) { + getControlPoints()[index].setLocation(point); + // Invalidate the body + body = null; + } + + @EditableProperty + public Polarity getPolarity() { + if (polarity == null) + polarity = Polarity.North; + return polarity; + } + + public void setPolarity(Polarity polarity) { + this.polarity = polarity; + // Invalidate the body + body = null; + } + + protected abstract OrientationHV getControlPointDirection(); + + @SuppressWarnings("incomplete-switch") + protected void updateControlPoints() { + Point[] points = getControlPoints(); + int pointSpacing = (int) POINT_SPACING.convertToPixels(); + int dx = getControlPointDirection() == OrientationHV.HORIZONTAL ? 1 : 0; + int dy = getControlPointDirection() == OrientationHV.HORIZONTAL ? 0 : 1; + if (orientation != Orientation.DEFAULT) { + switch (orientation) { + case _90: + dx = getControlPointDirection() == OrientationHV.HORIZONTAL ? 0 : -1; + dy = getControlPointDirection() == OrientationHV.HORIZONTAL ? -1 : 0; + break; + case _180: + dx = getControlPointDirection() == OrientationHV.HORIZONTAL ? -1 : 0; + dy = getControlPointDirection() == OrientationHV.HORIZONTAL ? 0 : -1; + break; + case _270: + dx = getControlPointDirection() == OrientationHV.HORIZONTAL ? 0 : 1; + dy = getControlPointDirection() == OrientationHV.HORIZONTAL ? 1 : 0; + break; + } + } + points[1].setLocation(points[0].x + dx * pointSpacing, points[0].y + dy * pointSpacing); + points[2] + .setLocation(points[0].x + 2 * dx * pointSpacing, points[0].y + 2 * dy * pointSpacing); + points[3] + .setLocation(points[0].x + 3 * dx * pointSpacing, points[0].y + 3 * dy * pointSpacing); + } + + public enum Polarity { + North, South, Humbucking; + } +} diff --git a/diylc/diylc-library/src/org/diylc/components/guitar/AbstractSingleOrHumbuckerPickup.java b/diylc/diylc-library/src/org/diylc/components/guitar/AbstractSingleOrHumbuckerPickup.java new file mode 100644 index 00000000..5afbd382 --- /dev/null +++ b/diylc/diylc-library/src/org/diylc/components/guitar/AbstractSingleOrHumbuckerPickup.java @@ -0,0 +1,135 @@ +/* + * + * DIY Layout Creator (DIYLC). Copyright (c) 2009-2018 held jointly by the individual authors. + * + * This file is part of DIYLC. + * + * DIYLC is free software: you can redistribute it and/or modify it under the terms of the GNU + * General Public License as published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * DIYLC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even + * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General + * Public License for more details. + * + * You should have received a copy of the GNU General Public License along with DIYLC. If not, see + * . + */ +package org.diylc.components.guitar; + +import java.awt.Color; +import java.awt.Graphics2D; +import java.awt.Point; + +import org.diylc.common.HorizontalAlignment; +import org.diylc.common.OrientationHV; +import org.diylc.common.VerticalAlignment; +import org.diylc.core.Project; +import org.diylc.core.VisibilityPolicy; + + +public abstract class AbstractSingleOrHumbuckerPickup extends AbstractGuitarPickup { + + private static final long serialVersionUID = 1L; + + @Override + protected void drawTerminalLabels(Graphics2D g2d, Color color, Project project) { + Point[] points = getControlPoints(); + g2d.setColor(color); + + g2d.setFont(project.getFont().deriveFont(TERMINAL_FONT_SIZE * 1f)); + int dx = 0; + int dy = 0; + switch (orientation) { + case DEFAULT: + dx = getControlPointDirection() == OrientationHV.HORIZONTAL ? 0 : (int) (TERMINAL_FONT_SIZE * 0.8); + dy = getControlPointDirection() == OrientationHV.HORIZONTAL ? -TERMINAL_FONT_SIZE : 0; + break; + case _90: + dx = getControlPointDirection() == OrientationHV.HORIZONTAL ? TERMINAL_FONT_SIZE : 0; + dy = getControlPointDirection() == OrientationHV.HORIZONTAL ? 0 : (int) (TERMINAL_FONT_SIZE * 0.8); + break; + case _180: + dx = getControlPointDirection() == OrientationHV.HORIZONTAL ? 0 : -(int) (TERMINAL_FONT_SIZE * 0.8); + dy = getControlPointDirection() == OrientationHV.HORIZONTAL ? TERMINAL_FONT_SIZE : 0; + break; + case _270: + dx = getControlPointDirection() == OrientationHV.HORIZONTAL ? -TERMINAL_FONT_SIZE : 0; + dy = getControlPointDirection() == OrientationHV.HORIZONTAL ? 0 : -(int) (TERMINAL_FONT_SIZE * 0.8); + 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); + } + } + + @Override + public VisibilityPolicy getControlPointVisibilityPolicy(int index) { + if (getPolarity() != Polarity.Humbucking && (index == 0 || index == 3)) + return VisibilityPolicy.NEVER; + return VisibilityPolicy.ALWAYS; + } + + @Override + public boolean isControlPointSticky(int index) { + if (getPolarity() != Polarity.Humbucking && (index == 0 || index == 3)) + return false; + return true; + } + + @Override + public String getControlPointNodeName(int index) { + switch (index) { + case 0: + if (getPolarity() != Polarity.Humbucking) + return null; + return"North Start"; + case 1: + if (getPolarity() == Polarity.South) + return "South Start"; + if (getPolarity() == Polarity.North) + return "North Start"; + return "North Finish"; + case 2: + if (getPolarity() == Polarity.South) + return "South Finish"; + if (getPolarity() == Polarity.North) + return "North Finish"; + return "South Start"; + case 3: + if (getPolarity() != Polarity.Humbucking) + return null; + return "South Finish"; + } + return null; + } + + @Override + public String getInternalLinkName(int index1, int index2) { + switch (getPolarity()) { + case Humbucking: + if (index1 == 0 && index2 == 1) + return Polarity.North.toString() + "->"; + else if (index1 == 1 && index2 == 0) + return Polarity.North.toString() + "<-"; + else if (index1 == 2 && index2 == 3) + return Polarity.South.toString() + "->"; + else if (index1 == 3 && index2 == 2) + return Polarity.South.toString() + "<-"; + break; + case North: + case South: + if (index1 == 1 && index2 == 2) + return getPolarity().toString() + "->"; + else if (index1 == 2 && index2 == 1) + return getPolarity().toString() + "<-"; + } + + return null; + } +} 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 8e9ff117..89f1ff71 100644 --- a/diylc/diylc-library/src/org/diylc/components/guitar/HumbuckerPickup.java +++ b/diylc/diylc-library/src/org/diylc/components/guitar/HumbuckerPickup.java @@ -37,15 +37,13 @@ import org.diylc.common.HorizontalAlignment; import org.diylc.common.IPlugInPort; import org.diylc.common.ObjectCache; import org.diylc.common.Orientation; +import org.diylc.common.OrientationHV; import org.diylc.common.VerticalAlignment; -import org.diylc.components.AbstractTransparentComponent; -import org.diylc.components.guitar.SingleCoilPickup.Polarity; import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; import org.diylc.core.Theme; -import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.annotations.KeywordPolicy; @@ -57,11 +55,9 @@ import org.diylc.utils.Constants; description = "Double-coil humbucker guitar pickup (PAF, Mini Humbuckers, Filtertrons)", stretchable = false, zOrder = IDIYComponent.COMPONENT, instanceNamePrefix = "PKP", autoEdit = false, keywordPolicy = KeywordPolicy.SHOW_TAG, keywordTag = "Guitar Wiring Diagram") -public class HumbuckerPickup extends AbstractTransparentComponent { +public class HumbuckerPickup extends AbstractGuitarPickup { - private static final long serialVersionUID = 1L; - - private static final int TERMINAL_FONT_SIZE = 11; + private static final long serialVersionUID = 1L; private static Color BASE_COLOR = Color.lightGray; private static Color BOBIN_COLOR1 = Color.decode("#EAE3C6"); @@ -77,19 +73,14 @@ public class HumbuckerPickup extends AbstractTransparentComponent { private static Size LIP_WIDTH = new Size(12.7d, SizeUnit.mm); private static Size LIP_LENGTH = new Size(7.9d, SizeUnit.mm); private static Size EDGE_RADIUS = new Size(4d, SizeUnit.mm); - private static Size POINT_MARGIN = new Size(1.5d, SizeUnit.mm); - private static Size POINT_SPACING = new Size(0.1d, SizeUnit.in); + private static Size POINT_MARGIN = new Size(1.5d, SizeUnit.mm); private static Size SCREW_LINE = new Size(1d, SizeUnit.mm); private static Size POINT_SIZE = new Size(2d, SizeUnit.mm); private static Size LIP_HOLE_SIZE = new Size(2d, SizeUnit.mm); private static Size POLE_SIZE = new Size(4d, SizeUnit.mm); private static Size POLE_SIZE_FILTERTRON = new Size(5d, SizeUnit.mm); private static Size POLE_SPACING = new Size(10.1d, SizeUnit.mm); - - private String value = ""; - private Point controlPoint = new Point(0, 0); - transient Shape[] body; - private Orientation orientation = Orientation.DEFAULT; + private Color color = BASE_COLOR; private Color poleColor = METAL_COLOR; private HumbuckerType type; @@ -98,14 +89,8 @@ public class HumbuckerPickup extends AbstractTransparentComponent { private Color bobinColor1 = BOBIN_COLOR1; private Color bobinColor2 = BOBIN_COLOR2; private PolePieceType coilType1; - private PolePieceType coilType2; - - private Point[] controlPoints = new Point[] {new Point(0, 0), new Point(0, 0), new Point(0, 0), new Point(0, 0)}; - - public HumbuckerPickup() { - updateControlPoints(); - } - + private PolePieceType coilType2; + @Override public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project, IDrawingObserver drawingObserver) { @@ -207,73 +192,12 @@ public class HumbuckerPickup extends AbstractTransparentComponent { 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); + drawTerminalLabels(g2d, finalBorderColor, project); + } - 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() { - if (controlPoints == null) { - controlPoints = - new Point[] {controlPoint, new Point(controlPoint.x, controlPoint.y), - new Point(controlPoint.x, controlPoint.y), new Point(controlPoint.x, controlPoint.y)}; - updateControlPoints(); - } - return controlPoints; - } - - @SuppressWarnings("incomplete-switch") - private void updateControlPoints() { - Point[] points = getControlPoints(); - int pointSpacing = (int) POINT_SPACING.convertToPixels(); - int dx = 0; - int dy = 1; - if (orientation != Orientation.DEFAULT) { - switch (orientation) { - case _90: - dx = -1; - dy = 0; - break; - case _180: - dx = 0; - dy = -1; - break; - case _270: - dx = 1; - dy = 0; - break; - } - } - points[1].setLocation(points[0].x + dx * pointSpacing, points[0].y + dy * pointSpacing); - points[2] - .setLocation(points[0].x + 2 * dx * pointSpacing, points[0].y + 2 * dy * pointSpacing); - points[3] - .setLocation(points[0].x + 3 * dx * pointSpacing, points[0].y + 3 * dy * pointSpacing); + @Override + protected OrientationHV getControlPointDirection() { + return OrientationHV.VERTICAL; } @SuppressWarnings("incomplete-switch") @@ -556,55 +480,10 @@ public class HumbuckerPickup extends AbstractTransparentComponent { body = null; } - @Override - public int getControlPointCount() { - return getControlPoints().length; - } - - @Override - public VisibilityPolicy getControlPointVisibilityPolicy(int index) { - return VisibilityPolicy.ALWAYS; - } - @Override public boolean isControlPointSticky(int index) { return true; - } - - @Override - public Point getControlPoint(int index) { - return getControlPoints()[index]; - } - - @Override - public void setControlPoint(Point point, int index) { - getControlPoints()[index].setLocation(point); - // Invalidate the body - body = null; - } - - @EditableProperty(name = "Model") - @Override - public String getValue() { - return value; - } - - @Override - public void setValue(String value) { - this.value = value; - } - - @EditableProperty - public Orientation getOrientation() { - return orientation; - } - - public void setOrientation(Orientation orientation) { - this.orientation = orientation; - // Invalidate the body - body = null; - updateControlPoints(); - } + } @EditableProperty public Color getColor() { @@ -682,6 +561,12 @@ public class HumbuckerPickup extends AbstractTransparentComponent { return null; } + + @Override + public Polarity getPolarity() { + // just to disable editor + return super.getPolarity(); + } public static enum HumbuckerType { diff --git a/diylc/diylc-library/src/org/diylc/components/guitar/JazzBassPickup.java b/diylc/diylc-library/src/org/diylc/components/guitar/JazzBassPickup.java index 550b03bd..8724647e 100644 --- a/diylc/diylc-library/src/org/diylc/components/guitar/JazzBassPickup.java +++ b/diylc/diylc-library/src/org/diylc/components/guitar/JazzBassPickup.java @@ -38,14 +38,13 @@ import org.diylc.common.HorizontalAlignment; import org.diylc.common.IPlugInPort; import org.diylc.common.ObjectCache; import org.diylc.common.Orientation; +import org.diylc.common.OrientationHV; import org.diylc.common.VerticalAlignment; -import org.diylc.components.AbstractTransparentComponent; import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; import org.diylc.core.Theme; -import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.annotations.KeywordPolicy; @@ -57,12 +56,11 @@ import org.diylc.utils.Constants; description = "Single coil pickup for Jazz Bass and similar guitars", stretchable = false, zOrder = IDIYComponent.COMPONENT, instanceNamePrefix = "PKP", autoEdit = false, keywordPolicy = KeywordPolicy.SHOW_TAG, keywordTag = "Guitar Wiring Diagram") -public class JazzBassPickup extends AbstractTransparentComponent { +public class JazzBassPickup extends AbstractSingleOrHumbuckerPickup { private static final long serialVersionUID = 1L; - private static Color BODY_COLOR = Color.decode("#333333");; - private static Color POINT_COLOR = Color.gray; + private static Color BODY_COLOR = Color.decode("#333333"); private static Size WIDTH = new Size(0.73, SizeUnit.in); private static Size LENGTH = new Size(4.1, SizeUnit.in); @@ -78,10 +76,6 @@ public class JazzBassPickup extends AbstractTransparentComponent { private static Size POLE_SPACING = new Size(0.85d, SizeUnit.in); private static Size POLE_SPACING_MINOR = new Size(0.28d, SizeUnit.in); - private String value = ""; - private Point controlPoint = new Point(0, 0); - transient Shape[] body; - private Orientation orientation = Orientation.DEFAULT; private Color color = BODY_COLOR; private Color poleColor = METAL_COLOR; @@ -98,9 +92,7 @@ public class JazzBassPickup extends AbstractTransparentComponent { } g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : color); g2d.fill(body[0]); - g2d.fill(body[1]); - g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : POINT_COLOR); - g2d.fill(body[2]); + g2d.fill(body[1]); g2d.setComposite(oldComposite); Color finalBorderColor; @@ -143,16 +135,20 @@ public class JazzBassPickup extends AbstractTransparentComponent { g2d.setFont(project.getFont()); Rectangle bounds = body[0].getBounds(); drawCenteredText(g2d, value, bounds.x + bounds.width / 2, bounds.y + bounds.height / 2, HorizontalAlignment.CENTER, - VerticalAlignment.CENTER); + VerticalAlignment.CENTER); + + // terminal labels + drawTerminalLabels(g2d, finalLabelColor, project); } @SuppressWarnings("incomplete-switch") public Shape[] getBody() { if (body == null) { body = new Shape[4]; - - int x = controlPoint.x; - int y = controlPoint.y; + + Point[] points = getControlPoints(); + int x = points[0].x; + int y = points[0].y; int width = (int) WIDTH.convertToPixels(); int length = (int) LENGTH.convertToPixels(); int edgeRadius = (int) EDGE_RADIUS.convertToPixels(); @@ -164,12 +160,12 @@ public class JazzBassPickup extends AbstractTransparentComponent { int lipHoleSpacing = getClosestOdd(LIP_HOLE_SPACING.convertToPixels()); body[0] = - new Area(new RoundRectangle2D.Double(x + pointMargin - length, y - pointMargin, length, width, edgeRadius, + new Area(new RoundRectangle2D.Double(x - length, y - pointMargin, length, width, edgeRadius, edgeRadius)); Area lip = new Area(new Ellipse2D.Double(-lipRadius / 2, -lipRadius / 2, lipRadius, lipRadius)); lip.subtract(new Area(new Ellipse2D.Double(-lipHoleSize / 2, -lipHoleSpacing - lipHoleSize / 2, lipHoleSize, lipHoleSize))); - lip.transform(AffineTransform.getTranslateInstance(x + pointMargin - length / 2 - lipSpacing / 2, y - pointMargin)); + lip.transform(AffineTransform.getTranslateInstance(x - length / 2 - lipSpacing / 2, y - pointMargin)); body[1] = new Area(lip); lip.transform(AffineTransform.getTranslateInstance(lipSpacing, 0)); @@ -191,11 +187,11 @@ public class JazzBassPickup extends AbstractTransparentComponent { Area poleArea = new Area(); for (int i = 0; i < 4; i++) { Ellipse2D pole = - new Ellipse2D.Double(x + pointMargin - length + poleMargin + i * poleSpacing - poleSize / 2 - poleSpacingMinor / 2, y + new Ellipse2D.Double(x - length + poleMargin + i * poleSpacing - poleSize / 2 - poleSpacingMinor / 2, y - pointMargin - poleSize / 2 + width / 2, poleSize, poleSize); poleArea.add(new Area(pole)); pole = - new Ellipse2D.Double(x + pointMargin - length + poleMargin + i * poleSpacing - poleSize / 2 + poleSpacingMinor / 2, y + new Ellipse2D.Double(x - length + poleMargin + i * poleSpacing - poleSize / 2 + poleSpacingMinor / 2, y - pointMargin - poleSize / 2 + width / 2, poleSize, poleSize); poleArea.add(new Area(pole)); } @@ -224,7 +220,12 @@ public class JazzBassPickup extends AbstractTransparentComponent { } } return body; - } + } + + @Override + protected OrientationHV getControlPointDirection() { + return OrientationHV.VERTICAL; + } @Override public void drawIcon(Graphics2D g2d, int width, int height) { @@ -256,57 +257,8 @@ public class JazzBassPickup extends AbstractTransparentComponent { for (int i = 0; i < 4; i++) { g2d.fillOval((width - poleSize) / 2, (height - poleSpacing) / 2 + (i * poleSpacing / 3), poleSize, poleSize); } - } - - @Override - public int getControlPointCount() { - return 1; - } - - @Override - public VisibilityPolicy getControlPointVisibilityPolicy(int index) { - return VisibilityPolicy.WHEN_SELECTED; - } - - @Override - public boolean isControlPointSticky(int index) { - return true; - } - - @Override - public Point getControlPoint(int index) { - return controlPoint; - } - - @Override - public void setControlPoint(Point point, int index) { - this.controlPoint.setLocation(point); - // Invalidate the body - body = null; - } - - @EditableProperty(name = "Model") - @Override - public String getValue() { - return value; - } - - @Override - public void setValue(String value) { - this.value = value; - } - - @EditableProperty - public Orientation getOrientation() { - return orientation; - } - - public void setOrientation(Orientation orientation) { - this.orientation = orientation; - // Invalidate the body - body = null; - } - + } + @EditableProperty public Color getColor() { return color; @@ -325,10 +277,5 @@ public class JazzBassPickup extends AbstractTransparentComponent { public void setPoleColor(Color poleColor) { this.poleColor = poleColor; - } - - @Override - public String getControlPointNodeName(int index) { - return getName() + ".PickupTerminal"; - } + } } diff --git a/diylc/diylc-library/src/org/diylc/components/guitar/P90Pickup.java b/diylc/diylc-library/src/org/diylc/components/guitar/P90Pickup.java index dfd8a691..493855d5 100644 --- a/diylc/diylc-library/src/org/diylc/components/guitar/P90Pickup.java +++ b/diylc/diylc-library/src/org/diylc/components/guitar/P90Pickup.java @@ -39,14 +39,13 @@ import org.diylc.common.HorizontalAlignment; import org.diylc.common.IPlugInPort; import org.diylc.common.ObjectCache; import org.diylc.common.Orientation; +import org.diylc.common.OrientationHV; import org.diylc.common.VerticalAlignment; -import org.diylc.components.AbstractTransparentComponent; import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; import org.diylc.core.Theme; -import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.annotations.KeywordPolicy; @@ -58,7 +57,7 @@ import org.diylc.utils.Constants; description = "Single coil P-90 guitar pickup, both \"dog ear\" and \"soap bar\"", stretchable = false, zOrder = IDIYComponent.COMPONENT, instanceNamePrefix = "PKP", autoEdit = false, keywordPolicy = KeywordPolicy.SHOW_TAG, keywordTag = "Guitar Wiring Diagram") -public class P90Pickup extends AbstractTransparentComponent { +public class P90Pickup extends AbstractSingleOrHumbuckerPickup { private static final long serialVersionUID = 1L; @@ -82,63 +81,15 @@ public class P90Pickup extends AbstractTransparentComponent { private static Size LIP_HOLE_SIZE = new Size(2.5d, SizeUnit.mm); private static Size LIP_HOLE_SPACING = new Size(97d, SizeUnit.mm); private static Size POLE_SIZE = new Size(4d, SizeUnit.mm); - private static Size POLE_SPACING = new Size(11.68d, SizeUnit.mm); - private static Size POINT_SPACING = new Size(0.1d, SizeUnit.in); - - private static final int TERMINAL_FONT_SIZE = 11; - - private String value = ""; - private Point controlPoint = new Point(0, 0); - transient Shape[] body; - private Orientation orientation = Orientation.DEFAULT; + private static Size POLE_SPACING = new Size(11.68d, SizeUnit.mm); + private Color color = BODY_COLOR; private P90Type type = P90Type.DOG_EAR; private Color poleColor = METAL_COLOR; - private Polarity polarity = Polarity.North; - private Point[] controlPoints = new Point[] {new Point(0, 0), new Point(0, 0), new Point(0, 0), new Point(0, 0)}; - - public P90Pickup() { - updateControlPoints(); - } - - private Point[] getControlPoints() { - if (controlPoints == null) { - controlPoints = - new Point[] {controlPoint, new Point(controlPoint.x, controlPoint.y), - new Point(controlPoint.x, controlPoint.y), new Point(controlPoint.x, controlPoint.y)}; - updateControlPoints(); - } - return controlPoints; - } - - @SuppressWarnings("incomplete-switch") - private void updateControlPoints() { - Point[] points = getControlPoints(); - int pointSpacing = (int) POINT_SPACING.convertToPixels(); - int dx = 0; - int dy = 1; - if (orientation != Orientation.DEFAULT) { - switch (orientation) { - case _90: - dx = -1; - dy = 0; - break; - case _180: - dx = 0; - dy = -1; - break; - case _270: - dx = 1; - dy = 0; - break; - } - } - points[1].setLocation(points[0].x + dx * pointSpacing, points[0].y + dy * pointSpacing); - points[2] - .setLocation(points[0].x + 2 * dx * pointSpacing, points[0].y + 2 * dy * pointSpacing); - points[3] - .setLocation(points[0].x + 3 * dx * pointSpacing, points[0].y + 3 * dy * pointSpacing); + @Override + protected OrientationHV getControlPointDirection() { + return OrientationHV.VERTICAL; } @Override @@ -366,57 +317,6 @@ public class P90Pickup extends AbstractTransparentComponent { body = null; } - @Override - public int getControlPointCount() { - return getControlPoints().length; - } - - @Override - public VisibilityPolicy getControlPointVisibilityPolicy(int index) { - if (getPolarity() != Polarity.Humbucking && (index == 0 || index == 3)) - return VisibilityPolicy.NEVER; - return VisibilityPolicy.ALWAYS; - } - - @Override - public boolean isControlPointSticky(int index) { - return true; - } - - @Override - public Point getControlPoint(int index) { - return getControlPoints()[index]; - } - - @Override - public void setControlPoint(Point point, int index) { - getControlPoints()[index].setLocation(point); - // Invalidate the body - body = null; - } - - @EditableProperty(name = "Model") - @Override - public String getValue() { - return value; - } - - @Override - public void setValue(String value) { - this.value = value; - } - - @EditableProperty - public Orientation getOrientation() { - return orientation; - } - - public void setOrientation(Orientation orientation) { - this.orientation = orientation; - // Invalidate the body - body = null; - } - @EditableProperty public Color getColor() { return color; @@ -435,47 +335,7 @@ public class P90Pickup extends AbstractTransparentComponent { public void setPoleColor(Color poleColor) { this.poleColor = poleColor; - } - - @Override - public String getControlPointNodeName(int index) { - switch (index) { - case 0: - if (getPolarity() != Polarity.Humbucking) - return null; - return"North Start"; - case 1: - if (getPolarity() == Polarity.South) - return "South Start"; - if (getPolarity() == Polarity.North) - return "North Start"; - return "North Finish"; - case 2: - if (getPolarity() == Polarity.South) - return "South Finish"; - if (getPolarity() == Polarity.North) - return "North Finish"; - return "South Start"; - case 3: - if (getPolarity() != Polarity.Humbucking) - return null; - return "South Finish"; - } - return null; - } - - @EditableProperty - public Polarity getPolarity() { - if (polarity == null) - polarity = Polarity.North; - return polarity; - } - - public void setPolarity(Polarity polarity) { - this.polarity = polarity; - // Invalidate the body - body = null; - } + } public enum P90Type { DOG_EAR("Dog Ear", DOG_EAR_LENGTH, DOG_EAR_WIDTH, DOG_EAR_EDGE_RADIUS), SOAP_BAR("Soap Bar", SOAP_BAR_LENGTH, @@ -509,9 +369,5 @@ public class P90Pickup extends AbstractTransparentComponent { public String toString() { return label; } - } - - public enum Polarity { - North, South, Humbucking; } } diff --git a/diylc/diylc-library/src/org/diylc/components/guitar/PBassPickup.java b/diylc/diylc-library/src/org/diylc/components/guitar/PBassPickup.java index 7d621409..d54da5ef 100644 --- a/diylc/diylc-library/src/org/diylc/components/guitar/PBassPickup.java +++ b/diylc/diylc-library/src/org/diylc/components/guitar/PBassPickup.java @@ -38,14 +38,13 @@ import org.diylc.common.HorizontalAlignment; import org.diylc.common.IPlugInPort; import org.diylc.common.ObjectCache; import org.diylc.common.Orientation; +import org.diylc.common.OrientationHV; import org.diylc.common.VerticalAlignment; -import org.diylc.components.AbstractTransparentComponent; import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; import org.diylc.core.Theme; -import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.annotations.KeywordPolicy; @@ -57,12 +56,11 @@ import org.diylc.utils.Constants; description = "Split-coil pickup for P-Bass and similar guitars", stretchable = false, zOrder = IDIYComponent.COMPONENT, instanceNamePrefix = "PKP", autoEdit = false, keywordPolicy = KeywordPolicy.SHOW_TAG, keywordTag = "Guitar Wiring Diagram") -public class PBassPickup extends AbstractTransparentComponent { +public class PBassPickup extends AbstractSingleOrHumbuckerPickup { private static final long serialVersionUID = 1L; private static Color BODY_COLOR = Color.decode("#333333");; - private static Color POINT_COLOR = Color.gray; private static Size WIDTH = new Size(1.1, SizeUnit.in); private static Size LENGTH = new Size(2.2, SizeUnit.in); @@ -76,10 +74,6 @@ public class PBassPickup extends AbstractTransparentComponent { private static Size POLE_SIZE = new Size(4d, SizeUnit.mm); private static Size POLE_SPACING = new Size(0.38d, SizeUnit.in); - private String value = ""; - private Point controlPoint = new Point(0, 0); - transient Shape[] body; - private Orientation orientation = Orientation.DEFAULT; private Color color = BODY_COLOR; private Color poleColor = METAL_COLOR; @@ -97,8 +91,6 @@ public class PBassPickup extends AbstractTransparentComponent { g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : color); g2d.fill(body[0]); g2d.fill(body[1]); - g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : POINT_COLOR); - g2d.fill(body[2]); g2d.setComposite(oldComposite); Color finalBorderColor; @@ -141,16 +133,19 @@ public class PBassPickup extends AbstractTransparentComponent { g2d.setFont(project.getFont()); Rectangle bounds = body[0].getBounds(); drawCenteredText(g2d, value, bounds.x + bounds.width / 2, bounds.y + bounds.height / 2, HorizontalAlignment.CENTER, - VerticalAlignment.CENTER); + VerticalAlignment.CENTER); + + drawTerminalLabels(g2d, finalLabelColor, project); } @SuppressWarnings("incomplete-switch") public Shape[] getBody() { if (body == null) { body = new Shape[4]; - - int x = controlPoint.x; - int y = controlPoint.y; + + Point[] points = getControlPoints(); + int x = points[0].x; + int y = points[0].y; int width = (int) WIDTH.convertToPixels(); int length = (int) LENGTH.convertToPixels(); int edgeRadius = (int) EDGE_RADIUS.convertToPixels(); @@ -161,16 +156,16 @@ public class PBassPickup extends AbstractTransparentComponent { int lipHoleSpacing = getClosestOdd(LIP_HOLE_SPACING.convertToPixels()); body[0] = - new Area(new RoundRectangle2D.Double(x + pointMargin - length, y - pointMargin, length, width, edgeRadius, + new Area(new RoundRectangle2D.Double(x - length, y - pointMargin, length, width, edgeRadius, edgeRadius)); Area lip = new Area(new Ellipse2D.Double(-lipRadius / 2, -lipRadius / 2, lipRadius, lipRadius)); lip.subtract(new Area(new Ellipse2D.Double(-lipHoleSize / 2 + lipHoleSpacing, -lipHoleSize / 2, lipHoleSize, lipHoleSize))); - lip.transform(AffineTransform.getTranslateInstance(x + pointMargin, y - pointMargin + width / 2)); + lip.transform(AffineTransform.getTranslateInstance(x, y - pointMargin + width / 2)); Area lip2 = new Area(new Ellipse2D.Double(-lipRadius / 2, -lipRadius / 2, lipRadius, lipRadius)); lip2 = new Area(new Ellipse2D.Double(-lipRadius / 2, -lipRadius / 2, lipRadius, lipRadius)); lip2.subtract(new Area(new Ellipse2D.Double(-lipHoleSize / 2 - lipHoleSpacing, -lipHoleSize / 2, lipHoleSize, lipHoleSize))); - lip2.transform(AffineTransform.getTranslateInstance(x + pointMargin - length, y - pointMargin + width / 2)); + lip2.transform(AffineTransform.getTranslateInstance(x - length, y - pointMargin + width / 2)); lip.add(lip2); body[1] = new Area(lip); @@ -185,7 +180,7 @@ public class PBassPickup extends AbstractTransparentComponent { Area poleArea = new Area(); for (int i = 0; i < 4; i++) { Ellipse2D pole = - new Ellipse2D.Double(x + pointMargin - length + poleMargin + i * poleSpacing - poleSize / 2, y + new Ellipse2D.Double(x - length + poleMargin + i * poleSpacing - poleSize / 2, y - pointMargin - poleSize / 2 + width / 2, poleSize, poleSize); poleArea.add(new Area(pole)); } @@ -246,53 +241,9 @@ public class PBassPickup extends AbstractTransparentComponent { } } - @Override - public int getControlPointCount() { - return 1; - } - - @Override - public VisibilityPolicy getControlPointVisibilityPolicy(int index) { - return VisibilityPolicy.WHEN_SELECTED; - } - - @Override - public boolean isControlPointSticky(int index) { - return true; - } - - @Override - public Point getControlPoint(int index) { - return controlPoint; - } - - @Override - public void setControlPoint(Point point, int index) { - this.controlPoint.setLocation(point); - // Invalidate the body - body = null; - } - - @EditableProperty(name = "Model") - @Override - public String getValue() { - return value; - } - - @Override - public void setValue(String value) { - this.value = value; - } - - @EditableProperty - public Orientation getOrientation() { - return orientation; - } - - public void setOrientation(Orientation orientation) { - this.orientation = orientation; - // Invalidate the body - body = null; + @Override + protected OrientationHV getControlPointDirection() { + return OrientationHV.VERTICAL; } @EditableProperty @@ -313,10 +264,5 @@ public class PBassPickup extends AbstractTransparentComponent { public void setPoleColor(Color poleColor) { this.poleColor = poleColor; - } - - @Override - public String getControlPointNodeName(int index) { - return getName() + ".PickupTerminal"; } } 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 9b45ecc2..af28fc17 100644 --- a/diylc/diylc-library/src/org/diylc/components/guitar/SingleCoilPickup.java +++ b/diylc/diylc-library/src/org/diylc/components/guitar/SingleCoilPickup.java @@ -21,49 +21,46 @@ */ package org.diylc.components.guitar; -import java.awt.AlphaComposite; -import java.awt.Color; -import java.awt.Composite; -import java.awt.Graphics2D; -import java.awt.Point; -import java.awt.Rectangle; -import java.awt.Shape; -import java.awt.geom.AffineTransform; -import java.awt.geom.Area; -import java.awt.geom.Ellipse2D; -import java.awt.geom.Rectangle2D; -import java.awt.geom.RoundRectangle2D; +import java.awt.AlphaComposite; +import java.awt.Color; +import java.awt.Composite; +import java.awt.Graphics2D; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.Shape; +import java.awt.geom.AffineTransform; +import java.awt.geom.Area; +import java.awt.geom.Ellipse2D; +import java.awt.geom.Rectangle2D; +import java.awt.geom.RoundRectangle2D; -import org.diylc.appframework.miscutils.ConfigurationManager; -import org.diylc.common.HorizontalAlignment; -import org.diylc.common.IPlugInPort; -import org.diylc.common.ObjectCache; -import org.diylc.common.Orientation; -import org.diylc.common.VerticalAlignment; -import org.diylc.components.AbstractTransparentComponent; -import org.diylc.components.RoundedPath; -import org.diylc.core.ComponentState; -import org.diylc.core.IDIYComponent; -import org.diylc.core.IDrawingObserver; -import org.diylc.core.Project; -import org.diylc.core.Theme; -import org.diylc.core.VisibilityPolicy; -import org.diylc.core.annotations.ComponentDescriptor; -import org.diylc.core.annotations.EditableProperty; -import org.diylc.core.annotations.KeywordPolicy; -import org.diylc.core.measures.Size; -import org.diylc.core.measures.SizeUnit; -import org.diylc.utils.Constants; +import org.diylc.appframework.miscutils.ConfigurationManager; +import org.diylc.common.HorizontalAlignment; +import org.diylc.common.IPlugInPort; +import org.diylc.common.ObjectCache; +import org.diylc.common.Orientation; +import org.diylc.common.OrientationHV; +import org.diylc.common.VerticalAlignment; +import org.diylc.components.RoundedPath; +import org.diylc.core.ComponentState; +import org.diylc.core.IDIYComponent; +import org.diylc.core.IDrawingObserver; +import org.diylc.core.Project; +import org.diylc.core.Theme; +import org.diylc.core.annotations.ComponentDescriptor; +import org.diylc.core.annotations.EditableProperty; +import org.diylc.core.annotations.KeywordPolicy; +import org.diylc.core.measures.Size; +import org.diylc.core.measures.SizeUnit; +import org.diylc.utils.Constants; @ComponentDescriptor(name = "Single Coil Pickup", category = "Guitar", author = "Branislav Stojkovic", description = "Single coil guitar pickup, both Strat and Tele style", stretchable = false, zOrder = IDIYComponent.COMPONENT, instanceNamePrefix = "PKP", autoEdit = false, keywordPolicy = KeywordPolicy.SHOW_TAG, keywordTag = "Guitar Wiring Diagram") -public class SingleCoilPickup extends AbstractTransparentComponent { +public class SingleCoilPickup extends AbstractSingleOrHumbuckerPickup { - private static final long serialVersionUID = 1L; - - private static final int TERMINAL_FONT_SIZE = 11; + private static final long serialVersionUID = 1L; private static Color BODY_COLOR = Color.white; private static Color BASE_COLOR = Color.gray; @@ -71,8 +68,7 @@ public class SingleCoilPickup extends AbstractTransparentComponent { // private static Color POINT_COLOR = Color.lightGray; private static Size WIDTH = new Size(15.5d, SizeUnit.mm); private static Size LENGTH = new Size(83d, SizeUnit.mm); - private static Size BASE_RADIUS = new Size(0.15d, SizeUnit.in); - private static Size POINT_SPACING = new Size(0.1d, SizeUnit.in); + private static Size BASE_RADIUS = new Size(0.15d, SizeUnit.in); private static Size LUG_DIAMETER = new Size(0.06d, SizeUnit.in); // strat-specific @@ -94,62 +90,17 @@ public class SingleCoilPickup extends AbstractTransparentComponent { private static Size RAIL_WIDTH = new Size(1.5d, SizeUnit.mm); private static Size RAIL_LENGTH = new Size(60d, SizeUnit.mm); private static Size COIL_SPACING = new Size(7.5d, SizeUnit.mm); - - private String value = ""; - private Point controlPoint = new Point(0, 0); - transient Shape[] body; - private Orientation orientation = Orientation.DEFAULT; + private Color color = BODY_COLOR; private Color poleColor = METAL_COLOR; private Color baseColor = BASE_COLOR; private SingleCoilType type = SingleCoilType.Stratocaster; private PolePieceType polePieceType = PolePieceType.Rods; - private Color lugColor = LUG_COLOR; - private Polarity polarity = Polarity.North; + private Color lugColor = LUG_COLOR; - private Point[] controlPoints = new Point[] {new Point(0, 0), new Point(0, 0), new Point(0, 0), new Point(0, 0)}; - - public SingleCoilPickup() { - updateControlPoints(); - } - - private Point[] getControlPoints() { - if (controlPoints == null) { - controlPoints = - new Point[] {controlPoint, new Point(controlPoint.x, controlPoint.y), - new Point(controlPoint.x, controlPoint.y), new Point(controlPoint.x, controlPoint.y)}; - updateControlPoints(); - } - return controlPoints; - } - - @SuppressWarnings("incomplete-switch") - private void updateControlPoints() { - Point[] points = getControlPoints(); - int pointSpacing = (int) POINT_SPACING.convertToPixels(); - int dx = 1; - int dy = 0; - if (orientation != Orientation.DEFAULT) { - switch (orientation) { - case _90: - dx = 0; - dy = -1; - break; - case _180: - dx = -1; - dy = 0; - break; - case _270: - dx = 0; - dy = 1; - break; - } - } - points[1].setLocation(points[0].x + dx * pointSpacing, points[0].y + dy * pointSpacing); - points[2] - .setLocation(points[0].x + 2 * dx * pointSpacing, points[0].y + 2 * dy * pointSpacing); - points[3] - .setLocation(points[0].x + 3 * dx * pointSpacing, points[0].y + 3 * dy * pointSpacing); + @Override + protected OrientationHV getControlPointDirection() { + return OrientationHV.HORIZONTAL; } @Override @@ -236,39 +187,8 @@ public class SingleCoilPickup extends AbstractTransparentComponent { drawCenteredText(g2d, value, bounds.x + bounds.width / 2, bounds.y + bounds.height / 2, HorizontalAlignment.CENTER, VerticalAlignment.CENTER); - // terminal labels - Point[] points = getControlPoints(); - g2d.setColor(darkerOrLighter(baseColor)); - - 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); - } - } + drawTerminalLabels(g2d, finalLabelColor, project); + } @SuppressWarnings("incomplete-switch") public Shape[] getBody() { @@ -477,56 +397,6 @@ public class SingleCoilPickup extends AbstractTransparentComponent { body = null; } - @Override - public int getControlPointCount() { - return getControlPoints().length; - } - - @Override - public VisibilityPolicy getControlPointVisibilityPolicy(int index) { - return VisibilityPolicy.NEVER; - } - - @Override - public boolean isControlPointSticky(int index) { - return getPolarity() == Polarity.Humbucking || (index > 0 && index < 3); - } - - @Override - public Point getControlPoint(int index) { - return getControlPoints()[index]; - } - - @Override - public void setControlPoint(Point point, int index) { - getControlPoints()[index].setLocation(point); - // Invalidate the body - body = null; - } - - @EditableProperty(name = "Model") - @Override - public String getValue() { - return value; - } - - @Override - public void setValue(String value) { - this.value = value; - } - - @EditableProperty - public Orientation getOrientation() { - return orientation; - } - - public void setOrientation(Orientation orientation) { - this.orientation = orientation; - // Invalidate the body - body = null; - updateControlPoints(); - } - @EditableProperty public Color getColor() { return color; @@ -569,77 +439,10 @@ public class SingleCoilPickup extends AbstractTransparentComponent { public void setLugColor(Color lugColor) { this.lugColor = lugColor; } - - @EditableProperty - public Polarity getPolarity() { - if (polarity == null) - polarity = Polarity.North; - return polarity; - } - - public void setPolarity(Polarity polarity) { - this.polarity = polarity; - // Invalidate the body - body = null; - } - - @Override - public String getControlPointNodeName(int index) { - switch (index) { - case 0: - if (getPolarity() != Polarity.Humbucking) - return null; - return"North Start"; - case 1: - if (getPolarity() == Polarity.South) - return "South Start"; - if (getPolarity() == Polarity.North) - return "North Start"; - return "North Finish"; - case 2: - if (getPolarity() == Polarity.South) - return "South Finish"; - if (getPolarity() == Polarity.North) - return "North Finish"; - return "South Start"; - case 3: - if (getPolarity() != Polarity.Humbucking) - return null; - return "South Finish"; - } - return null; - } - - @Override - public String getInternalLinkName(int index1, int index2) { - switch (getPolarity()) { - case Humbucking: - if (index1 == 0 && index2 == 1) - return Polarity.North.toString() + "->"; - else if (index1 == 1 && index2 == 0) - return Polarity.North.toString() + "<-"; - else if (index1 == 2 && index2 == 3) - return Polarity.South.toString() + "->"; - else if (index1 == 3 && index2 == 2) - return Polarity.South.toString() + "<-"; - break; - case North: - case South: - if (index1 == 1 && index2 == 2) - return getPolarity().toString() + "->"; - else if (index1 == 2 && index2 == 1) - return getPolarity().toString() + "<-"; - } - - return null; - } + public enum SingleCoilType { Stratocaster, Telecaster; - } - - public enum Polarity { - North, South, Humbucking; } public enum PolePieceType { diff --git a/diylc/diylc-library/src/org/diylc/netlist/GuitarDiagramAnalyzer.java b/diylc/diylc-library/src/org/diylc/netlist/GuitarDiagramAnalyzer.java index b6b55dde..9a2cc718 100644 --- a/diylc/diylc-library/src/org/diylc/netlist/GuitarDiagramAnalyzer.java +++ b/diylc/diylc-library/src/org/diylc/netlist/GuitarDiagramAnalyzer.java @@ -35,7 +35,6 @@ import org.diylc.components.guitar.P90Pickup; import org.diylc.components.guitar.PBassPickup; import org.diylc.components.guitar.SingleCoilPickup; import org.diylc.components.passive.PotentiometerPanel; -import org.diylc.core.IDIYComponent; public class GuitarDiagramAnalyzer extends NetlistAnalyzer implements INetlistAnalyzer { @@ -75,76 +74,10 @@ public class GuitarDiagramAnalyzer extends NetlistAnalyzer implements INetlistAn private Summary summarize(Netlist netlist, Node preferredOutput) throws TreeException { List notes = new ArrayList(); - List jackTipGroups = findGroups(JACK_TYPES, "Tip", netlist); - List jackSleeveGroups = findGroups(JACK_TYPES, "Sleeve", netlist); - -// if (jackTipGroups.size() == 0 || jackSleeveGroups.size() == 0) { -// notes.add("Could not find anything connected to a jack tip terminal."); -// } else if (jackTipGroups.size() > 1 || jackSleeveGroups.size() > 1) { -// notes.add("Multiple jacks found, could not proceed."); -// } else { -// Group jackTipGroup = jackTipGroups.get(0); -// Group jackSleeveGroup = jackSleeveGroups.get(0); -// netlist = findAndEliminatePots(netlist, jackTipGroup, jackSleeveGroup, notes); -// // find jack tip group again after eliminating pots, it should be connecter straight to the pickups -// jackTipGroups = findGroups(JACK_TYPES, "Tip", netlist); -// if (jackTipGroups.size() == 1) { -// jackTipGroup = jackTipGroups.get(0); -// List pickupTipNodes = find(PICKUP_TYPES, null, jackTipGroup); -// List pickupSleeveNodes = find(PICKUP_TYPES, null, jackSleeveGroup); -// notes.add("test"); -// } -// } - - - return new Summary(netlist, notes, constructTree(netlist)); - } - private Netlist findAndEliminatePots(Netlist netlist, Group jackTipGroup, Group jackSleeveGroup, List notes) { - // try to find any pots that have connections to jack tip or sleeve - List potTipNodes = find(POT_TYPES, null, jackTipGroup); - List potSleeveNodes = find(POT_TYPES, null, jackSleeveGroup); + Tree tree = constructTree(netlist); - if (!potTipNodes.isEmpty() && !potSleeveNodes.isEmpty()) { - - Set> pots = extractComponents(potTipNodes); - List potInputNodes = find(POT_TYPES, "1", netlist, pots); -// List potInputGroups = findGroups(POT_TYPES, "1", netlist, pots); - -// if (allMatch(potTipNodes, "2") && allMatch(potSleeveNodes, "3")) { -// -// for (Group g : potInputGroups) { -// List potNodes = find(POT_TYPES, null, g); -// List pickupNodes = find(PICKUP_TYPES, null, g); -// if (potNodes.size() != 1) { -// notes.add("Detected control potentiometer wiring issue."); -// } else { -// StringBuilder sb = new StringBuilder("Detected volume potentiometer ["); -// sb.append(extractName(potNodes.get(0).getComponent())).append("] controlling: "); -// Set pickups = new HashSet(); -// for (Node n : pickupNodes) { -// pickups.add(n.getComponent().getName()); -// } -// List pickupList = new ArrayList(pickups); -// Collections.sort(pickupList); -// sb.append(pickupList.toString()); -// notes.add(sb.toString()); -// } -// } -// List potNames = extractNames(pots); -// notes.add("Detected volume control(s): " + potNames); - - Set toMerge = new HashSet(potTipNodes); - toMerge.addAll(potInputNodes); - return simplify(netlist, toMerge, potSleeveNodes); -// } else { -// notes.add("Detected incorrectly wired volume control(s)."); -// return netlist; -// } - } - -// notes.add("No volume controls detected."); - return netlist; + return new Summary(netlist, notes, tree); } @Override diff --git a/diylc/diylc-swing/lib/diylc-core.jar b/diylc/diylc-swing/lib/diylc-core.jar index 2abd7eb09fb4dd2d3bf89cfea9540cf5240f18f1..ea1c351002c0beae08cf789843669eaa93931c55 100644 GIT binary patch delta 5157 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 DFL_o- delta 5157 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 K0S`J!ll}`mpTd>^ diff --git a/diylc/diylc-swing/library/main.jar b/diylc/diylc-swing/library/main.jar index 2c5a1afaf319d8b9e59eafa11e8ca6922fdb7991..bcb482f243dda6aa1929b9a9f45d8bdb73edf7b9 100644 GIT binary patch delta 55556 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 VlHL@Mlq~w}ka2T&nxJ*sM?k!bn0ON#MeZGg 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

@rE8O)P(&1#L2-yWf-VSI;EDe@~ z_1>&ajpMlbrT@voEwCz!@ppb(7K#tI3ui{Mcnf+k8);v32^!9x#DSt^R1;!8B#`cG zCLTl1K-OiHu{`9}U?@tA5>`AP#rIP%82-z9`z%ogaRZ&pj4kr~~j!1Jg zIf$G!$jEFsmZSEOy(c?s=()NduQVFae!6$Go2ChMnv^+Uc8EQ9I#6e#MTTRc$)Rri zW_{-6MvQVCMp@R`4}A{CzyAD9I(GTEjsqv~zu*RaN+PVt6&9Y$MfAo}VPS8ss8b;# zZmSH77@;bU86a4x#7AyeOr7J+dsrj~u*tD&&d_7$aFry;OIdv$Y8-i1nCZ-83;2eW zUVC?nvfOSAiCo3LtLCf+>y#9Tb*k0B&-?NDZFqM&@si2j7H^2KzvdKWc#jiJM%RUb zbQpCCm&XYBG!O=&peLXt@KVVawQbc#>$kX|m$0qLksQ0SGa@s*6N9nOB{X)pP~)w4 z2(`evX57HRLUDwR`G~A<){rz9QfprWA^ui@gz}k8yWh>q(-TmXS$%m`t2 zUoj#_ZfFSKt|LTr-4;aGZ6!%N4ACWs%=}$tA4g<;iF)X(GvdA(K;JK8ZkG>zU|i#$ zr)j!Qnz|+^w5iZq#-gBoLP-TzsW_?LQkFKeRx!eTobLjTlPyq&ouGxDliElb>!$pr zAZeB=fD>k3si#QImx(GB2g`|YS4~-K$`HD3QlarO76V;nERkDSv&;QYFYZeSE2Zp9 zg(V`uPh7eO)l_6gsBuv15v@g#AZCj|(GY7h8eqU9e7s6{!jl}&G*uMlk!0S>W>t+m$|~u0G7E XNtnOc+*me)&1l}B)4?^&!Mc9|ac65M delta 56081 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 diff --git a/diylc/diylc-swing/update.xml b/diylc/diylc-swing/update.xml index 0b8d631f..a76739ee 100644 --- a/diylc/diylc-swing/update.xml +++ b/diylc/diylc-swing/update.xml @@ -2518,6 +2518,10 @@ NEW_FEATURE Show wire diameter in mm and in next to AWG gauge + + NEW_FEATURE + Added two or four terminal hookup to bass pickups types + IMPROVEMENT Increase the range of zoom slider for images to 500%