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 51a75af5..02f4b9f6 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 - - metric - true - lastPath C:\Documents and Settings\Branislav Stojkovic\Desktop + + metric + true + 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 473d7a4d..c152b603 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/AbstractCurvedComponent.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractCurvedComponent.java new file mode 100644 index 00000000..e89f5e6f --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractCurvedComponent.java @@ -0,0 +1,106 @@ +package org.diylc.components; + +import java.awt.AlphaComposite; +import java.awt.BasicStroke; +import java.awt.Color; +import java.awt.Composite; +import java.awt.Graphics2D; +import java.awt.Point; +import java.awt.geom.CubicCurve2D; + +import org.diylc.core.ComponentState; +import org.diylc.core.Project; +import org.diylc.core.annotations.EditableProperty; +import org.diylc.utils.Constants; + +public abstract class AbstractCurvedComponent extends AbstractTransparentComponent { + + private static final long serialVersionUID = 1L; + + public static Color GUIDELINE_COLOR = Color.blue; + + protected Point[] controlPoints = new Point[] { + new Point(-5 * Constants.GRID, -5 * Constants.GRID), new Point(0, -3 * Constants.GRID), + new Point(0, 3 * Constants.GRID), new Point(5 * Constants.GRID, 5 * Constants.GRID) }; + + protected Color color = getDefaultColor(); + + /** + * Draws the specified curve onto graphics. + * + * @param curve + * @param g2d + */ + protected abstract void drawCurve(CubicCurve2D curve, Graphics2D g2d); + + protected abstract Color getDefaultColor(); + + @Override + public void drawIcon(Graphics2D g2d, int width, int height) { + g2d.setColor(getDefaultColor().darker()); + g2d.setStroke(new BasicStroke(3)); + CubicCurve2D curve = new CubicCurve2D.Double(1, height - 1, width / 4, height / 3, + 3 * width / 4, 2 * height / 3, width - 1, 1); + g2d.draw(curve); + g2d.setColor(getDefaultColor()); + g2d.setStroke(new BasicStroke(1)); + g2d.draw(curve); + } + + @Override + public void draw(Graphics2D g2d, ComponentState componentState, Project project) { + if (componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING) { + g2d.setStroke(new BasicStroke(1, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER, 10f, + new float[] { 2f, 3f }, 5f)); + g2d.setColor(GUIDELINE_COLOR); + g2d.drawLine(controlPoints[0].x, controlPoints[0].y, controlPoints[1].x, + controlPoints[1].y); + g2d.drawLine(controlPoints[1].x, controlPoints[1].y, controlPoints[2].x, + controlPoints[2].y); + g2d.drawLine(controlPoints[2].x, controlPoints[2].y, controlPoints[3].x, + controlPoints[3].y); + } + CubicCurve2D curve = new CubicCurve2D.Double(controlPoints[0].x, controlPoints[0].y, + controlPoints[1].x, controlPoints[1].y, controlPoints[2].x, controlPoints[2].y, + controlPoints[3].x, controlPoints[3].y); + + Composite oldComposite = g2d.getComposite(); + if (alpha < MAX_ALPHA) { + g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha + / MAX_ALPHA)); + } + // g2d.setColor(color.darker()); + // g2d.setStroke(new BasicStroke(thickness)); + // g2d.draw(path); + // g2d.setColor(color); + // g2d.setStroke(new BasicStroke(thickness - 2)); + // g2d.draw(path); + drawCurve(curve, g2d); + g2d.setComposite(oldComposite); + } + + @Override + public int getControlPointCount() { + return controlPoints.length; + } + + @Override + public Point getControlPoint(int index) { + return controlPoints[index]; + } + + @Override + public void setControlPoint(Point point, int index) { + controlPoints[index].setLocation(point); + } + + @EditableProperty + public Color getColor() { + return color; + } + + public void setColor(Color color) { + this.color = color; + } + +} diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IDIYComponent.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IDIYComponent.java index b12103ba..916429db 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IDIYComponent.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IDIYComponent.java @@ -35,7 +35,7 @@ public interface IDIYComponent extends Serializable { public static final int ABOVE_CHASSIS = 3; public static final int BELOW_BOARD = 4; public static final int BOARD = 5; - public static final int ABOVE_BOARD = 5; + public static final int ABOVE_BOARD = 6; public static final int COMPONENT = 7; public static final int ABOVE_COMPONENT = 8; 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 f5c9f191..7f4aefd9 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 628bc0cf..50750f39 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 @@ -12,7 +12,7 @@ import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; -@ComponentDescriptor(name = "Copper Trace", author = "Branislav Stojkovic", category = "Connectivity", instanceNamePrefix = "J", description = "Jumper wire", zOrder = IDIYComponent.ABOVE_BOARD) +@ComponentDescriptor(name = "Copper Trace", author = "Branislav Stojkovic", category = "Connectivity", instanceNamePrefix = "CT", description = "", zOrder = IDIYComponent.ABOVE_BOARD) public class CopperTrace extends AbstractLeadedDIYComponent { private static final long serialVersionUID = 1L; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CurvedTrace.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CurvedTrace.java new file mode 100644 index 00000000..9b062c10 --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CurvedTrace.java @@ -0,0 +1,48 @@ +package org.diylc.components.connectivity; + +import java.awt.BasicStroke; +import java.awt.Color; +import java.awt.Graphics2D; +import java.awt.geom.CubicCurve2D; + +import org.diylc.components.AbstractCurvedComponent; +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 = "Curved Trace", author = "Branislav Stojkovic", category = "Connectivity", instanceNamePrefix = "CT", description = "Curved copper trace with two control points", zOrder = IDIYComponent.ABOVE_BOARD) +public class CurvedTrace extends AbstractCurvedComponent { + + private static final long serialVersionUID = 1L; + + public static Color COLOR = Color.black; + public static Size SIZE = new Size(1d, SizeUnit.mm); + + protected Size size = SIZE; + + @Override + protected Color getDefaultColor() { + return COLOR; + } + + @Override + protected void drawCurve(CubicCurve2D curve, Graphics2D g2d) { + int thickness = size.convertToPixels(); + g2d.setStroke(new BasicStroke(thickness)); + g2d.setColor(color); + g2d.draw(curve); + } + + @EditableProperty(name = "Width") + @Override + public Size getValue() { + return size; + } + + @Override + public void setValue(Size value) { + this.size = value; + } +} diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/HookupWire.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/HookupWire.java index db4b59d5..194ab1be 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/HookupWire.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/HookupWire.java @@ -1,97 +1,41 @@ package org.diylc.components.connectivity; -import java.awt.AlphaComposite; import java.awt.BasicStroke; import java.awt.Color; -import java.awt.Composite; import java.awt.Graphics2D; -import java.awt.Point; import java.awt.geom.CubicCurve2D; -import java.awt.geom.Path2D; -import org.diylc.components.AbstractTransparentComponent; -import org.diylc.core.ComponentState; +import org.diylc.components.AbstractCurvedComponent; import org.diylc.core.IDIYComponent; -import org.diylc.core.Project; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; import org.diylc.utils.Constants; -@ComponentDescriptor(name = "Hookup wire", author = "Branislav Stojkovic", category = "Connectivity", instanceNamePrefix = "W", description = "Jumper wire", zOrder = IDIYComponent.ABOVE_COMPONENT) -public class HookupWire extends AbstractTransparentComponent { +@ComponentDescriptor(name = "Hookup Wire", author = "Branislav Stojkovic", category = "Connectivity", instanceNamePrefix = "W", description = "Flexible wire with two control points", zOrder = IDIYComponent.ABOVE_COMPONENT) +public class HookupWire extends AbstractCurvedComponent { private static final long serialVersionUID = 1L; - public static Color GUIDELINE_COLOR = Color.blue; public static Color COLOR = Color.green; public static double INSULATION_THICKNESS_PCT = 0.3; - private Point[] controlPoints = new Point[] { - new Point(-5 * Constants.GRID, -5 * Constants.GRID), new Point(0, -3 * Constants.GRID), - new Point(0, 3 * Constants.GRID), new Point(5 * Constants.GRID, 5 * Constants.GRID) }; - - private AWG value = AWG._22; - private Color color = COLOR; - + protected AWG value = AWG._22; + @Override - public void drawIcon(Graphics2D g2d, int width, int height) { - g2d.setColor(COLOR.darker()); - g2d.setStroke(new BasicStroke(3)); - CubicCurve2D curve = new CubicCurve2D.Double(1, height - 1, width / 4, height / 3, - 3 * width / 4, 2 * height / 3, width - 1, 1); - g2d.draw(curve); - g2d.setColor(COLOR); - g2d.setStroke(new BasicStroke(1)); - g2d.draw(curve); + protected Color getDefaultColor() { + return COLOR; } - + @Override - public void draw(Graphics2D g2d, ComponentState componentState, Project project) { - if (componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING) { - g2d.setStroke(new BasicStroke(1, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER, 10f, - new float[] { 2f, 3f }, 5f)); - g2d.setColor(GUIDELINE_COLOR); - g2d.drawLine(controlPoints[0].x, controlPoints[0].y, controlPoints[1].x, - controlPoints[1].y); - g2d.drawLine(controlPoints[1].x, controlPoints[1].y, controlPoints[2].x, - controlPoints[2].y); - g2d.drawLine(controlPoints[2].x, controlPoints[2].y, controlPoints[3].x, - controlPoints[3].y); - } + protected void drawCurve(CubicCurve2D curve, Graphics2D g2d) { int thickness = (int) (Math.pow(Math.E, -1.12436 - 0.11594 * value.getValue()) * Constants.PIXELS_PER_INCH * (1 + 2 * INSULATION_THICKNESS_PCT)); - Path2D path = new Path2D.Double(); - path.moveTo(controlPoints[0].x, controlPoints[0].y); - path.curveTo(controlPoints[1].x, controlPoints[1].y, controlPoints[2].x, - controlPoints[2].y, controlPoints[3].x, controlPoints[3].y); - - Composite oldComposite = g2d.getComposite(); - if (alpha < MAX_ALPHA) { - g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha - / MAX_ALPHA)); - } g2d.setColor(color.darker()); g2d.setStroke(new BasicStroke(thickness)); - g2d.draw(path); + g2d.draw(curve); g2d.setColor(color); g2d.setStroke(new BasicStroke(thickness - 2)); - g2d.draw(path); - g2d.setComposite(oldComposite); - } - - @Override - public int getControlPointCount() { - return controlPoints.length; - } - - @Override - public Point getControlPoint(int index) { - return controlPoints[index]; - } - - @Override - public void setControlPoint(Point point, int index) { - controlPoints[index].setLocation(point); + g2d.draw(curve); } @EditableProperty(name = "AWG") @@ -104,13 +48,4 @@ public class HookupWire extends AbstractTransparentComponent { public void setValue(AWG value) { this.value = value; } - - @EditableProperty - public Color getColor() { - return color; - } - - public void setColor(Color color) { - this.color = color; - } } 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 4c829375..faa418a6 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 @@ -10,7 +10,7 @@ import org.diylc.core.IDIYComponent; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.measures.Size; -@ComponentDescriptor(name = "Jumper", author = "Branislav Stojkovic", category = "Connectivity", instanceNamePrefix = "J", description = "Jumper wire", zOrder = IDIYComponent.ABOVE_BOARD) +@ComponentDescriptor(name = "Jumper", author = "Branislav Stojkovic", category = "Connectivity", instanceNamePrefix = "J", description = "", zOrder = IDIYComponent.ABOVE_BOARD) public class Jumper extends AbstractLeadedDIYComponent { private static final long serialVersionUID = 1L;