From 4b2242336a79c5230918d731036c6d9be33376d9 Mon Sep 17 00:00:00 2001 From: bancika Date: Fri, 24 Aug 2012 11:12:35 +0000 Subject: [PATCH] Multi-layer PCB support --- .../diylc-library/lib/diylc-core.jar | Bin 201208 -> 201928 bytes .../components/connectivity/CopperTrace.java | 14 ++++++++++++++ .../components/connectivity/CurvedTrace.java | 14 ++++++++++++++ .../components/connectivity/GroundFill.java | 15 +++++++++++++++ .../components/connectivity/SolderPad.java | 14 ++++++++++++++ 5 files changed, 57 insertions(+) diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-library/lib/diylc-core.jar b/ diy-layout-creator --username bancika@gmail.com/diylc-library/lib/diylc-core.jar index d5a9688e725ccef2b2333f8388896a70ffe5c3cf..557f5e1ecf84eb15280f30d118cba971203ab9d6 100644 GIT binary patch delta 21882 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 { private Color leadColor = COLOR; private Size thickness = THICKNESS; + private PCBLayer layer = PCBLayer._1; @Override public void drawIcon(Graphics2D g2d, int width, int height) { @@ -63,6 +65,18 @@ public class CopperTrace extends AbstractLeadedComponent { this.thickness = thickness; } + @EditableProperty + public PCBLayer getLayer() { + if (layer == null) { + layer = PCBLayer._1; + } + return layer; + } + + public void setLayer(PCBLayer layer) { + this.layer = layer; + } + @Override protected int getLeadThickness() { return (int) getThickness().convertToPixels(); diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/connectivity/CurvedTrace.java b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/connectivity/CurvedTrace.java index 25669405..95daa681 100644 --- a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/connectivity/CurvedTrace.java +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/connectivity/CurvedTrace.java @@ -5,6 +5,7 @@ import java.awt.Graphics2D; import java.awt.geom.CubicCurve2D; import org.diylc.common.ObjectCache; +import org.diylc.common.PCBLayer; import org.diylc.components.AbstractCurvedComponent; import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; @@ -23,6 +24,7 @@ public class CurvedTrace extends AbstractCurvedComponent { public static Size SIZE = new Size(1d, SizeUnit.mm); protected Size size = SIZE; + private PCBLayer layer = PCBLayer._1; @Override protected Color getDefaultColor() { @@ -47,6 +49,18 @@ public class CurvedTrace extends AbstractCurvedComponent { public void setThickness(Size size) { this.size = size; } + + @EditableProperty + public PCBLayer getLayer() { + if (layer == null) { + layer = PCBLayer._1; + } + return layer; + } + + public void setLayer(PCBLayer layer) { + this.layer = layer; + } @Override public Void getValue() { diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/connectivity/GroundFill.java b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/connectivity/GroundFill.java index c76b601a..fcc38088 100644 --- a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/connectivity/GroundFill.java +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/connectivity/GroundFill.java @@ -6,6 +6,7 @@ import java.awt.Point; import java.util.Arrays; import org.diylc.common.ObjectCache; +import org.diylc.common.PCBLayer; import org.diylc.components.AbstractComponent; import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; @@ -36,6 +37,7 @@ public class GroundFill extends AbstractComponent { protected Color color = COLOR; protected PointCount pointCount = PointCount._4; + private PCBLayer layer = PCBLayer._1; @Override public void draw(Graphics2D g2d, ComponentState componentState, @@ -113,6 +115,19 @@ public class GroundFill extends AbstractComponent { } this.pointCount = pointCount; } + + @EditableProperty + public PCBLayer getLayer() { + if (layer == null) { + layer = PCBLayer._1; + } + return layer; + } + + public void setLayer(PCBLayer layer) { + this.layer = layer; + } + @Deprecated @Override 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 113ed914..7848e48e 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 @@ -4,6 +4,7 @@ import java.awt.Color; import java.awt.Graphics2D; import java.awt.Point; +import org.diylc.common.PCBLayer; import org.diylc.components.AbstractComponent; import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; @@ -31,6 +32,7 @@ public class SolderPad extends AbstractComponent { private Point point = new Point(0, 0); private Type type = Type.ROUND; private Size holeSize = HOLE_SIZE; + private PCBLayer layer = PCBLayer._1; @Override public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, @@ -83,6 +85,18 @@ public class SolderPad extends AbstractComponent { public void setHoleSize(Size holeSize) { this.holeSize = holeSize; } + + @EditableProperty + public PCBLayer getLayer() { + if (layer == null) { + layer = PCBLayer._1; + } + return layer; + } + + public void setLayer(PCBLayer layer) { + this.layer = layer; + } @Override public String getName() {