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;