From 25cdfd199a1c15644426d6e8b48d404d670e8277 Mon Sep 17 00:00:00 2001 From: bancika Date: Thu, 13 Sep 2012 15:12:36 +0000 Subject: [PATCH] Added connector dot component Zero-sized holes on pads --- .../diylc/components/connectivity/Dot.java | 111 ++++++++++++++++++ .../components/connectivity/SolderPad.java | 35 +++--- 2 files changed, 132 insertions(+), 14 deletions(-) create mode 100644 diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/connectivity/Dot.java diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/connectivity/Dot.java b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/connectivity/Dot.java new file mode 100644 index 00000000..a9b0cf36 --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/connectivity/Dot.java @@ -0,0 +1,111 @@ +package org.diylc.components.connectivity; + +import java.awt.Color; +import java.awt.Graphics2D; +import java.awt.Point; + +import org.diylc.components.AbstractComponent; +import org.diylc.core.ComponentState; +import org.diylc.core.IDIYComponent; +import org.diylc.core.IDrawingObserver; +import org.diylc.core.Project; +import org.diylc.core.VisibilityPolicy; +import org.diylc.core.annotations.BomPolicy; +import org.diylc.core.annotations.ComponentDescriptor; +import org.diylc.core.annotations.EditableProperty; +import org.diylc.core.measures.Size; +import org.diylc.core.measures.SizeUnit; +import org.diylc.utils.Constants; + +@ComponentDescriptor(name = "Dot", category = "Connectivity", author = "Branislav Stojkovic", description = "Connector dot", instanceNamePrefix = "Dot", stretchable = false, zOrder = IDIYComponent.COMPONENT, bomPolicy = BomPolicy.NEVER_SHOW, autoEdit = false) +public class Dot extends AbstractComponent { + + private static final long serialVersionUID = 1L; + + public static Size SIZE = new Size(1d, SizeUnit.mm); + public static Color COLOR = Color.black; + + private Size size = SIZE; + private Color color = COLOR; + private Point point = new Point(0, 0); + + @Override + public void draw(Graphics2D g2d, ComponentState componentState, + boolean outlineMode, Project project, + IDrawingObserver drawingObserver) { + if (checkPointsClipped(g2d.getClip())) { + return; + } + int diameter = getClosestOdd((int) getSize().convertToPixels()); + g2d.setColor(componentState == ComponentState.SELECTED + || componentState == ComponentState.DRAGGING ? SELECTION_COLOR + : color); + g2d.fillOval(point.x - diameter / 2, point.y - diameter / 2, diameter, + diameter); + } + + @Override + public void drawIcon(Graphics2D g2d, int width, int height) { + int diameter = 7 * width / 32; + g2d.setColor(COLOR); + g2d.fillOval((width - diameter) / 2, (height - diameter) / 2, diameter, + diameter); + } + + @EditableProperty + public Size getSize() { + return size; + } + + public void setSize(Size size) { + this.size = size; + } + + @Override + public String getName() { + return super.getName(); + } + + @Override + public int getControlPointCount() { + return 1; + } + + @Override + public boolean isControlPointSticky(int index) { + return true; + } + + @Override + public VisibilityPolicy getControlPointVisibilityPolicy(int index) { + return VisibilityPolicy.NEVER; + } + + @Override + public Point getControlPoint(int index) { + return point; + } + + @Override + public void setControlPoint(Point point, int index) { + this.point.setLocation(point); + } + + @EditableProperty(name = "Color") + public Color getColor() { + return color; + } + + public void setColor(Color color) { + this.color = color; + } + + @Override + public Void getValue() { + return null; + } + + @Override + public void setValue(Void value) { + } +} diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/connectivity/SolderPad.java b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/connectivity/SolderPad.java index 7848e48e..f48a4ded 100644 --- a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/connectivity/SolderPad.java +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/connectivity/SolderPad.java @@ -18,7 +18,7 @@ import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; import org.diylc.utils.Constants; -@ComponentDescriptor(name = "Solder Pad", category = "Connectivity", author = "Branislav Stojkovic", description = "test", instanceNamePrefix = "Pad", stretchable = false, zOrder = IDIYComponent.TRACE + 0.1, bomPolicy = BomPolicy.NEVER_SHOW, autoEdit = false) +@ComponentDescriptor(name = "Solder Pad", category = "Connectivity", author = "Branislav Stojkovic", description = "Copper solder pad, round or square", instanceNamePrefix = "Pad", stretchable = false, zOrder = IDIYComponent.TRACE + 0.1, bomPolicy = BomPolicy.NEVER_SHOW, autoEdit = false) public class SolderPad extends AbstractComponent { private static final long serialVersionUID = 1L; @@ -35,23 +35,29 @@ public class SolderPad extends AbstractComponent { private PCBLayer layer = PCBLayer._1; @Override - public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, - Project project, IDrawingObserver drawingObserver) { + public void draw(Graphics2D g2d, ComponentState componentState, + boolean outlineMode, Project project, + IDrawingObserver drawingObserver) { if (checkPointsClipped(g2d.getClip())) { return; } int diameter = getClosestOdd((int) getSize().convertToPixels()); int holeDiameter = getClosestOdd((int) getHoleSize().convertToPixels()); g2d.setColor(componentState == ComponentState.SELECTED - || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : color); + || componentState == ComponentState.DRAGGING ? SELECTION_COLOR + : color); if (type == Type.ROUND) { - g2d.fillOval(point.x - diameter / 2, point.y - diameter / 2, diameter, diameter); + g2d.fillOval(point.x - diameter / 2, point.y - diameter / 2, + diameter, diameter); } else { - g2d.fillRect(point.x - diameter / 2, point.y - diameter / 2, diameter, diameter); + g2d.fillRect(point.x - diameter / 2, point.y - diameter / 2, + diameter, diameter); + } + if (getHoleSize().getValue() > 0) { + g2d.setColor(Constants.CANVAS_COLOR); + g2d.fillOval(point.x - holeDiameter / 2, + point.y - holeDiameter / 2, holeDiameter, holeDiameter); } - g2d.setColor(Constants.CANVAS_COLOR); - g2d.fillOval(point.x - holeDiameter / 2, point.y - holeDiameter / 2, holeDiameter, - holeDiameter); } @Override @@ -59,10 +65,11 @@ public class SolderPad extends AbstractComponent { int diameter = getClosestOdd(width / 2); int holeDiameter = 5; g2d.setColor(COLOR); - g2d.fillOval((width - diameter) / 2, (height - diameter) / 2, diameter, diameter); + g2d.fillOval((width - diameter) / 2, (height - diameter) / 2, diameter, + diameter); g2d.setColor(Constants.CANVAS_COLOR); - g2d.fillOval((width - holeDiameter) / 2, (height - holeDiameter) / 2, holeDiameter, - holeDiameter); + g2d.fillOval((width - holeDiameter) / 2, (height - holeDiameter) / 2, + holeDiameter, holeDiameter); } @EditableProperty @@ -85,7 +92,7 @@ public class SolderPad extends AbstractComponent { public void setHoleSize(Size holeSize) { this.holeSize = holeSize; } - + @EditableProperty public PCBLayer getLayer() { if (layer == null) { @@ -93,7 +100,7 @@ public class SolderPad extends AbstractComponent { } return layer; } - + public void setLayer(PCBLayer layer) { this.layer = layer; }