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 617573b7..1cfc6249 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml @@ -1,15 +1,15 @@ - metric - true + lastPath + C:\Documents and Settings\Branislav Stojkovic\Desktop zoom 1.0 - lastPath - C:\Documents and Settings\Branislav Stojkovic\workspace\DIYLC\templates + metric + true default.org.diylc.components.misc.Label:Color 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 a54cc0a7..2f48c856 100644 Binary files a/ diy-layout-creator --username bancika@gmail.com/DIYLC/library/main.jar and b/ diy-layout-creator --username bancika@gmail.com/DIYLC/library/main.jar differ diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedComponent.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedComponent.java index 71d5cb22..72d1b3f7 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedComponent.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedComponent.java @@ -35,8 +35,8 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp public static Size LEAD_THICKNESS = new Size(0.6d, SizeUnit.mm); public static Size DEFAULT_SIZE = new Size(1d, SizeUnit.in); + protected Size length; protected Size width; - protected Size height; protected Point[] points = new Point[] { new Point((int) (-DEFAULT_SIZE.convertToPixels() / 2), 0), new Point(DEFAULT_SIZE.convertToPixels() / 2, 0) }; @@ -48,8 +48,8 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp protected AbstractLeadedComponent() { super(); try { + this.length = getDefaultLength().clone(); this.width = getDefaultWidth().clone(); - this.height = getDefaultHeight().clone(); } catch (CloneNotSupportedException e) { // This should never happen because Size supports cloning. } catch (NullPointerException e) { @@ -145,16 +145,16 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp } /** - * @return default component width. + * @return default component length. */ - protected abstract Size getDefaultWidth(); + protected abstract Size getDefaultLength(); /** - * Returns default component height. + * Returns default component width. * * @return */ - protected abstract Size getDefaultHeight(); + protected abstract Size getDefaultWidth(); /** * @return shape that represents component body. Shape should not be @@ -220,7 +220,16 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp this.borderColor = borderColor; } - @EditableProperty(defaultable = true) + @EditableProperty(name = "Length", defaultable = true) + public Size getLength() { + return length; + } + + public void setLength(Size length) { + this.length = length; + } + + @EditableProperty(name = "Width", defaultable = true) public Size getWidth() { return width; } @@ -229,15 +238,6 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp this.width = width; } - @EditableProperty(defaultable = true) - public Size getHeight() { - return height; - } - - public void setHeight(Size height) { - this.height = height; - } - @EditableProperty public Display getDisplay() { return display; diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java index 31b1c7ac..94c26e1c 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java @@ -50,7 +50,7 @@ public class Presenter implements IPlugInPort { private static final Logger LOG = Logger.getLogger(Presenter.class); - public static final VersionNumber CURRENT_VERSION = new VersionNumber(3, 0, 4); + public static final VersionNumber CURRENT_VERSION = new VersionNumber(3, 0, 5); public static final String DEFAULTS_KEY_PREFIX = "default."; public static final String METRIC_KEY = "metric"; diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ProjectFileManager.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ProjectFileManager.java index dd1ecbca..2fe56b43 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ProjectFileManager.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ProjectFileManager.java @@ -260,8 +260,8 @@ public class ProjectFileManager { } catch (Exception e) { LOG.debug("Could not set value of " + nameAttr); } - resistor.setWidth(new Size(6d, SizeUnit.mm)); - resistor.setHeight(new Size(2d, SizeUnit.mm)); + resistor.setLength(new Size(6d, SizeUnit.mm)); + resistor.setWidth(new Size(2d, SizeUnit.mm)); resistor.setControlPoint(point1, 0); resistor.setControlPoint(point2, 1); component = resistor; @@ -274,8 +274,8 @@ public class ProjectFileManager { } catch (Exception e) { LOG.debug("Could not set value of " + nameAttr); } - capacitor.setWidth(new Size(6d, SizeUnit.mm)); - capacitor.setHeight(new Size(2d, SizeUnit.mm)); + capacitor.setLength(new Size(6d, SizeUnit.mm)); + capacitor.setWidth(new Size(2d, SizeUnit.mm)); capacitor.setControlPoint(point1, 0); capacitor.setControlPoint(point2, 1); component = capacitor; @@ -290,13 +290,13 @@ public class ProjectFileManager { } String sizeAttr = node.getAttributes().getNamedItem("Size").getNodeValue(); if (sizeAttr.equalsIgnoreCase("small")) { - capacitor.setWidth(new Size(3d, SizeUnit.mm)); + capacitor.setLength(new Size(3d, SizeUnit.mm)); } else if (sizeAttr.equalsIgnoreCase("medium")) { - capacitor.setWidth(new Size(5d, SizeUnit.mm)); + capacitor.setLength(new Size(5d, SizeUnit.mm)); } else if (sizeAttr.equalsIgnoreCase("large")) { - capacitor.setWidth(new Size(7d, SizeUnit.mm)); + capacitor.setLength(new Size(7d, SizeUnit.mm)); } else { - capacitor.setWidth(new Size(4d, SizeUnit.mm)); + capacitor.setLength(new Size(4d, SizeUnit.mm)); } capacitor.setControlPoint(point1, 0); capacitor.setControlPoint(point2, 1); @@ -310,8 +310,8 @@ public class ProjectFileManager { } catch (Exception e) { LOG.debug("Could not set value of " + nameAttr); } - capacitor.setWidth(new Size(6d, SizeUnit.mm)); - capacitor.setHeight(new Size(2d, SizeUnit.mm)); + capacitor.setLength(new Size(6d, SizeUnit.mm)); + capacitor.setWidth(new Size(2d, SizeUnit.mm)); capacitor.setControlPoint(point1, 0); capacitor.setControlPoint(point2, 1); component = capacitor; diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/update.xml b/ diy-layout-creator --username bancika@gmail.com/DIYLC/update.xml index 7132c0a9..610cce5b 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/update.xml +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/update.xml @@ -102,6 +102,10 @@ NEW_FEATURE Added TO-220 transistor + + NEW_FEATURE + Added LED + http://code.google.com/p/diy-layout-creator/downloads/list diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/lib/diylc.jar b/ diy-layout-creator --username bancika@gmail.com/Library/lib/diylc.jar index 1f1d9673..21dbaea5 100644 Binary files a/ diy-layout-creator --username bancika@gmail.com/Library/lib/diylc.jar and b/ diy-layout-creator --username bancika@gmail.com/Library/lib/diylc.jar differ diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CopperTrace.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CopperTrace.java index dec9f8cb..fadfe010 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CopperTrace.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CopperTrace.java @@ -88,14 +88,14 @@ public class CopperTrace extends AbstractLeadedComponent { @Deprecated @Override - public Size getWidth() { - return super.getWidth(); + public Size getLength() { + return super.getLength(); } @Deprecated @Override - public Size getHeight() { - return super.getHeight(); + public Size getWidth() { + return super.getWidth(); } @Deprecated @@ -115,12 +115,12 @@ public class CopperTrace extends AbstractLeadedComponent { } @Override - protected Size getDefaultHeight() { + protected Size getDefaultWidth() { return null; } @Override - protected Size getDefaultWidth() { + protected Size getDefaultLength() { return null; } } diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/Jumper.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/Jumper.java index fb6b4296..13d9139f 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/Jumper.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/Jumper.java @@ -53,14 +53,14 @@ public class Jumper extends AbstractLeadedComponent { @Deprecated @Override - public Size getWidth() { - return super.getWidth(); + public Size getLength() { + return super.getLength(); } @Deprecated @Override - public Size getHeight() { - return super.getHeight(); + public Size getWidth() { + return super.getWidth(); } @Deprecated @@ -80,12 +80,12 @@ public class Jumper extends AbstractLeadedComponent { } @Override - protected Size getDefaultHeight() { + protected Size getDefaultWidth() { return null; } @Override - protected Size getDefaultWidth() { + protected Size getDefaultLength() { return null; } } diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/AxialFilmCapacitor.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/AxialFilmCapacitor.java index ce604209..e9854276 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/AxialFilmCapacitor.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/AxialFilmCapacitor.java @@ -53,18 +53,18 @@ public class AxialFilmCapacitor extends AbstractLeadedComponent { } @Override - protected Size getDefaultHeight() { + protected Size getDefaultWidth() { return DEFAULT_HEIGHT; } @Override - protected Size getDefaultWidth() { + protected Size getDefaultLength() { return DEFAULT_WIDTH; } @Override protected Shape getBodyShape() { - return new Rectangle2D.Double(0f, 0f, getWidth().convertToPixels(), - getClosestOdd(getHeight().convertToPixels())); + return new Rectangle2D.Double(0f, 0f, getLength().convertToPixels(), + getClosestOdd(getWidth().convertToPixels())); } } diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/ElectrolyticRadial.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/ElectrolyticRadial.java index 6e66ec64..b63d2de4 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/ElectrolyticRadial.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/ElectrolyticRadial.java @@ -53,7 +53,7 @@ public class ElectrolyticRadial extends AbstractLeadedComponent { @Override protected void decorateComponentBody(Graphics2D g2d) { - int totalDiameter = getClosestOdd(getWidth().convertToPixels()); + int totalDiameter = getClosestOdd(getLength().convertToPixels()); int coverDiameter = getClosestOdd(totalDiameter * 3 / 4); g2d.setColor(coverColor); int position = (totalDiameter - coverDiameter) / 2; @@ -66,26 +66,26 @@ public class ElectrolyticRadial extends AbstractLeadedComponent { } @Override - protected Size getDefaultHeight() { + protected Size getDefaultWidth() { return null; } @Deprecated @Override - public Size getHeight() { - return super.getHeight(); + public Size getWidth() { + return super.getWidth(); } @Override - protected Size getDefaultWidth() { + protected Size getDefaultLength() { // We'll reuse width property to set the diameter. return DEFAULT_SIZE; } @EditableProperty(name = "Diameter") @Override - public Size getWidth() { - return super.getWidth(); + public Size getLength() { + return super.getLength(); } @EditableProperty(name = "Cover") @@ -99,7 +99,7 @@ public class ElectrolyticRadial extends AbstractLeadedComponent { @Override protected Shape getBodyShape() { - return new Ellipse2D.Double(0f, 0f, getClosestOdd(getWidth().convertToPixels()), - getClosestOdd(getWidth().convertToPixels())); + return new Ellipse2D.Double(0f, 0f, getClosestOdd(getLength().convertToPixels()), + getClosestOdd(getLength().convertToPixels())); } } diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/RadialCeramicDiskCapacitor.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/RadialCeramicDiskCapacitor.java index 898a4ab4..a08da93c 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/RadialCeramicDiskCapacitor.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/RadialCeramicDiskCapacitor.java @@ -53,18 +53,18 @@ public class RadialCeramicDiskCapacitor extends AbstractLeadedComponent { } @Override - protected Size getDefaultHeight() { + protected Size getDefaultWidth() { return DEFAULT_HEIGHT; } @Override - protected Size getDefaultWidth() { + protected Size getDefaultLength() { return DEFAULT_WIDTH; } @Override protected Shape getBodyShape() { - double radius = getHeight().convertToPixels() * 0.7; - return new RoundRectangle2D.Double(0f, 0f, getWidth().convertToPixels(), - getClosestOdd(getHeight().convertToPixels()), radius, radius); + double radius = getWidth().convertToPixels() * 0.7; + return new RoundRectangle2D.Double(0f, 0f, getLength().convertToPixels(), + getClosestOdd(getWidth().convertToPixels()), radius, radius); } } diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/Resistor.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/Resistor.java index ec25540e..22043b89 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/Resistor.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/Resistor.java @@ -56,12 +56,12 @@ public class Resistor extends AbstractLeadedComponent { } @Override - protected Size getDefaultHeight() { + protected Size getDefaultWidth() { return DEFAULT_HEIGHT; } @Override - protected Size getDefaultWidth() { + protected Size getDefaultLength() { return DEFAULT_WIDTH; } @@ -76,8 +76,8 @@ public class Resistor extends AbstractLeadedComponent { @Override protected Shape getBodyShape() { - return new Rectangle2D.Double(0f, 0f, getWidth().convertToPixels(), - getClosestOdd(getHeight().convertToPixels())); + return new Rectangle2D.Double(0f, 0f, getLength().convertToPixels(), + getClosestOdd(getWidth().convertToPixels())); } @Override @@ -86,7 +86,7 @@ public class Resistor extends AbstractLeadedComponent { if (colorCode == ResistorColorCode.NONE) { return; } - int height = getClosestOdd(getHeight().convertToPixels()); + int height = getClosestOdd(getWidth().convertToPixels()); Color[] bands = value.getColorCode(colorCode); int x = 4; g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(2)); diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DiodePlastic.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DiodePlastic.java index 493cb3c5..16a74b5a 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DiodePlastic.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DiodePlastic.java @@ -59,27 +59,27 @@ public class DiodePlastic extends AbstractLeadedComponent { } @Override - protected Size getDefaultHeight() { + protected Size getDefaultWidth() { return DEFAULT_HEIGHT; } @Override - protected Size getDefaultWidth() { + protected Size getDefaultLength() { return DEFAULT_WIDTH; } @Override protected Shape getBodyShape() { - return new Rectangle2D.Double(0f, 0f, getWidth().convertToPixels(), - getClosestOdd(getHeight().convertToPixels())); + return new Rectangle2D.Double(0f, 0f, getLength().convertToPixels(), + getClosestOdd(getWidth().convertToPixels())); } @Override protected void decorateComponentBody(Graphics2D g2d) { g2d.setColor(markerColor); - int width = getWidth().convertToPixels(); + int width = getLength().convertToPixels(); int markerWidth = MARKER_WIDTH.convertToPixels(); - g2d.fillRect(width - markerWidth, 0, markerWidth, getClosestOdd(getHeight() + g2d.fillRect(width - markerWidth, 0, markerWidth, getClosestOdd(getWidth() .convertToPixels())); } diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/LED.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/LED.java new file mode 100644 index 00000000..144472e8 --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/LED.java @@ -0,0 +1,104 @@ +package org.diylc.components.semiconductors; + +import java.awt.Color; +import java.awt.Graphics2D; +import java.awt.Shape; +import java.awt.geom.Area; +import java.awt.geom.Ellipse2D; +import java.awt.geom.Rectangle2D; + +import org.diylc.common.ObjectCache; +import org.diylc.components.AbstractLeadedComponent; +import org.diylc.core.CreationMethod; +import org.diylc.core.IDIYComponent; +import org.diylc.core.annotations.ComponentDescriptor; +import org.diylc.core.annotations.EditableProperty; +import org.diylc.core.measures.Size; +import org.diylc.core.measures.SizeUnit; + +@ComponentDescriptor(name = "LED", author = "Branislav Stojkovic", category = "Semiconductors", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "D", description = "Light Emitting Diode", zOrder = IDIYComponent.COMPONENT) +public class LED extends AbstractLeadedComponent { + + private static final long serialVersionUID = 1L; + + public static Size DEFAULT_SIZE = new Size(5d, SizeUnit.mm); + public static Color BODY_COLOR = Color.decode("#5DFC0A"); + public static Color BORDER_COLOR = BODY_COLOR.darker(); + + private String value = ""; + + public LED() { + super(); + this.bodyColor = BODY_COLOR; + this.borderColor = BORDER_COLOR; + } + + @EditableProperty + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public void drawIcon(Graphics2D g2d, int width, int height) { + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1)); + g2d.rotate(-Math.PI / 4, width / 2, height / 2); + g2d.setColor(LEAD_COLOR); + g2d.drawLine(0, height / 2, width, height / 2); + + int margin = 4 * width / 32; + Area area = new Area(new Ellipse2D.Double(margin, margin, width - 2 * margin, width - 2 + * margin)); + area.intersect(new Area(new Rectangle2D.Double(margin, margin, width - 5 * margin / 2, + width - 2 * margin))); + g2d.setColor(BODY_COLOR); + g2d.fill(area); + g2d.setColor(BORDER_COLOR); + g2d.draw(area); + g2d + .drawOval(margin * 2 - 1, margin * 2 - 1, width - 4 * margin + 2, width - 4 + * margin + 2); + } + + @Override + protected Size getDefaultWidth() { + return DEFAULT_SIZE; + } + + @Override + protected Size getDefaultLength() { + return DEFAULT_SIZE; + } + + @Override + protected Shape getBodyShape() { + int size = getClosestOdd((int) (getLength().convertToPixels() * 1.2)); + Area area = new Area(new Ellipse2D.Double(0, 0, size, size)); + area.intersect(new Area(new Rectangle2D.Double(0, 0, getLength().convertToPixels() * 1.15, + size))); + return area; + } + + @Override + protected void decorateComponentBody(Graphics2D g2d) { + int size = getClosestOdd((int) (getLength().convertToPixels() * 1.2)); + int innerSize = getClosestOdd(getLength().convertToPixels()); + int x = (size - innerSize) / 2; + Shape s = new Ellipse2D.Double(x, x, innerSize, innerSize); + g2d.setColor(getBorderColor()); + g2d.draw(s); + } + + @EditableProperty(name = "Size") + @Override + public Size getLength() { + return super.getLength(); + } + + @Override + public Size getWidth() { + return super.getWidth(); + } +} diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/TransistorTO92.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/TransistorTO92.java index 303a0200..4ed41b56 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/TransistorTO92.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/TransistorTO92.java @@ -207,7 +207,9 @@ public class TransistorTO92 extends AbstractTransparentComponent { int margin = 3 * width / 32; Area area = new Area(new Ellipse2D.Double(margin / 2, margin, width - 2 * margin, width - 2 * margin)); - area.subtract(new Area(new Rectangle2D.Double(0, 0, 2 * margin, height))); + // area.subtract(new Area(new Rectangle2D.Double(0, 0, 2 * margin, + // height))); + area.intersect(new Area(new Rectangle2D.Double(2 * margin, 0, width, height))); g2d.setColor(BODY_COLOR); g2d.fill(area); g2d.setColor(BORDER_COLOR);