From 191e82caf3aa83c1d91fb676ef07221100b4adaf Mon Sep 17 00:00:00 2001 From: bancika Date: Wed, 28 Dec 2016 17:16:11 +0100 Subject: [PATCH] improved single coil look --- diylc/diylc-library/lib/diylc-core.jar | Bin 230206 -> 230206 bytes .../components/guitar/SingleCoilPickup.java | 76 ++++++++++++++---- diylc/diylc-swing/lib/diylc-core.jar | Bin 230206 -> 230206 bytes diylc/diylc-swing/library/main.jar | Bin 353151 -> 353376 bytes 4 files changed, 61 insertions(+), 15 deletions(-) diff --git a/diylc/diylc-library/lib/diylc-core.jar b/diylc/diylc-library/lib/diylc-core.jar index 27fcca1aeb28e9bdd1fa699a6122f31b40614e8c..dcfe4735eb5e3689277f983827b63ee89d7bec77 100644 GIT binary patch delta 3956 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ῒl%1^^d-w-a+!2esgm=ByE zLG_gg5ea&~NMb@H^|M>$>qrp|{;((!3)~(h0)S7VL;}!1n)bOmS_FfBGn)JkG1PZ) z4CP;lp}CBRrG8h$(mZa*(mp{~}eMleFJRrS-?o zCzi~Y`?Sqc}f49G&wKH$OTl-pz`hliaWYQK6~GEF%E)q)2XS0 z=`8Dvk)p!{7K@-U>oFGC)dWb|V4 zZ(L0A_ZCx}OQw9x(*JoT>Ft?R*E);rDOr@)kVWgi%A!64vuX2dvgxpX$fnJ^=1`rg z9MZ4kP~M1K%FEBCdPj0;-|us&pMX4yTc1aD@8(h5n0)f*Tg!rLrISnBtbwCEvT0 z9;11&m<{%Y#iXAtrpGs;M5KbfrbNsGK2i1XW%Lm`yiBBn-M&;T0@jvN+)t(S=sZ8C zN4invFDfIKlYNg$<1+eKCzsJ;yRS>~r!(MP{o)!$ahxk!6(HO*slHRV047E%8NQz10( 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 f72724e3..83f6257a 100644 --- a/diylc/diylc-library/src/org/diylc/components/guitar/SingleCoilPickup.java +++ b/diylc/diylc-library/src/org/diylc/components/guitar/SingleCoilPickup.java @@ -41,7 +41,8 @@ public class SingleCoilPickup extends AbstractTransparentComponent { private static final long serialVersionUID = 1L; - private static Color BODY_COLOR = Color.gray; + private static Color BODY_COLOR = Color.white; + private static Color BASE_COLOR = Color.gray; 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); @@ -59,6 +60,7 @@ public class SingleCoilPickup extends AbstractTransparentComponent { transient Shape[] body; private Orientation orientation = Orientation.DEFAULT; private Color color = BODY_COLOR; + private Color baseColor = BASE_COLOR; @Override public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project, @@ -66,21 +68,40 @@ public class SingleCoilPickup extends AbstractTransparentComponent { Shape[] body = getBody(); g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1)); - if (componentState != ComponentState.DRAGGING) { + if (componentState != ComponentState.DRAGGING && !outlineMode) { 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.setColor(getBaseColor()); + g2d.fill(body[4]); + g2d.setColor(getColor()); g2d.fill(body[0]); - g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : POINT_COLOR); + g2d.setColor(POINT_COLOR); g2d.fill(body[1]); + // g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : color); // g2d.fill(body[3]); 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 + : getBaseColor().darker(); + } + + g2d.setColor(finalBorderColor); + g2d.draw(body[4]); + if (outlineMode) { Theme theme = (Theme) ConfigurationManager.getInstance().readObject(IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME); @@ -97,7 +118,7 @@ public class SingleCoilPickup extends AbstractTransparentComponent { g2d.draw(body[0]); g2d.draw(body[3]); - if (!outlineMode) { + if (componentState != ComponentState.DRAGGING && !outlineMode) { g2d.setColor(METAL_COLOR.darker()); g2d.draw(body[2]); g2d.setColor(METAL_COLOR); @@ -126,7 +147,7 @@ public class SingleCoilPickup extends AbstractTransparentComponent { @SuppressWarnings("incomplete-switch") public Shape[] getBody() { if (body == null) { - body = new Shape[4]; + body = new Shape[5]; int x = controlPoint.x; int y = controlPoint.y; @@ -141,9 +162,6 @@ public class SingleCoilPickup extends AbstractTransparentComponent { Area mainArea = new Area(new RoundRectangle2D.Double(x - length / 2, y - lipWidth / 2 - width, length, width, width, width)); - mainArea.add(new Area(new Polygon(new int[] {(int) (x - length / 2 + width * 0.47), - (int) (x + length / 2 - width * 0.47), x + lipLength / 2, x - lipLength / 2}, new int[] {y - lipWidth / 2, - y - lipWidth / 2, y + lipWidth / 2, y + lipWidth / 2}, 4))); // Cutout holes mainArea.subtract(new Area(new Ellipse2D.Double(x - length / 2 + holeMargin - holeSize / 2, y - lipWidth / 2 - width / 2 - holeSize / 2, holeSize, holeSize))); @@ -151,6 +169,10 @@ public class SingleCoilPickup extends AbstractTransparentComponent { - width / 2 - holeSize / 2, holeSize, holeSize))); body[0] = mainArea; + body[4] = + new Area(new Polygon(new int[] {(int) (x - length / 2 + width * 0.47), (int) (x + length / 2 - width * 0.47), + x + lipLength / 2, x - lipLength / 2}, new int[] {y - lipWidth / 2, y - lipWidth / 2, y + lipWidth / 2, + y + lipWidth / 2}, 4)); body[1] = new Area(new Ellipse2D.Double(x - pointSize / 2, y - pointSize / 2, pointSize, pointSize)); @@ -199,14 +221,27 @@ public class SingleCoilPickup extends AbstractTransparentComponent { int bodyWidth = 8 * width / 32; int bodyLength = 30 * width / 32; - g2d.setColor(BODY_COLOR); - g2d.fillRoundRect((width - bodyWidth) / 2, (height - bodyLength) / 2, bodyWidth, bodyLength, bodyWidth, bodyWidth); + + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1f)); + g2d.setColor(BASE_COLOR); g2d.fillPolygon(new int[] {width * 9 / 16, width * 9 / 16, width * 11 / 16, width * 11 / 16}, new int[] { (height - bodyLength) / 2, (height + bodyLength) / 2, height * 5 / 8, height * 3 / 8}, 4); + g2d.setColor(BODY_COLOR); + g2d.fillRoundRect((width - bodyWidth) / 2, (height - bodyLength) / 2, bodyWidth, bodyLength, bodyWidth, bodyWidth); + + g2d.setColor(Color.gray); + g2d.drawRoundRect((width - bodyWidth) / 2, (height - bodyLength) / 2, bodyWidth, bodyLength, bodyWidth, bodyWidth); - g2d.setColor(Color.lightGray); - 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(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.darker()); + int poleSize = 2; + int poleSpacing = 17 * width / 32; + for (int i = 0; i < 6; i++) { + g2d.fillOval((width - poleSize) / 2, (height - poleSpacing) / 2 + (i * poleSpacing / 5), poleSize, poleSize); + } } @Override @@ -266,4 +301,15 @@ public class SingleCoilPickup extends AbstractTransparentComponent { public void setColor(Color color) { this.color = color; } + + @EditableProperty + public Color getBaseColor() { + if (baseColor == null) + baseColor = BASE_COLOR; + return baseColor; + } + + public void setBaseColor(Color baseColor) { + this.baseColor = baseColor; + } } diff --git a/diylc/diylc-swing/lib/diylc-core.jar b/diylc/diylc-swing/lib/diylc-core.jar index 27fcca1aeb28e9bdd1fa699a6122f31b40614e8c..dcfe4735eb5e3689277f983827b63ee89d7bec77 100644 GIT binary patch delta 3956 zcmYjUX;f9$6@KR&20?fV#()+hsHmVgg-8rC^O$Fp8AL<`nGpmDb6r%CxWpH|nmDdy z6%`ai^{P14h@wpthvHOG8poP|n2=)7*thq-?dl)DZ}0Q%;p}tHeR!r;eWq4z5*8@* zj8&>(DplXw1`|8pySBk;K=-e92D1hTW0L`#g_XA3J;R3-~ID(ZgJ_BeLt^hxYSpehprt6?JSZ@Od zd}z?45AO3Oj{zD@--36q`h@^&FmFMX*XVr2V-^$9e}Aks+V8Ad0kz+ZzXkF&)|>&> z+l&X)Hc$8s%>5I8h8nFq>@snA_%sW|Nz)?`OB_xjI?imste0j7BYx=k8qwHk3*w%6 zOAw9bzs7v;JSJl|wi@d4wr?4(FAVs~1nTuijX;~n4kEsdzh(sf@0Yfi0ah0OivHr# zQF>t4S4=_sXq6@QbFF$B#r;trvRXBw*_va3+RJrq0JZCGKy+MvIIcFYPa#!<9-LIG z#n%G6wAyhS{R6uUF#EgRW6-wTLsc|;J77EL3s<53|+b(s^9(ztW5AJ>R#Xz2o{mw0&=Nqkc-4y&=?&d~gK)29HkT7~3DW zgRQN9wg;ByJpU_(54G6=g`pI7+p(|)RJuI%rdws%=1a+M-$9-^E8!S*)mIclMBNa zA)j<-S20PQH#>;L$&YP7aygJ~#EOX_%pE;D!`Tpewk=@0khn&(AOmQ)K9Q|Ojm2Vi zPhd%l3(k>ebj_TQ9`-Uz>0YWZm!~de9T@m}84Em1nuIlM0MkdVV}9t_zMe&(r+)*p!*HujY#b8j zt*irwt$%=ZqULrJ`xlaL59^KyH=%JEyfRETHz9?nxurbt4f_KvNIT;9Xmkti(#!(g zKtDOgqOsum6U-H}UcJn`jPRnoe3JL#?o!C|d+aQF zrggJXNZfl^43e)Nvq&U;&saHygXG`+%#LBt8(NIgUg-w^5(h79er6`9 zi2RieLz4JLnd$YnEC4)5$MI%d`A+a#bd@@SocBM_CAq_;MeB4;7v~8xxyz70!vUQ& z<~11LrREhhkb{Z;Ok1tnWhD*dsTtplii*+v6_UI$+!;x;6+a9wQBL}ZCu6#E*1Qmx z=1$`0aB0w%@29+`x32b;=<=?RDjjtvaM6x`fl}S=*o5TAS-ciWp(D>m@`IC-SMwS7 zLQkCwmyk^K(1qivj1KqQ_g1A+{i27bBLCf+e}JW5YPcH7kPp{G!undDo`4wc24ZPlEWeJMi{n+JfIQ0PHkd}_a(g5*^Em#{$YJ^XCJw;1kayrx zUl9*Ok4Fi|ueKas%15Ioy^Md2M8A@sM{>EEe}_a`&70IvOQYr89{{m!$HUX*8?w+IG1%Uc8ip7a)hfQA~%vq&Q%z;4x0oW2j)u|5?4XCLZg zz=!m~zQPamlCLNPH1!h;0aN`b{+J)>4g3kC{K?jmZp2W% z>9Mrm@>tr}jacf>K8|!%aiqH!NAs|cr+HPxlYKRw^4la({*nZ`KbI0{|05FVo-RzJ zbKR%ln?z-vNt9<>lJJ6k^dt!l;M7HQ{zZ!@zD+@vOnLnkY)Gbi_aK?#CM_oYas^u! z)606Zm~@&HivJ>o&go7H)t|bAuw)7CzjF!2jY%a;Nu~VzQ)ynmrP91Ymr_1S!G}vp zcXEa9*?Xo5_Ov-DXMgHV0ifhcG`h!{2r*AfGenU1L z)(_dVdB+^eQ=LQhjU0-bkV|p-xs>ljF75k$F7@M+N4m{89kTo10K$7ozE;^7>Z6_b6jm>%DR5|IM_+7huC@P%RrucD98@l_%X{MMx+9k8yH zbU&5S++07WN4izPUla^2BmV&f^~>pFom5Vb@pw6%x4MEJRdR($fc$4FsIRe=bUAY? vN!MOU=Vw_(m{~>jPgPOA536a;Db;izS`_e7A0X(?d z?+Fo)wfb$`9MpZxP9O2!RDX%o+k65P?=KMU!WClj#bt>Ad8=Q|kWHS=&w};xJ{?4uisQ+g8H3(m6&l#}J zVK`9VG~x}YyGQ;EYqV@}%0zenaW=?N<71E|E=Q5B6YH_+xyj+k4_#j(&D}O2cTAg) zG@Jes>%H?CjomovsLSht%h5kGZ()Oo@yV^?9|e-tXpvSc4*~V(Yg+*|tFAzHVqG+Pn^vb%RJ{?LREy2m z0=u-^avklx+f1u#vVeXH)Qm>hAXCLZg{#s%Jlbr0+P{zs2@g9WJo*WDmw} zJbecjDmjCP+2V5UH2QlkJVSr?_pPXJxx5SYz-wI?Kc>^!6xNQta{%oo_m1Nj+wQl4 zuCIHv1Kd*{{|(c7pHf)EvwIfuuC~CL<{h1{Sty(t32x2;|SuAFa8_W(51j_?QwgF=*oY*Q9 zEL_-ojIo@=`p{zT%FdwB;l`|~CEvcjoAI)xSZYZzb!Qpe5}JLG`Oye#IZsQ&3rA+F ztn*;;l$~i7ywjP>lD=WC{wea+os;qYBt^ z5DYV2_(-L#h!voD+A?N?(~2o$@*>DJ?^UY3H?LrO&@yKw>&5c1t5^_PHm_zeXz5wQ zoG{&P9UF#%`$pD|!#3W-IxyyXBl|ZB-|m-3gqzTLyt>d&&P^C1wA@zd{f7O49EL5k zcj%}4)l{lEDjf3eS~>p)r;qupBY}1rw{TT{Yi#a3xm}jc~KfOg;w#u%IY!U zdZ#KZzQs)5Dw?_PnOqEd7NX z{8JpfqWhUyU_|V%tRD(Vuhp4ee#=6@a&Q=LLeF=CU!$wk9_GILjx2J68|JQ(O&8}0 zE2YzvKf(c>H0RZr;HTx~G?2YX|4LsWcUeILd1%GgV?_C2{sM)(A>18>COf{L!2u?J z#8a@`DSKXsuBoH=DRjMZ3sTik6Ug?ghbyRSEnuc#;!&uy-j1&4MLY^EJ|!H#+DddOAB>ho%lX$R7+3JqD4eh2-=Sbw!5g(u zN2ljqA7H@-z8+UU-pXHM@mMwFtk&sns=ubfgeNyt|v zg}{%+Qux3sC*4F83Rcs_Tv7l`A z6du4XPvHY}@DlF8WG@j2#Ncne{ugX#F!L4;;2G~N|CNwsvsB7Rf3Uyw79l`S9}xju z?IYWe?C=rOfm&ZN3z+UJl7VMcj`kCApjY^bDBxv3sx!=AgoB>tFT#LF{Y5CyR7Z8@ z>O>6aEjr3G4j?@tfb#zmKz;NEP<(ix2!eP+peO`d28o%#v>?hq6h!eR!Ngg?WN!$j zb$f%UesGAG0eM?h_J)W=(4#{|JaBKQNC8@gi40ῒl%1^^d-w-a+!2esgm=ByE zLG_gg5ea&~NMb@H^|M>$>qrp|{;((!3)~(h0)S7VL;}!1n)bOmS_FfBGn)JkG1PZ) z4CP;lp}CBRrG8h$(mZa*(mp{~}eMleFJRrS-?o zCzi~Y`?Sqc}f49G&wKH$OTl-pz`hliaWYQK6~GEF%E)q)2XS0 z=`8Dvk)p!{7K@-U>oFGC)dWb|V4 zZ(L0A_ZCx}OQw9x(*JoT>Ft?R*E);rDOr@)kVWgi%A!64vuX2dvgxpX$fnJ^=1`rg z9MZ4kP~M1K%FEBCdPj0;-|us&pMX4yTc1aD@8(h5n0)f*Tg!rLrISnBtbwCEvT0 z9;11&m<{%Y#iXAtrpGs;M5KbfrbNsGK2i1XW%Lm`yiBBn-M&;T0@jvN+)t(S=sZ8C zN4invFDfIKlYNg$<1+eKCzsJ;yRS>~r!(MP{o)!$ahxk!6(HO*slHRV047E%8NQz10( diff --git a/diylc/diylc-swing/library/main.jar b/diylc/diylc-swing/library/main.jar index c36d11a9edc77930f790f93323d5ebf5c5ad35ac..66b408e872ecd099aa55683b174cfcbc9abd83da 100644 GIT binary patch delta 10851 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 nIX<`wt{OMf`aoe