From b3497cdca875a8c63099c5b653b9d0a28833f67d Mon Sep 17 00:00:00 2001 From: Branislav Stojkovic Date: Sat, 2 Mar 2019 09:11:00 +0100 Subject: [PATCH] Fix lever switch rotation issue Render pickup name instead of model Netlist algorithm would sometimes create overlapping groups of nodes which are supposed to be merged --- .../src/org/diylc/netlist/Tree.java | 24 +++++++++++ .../src/org/diylc/presenter/Presenter.java | 25 ++++++++++- diylc/diylc-library/lib/diylc-core.jar | Bin 269130 -> 269284 bytes .../guitar/AbstractGuitarPickup.java | 2 +- .../diylc/components/guitar/LeverSwitch.java | 12 +++--- .../diylc/netlist/GuitarDiagramAnalyzer.java | 40 ++++++++++++++++-- diylc/diylc-swing/lib/diylc-core.jar | Bin 269130 -> 269284 bytes diylc/diylc-swing/library/main.jar | Bin 607586 -> 608247 bytes diylc/diylc-swing/update.xml | 8 ++++ 9 files changed, 99 insertions(+), 12 deletions(-) diff --git a/diylc/diylc-core/src/org/diylc/netlist/Tree.java b/diylc/diylc-core/src/org/diylc/netlist/Tree.java index e10fd484..e99b36d2 100644 --- a/diylc/diylc-core/src/org/diylc/netlist/Tree.java +++ b/diylc/diylc-core/src/org/diylc/netlist/Tree.java @@ -227,6 +227,11 @@ public class Tree { } public Tree findCommonParent(Tree t1, Tree t2) { + if (t1 == null) + return t2; + if (t2 == null) + return t1; + if (children == null) return null; @@ -248,6 +253,25 @@ public class Tree { return p1.findCommonParent(t1, t2); } + public Tree findCommonParent(List t) { + if (t.contains(null)) + { + while(t.contains(null)) + t.remove(null); + return findCommonParent(t); + } + + if (t.size() == 0) + return null; + if (t.size() == 1) + return t.get(0); + if (t.size() == 2) + return findCommonParent(t.get(0), t.get(1)); + + List remainder = t.subList(1, t.size()); + return findCommonParent(t.get(0), findCommonParent(remainder)); + } + public boolean contains(Tree t) { if (this == t) return true; diff --git a/diylc/diylc-core/src/org/diylc/presenter/Presenter.java b/diylc/diylc-core/src/org/diylc/presenter/Presenter.java index e5150a4c..5c5ee046 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/Presenter.java +++ b/diylc/diylc-core/src/org/diylc/presenter/Presenter.java @@ -2755,7 +2755,7 @@ public class Presenter implements IPlugInPort { List connections = getConnections(switchPositions); Netlist graph = constructNetlist(nodes, connections, continuity); - // merge graphs that are effectivelly the same + // merge graphs that are effectively the same if (result.containsKey(graph)) { result.get(graph).getSwitchSetup().add(new SwitchSetup(posList)); } else { @@ -2827,6 +2827,29 @@ public class Presenter implements IPlugInPort { } } + // merge overlapping groups if needed + boolean reduce = true; + while (reduce) { + reduce = false; + List groups = netlist.getSortedGroups(); + Iterator i = groups.iterator(); + while (i.hasNext()) { + Group g1 = i.next(); + for (Group g2 : groups) { + if (g1 != g2 && !Collections.disjoint(g1.getNodes(), g2.getNodes())) { + i.remove(); + g2.getNodes().addAll(g1.getNodes()); + reduce = true; + break; + } + } + } + if (reduce) { + netlist.getGroups().clear(); + netlist.getGroups().addAll(groups); + } + } + Collections.sort(netlist.getSwitchSetup()); return netlist; diff --git a/diylc/diylc-library/lib/diylc-core.jar b/diylc/diylc-library/lib/diylc-core.jar index 7cf26f2149edf6356ad3c491c69a215521f9fa0b..ad329e17ebb40fbe91ff92a47fdc2544e77c4bcf 100644 GIT binary patch delta 8919 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 delta 8828 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 diff --git a/diylc/diylc-library/src/org/diylc/components/guitar/AbstractGuitarPickup.java b/diylc/diylc-library/src/org/diylc/components/guitar/AbstractGuitarPickup.java index 3bdbfa98..2d2bc123 100644 --- a/diylc/diylc-library/src/org/diylc/components/guitar/AbstractGuitarPickup.java +++ b/diylc/diylc-library/src/org/diylc/components/guitar/AbstractGuitarPickup.java @@ -120,7 +120,7 @@ public abstract class AbstractGuitarPickup extends AbstractTransparentComponent< } g2d.translate(0, getMainLabelYOffset()); - drawCenteredText(g2d, value, 0, 0, HorizontalAlignment.CENTER, VerticalAlignment.CENTER); + drawCenteredText(g2d, getName(), 0, 0, HorizontalAlignment.CENTER, VerticalAlignment.CENTER); g2d.setTransform(originalTx); } diff --git a/diylc/diylc-library/src/org/diylc/components/guitar/LeverSwitch.java b/diylc/diylc-library/src/org/diylc/components/guitar/LeverSwitch.java index 5ba9d7d0..7d09e05a 100644 --- a/diylc/diylc-library/src/org/diylc/components/guitar/LeverSwitch.java +++ b/diylc/diylc-library/src/org/diylc/components/guitar/LeverSwitch.java @@ -238,8 +238,8 @@ public class LeverSwitch extends AbstractTransparentComponent implements // Rotate if needed if (theta != 0) { AffineTransform rotation = AffineTransform.getRotateInstance(theta, x, y); - // Skip the last one because it's already rotated - for (int i = 0; i < body.length - 1; i++) { + // Skip the last two because terminals are already rotated + for (int i = 0; i < body.length - 2; i++) { Shape shape = body[i]; Area area = (Area) shape; area.transform(rotation); @@ -460,14 +460,14 @@ public class LeverSwitch extends AbstractTransparentComponent implements public boolean arePointsConnected(int index1, int index2, int position) { switch (type) { case DP3T: - return (index2 == 6 || index1 == 1) && index2 == index1 + 2 * (position + 1); + return (index1 == 1 && index2 == index1 + 2 * (position + 1)) || (index2 == 6 && index2 == index1 + 2 * (3 - position)); case DP4T: - return (index2 == 8 || index1 == 1) && index2 == index1 + 2 * (position + 1); + return (index1 == 1 && index2 == index1 + 2 * (position + 1)) || (index2 == 8 && index2 == index1 + 2 * (3 - position)); case DP3T_5pos: if (position % 2 == 0) - return (index2 == 6 || index1 == 1) && index2 == index1 + position + 2; + return (index1 == 1 && index2 == index1 + position + 2) || (index2 == 6 && index2 == index1 + 6 - position); else - return (index2 == 6 && (index1 == 2 || (index1 == 4 && position == 1) || (index1 == 0 && position == 3))) || + return (index2 == 6 && (index1 == 2 || (index1 == 0 && position == 1) || (index1 == 4 && position == 3))) || (index1 == 1 && (index2 == 5 || (index2 == 3 && position == 1) || (index2 == 7 && position == 3))); case DP5T: return (index1 == 0 || index2 == 11) && index2 - index1 == position + 1; diff --git a/diylc/diylc-library/src/org/diylc/netlist/GuitarDiagramAnalyzer.java b/diylc/diylc-library/src/org/diylc/netlist/GuitarDiagramAnalyzer.java index 83cf1d3f..e435f4ce 100644 --- a/diylc/diylc-library/src/org/diylc/netlist/GuitarDiagramAnalyzer.java +++ b/diylc/diylc-library/src/org/diylc/netlist/GuitarDiagramAnalyzer.java @@ -22,8 +22,10 @@ package org.diylc.netlist; import java.util.ArrayList; +import java.util.HashMap; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Set; import org.diylc.common.INetlistAnalyzer; @@ -92,6 +94,8 @@ public class GuitarDiagramAnalyzer extends NetlistAnalyzer implements INetlistAn positiveCount = 0; negativeCount = 0; noiseCount = 0; + + // analyze hum-cancellation and phase pickupTree.walk(new ITreeWalker() { @Override @@ -115,6 +119,9 @@ public class GuitarDiagramAnalyzer extends NetlistAnalyzer implements INetlistAn }); Set> pickups = tree.extractComponents(PICKUP_TYPES); + Map, Tree> pickupRoots = new HashMap, Tree>(); + + // analyze each pickup separately to see how each coil is wired for (IDIYComponent c : pickups) { if (c instanceof AbstractGuitarPickup) { AbstractGuitarPickup pickup = (AbstractGuitarPickup)c; @@ -124,14 +131,39 @@ public class GuitarDiagramAnalyzer extends NetlistAnalyzer implements INetlistAn Tree nTree = tree.locate(nLeaf, false); Tree sTree = tree.locate(sLeaf, false); Tree parent = tree.findCommonParent(nTree, sTree); + if (parent != null) + pickupRoots.put(pickup, parent); if (nTree != null && sTree != null && parent != null) { - notes.add(pickup.getName() + " pickup engaged in humbucking mode with coils wired in " + parent.getConnectionType().name().toLowerCase()); + notes.add("'" + pickup.getName() + "' pickup wired in humbucking mode with " + parent.getConnectionType().name().toLowerCase() + " coils"); } else if ((nTree == null && sTree != null) || (nTree != null && sTree == null)) { - notes.add(pickup.getName() + " pickup engaged in coil-split mode"); + notes.add("'" + pickup.getName() + "' pickup wired in coil-split mode"); } + } else { + TreeLeaf leaf = new TreeLeaf(pickup, 1, 2); + Tree t = tree.locate(leaf, false); + if (t != null) + pickupRoots.put(pickup, t); } } } + + // figure out how pickups are wired between them + if (pickupRoots.size() > 1) { + Tree root = tree.findCommonParent(new ArrayList(pickupRoots.values())); + StringBuilder sb = new StringBuilder(); + boolean first = true; + for (IDIYComponent c : pickupRoots.keySet()) { + if (!first) + sb.append(pickupRoots.size() == 2 ? " and " : ", "); + first = false; + sb.append("'").append(c.getName()).append("'"); + } + sb.append(" pickups engaged, wired in " ).append(root.getConnectionType().name().toLowerCase()); + notes.add(sb.toString()); + } else if (pickupRoots.size() == 1) { + AbstractGuitarPickup pickup = (AbstractGuitarPickup) pickupRoots.keySet().iterator().next(); + notes.add("'" + pickup.getName() + "' is the only engaged pickup"); + } boolean humCancelling = noiseCount == 0; @@ -143,9 +175,9 @@ public class GuitarDiagramAnalyzer extends NetlistAnalyzer implements INetlistAn if (positiveCount > 1 || negativeCount > 1) { boolean inPhase = (positiveCount == 0 && negativeCount > 0) || (positiveCount > 0 && negativeCount == 0); if (inPhase) - notes.add("The pickups are wired in-phase"); + notes.add("Pickup coils are wired in-phase"); else - notes.add("This pickups are wired out-of-phase"); + notes.add("Pickup coils are wired OUT-of-phase"); } } diff --git a/diylc/diylc-swing/lib/diylc-core.jar b/diylc/diylc-swing/lib/diylc-core.jar index 7cf26f2149edf6356ad3c491c69a215521f9fa0b..ad329e17ebb40fbe91ff92a47fdc2544e77c4bcf 100644 GIT binary patch delta 8919 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 delta 8828 zcmZWv2{={T`#yU>=6RkXLxUkvNhBhoOr;_v(ws{wCF(R0LP^>wqB2ugDThiWDN`az zNirs5ND`|5-fJ!Qcin%_+sp&dJ10vu7$Wh zxPHT-UX{=WpPdM8Q96em>tFxGsG>Mr@?Rw}MbJs9syJLI<^#b8Jiic&z*UVj0aq_l z7hErrbC@b~pOI&A0M_ypa)G*~1lz!MLU0@y#)Qf+#wGW;NE!sbVlzmkD?@pO>KzDvb;J*hj&Xk(7f{Rw;y>n-E~;I3f}l!h8f zL2zyHDhLLRQ8D7C=U_3ZW>+DwvhafiKeQTzOpXl&fz2vU2>!P34eW9J0n%<{!F04An0wwH+)^Y&s5xMorfApYq~4$!6HvIhi9 z5<>Wa=|#F5Or(+h7MlLt;({4@a%3Q*dIzPpzZ(vj#=MWv>*0MgLro8|K;@je z*P|aG!KTMBWz5r}2|yG*MHAFeEDoa$lqf_4wO~1cAgxL#6zW^pC zef$O}*=_=sb59h@fvaEk)qIH?0xTB43{^CWNmEIEga~H@$8HKRlf_9D#!?7??8Grq zLXf$&g`KXs4B;$RAC)AFDRIK3FkUFRD2u5f?pQR8 z65xrMLhivYlf?Gn!_;qmS^V3 zITDj10s1Q%I|I3i3zOrmyo6;y?od2743qmLVpfnVxQ;nOPA~=!-O73(+HaTn?fSO89Yz+*R=- z5Ped|^C7xC3;zmHgf{)13C3GC7rzB7I6Mz`hh1wl!1od0E0U{3N+uX%u};x{$}t!r z!P#$!CqTV~5uOfXJT}4qhKQc_3lL4S#DgI^XN~WH=#TAW1`j*j9CE3S_(h0Jo$&~W zs@CHRU=AKvTo61$IMN$%Zt&GWP2Y^SGfxT*j|YAdJVZE=Tk-26fSc!!(>DiWjSIkc zLd10hhff_&J{!-0-0qWjF9=Mz2IC#zOZI8=?ja*y7RyV5S`~t;vLn}q1-dy){wb`y z@wDx^RA-{OPKRY_4Ao&-e8Q=4!~E*WLH2@W-CVfq8+t?(F^m*22~U zn*OcH;eiS1Ps?__X>BuZWWOlZ+%>QwDE#zzTo0zXpL+`>~WsWMaOG<`Lx{C(41_jG1tsM*{+z)sPK6?Jpefzz%U2`L?0!BlKPhJgMjDsqU z`+WQ1Ar%zAT~l#XXal?P_}4qb;>PixTLgOITHgP-G(K)O!7|M*axpFoWSe?+pWW@t zzb(M&Sx^*EKy`qVl7|YS!|6V0U+`7df|(E_~ashmHOgUva+aj=({8UgZ_#ddrk! zs_zT1L(`w7?6+#GS@}0E_At1X&cE~>PoOhk{>i&o*dy$N*eN^z>1h&Af zx#_dRPFuLu>(24Ae5-dYO|x?8`vwy;-g_ryO@fl$?fdJkws6KYu3D!g&JYzMXdl!C>`NUG}c@=%F~pG(!ayLJrj<&9kA&TF=hb0&OaiM@58#_jEF zcIZ7G%4Iyf+h~ct)o<^*GW%`6HJ9m|NXs@+C*!!#ueGz3XJ+`Y z-R<7{1-q2J66!uAYa*xVb5AR)UjMqvDQUHA9Yc?Gvr`hA{px(>{dd1RnH2J2FHc8Y zNMf6g;NvH{^MgbVW{k#$yYJ2qwH3QeEx6VqvS0A)i=2>8IjJH?=XmtZyZ!0;aK-GS zX)Tr$o0iFl^6oCb;ol<>E7E!MP1OXudTzKGTaf)MF@2N4!&9caNBK3v9yu1f4=z;N zlp1SQY&d64-ZQJ(6;&nuHEVQz>~gLa%6VRTGjNbw;pq~=KTk}ZCv1!7ggTh-9G$uP zeEx>w$M2tKX${TR*=>C?(5dKjVET54c{?vXbrk$lw7WOt&o0B`f$J+?7zD{EUsIT= z>%@EI(?j;`^aKelu8d>fSDsj~E_T5NUT?0xBaPDBVsS+oUh|^MWuk*Lla8)E|L1ze z;KvJ5P0N1XOif$9$~&^Js99{|BX4!Zbx-eiWSw$~y|U;rHdENvhulCmO954Nmn=5&ePxgPeRwtHve zDig^EN@WG*C(H{fjD`=XDhc-7#*UniQNP?|5?2|Ybmq$r14YTsa0~wuPf2{C>g9kE zC8HCoh9eqR=z7bu3&S%sYxD;{-pza(_{FMkMPC9zwC&uA;2ZhP4t)*I24cq4XFt*SnjrIG*XR+EtM}6!*xW+Va`9J< zlUv&nlKnw2bjt@OM3Tnezpc{fk|Bj)q$MkMSwHTSRt!+V+}Vur1%C&$v-y zo)bssjFi|kubSB{5_vW4+G3^R34T2WmyZbcbmkOAykD-TeCPXUV|!HOGJSsCF}VeU zQU$*IFeiPl`U3_TbJZlbtZPY`@%Xsh_18CdU5{B%9p>D6!AM{Ce6UMol=d2nsXut)1UbZ!v>)%$`6}N5vhLTzS zr5NY6XQrvem~%jg%{HOFl?g6}tN(ISFmUjz7BzIM&skx4q3W=p-M9SVYUBK48tKEa zE9JxuwX@bJtljH%+>1(TSeZG@ohe^tGCYv;x=rS$*O=1WgpT{iTw*F2+f(`B!gEL^dF{@dm)Un`4EH(a=pS6A<#>kzrINHDZEb>%bi z*O$mGMT?dN@*VlA-?Ha>T+s~q28E`JmR6E3y4b9a%_E&2pY{LR?fAT4Yk4wf-)3DW z=e-WA9_rRQ=IP}o%&!v~mp1b`*2<0^dS|lEq2q3*s-?oPRBq-8&*^Rj70)(l=4{`) zMRHs9?RTedmMp1kRdk*v^7LSp*2AMZKCUNk4$jUDu2@i`RQOfPYE>xZ|la<~S;8bDOyR8d1=*;nt3X)vBM&UuYQN`km`=Z2oOqQ~> zJJr&+&TTrPQFZwDsB35Sil`q|mwoeeLvjlwgn0MI9g^T2@!!@WnQ<&x$}fiZdZd~4 z#OHevrsmHJX2@*gNwu~moYLYKu3OXpsMYV_oc3e=tG!mr`p!A3x9+1&nsM%cQ?shV zU#nf7XeWMNO$I%Cy?W_grKs*6U&miz>`Zr;%+8bRl0=vAIHx}I*~jl$X>)aP_Tp#e zyEchE(mK2->g~~;N;l`UJ3cvOyGNh@Pp+i9NO<@9tr|{QUGW<%doz9ce|l3+k#((O zC4aEVqn>HZQ4h!A9Nq(7`Z!BsaCq3jiMW6(!Oh&wOE>}de7SLWJRwSZ*gaM&5M^FF z-qQOsUFN7pg>yUs7lwPem?RwM27A6sskjH^CNl6PaDQi#g;xWkNH)$E2hrv%jr1&~ z4}bdTKNBXJJoQS5RHvFB0Eb>^d>ci4J#~q>k6(TGS^|l83Xp z3U|W=nE`j*-z*DPe2c>qAddcfJP+pVZNT%v2?!^x z3-43{Iisf$YGMH8%MpW6m#si(L#|PWuz>Mq=n;7kHR==ZppG-2(1cveLLwBRJw^no z<)<-$!*>5RB}AZA)SP&Nfg$A77F4LwLwGVuIeUEqs-U2ww9}w?gMwLgz0l0GFo)Y#D^*kpw zfq2x)Qo@jV(VtyO!_>x!*To1e?oB??GlGq4RL6|n{| zM%5@+NHwt%Fm=_0EdVoW&T6OI6kOahx)IFVFxEy^`g zi!?TG2qz#;d_$}T;QJet-K-9cG`bGu>Z&8GfJXl95H7%E@&S#D`ark?=H~}u z2LN7;bmy7=JZmI80hsj>fvAtfF2Ia`q_Z<~Zr?=M0VZh@3^vilGbXc7lTG-9vbTRi z9b43lx^c3ZumtWE&BS^DG+L0!w}r3<%!3xBAzJC-Fp*taQNZk0)Lya;jbd9HS_y@1 zXn@k~s4f2OC`HXA(CR?l2%QA&lVIs*!V6?i`%LTxK(Z6L`*xxfFD4n)FQ}daUy!Nt z3+lXT7b+vD3z=%WP{-7|5jfC|+EU()hNIep+z<62_t!nBnX0{L-u-(K^Sl>jm+eC- zeEaCd&ot_BAKf|z@buI7FauWg(+i0KiIZTkpLS;$i?3+nE_@}-0rUPV{X}C-(+B8P z#{lmE6eo8Q{2V|j%mxt%8>H_7MqD?D+!cn9m**r%AEF;FjAn2MiA}yC_uy~zyfdci zZ>XN>!wC2e)BRygrNhWw^g9Bs-%+k>-|4P0nxXG>R~cY6f+C-t1ob0Gtn>r9Z~uWR zy!ivQZsG?T@`_PZVeBMm8AbKz{X~%ie$tDU$yNLlMdlkrCZ{nJCvgnjGT+9~GF~x` zG|}V8>)kjKt54960w&fsA=CO_$UW&7s%PLAD&F)r8dvCVG`Sysqqb=M zK>-8)Ag25ebdQxI!K#VfNrFWadz%DnCiVvjSHTjDgm-onM#9;v$Dou_#*tABe+m4ja;Y}b#7$x z;U?h%y3dWm^YGARGEX#n9@@l!%afpkht@F6ylEtSnxCFV$6=V7X(asSQ07INJ-j4* z*cI~9V`4PCeB|o?o~-TSBjJ~81|KPpXPl+>@{=-D6CXJpxM2J=OPz=80{X*rI*?u1 zs6av+eG=Qs!(vVU*N=9|$2(#esg4Sx3aP8Cd`eqQ>9b0WDJt$uICZ;%5T~jy;SyAs z5Geq{)}^@0IM896xLGW{DGma0l%o(SN1dxAxG8-BQW@x{Y(l5#v*Q1yKQBNk0=;bK z1<^cuw`eQ$-}t?W|LA$B0Ra+h)F@FwdhmlO|CqQbJ3&$b^u?PoIcG4YSyV3l0ZszL zUd)87G+i)A`&aCaS32S>R)j8#wO~q_JF^(61yD`d15Z))JYrO8)O#UP6G&g>r6|6k zCBNuDqbX9MCs6w334K8BCQO1~*r?sYbXi74(3CAqYA7?)GiCogCCUbBP#9IE*xhc# zoHZ|^_l+~Ah~}11m?$Yt{VKtQsKX*CRhS5!>icuXG?S{Lcj6$GpP}(+2_5A+J-OOb zqF7xNMeEO0l=fU#0XA#vS&YfQjxlLcU&Tl<(AKv5n>hRFDwok!YEG##;vJ3suLQkrx_Jod+B8C) zS}B3(4Gb+R2WUwuN`i#j-~xu`QurS&aZ!>K1N}`d#ZKb%3`PIH%I8yhk|g-`o!TWy z`v=V>sKJGV6m?aSR0iXD!qD^e0j*5^l0+?*mX*BFNjD>y4yit6EFzSy6lnnN@V#x4 z3$5wAdE|dZMhihe4JuO#jjBM3&Qr1oPdSFRgYW``fLL(G_l|3z%BrE;E8sF()+U{MY55H=zGFC~Znb1`TTG?Dp!X zYgw#4ul~E_FIa+ll&A|bBzRe)GGyq*K*dwXWa;JJFGEU!g_LaKcRP%!j83C7rFSb5 zp>(AzDFJ3KGx+wCUizn06L}U(Yl>8fV#|_?!4wtBlJeLZ>b)$f4L0+|9jL*J&cdPN;i&+o;l@zlq^>A z@x=So6FHPb5+o&3)qq-5=Kf0sdn<-v9sr diff --git a/diylc/diylc-swing/library/main.jar b/diylc/diylc-swing/library/main.jar index 8b6c01cb0bcc183b4f85cd07bd3b357e0d3210e9..a741a0a5c3456b6acb1d6cb879b8889ac74d4392 100644 GIT binary patch delta 25444 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 delta 24356 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 NEW>%q1zh=c{{xTfXg&Y{ diff --git a/diylc/diylc-swing/update.xml b/diylc/diylc-swing/update.xml index 8210bed6..62905697 100644 --- a/diylc/diylc-swing/update.xml +++ b/diylc/diylc-swing/update.xml @@ -2534,10 +2534,18 @@ IMPROVEMENT Increase the range of zoom slider for images to 500% + + BUG_FIX + Netlist algorithm would sometimes create overlapping groups of nodes which are supposed to be merged + BUG_FIX Fixed bug with "Highlight Connected Areas" that makes random components conductive + + BUG_FIX + Fixed rendering issue with "Lever Switch" when rotated + https://github.com/bancika/diy-layout-creator/releases