From c7a04075f436615aaf85af3ad876595b46e62fcc Mon Sep 17 00:00:00 2001 From: Branislav Stojkovic Date: Wed, 9 Jan 2019 15:41:32 +0100 Subject: [PATCH] "P-Bass Pickup" added --- diylc/diylc-library/lib/diylc-core.jar | Bin 249704 -> 249704 bytes .../components/guitar/JazzBassPickup.java | 1 - .../diylc/components/guitar/PBassPickup.java | 317 ++++++++++++++++++ diylc/diylc-swing/lib/diylc-core.jar | Bin 249704 -> 249704 bytes diylc/diylc-swing/library/main.jar | Bin 469482 -> 475731 bytes diylc/diylc-swing/update.xml | 4 + 6 files changed, 321 insertions(+), 1 deletion(-) create mode 100644 diylc/diylc-library/src/org/diylc/components/guitar/PBassPickup.java diff --git a/diylc/diylc-library/lib/diylc-core.jar b/diylc/diylc-library/lib/diylc-core.jar index 375d866d6ef9f7d0e186ded730b640a189a1c195..f7b0cf935f8d2ea37d94a99ecf2f8dc39a0d03eb 100644 GIT binary patch delta 4352 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 Z_vp52_i3Pc{=0$Zc)o$+tgZ-;{{y@Ph1viB delta 4352 zcmY*bd0fuf8h_6@38UpzMkOV?EMvKri=-Qo&=e-c*q2Yq2$z@^E6WCKKq%XZM=Fd z`u!S^X#{$&AVbs#ZnH86+a=}$+7sd|aI{{D{n7q4DGB?uP8o^up6Qlo`)3To^~3`L zF*VBsu`s&?P`4uYK7dQ!HOOw2?}@9c3zs4`7CCkTU0d#rSy!FD$#GOKo7%lPqtR$y zYIIkheJgED7FN2g)tA6``WY*XU3rcw>uUF)ZC8IEavZyiho$e;Pyh|;8n4^{$Z2fF zGiwSB^t9v}jfrlZkGa0;>ST!38D9T_t8q6iG?$gK!*!jn_tK5{&kJQyZ+kw;G#ueE1gi;lJO*QD~pg?W%cp2G=8AzQOgM-)zJ6kIi2R-J!@rwpZ%O{)`=k1=-esRX|1gUI$hKij>ufWr5&k#IOh1SgZP0nX!jPxQ7V?D*e_9 zjmBRZHiuctH9c4el#|_hGczO$`>_#7V(nR9BxQqHM}fgdtpB)vMH$ZpY5RI+DY@l{ z&T{Ke_8a!oG=f=SKW|2}*{Dn!%SyG7{L3_!h^eHRY>&Vrd?Kd?)GMjZacTG*)=hTv zRMYgG!#U=ipuG?d*&(kX&{L7#6T*>qIqMll(QR>uY+aY$f6 zK%}2Md2jjNezqQE&s2ubOJ0@9B2j70Vhu>@a#$Yi!fBUNw{m5GC7h1IyYebr(z@|n zRLW=aVkFAR$0ITLfrlZ9^yWVy`7~e6vtS{gL<4cT_rPM2GLU&v=2&GQRh6QhG^|n> z%8g679|nzI!S^D$;LFEgO|gobATjsn21u+{^HlUH4d4@zd|b~3-s7*E`BGGt2JwmD zEFIj+ufiw;xAE=p4Uk)7cu!1Yt>XicOpW6`kod;)CfxaiL|%tV`y}pxicbp1pMKdd zjem>E_6(kk#O5GBgXGa6eh5i;4)20pq~&uN^UN*eW$>kv%}()RRL)iK3)Y}S|Hhwp z2J*{G{tlPcyyorAK-u&ccfo|GnUIleG7vUM5)4HIlAav}ej(%|orJ)mdJ|<95MHho zE0FXu7s1m&$^KC|!-r9R;VTT$`JKO@7qBKk)WA1a9<@=>52ALn2*ei`9wa=F+}Dq`mQp_I8pm~aE9Ibp&bFe{AOc^W1h z!0xk4cmW3O5(@$Es^}0d=7Jp`E<6CAsW>)5`~Y@z1m(ROA!dR-Xt$UFsQjE`=e4^j zuk9YO2K0SJp6gP&)DSO!?4qO~Oa!48+G{#{9Y5B88m!flDv zcY}(y`-La0uiGzX1J>>rQvgkpgb$!!63s)OB;fi=Uz2EkN;2&uC7I%zlWBfaQ>fqE z6gPyXnN-j70O>ggXxkrEbUR4fOg~8Nwj89mnOPKfIE%*9l11a2eu(VkLsak0AJPY<{@pZv@UC~jT>9owM-s{dX^mqOZqY9YlvRdMJM${%=y z=63!F&8vG6|K@s`=Sw!&;#neY|G0o*_G40FtDD|^S#ge1chv6~G=YEW?SK=|s z_dwPA>nVPNp3b38Pv>NNoZ?mN4jz2+pADke4ND0MlETQ@}CDdmZ znfhNK(>WE(v~N~QdE86MPA{dn=2D7tETep3Wwh^0Wz>)PN%C8ElJXXuB)|Wir1kOT z)K{pASITKV)~9HFsfxL$sQw4lo=`z?yDBJeV+HwJoF;wAX{vklG_AL(`s7MF|ENmJ zcej%I=~G2>-CRZQ@@AEo5BG6oHQBmqdWX%`Vkzje&xj>}C1=R)c9wpoLeGkopuav# zKfiO&k>AO4G`CJQ^j=r0Sgm6BTGBVEcumD2=jpQ$cAoCto%8fAN7ac%P$!{|?!l`% zdS{OH;z!U^>Z#w>dWxHQf&30$pmY78;NMhqVpxv<1bO)PcKnjr^|Fck(cQn X-B#^>4K&YxH_#l. + +*/ +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.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.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; + +@ComponentDescriptor(name = "P- Bass Pickup", category = "Guitar", author = "Branislav Stojkovic", + 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 { + + 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); + private static Size EDGE_RADIUS = new Size(0.08d, SizeUnit.in); + private static Size LIP_RADIUS = new Size(0.45d, SizeUnit.in); + private static Size LIP_HOLE_SIZE = new Size(0.1d, SizeUnit.in); + private static Size LIP_HOLE_SPACING = new Size(0.1d, SizeUnit.in); + + private static Size POINT_MARGIN = new Size(1.5d, SizeUnit.mm); + private static Size POINT_SIZE = new Size(2d, SizeUnit.mm); + 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; + + @Override + public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project, + IDrawingObserver drawingObserver) { + Shape[] body = getBody(); + + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1)); + if (componentState != ComponentState.DRAGGING) { + Composite oldComposite = g2d.getComposite(); + if (alpha < MAX_ALPHA) { + g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA)); + } + 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; + if (outlineMode) { + Theme theme = + (Theme) ConfigurationManager.getInstance().readObject(IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME); + finalBorderColor = + componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR + : theme.getOutlineColor(); + } else { + finalBorderColor = + componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR + : color.darker(); + } + + g2d.setColor(finalBorderColor); + g2d.draw(body[0]); + g2d.draw(body[1]); + if (!outlineMode && componentState != ComponentState.DRAGGING) { + g2d.setColor(getPoleColor()); + g2d.fill(body[3]); + g2d.setColor(darkerOrLighter(getPoleColor())); + g2d.draw(body[3]); + } + + Color finalLabelColor; + if (outlineMode) { + Theme theme = + (Theme) ConfigurationManager.getInstance().readObject(IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME); + finalLabelColor = + componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? LABEL_COLOR_SELECTED + : theme.getOutlineColor(); + } else { + finalLabelColor = + componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? LABEL_COLOR_SELECTED + : LABEL_COLOR; + } + g2d.setColor(finalLabelColor); + 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); + } + + @SuppressWarnings("incomplete-switch") + public Shape[] getBody() { + if (body == null) { + body = new Shape[4]; + + int x = controlPoint.x; + int y = controlPoint.y; + int width = (int) WIDTH.convertToPixels(); + int length = (int) LENGTH.convertToPixels(); + int edgeRadius = (int) EDGE_RADIUS.convertToPixels(); + int pointMargin = (int) POINT_MARGIN.convertToPixels(); + int lipRadius = (int) LIP_RADIUS.convertToPixels(); + int pointSize = getClosestOdd(POINT_SIZE.convertToPixels()); + int lipHoleSize = getClosestOdd(LIP_HOLE_SIZE.convertToPixels()); + int lipHoleSpacing = getClosestOdd(LIP_HOLE_SPACING.convertToPixels()); + + body[0] = + new Area(new RoundRectangle2D.Double(x + pointMargin - 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)); + 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)); + lip.add(lip2); + + body[1] = new Area(lip); + + ((Area)body[1]).subtract((Area)body[0]); + + body[2] = new Area(new Ellipse2D.Double(x - pointSize / 2, y - pointSize / 2, pointSize, pointSize)); + + int poleSize = (int) POLE_SIZE.convertToPixels(); + int poleSpacing = (int) POLE_SPACING.convertToPixels(); + int poleMargin = (length - poleSpacing * 3) / 2; + 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 + - pointMargin - poleSize / 2 + width / 2, poleSize, poleSize); + poleArea.add(new Area(pole)); + } + body[3] = poleArea; + + // Rotate if needed + if (orientation != Orientation.DEFAULT) { + double theta = 0; + switch (orientation) { + case _90: + theta = Math.PI / 2; + break; + case _180: + theta = Math.PI; + break; + case _270: + theta = Math.PI * 3 / 2; + break; + } + AffineTransform rotation = AffineTransform.getRotateInstance(theta, x, y); + for (Shape shape : body) { + Area area = (Area) shape; + if (shape != null) + area.transform(rotation); + } + } + } + return body; + } + + @Override + public void drawIcon(Graphics2D g2d, int width, int height) { + g2d.rotate(Math.PI / 4, width / 2, height / 2); + + int bodyWidth = (int) (13f * width / 32); + int bodyLength = (int) (30f * width / 32); + + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1f)); + g2d.setColor(BODY_COLOR); + g2d.fillRoundRect((width - bodyWidth) / 2, (height - bodyLength) / 2, bodyWidth, bodyLength, 3, 3); + + int lipSize = (int) (5f * width / 32); + + g2d.fillRoundRect((width - lipSize) / 2, (height - bodyLength) / 2 - lipSize + 1, lipSize, bodyLength + 2 * lipSize - 2, lipSize, lipSize); + + g2d.setColor(BODY_COLOR.darker()); + g2d.drawRoundRect((width - bodyWidth) / 2, (height - bodyLength) / 2, bodyWidth, bodyLength, 3, 3); + + // g2d.setColor(Color.gray); + // g2d.drawLine(width / 2, 4 * width / 32, width / 2, 4 * width / 32); + // g2d.drawLine(width / 2, height - 4 * width / 32, width / 2, height - 4 * width / 32); + + g2d.setColor(METAL_COLOR); + int poleSize = 2; + int poleSpacing = (int) (15d * width / 32); + 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; + } + + public void setColor(Color color) { + this.color = color; + } + + @EditableProperty(name = "Pole Color") + public Color getPoleColor() { + if (poleColor == null) + poleColor = METAL_COLOR; + return poleColor; + } + + public void setPoleColor(Color poleColor) { + this.poleColor = poleColor; + } +} diff --git a/diylc/diylc-swing/lib/diylc-core.jar b/diylc/diylc-swing/lib/diylc-core.jar index 375d866d6ef9f7d0e186ded730b640a189a1c195..f7b0cf935f8d2ea37d94a99ecf2f8dc39a0d03eb 100644 GIT binary patch delta 4352 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 Z_vp52_i3Pc{=0$Zc)o$+tgZ-;{{y@Ph1viB delta 4352 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%0Dbe74}$X+#j*I(!`j7u-7D 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 QI9|Uo9-h}%u*>oO4;g^9PXGV_ delta 13353 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 a@DPHu_W~4jgQ!6ihb6RO8iGa%>i+@$Z*{c* diff --git a/diylc/diylc-swing/update.xml b/diylc/diylc-swing/update.xml index 91a5304f..66c2fc18 100644 --- a/diylc/diylc-swing/update.xml +++ b/diylc/diylc-swing/update.xml @@ -2142,6 +2142,10 @@ NEW_FEATURE "Jazz Bass Pickup" added + + NEW_FEATURE + "P-Bass Pickup" added + https://github.com/bancika/diy-layout-creator/releases