From 0ac2c5bd9db36a3f3d1a79951f8d2128f89c0eff Mon Sep 17 00:00:00 2001 From: Branislav Stojkovic Date: Fri, 4 Nov 2016 11:21:30 +0100 Subject: [PATCH] flip potentiometer symbol horizontally --- diylc/diylc-library/lib/diylc-core.jar | Bin 227322 -> 227331 bytes .../passive/PotentiometerSymbol.java | 60 +++++++++++------- .../AbstractTransistorSymbol.java | 32 ++++------ .../semiconductors/SymbolFlipping.java | 4 +- diylc/diylc-swing/lib/diylc-core.jar | Bin 227331 -> 227331 bytes diylc/diylc-swing/library/main.jar | Bin 306177 -> 306101 bytes diylc/diylc-swing/update.xml | 8 ++- 7 files changed, 59 insertions(+), 45 deletions(-) diff --git a/diylc/diylc-library/lib/diylc-core.jar b/diylc/diylc-library/lib/diylc-core.jar index f6654fcff3bd2b5e233cb8e626d4b5299b1e3724..ac75d55cae2c232a63363c97487ad3e73d58e639 100644 GIT binary patch delta 9557 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 Y+3FT}8^B~KJ3fteZ};FMsEq1=0UHB-r2qf` delta 9683 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 diff --git a/diylc/diylc-library/src/org/diylc/components/passive/PotentiometerSymbol.java b/diylc/diylc-library/src/org/diylc/components/passive/PotentiometerSymbol.java index 12adae28..5bd1b7ef 100644 --- a/diylc/diylc-library/src/org/diylc/components/passive/PotentiometerSymbol.java +++ b/diylc/diylc-library/src/org/diylc/components/passive/PotentiometerSymbol.java @@ -12,6 +12,7 @@ import org.diylc.core.IDIYComponent; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.KeywordPolicy; import org.diylc.components.semiconductors.AbstractTransistorSymbol; +import org.diylc.components.semiconductors.SymbolFlipping; @ComponentDescriptor(name = "Potentiometer Symbol", author = "MCbx", category = "Schematics", instanceNamePrefix = " VR", description = "Potentiometer symbol", stretchable = false, @@ -69,32 +70,43 @@ public class PotentiometerSymbol extends AbstractTransistorSymbol { @Override protected int getLabelX(Rectangle2D shapeRect, Rectangle2D textRect, FontMetrics fontMetrics, boolean outlineMode) { - int pinSpacing = (int) PIN_SPACING.convertToPixels(); - if (controlPoints[0].x < controlPoints[1].x && controlPoints[0].x < controlPoints[2].x) - return controlPoints[1].x + pinSpacing / 3; - if (controlPoints[0].y < controlPoints[1].y && controlPoints[0].y < controlPoints[2].y) - return controlPoints[0].x - (int) (textRect.getWidth() / 2); - if (controlPoints[0].x > controlPoints[1].x && controlPoints[0].x > controlPoints[2].x) - return controlPoints[1].x - pinSpacing / 2 - (int) textRect.getWidth(); - if (controlPoints[0].y > controlPoints[1].y && controlPoints[0].y > controlPoints[2].y) - return controlPoints[0].x - (int) (textRect.getWidth() / 2); - return 2 * ((int) (shapeRect.getWidth() - textRect.getWidth()) / 2 + (int) shapeRect.getX()); + int x = super.getLabelX(shapeRect, textRect, fontMetrics, outlineMode); + if (getFlip() == SymbolFlipping.X) + return x - (int) (PIN_SPACING.convertToPixels() / 2); + return x + (int) PIN_SPACING.convertToPixels(); } - @Override - protected int getLabelY(Rectangle2D shapeRect, Rectangle2D textRect, FontMetrics fontMetrics, boolean outlineMode) { - int pinSpacing = (int) PIN_SPACING.convertToPixels(); - if (controlPoints[0].x < controlPoints[1].x && controlPoints[0].x < controlPoints[2].x) - return controlPoints[0].y; - if (controlPoints[0].y < controlPoints[1].y && controlPoints[0].y < controlPoints[2].y) - return controlPoints[1].y + pinSpacing * 2 / 3; - if (controlPoints[0].x > controlPoints[1].x && controlPoints[0].x > controlPoints[2].x) - return controlPoints[0].y; - if (controlPoints[0].y > controlPoints[1].y && controlPoints[0].y > controlPoints[2].y) - return controlPoints[1].y - pinSpacing * 2 / 3; - return 2 * ((int) (shapeRect.getHeight() - textRect.getHeight()) / 2 + fontMetrics.getAscent() + (int) shapeRect - .getY()); - } + // @Override + // protected int getLabelX(Rectangle2D shapeRect, Rectangle2D textRect, FontMetrics fontMetrics, + // boolean outlineMode) { + // int pinSpacing = (int) PIN_SPACING.convertToPixels(); + // if (controlPoints[0].x < controlPoints[1].x && controlPoints[0].x < controlPoints[2].x) + // return controlPoints[1].x + pinSpacing / 3; + // if (controlPoints[0].y < controlPoints[1].y && controlPoints[0].y < controlPoints[2].y) + // return controlPoints[0].x - (int) (textRect.getWidth() / 2); + // if (controlPoints[0].x > controlPoints[1].x && controlPoints[0].x > controlPoints[2].x) + // return controlPoints[1].x - pinSpacing / 2 - (int) textRect.getWidth(); + // if (controlPoints[0].y > controlPoints[1].y && controlPoints[0].y > controlPoints[2].y) + // return controlPoints[0].x - (int) (textRect.getWidth() / 2); + // return 2 * ((int) (shapeRect.getWidth() - textRect.getWidth()) / 2 + (int) shapeRect.getX()); + // } + // + // @Override + // protected int getLabelY(Rectangle2D shapeRect, Rectangle2D textRect, FontMetrics fontMetrics, + // boolean outlineMode) { + // int pinSpacing = (int) PIN_SPACING.convertToPixels(); + // if (controlPoints[0].x < controlPoints[1].x && controlPoints[0].x < controlPoints[2].x) + // return controlPoints[0].y; + // if (controlPoints[0].y < controlPoints[1].y && controlPoints[0].y < controlPoints[2].y) + // return controlPoints[1].y + pinSpacing * 2 / 3; + // if (controlPoints[0].x > controlPoints[1].x && controlPoints[0].x > controlPoints[2].x) + // return controlPoints[0].y; + // if (controlPoints[0].y > controlPoints[1].y && controlPoints[0].y > controlPoints[2].y) + // return controlPoints[1].y - pinSpacing * 2 / 3; + // return 2 * ((int) (shapeRect.getHeight() - textRect.getHeight()) / 2 + fontMetrics.getAscent() + // + (int) shapeRect + // .getY()); + // } @Override public void drawIcon(Graphics2D g2d, int width, int height) { diff --git a/diylc/diylc-library/src/org/diylc/components/semiconductors/AbstractTransistorSymbol.java b/diylc/diylc-library/src/org/diylc/components/semiconductors/AbstractTransistorSymbol.java index 9951d21d..7b6f4ee0 100644 --- a/diylc/diylc-library/src/org/diylc/components/semiconductors/AbstractTransistorSymbol.java +++ b/diylc/diylc-library/src/org/diylc/components/semiconductors/AbstractTransistorSymbol.java @@ -69,26 +69,16 @@ public abstract class AbstractTransistorSymbol extends AbstractComponent Shape[] body = getBody(); - int rotation = 0; - // determine rotation using control points - if (controlPoints[1].x == controlPoints[2].x) { - if (controlPoints[0].x > controlPoints[1].x) { - rotation = 180; - } - } - if (controlPoints[1].y == controlPoints[2].y) { - rotation = 90; - if (controlPoints[0].y > controlPoints[1].y) { - rotation = 270; - } - } AffineTransform old = g2d.getTransform(); - g2d.rotate(Math.toRadians(rotation), controlPoints[0].x, controlPoints[0].y); if (this.flip == SymbolFlipping.Y) { g2d.translate(0, controlPoints[0].y); g2d.scale(1, -1); g2d.translate(0, -1 * controlPoints[0].y); + } else if (this.flip == SymbolFlipping.X) { + g2d.translate(controlPoints[0].x, 0); + g2d.scale(-1, 1); + g2d.translate(-1 * controlPoints[0].x, 0); } g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(2)); @@ -129,7 +119,8 @@ public abstract class AbstractTransistorSymbol extends AbstractComponent Rectangle shapeRect = body[0].getBounds().union(body[1].getBounds()).union(body[2].getBounds()); drawCenteredText(g2d, label, getLabelX(shapeRect, textRect, fontMetrics, outlineMode), - getLabelY(shapeRect, textRect, fontMetrics, outlineMode), HorizontalAlignment.LEFT, VerticalAlignment.CENTER); + getLabelY(shapeRect, textRect, fontMetrics, outlineMode), flip == SymbolFlipping.X ? HorizontalAlignment.RIGHT + : HorizontalAlignment.LEFT, VerticalAlignment.CENTER); } @Override @@ -143,7 +134,9 @@ public abstract class AbstractTransistorSymbol extends AbstractComponent } protected int getLabelX(Rectangle2D shapeRect, Rectangle2D textRect, FontMetrics fontMetrics, boolean outlineMode) { - return controlPoints[0].x + (int) PIN_SPACING.convertToPixels() * 2; + int f = flip == SymbolFlipping.X ? -1 : 1; + int d = flip == SymbolFlipping.X ? (int) PIN_SPACING.convertToPixels() / 2 : 0; + return controlPoints[0].x + f * (int) (PIN_SPACING.convertToPixels() * 1.5 + d); } protected int getLabelY(Rectangle2D shapeRect, Rectangle2D textRect, FontMetrics fontMetrics, boolean outlineMode) { @@ -156,10 +149,12 @@ public abstract class AbstractTransistorSymbol extends AbstractComponent int x = controlPoints[0].x; int y = controlPoints[0].y; - controlPoints[1].x = x + pinSpacing * 2; + int f = flip == SymbolFlipping.X ? -1 : 1; + + controlPoints[1].x = x + f * pinSpacing * 2; controlPoints[1].y = y - pinSpacing * 2; - controlPoints[2].x = x + pinSpacing * 2; + controlPoints[2].x = x + f * pinSpacing * 2; controlPoints[2].y = y + pinSpacing * 2; } @@ -198,6 +193,7 @@ public abstract class AbstractTransistorSymbol extends AbstractComponent public void setFlip(SymbolFlipping flip) { this.flip = flip; + updateControlPoints(); } @EditableProperty diff --git a/diylc/diylc-library/src/org/diylc/components/semiconductors/SymbolFlipping.java b/diylc/diylc-library/src/org/diylc/components/semiconductors/SymbolFlipping.java index 7cb733cf..6a333295 100644 --- a/diylc/diylc-library/src/org/diylc/components/semiconductors/SymbolFlipping.java +++ b/diylc/diylc-library/src/org/diylc/components/semiconductors/SymbolFlipping.java @@ -2,13 +2,15 @@ package org.diylc.components.semiconductors; public enum SymbolFlipping { - NONE, Y; + NONE, X, Y; @Override public String toString() { switch (this) { case Y: return "Y-axis"; + case X: + return "X-axis"; case NONE: return "None"; default: diff --git a/diylc/diylc-swing/lib/diylc-core.jar b/diylc/diylc-swing/lib/diylc-core.jar index f1e9e0d0d0569d4e8a9eed1214f56b1f6b5301e8..ac75d55cae2c232a63363c97487ad3e73d58e639 100644 GIT binary patch delta 3870 zcmY+GcUV+3E;5_=lK-YZ28=$4Bbw?E=YgB6lAUc*T{%~23+<0$TXx^ zU?*}w$VbTiW2Peehg+B3*?6@?U7qnw*oEc?;iv>)?I|`J9WwE z4P9rZsD>UkVBhhHz%HA&w4;61Rx7N&?z4WVH*KR;+8bj~@4urv(BirCC8WE3LFHhS$~Opj#eZ+XiiHxNgC8pZ`+W)!V<=%3IiSsIyT3i=X#FF8qBI zvibE8=jxfec5*?=mQvbpt_D?br{na$PDOu7{bn>a43xJM4>E- z)uZqxmaWI&hIkfDYe#rK)ql%%x&z9MF6OGZ$1!WQD}kNIu=7UtcWw_Y-n??VhqIMV zx6eumxXxS@hb+-u{o5oq*b26CWHMWW3m7xm6%@R3*&8e|G@lu1rBdfR6}57givzQCcaphcAhtWAD;g_Zm5e%lX1yeY%I)VJ&`?#r1%Jj62PaVP?;BOkP}R*>Zs$ zMj`(ab3|e8k1P{~b3d_E8qs{)FP0hPh+>o*&!%JSO4Qtr>FG(Nmy>Y zbx~HDg_HW9o6H}JSa&cF6nyV79|kL?-)8}6S@nQfqtNh}&7p<-zVY&RlBFEzEWCeX zUKo-5g6#sK^%ZMF!{shEfKrw?ocA=!6a)2ES0sCL=R6I==6B;uQFvj^zoPig-77o~ z$oLjz#Awe8?HL335!|_-8{dJJc6Yu91$m=3qTue$ zSE8`pmsgSb0zcw}!7Ag{fabdy;tPi6)cf&*q=;7g%_hC5cH^V7^cm(yaG=kzU zM~DQ7caIcvftw;l8t_3RSW_mjp2$baMjvn-Z|!P2(v&bv%t_=Xh$@Zi1Ks;pG#k%!vuK zE%~u30{dDc*>4+ZY~hKdD~VL^ej?dpCem1xi8PKU6KOlKlc-%~l6DOyQCxfy#eJGY z+k2EmV~8`6ZZT2)4inXnNS4<^-od(Lxh=`IWO-2~`=`j`k}TJFC`IN;y?3gtBUzX# z;((2*A|Ci4RUWHk=w!-&PvgHPQ(gNsVtSgqPBQMZG|Ib|M)3jZ#OieUV5I+0I>p&! zP+m%g9KW=0&Y<-lXpG2|`kDXueLzESCqE+GAb0;=0yK=vVplvhzm>wjBFecGC72x(?I ztnFsn{O@L}W0*?1GL`b~Or^ZwX;g3NG}`xf)2N@GMHH7)M0K|nQQWUZp#@=pc2ZHL&w8DSwis+rDV@4rFD0dlD|{4htHr(uxbX?Ynvha zk&kI$8C~*OW%TI2FB3Un_bVs;{c?JIcglqs?8XXF2yCt(z0XYgwk(+`iot$+rYHd> zRZ`r(N_uo+7Cq8DjbCYWnoagfji+bRH`sFyJ;o(-=yCoqhrWSBszff-Ur|MUU9Y0Y z95|Qa*3P9z`m@Fn)wF(XHP!p6TFzPKd(ES7dG$QfkIs{Gk#_s}G!OH9%4?Y~O#cI^ C=k`MY delta 3870 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 delta 11472 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 NEW_FEATURE Added Public Announcements feature - + + + IMPROVEMENT + Potentiometer symbol can be flipped horizontally + IMPROVEMENT Reduced DIYLC package size @@ -1368,7 +1372,7 @@ IMPROVEMENT - Toggle switch spacing can be changed + Toggle switch terminal spacing can be changed IMPROVEMENT