From 3385d04d95288ebfc50951db333769aa71c37a4a Mon Sep 17 00:00:00 2001 From: bancika Date: Fri, 21 Sep 2012 11:32:34 +0000 Subject: [PATCH] Outline mode for trimmers, potentiometers and transistors --- .../diylc-library/lib/diylc-core.jar | Bin 206264 -> 206597 bytes .../passive/PotentiometerPanel.java | 176 +++++++++++------- .../passive/TrimmerPotentiometer.java | 124 ++++++++---- .../semiconductors/TransistorTO1.java | 60 +++--- .../semiconductors/TransistorTO220.java | 137 +++++++------- .../semiconductors/TransistorTO3.java | 49 +++-- 6 files changed, 332 insertions(+), 214 deletions(-) diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-library/lib/diylc-core.jar b/ diy-layout-creator --username bancika@gmail.com/diylc-library/lib/diylc-core.jar index 5efa5d232e617b9148d729fe3de8df22b5bd74cf..179365a80933ed1a7e00e0b6a8639ef0d48b0a05 100644 GIT binary patch delta 18477 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 { if (folded) { switch (orientation) { case DEFAULT: - body = new Area(new RoundRectangle2D.Double(x - bodyLength, y - bodyDiameter / 2, bodyLength, bodyDiameter, edgeRadius, edgeRadius)); - body.add(new Area(new Rectangle2D.Double(x - bodyLength / 2, y - bodyDiameter / 2, bodyLength / 2, bodyDiameter))); + body = new Area(new RoundRectangle2D.Double(x - bodyLength, + y - bodyDiameter / 2, bodyLength, bodyDiameter, + edgeRadius, edgeRadius)); + body.add(new Area(new Rectangle2D.Double( + x - bodyLength / 2, y - bodyDiameter / 2, + bodyLength / 2, bodyDiameter))); break; case _90: - body = new Area(new RoundRectangle2D.Double(x - bodyDiameter / 2, y - bodyLength, bodyDiameter, bodyLength, edgeRadius, edgeRadius)); - body.add(new Area(new Rectangle2D.Double(x - bodyDiameter / 2, y - bodyLength / 2, bodyDiameter, bodyLength / 2))); + body = new Area(new RoundRectangle2D.Double(x + - bodyDiameter / 2, y - bodyLength, bodyDiameter, + bodyLength, edgeRadius, edgeRadius)); + body.add(new Area(new Rectangle2D.Double(x - bodyDiameter + / 2, y - bodyLength / 2, bodyDiameter, + bodyLength / 2))); break; case _180: - body = new Area(new RoundRectangle2D.Double(x, y - bodyDiameter / 2, bodyLength, bodyDiameter, edgeRadius, edgeRadius)); - body.add(new Area(new Rectangle2D.Double(x, y - bodyDiameter / 2, bodyLength / 2, bodyDiameter))); + body = new Area(new RoundRectangle2D.Double(x, y + - bodyDiameter / 2, bodyLength, bodyDiameter, + edgeRadius, edgeRadius)); + body.add(new Area(new Rectangle2D.Double(x, y + - bodyDiameter / 2, bodyLength / 2, bodyDiameter))); break; case _270: - body = new Area(new RoundRectangle2D.Double(x - bodyDiameter / 2, y, bodyDiameter, bodyLength, edgeRadius, edgeRadius)); - body.add(new Area(new Rectangle2D.Double(x - bodyDiameter / 2, y, bodyDiameter, bodyLength / 2))); + body = new Area(new RoundRectangle2D.Double(x + - bodyDiameter / 2, y, bodyDiameter, bodyLength, + edgeRadius, edgeRadius)); + body.add(new Area(new Rectangle2D.Double(x - bodyDiameter + / 2, y, bodyDiameter, bodyLength / 2))); break; default: - throw new RuntimeException("Unexpected orientation: " + orientation); + throw new RuntimeException("Unexpected orientation: " + + orientation); } } else { body = new Area(new Ellipse2D.Double(x - bodyDiameter / 2, y @@ -197,9 +212,9 @@ public class TransistorTO1 extends AbstractTransparentComponent { g2d.fill(mainArea); g2d.setComposite(oldComposite); Color finalBorderColor; + Theme theme = (Theme) ConfigurationManager.getInstance().readObject( + IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME); 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(); @@ -212,23 +227,22 @@ public class TransistorTO1 extends AbstractTransparentComponent { g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1)); g2d.draw(mainArea); - if (!outlineMode) { - for (Point point : controlPoints) { + for (Point point : controlPoints) { + if (!outlineMode) { g2d.setColor(PIN_COLOR); g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize); - g2d.setColor(PIN_BORDER_COLOR); - g2d.drawOval(point.x - pinSize / 2, point.y - pinSize / 2, - pinSize, pinSize); } + g2d.setColor(outlineMode ? theme.getOutlineColor() + : PIN_BORDER_COLOR); + g2d.drawOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, + pinSize); } // Draw label. g2d.setFont(LABEL_FONT); 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(); @@ -282,12 +296,12 @@ public class TransistorTO1 extends AbstractTransparentComponent { // Reset body shape; body = null; } - - @EditableProperty(name="Pin spacing") + + @EditableProperty(name = "Pin spacing") public Size getPinSpacing() { return pinSpacing; } - + public void setPinSpacing(Size pinSpacing) { this.pinSpacing = pinSpacing; updateControlPoints(); @@ -303,12 +317,12 @@ public class TransistorTO1 extends AbstractTransparentComponent { public void setBorderColor(Color borderColor) { this.borderColor = borderColor; } - + @EditableProperty(name = "Label") public Color getLabelColor() { return labelColor; } - + public void setLabelColor(Color labelColor) { this.labelColor = labelColor; } diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/TransistorTO220.java b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/TransistorTO220.java index 0e59dd3f..a3732a58 100644 --- a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/TransistorTO220.java +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/TransistorTO220.java @@ -285,9 +285,9 @@ public class TransistorTO220 extends AbstractTransparentComponent { g2d.draw(tabArea); } Color finalBorderColor; + Theme theme = (Theme) ConfigurationManager.getInstance().readObject( + IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME); 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(); @@ -303,69 +303,82 @@ public class TransistorTO220 extends AbstractTransparentComponent { } // Draw pins. - if (!outlineMode) { - if (folded) { - int leadThickness = getClosestOdd(LEAD_THICKNESS - .convertToPixels()); - int leadLength = (int) getLeadLength().convertToPixels(); - for (Point point : controlPoints) { - switch (orientation) { - case DEFAULT: - g2d.setStroke(ObjectCache.getInstance() - .fetchBasicStroke(leadThickness)); - g2d.setColor(METAL_COLOR.darker()); - g2d.drawLine(point.x, point.y, point.x + leadLength - - leadThickness / 2, point.y); - g2d.setStroke(ObjectCache.getInstance() - .fetchBasicStroke(leadThickness - 2)); - g2d.setColor(METAL_COLOR); - g2d.drawLine(point.x, point.y, point.x + leadLength - - leadThickness / 2, point.y); - break; - case _90: - g2d.setStroke(ObjectCache.getInstance() - .fetchBasicStroke(leadThickness)); - g2d.setColor(METAL_COLOR.darker()); - g2d.drawLine(point.x, point.y, point.x, point.y - + leadLength - leadThickness / 2); - g2d.setStroke(ObjectCache.getInstance() - .fetchBasicStroke(leadThickness - 2)); - g2d.setColor(METAL_COLOR); - g2d.drawLine(point.x, point.y, point.x, point.y - + leadLength - leadThickness / 2); - break; - case _180: - g2d.setStroke(ObjectCache.getInstance() - .fetchBasicStroke(leadThickness)); - g2d.setColor(METAL_COLOR.darker()); - g2d.drawLine(point.x, point.y, point.x - leadLength - - leadThickness / 2, point.y); - g2d.setStroke(ObjectCache.getInstance() - .fetchBasicStroke(leadThickness - 2)); - g2d.setColor(METAL_COLOR); - g2d.drawLine(point.x, point.y, point.x - leadLength - - leadThickness / 2, point.y); - break; - case _270: - g2d.setStroke(ObjectCache.getInstance() - .fetchBasicStroke(leadThickness)); - g2d.setColor(METAL_COLOR.darker()); - g2d.drawLine(point.x, point.y, point.x, point.y - - leadLength); - g2d.setStroke(ObjectCache.getInstance() - .fetchBasicStroke(leadThickness - 2)); - g2d.setColor(METAL_COLOR); - g2d.drawLine(point.x, point.y, point.x, point.y - - leadLength); - break; - } - } + + if (folded) { + int leadThickness = getClosestOdd(LEAD_THICKNESS.convertToPixels()); + int leadLength = (int) getLeadLength().convertToPixels(); + Color finalPinColor; + Color finalPinBorderColor; + if (outlineMode) { + finalPinColor = new Color(0, 0, 0, 0); + finalPinBorderColor = componentState == ComponentState.SELECTED + || componentState == ComponentState.DRAGGING ? SELECTION_COLOR + : theme.getOutlineColor(); } else { + finalPinColor = METAL_COLOR; + finalPinBorderColor = METAL_COLOR.darker(); + } + for (Point point : controlPoints) { + switch (orientation) { + case DEFAULT: + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke( + leadThickness)); + g2d.setColor(finalPinBorderColor); + g2d.drawLine(point.x, point.y, point.x + leadLength + - leadThickness / 2, point.y); + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke( + leadThickness - 2)); + g2d.setColor(finalPinColor); + g2d.drawLine(point.x, point.y, point.x + leadLength + - leadThickness / 2, point.y); + break; + case _90: + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke( + leadThickness)); + g2d.setColor(finalPinBorderColor); + g2d.drawLine(point.x, point.y, point.x, point.y + + leadLength - leadThickness / 2); + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke( + leadThickness - 2)); + g2d.setColor(finalPinColor); + g2d.drawLine(point.x, point.y, point.x, point.y + + leadLength - leadThickness / 2); + break; + case _180: + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke( + leadThickness)); + g2d.setColor(finalPinBorderColor); + g2d.drawLine(point.x, point.y, point.x - leadLength + - leadThickness / 2, point.y); + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke( + leadThickness - 2)); + g2d.setColor(finalPinColor); + g2d.drawLine(point.x, point.y, point.x - leadLength + - leadThickness / 2, point.y); + break; + case _270: + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke( + leadThickness)); + g2d.setColor(finalPinBorderColor); + g2d.drawLine(point.x, point.y, point.x, point.y + - leadLength); + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke( + leadThickness - 2)); + g2d.setColor(finalPinColor); + g2d.drawLine(point.x, point.y, point.x, point.y + - leadLength); + break; + } + } + } else { + if (!outlineMode) { for (Point point : controlPoints) { + g2d.setColor(PIN_COLOR); g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize); - g2d.setColor(PIN_BORDER_COLOR); + g2d.setColor(outlineMode ? theme.getOutlineColor() + : PIN_BORDER_COLOR); g2d.drawOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize); } @@ -376,8 +389,6 @@ public class TransistorTO220 extends AbstractTransparentComponent { g2d.setFont(LABEL_FONT); 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(); @@ -413,7 +424,7 @@ public class TransistorTO220 extends AbstractTransparentComponent { g2d.setColor(TAB_COLOR); g2d.fill(a); g2d.setColor(BORDER_COLOR); - g2d.draw(a); + g2d.draw(a); g2d.setColor(BODY_COLOR); g2d.fillRect((width - bodySize) / 2, margin + tabSize, bodySize, bodySize); diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/TransistorTO3.java b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/TransistorTO3.java index c257bfc6..26e9b28b 100644 --- a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/TransistorTO3.java +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/TransistorTO3.java @@ -250,9 +250,9 @@ public class TransistorTO3 extends AbstractTransparentComponent { g2d.fill(mainArea); g2d.setComposite(oldComposite); Color finalBorderColor; + Theme theme = (Theme) ConfigurationManager.getInstance().readObject( + IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME); 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(); @@ -266,23 +266,22 @@ public class TransistorTO3 extends AbstractTransparentComponent { g2d.draw(mainArea); g2d.draw(innerArea); - if (!outlineMode) { - for (Point point : controlPoints) { + for (Point point : controlPoints) { + if (!outlineMode) { g2d.setColor(PIN_COLOR); g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize); - g2d.setColor(PIN_BORDER_COLOR); - g2d.drawOval(point.x - pinSize / 2, point.y - pinSize / 2, - pinSize, pinSize); } + g2d.setColor(outlineMode ? theme.getOutlineColor() + : PIN_BORDER_COLOR); + g2d.drawOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, + pinSize); } // Draw label. g2d.setFont(LABEL_FONT); 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(); @@ -313,20 +312,20 @@ public class TransistorTO3 extends AbstractTransparentComponent { int hole = 4 * width / 32; Area area = new Area(new Ellipse2D.Double((width - sizeLarge) / 2, (height - sizeLarge) / 2, sizeLarge, sizeLarge)); -// int[] x = new int[] { width / 2 + sizeSmall / 2, -// width / 2 + sizeLarge / 2, width / 2 + sizeSmall / 2, -// width / 2 - sizeSmall / 2, width / 2 - sizeLarge / 2, -// width / 2 - sizeSmall / 2 }; -// int[] y = new int[] { height / 8, height / 2, height * 7 / 8, -// height * 7 / 8, height / 2, height / 8 }; -// Area p = new Area(new Polygon(x, y, x.length)); -// AffineTransform t = AffineTransform.getTranslateInstance(width / 2, -// height / 2); -// t.concatenate(AffineTransform.getScaleInstance(1.05, 1.05)); -// t.concatenate(AffineTransform.getTranslateInstance(-width / 2, -// -height / 2)); -// p.transform(t); -// area.add(new Area(p)); + // int[] x = new int[] { width / 2 + sizeSmall / 2, + // width / 2 + sizeLarge / 2, width / 2 + sizeSmall / 2, + // width / 2 - sizeSmall / 2, width / 2 - sizeLarge / 2, + // width / 2 - sizeSmall / 2 }; + // int[] y = new int[] { height / 8, height / 2, height * 7 / 8, + // height * 7 / 8, height / 2, height / 8 }; + // Area p = new Area(new Polygon(x, y, x.length)); + // AffineTransform t = AffineTransform.getTranslateInstance(width / 2, + // height / 2); + // t.concatenate(AffineTransform.getScaleInstance(1.05, 1.05)); + // t.concatenate(AffineTransform.getTranslateInstance(-width / 2, + // -height / 2)); + // p.transform(t); + // area.add(new Area(p)); area.add(new Area(new Ellipse2D.Double((width - sizeSmall) / 2, height / 8 - sizeSmall / 2, sizeSmall, sizeSmall))); area.add(new Area(new Ellipse2D.Double((width - sizeSmall) / 2, height @@ -341,8 +340,8 @@ public class TransistorTO3 extends AbstractTransparentComponent { g2d.fill(area); g2d.setColor(BORDER_COLOR); g2d.draw(area); - g2d.drawOval((width - sizeInner) / 2, (height - sizeInner) / 2, sizeInner, - sizeInner); + g2d.drawOval((width - sizeInner) / 2, (height - sizeInner) / 2, + sizeInner, sizeInner); } @EditableProperty(name = "Body")