From 7af112a28bf4e6652922f90b1d1d6c43772b04af Mon Sep 17 00:00:00 2001 From: bancika Date: Sun, 9 Jan 2011 14:28:02 +0000 Subject: [PATCH] added ic pins --- .../DIYLC/config.xml | 8 +- .../DIYLC/library/main.jar | Bin 230059 -> 230790 bytes .../AbstractLeadedDIYComponent.java | 5 +- .../src/org/diylc/core/measures/Size.java | 2 +- .../components/semiconductors/DIL_IC.java | 101 +++++++++++++----- 5 files changed, 84 insertions(+), 32 deletions(-) diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml b/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml index 02f4b9f6..51a75af5 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml @@ -6,14 +6,14 @@ K - - lastPath - C:\Documents and Settings\Branislav Stojkovic\Desktop - metric true + + lastPath + C:\Documents and Settings\Branislav Stojkovic\Desktop + default.org.diylc.components.passive.AxialFilmCapacitor:Width diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/library/main.jar b/ diy-layout-creator --username bancika@gmail.com/DIYLC/library/main.jar index 0af5747765142a2b516d2b2172c094cbb2b7536d..c6ec92bcf766da7448b3dbbbd4afababdc5ec02e 100644 GIT binary patch delta 5744 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 OVTA)92BUie0001SqsyfL diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedDIYComponent.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedDIYComponent.java index 2961c915..33ae24e8 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedDIYComponent.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedDIYComponent.java @@ -31,6 +31,7 @@ public abstract class AbstractLeadedDIYComponent extends AbstractTransparentC public static Color LEAD_COLOR = Color.black; public static Color LABEL_COLOR = Color.black; public static Color LABEL_COLOR_SELECTED = Color.red; + public static Size LEAD_THICKNESS = new Size(0.3d, SizeUnit.mm); protected Size width; protected Size height; @@ -83,7 +84,7 @@ public abstract class AbstractLeadedDIYComponent extends AbstractTransparentC * @return default lead thickness. Override this method to change it. */ protected Size getLeadThickness() { - return new Size(0.5d, SizeUnit.mm); + return LEAD_THICKNESS; } /** @@ -100,7 +101,7 @@ public abstract class AbstractLeadedDIYComponent extends AbstractTransparentC @Override public Point getControlPoint(int index) { - return (Point) points[index].clone(); + return (Point) points[index]; } @Override diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/measures/Size.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/measures/Size.java index eae9919d..759f20a4 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/measures/Size.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/measures/Size.java @@ -18,7 +18,7 @@ public class Size extends AbstractMeasure { public int convertToPixels() { double factor = getUnit().getFactor() / SizeUnit.in.getFactor(); - return (int) (factor * Constants.PIXELS_PER_INCH * getValue()); + return (int) Math.round(factor * Constants.PIXELS_PER_INCH * getValue()); } @Override diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DIL_IC.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DIL_IC.java index 8a205ca0..09b85759 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DIL_IC.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DIL_IC.java @@ -7,7 +7,10 @@ import java.awt.Composite; import java.awt.FontMetrics; import java.awt.Graphics2D; import java.awt.Point; +import java.awt.Rectangle; +import java.awt.Shape; import java.awt.geom.Rectangle2D; +import java.awt.geom.RoundRectangle2D; import org.diylc.common.Orientation; import org.diylc.components.AbstractTransparentComponent; @@ -25,9 +28,14 @@ public class DIL_IC extends AbstractTransparentComponent { private static final long serialVersionUID = 1L; public static Color BODY_COLOR = Color.gray; - public static Color BORDER_COLOR = Color.black; + public static Color BORDER_COLOR = Color.gray.darker(); + public static Color PIN_COLOR = Color.decode("#00B2EE"); + public static Color PIN_BORDER_COLOR = PIN_COLOR.darker(); + public static Color INDENT_COLOR = Color.lightGray; public static Color LABEL_COLOR = Color.white; public static int EDGE_RADIUS = 6; + public static Size PIN_SIZE = new Size(0.04d, SizeUnit.in); + public static Size INDENT_SIZE = new Size(0.15d, SizeUnit.in); private String name = "New Component"; private String value = ""; @@ -40,6 +48,12 @@ public class DIL_IC extends AbstractTransparentComponent { new Point((int) (3 * Constants.GRID), (int) Constants.GRID), new Point((int) (3 * Constants.GRID), (int) (2 * Constants.GRID)), new Point((int) (3 * Constants.GRID), (int) (3 * Constants.GRID)) }; + private Shape body; + + public DIL_IC() { + super(); + updateControlPoints(); + } @EditableProperty(defaultable = false) public String getName() { @@ -66,6 +80,8 @@ public class DIL_IC extends AbstractTransparentComponent { public void setOrientation(Orientation orientation) { this.orientation = orientation; + // Reset body shape; + body = null; } @EditableProperty(name = "Pins") @@ -76,6 +92,8 @@ public class DIL_IC extends AbstractTransparentComponent { public void setPinCount(PinCount pinCount) { this.pinCount = pinCount; updateControlPoints(); + // Reset body shape; + body = null; } @EditableProperty(name = "Row spacing") @@ -86,6 +104,8 @@ public class DIL_IC extends AbstractTransparentComponent { public void setRowSpacing(Size rowSpacing) { this.rowSpacing = rowSpacing; updateControlPoints(); + // Reset body shape; + body = null; } @Override @@ -101,12 +121,14 @@ public class DIL_IC extends AbstractTransparentComponent { @Override public void setControlPoint(Point point, int index) { controlPoints[index].setLocation(point); + body = null; } private void updateControlPoints() { Point firstPoint = controlPoints[0]; controlPoints = new Point[pinCount.getValue()]; controlPoints[0] = firstPoint; + // Update control points. int dx1; int dy1; int dx2; @@ -146,40 +168,68 @@ public class DIL_IC extends AbstractTransparentComponent { } } + public Shape getBody() { + if (body == null) { + int x = controlPoints[0].x; + int y = controlPoints[0].y; + int width; + int height; + int pinSize = PIN_SIZE.convertToPixels(); + switch (orientation) { + case DEFAULT: + width = rowSpacing.convertToPixels() - pinSize; + height = (int) ((pinCount.getValue() / 2) * Constants.GRID); + x += pinSize / 2; + y -= (int) (Constants.GRID / 2); + break; + case _90: + width = (int) ((pinCount.getValue() / 2) * Constants.GRID); + height = rowSpacing.convertToPixels() - pinSize; + x -= (int) (Constants.GRID / 2) + width - Constants.GRID; + y += pinSize / 2; + break; + case _180: + width = rowSpacing.convertToPixels() - pinSize; + height = (int) ((pinCount.getValue() / 2) * Constants.GRID); + x -= rowSpacing.convertToPixels() - pinSize / 2; + y -= (int) (Constants.GRID / 2) + height - Constants.GRID; + break; + case _270: + width = (int) ((pinCount.getValue() / 2) * Constants.GRID); + height = rowSpacing.convertToPixels() - pinSize; + x -= (int) (Constants.GRID / 2); + y += pinSize / 2; + break; + default: + throw new RuntimeException("Unexpected orientation: " + orientation); + } + body = new RoundRectangle2D.Double(x, y, width, height, EDGE_RADIUS, EDGE_RADIUS); + } + return body; + } + @Override public void draw(Graphics2D g2d, ComponentState componentState, Project project) { - int x = controlPoints[0].x; - int y = controlPoints[0].y; - int width; - int height; - if (orientation == Orientation.DEFAULT || orientation == Orientation._180) { - width = rowSpacing.convertToPixels(); - height = (int) ((pinCount.getValue() / 2) * Constants.GRID); - y -= (int) (Constants.GRID / 2); - } else { - width = (int) ((pinCount.getValue() / 2) * Constants.GRID); - height = rowSpacing.convertToPixels(); - x -= (int) (Constants.GRID / 2); - } - if (orientation == Orientation._90) { - x -= width - Constants.GRID; - } else if (orientation == Orientation._180) { - x -= rowSpacing.convertToPixels(); - y -= height - Constants.GRID; + int pinSize = PIN_SIZE.convertToPixels() / 2 * 2; + for (Point point : controlPoints) { + g2d.setColor(PIN_COLOR); + g2d.fillRect(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize); + g2d.setColor(PIN_BORDER_COLOR); + g2d.drawRect(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize); } if (componentState != ComponentState.DRAGGING) { Composite oldComposite = g2d.getComposite(); if (alpha < MAX_ALPHA) { - g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, - 1f * alpha / MAX_ALPHA)); + g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha + / MAX_ALPHA)); } g2d.setColor(BODY_COLOR); - g2d.fillRoundRect(x, y, width, height, EDGE_RADIUS, EDGE_RADIUS); + g2d.fill(getBody()); g2d.setComposite(oldComposite); } g2d.setColor(BORDER_COLOR); g2d.setStroke(new BasicStroke()); - g2d.drawRoundRect(x, y, width, height, EDGE_RADIUS, EDGE_RADIUS); + g2d.draw(getBody()); // Draw label. g2d.setFont(Constants.LABEL_FONT); g2d.setColor(componentState == ComponentState.DRAGGING ? BORDER_COLOR : LABEL_COLOR); @@ -188,8 +238,9 @@ public class DIL_IC extends AbstractTransparentComponent { int textHeight = (int) (rect.getHeight()); int textWidth = (int) (rect.getWidth()); // Center text horizontally and vertically - x += (width - textWidth) / 2; - y += (height - textHeight) / 2 + fontMetrics.getAscent(); + Rectangle bounds = getBody().getBounds(); + int x = bounds.x + (bounds.width - textWidth) / 2; + int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent(); g2d.drawString(getName(), x, y); }