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 8c356a55..5d599eb5 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/AbstractComponent.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractComponent.java index f1a1e39f..32ee99d7 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractComponent.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractComponent.java @@ -32,4 +32,15 @@ public abstract class AbstractComponent implements IDIYComponent { public String toString() { return name; } + + /** + * Returns the closest odd number, i.e. x when x is odd, or x + 1 when x is + * even. + * + * @param x + * @return + */ + protected int getClosestOdd(int x) { + return (x / 2) * 2 + 1; + } } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/measures/Size.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/measures/Size.java index 759f20a4..9cf1701d 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/measures/Size.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/measures/Size.java @@ -18,7 +18,9 @@ public class Size extends AbstractMeasure { public int convertToPixels() { double factor = getUnit().getFactor() / SizeUnit.in.getFactor(); - return (int) Math.round(factor * Constants.PIXELS_PER_INCH * getValue()); + int grids = (int) (factor * getValue() * Constants.GRIDS_PER_INCH); + double remainder = (factor * getValue() * Constants.GRIDS_PER_INCH) - grids; + return (int) Math.round(Constants.GRID * (grids + remainder)); } @Override diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/gui/MainFrame.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/gui/MainFrame.java index 1a4fb760..9882310b 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/gui/MainFrame.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/gui/MainFrame.java @@ -12,7 +12,6 @@ import java.util.Map; import javax.swing.Action; import javax.swing.BoxLayout; -import javax.swing.Icon; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JMenu; diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/gui/editor/FieldEditorFactory.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/gui/editor/FieldEditorFactory.java index 5b230b7e..104ebf0d 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/gui/editor/FieldEditorFactory.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/gui/editor/FieldEditorFactory.java @@ -3,11 +3,16 @@ package org.diylc.gui.editor; import java.awt.Color; import java.awt.Component; +import javax.swing.JLabel; + +import org.apache.log4j.Logger; import org.diylc.common.PropertyWrapper; import org.diylc.core.measures.AbstractMeasure; public class FieldEditorFactory { + private static final Logger LOG = Logger.getLogger(FieldEditorFactory.class); + public static Component createFieldEditor(PropertyWrapper property) { if (property.getType().equals(String.class)) { StringEditor editor = new StringEditor(property); @@ -30,6 +35,7 @@ public class FieldEditorFactory { ByteEditor byteEditor = new ByteEditor(property); return byteEditor; } - return null; + LOG.error("Unrecognized parameter type: " + property.getType().getName()); + return new JLabel("Unrecognized"); } } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/utils/Constants.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/utils/Constants.java index 61ad4427..ba44976b 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/utils/Constants.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/utils/Constants.java @@ -12,8 +12,9 @@ import org.diylc.core.measures.SizeUnit; public class Constants { public static final int PIXELS_PER_INCH = Toolkit.getDefaultToolkit().getScreenResolution(); - public static Size GRID_SIZE = new Size(0.1d, SizeUnit.in); - public static final int GRID = GRID_SIZE.convertToPixels(); + public static int GRIDS_PER_INCH = 10; + public static Size GRID_SIZE = new Size(1d / GRIDS_PER_INCH, SizeUnit.in); + public static final int GRID = 10; public static Color CANVAS_COLOR = Color.white; public static Color GRID_COLOR = new Color(240, 240, 240); 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 b09d6475..8ccee306 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/boards/PerfBoard.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/PerfBoard.java index a13b7838..1b669144 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/PerfBoard.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/PerfBoard.java @@ -1,7 +1,6 @@ package org.diylc.components.boards; import java.awt.AlphaComposite; -import java.awt.BasicStroke; import java.awt.Color; import java.awt.Composite; import java.awt.Graphics2D; @@ -27,7 +26,7 @@ public class PerfBoard extends AbstractBoard { private static Size SPACING = new Size(0.1d, SizeUnit.in); private static Size PAD_SIZE = new Size(0.08d, SizeUnit.in); - private static Size HOLE_SIZE = new Size(0.8d, SizeUnit.mm); + private static Size HOLE_SIZE = new Size(0.7d, SizeUnit.mm); // private Area copperArea; private Size spacing = SPACING; @@ -53,21 +52,20 @@ public class PerfBoard extends AbstractBoard { / MAX_ALPHA)); } Point p = new Point(controlPoints[0]); - int radius = PAD_SIZE.convertToPixels() / 2; - int holeRadius = HOLE_SIZE.convertToPixels() / 2; - g2d.setStroke(new BasicStroke(radius)); + int diameter = getClosestOdd(PAD_SIZE.convertToPixels()); + int holeDiameter = getClosestOdd(HOLE_SIZE.convertToPixels()); + int spacing = this.spacing.convertToPixels(); - while (p.y < controlPoints[1].y - spacing.convertToPixels()) { + while (p.y < controlPoints[1].y - spacing) { p.x = controlPoints[0].x; - p.y += spacing.convertToPixels(); - while (p.x < controlPoints[1].x - spacing.convertToPixels()) { - p.x += spacing.convertToPixels(); + p.y += spacing; + while (p.x < controlPoints[1].x - spacing) { + p.x += spacing; g2d.setColor(COPPER_COLOR); - g2d.fillOval(p.x - radius, p.y - radius, radius * 2, radius * 2); + g2d.fillOval(p.x - diameter / 2, p.y - diameter / 2, diameter, diameter); g2d.setColor(Constants.CANVAS_COLOR); - g2d - .fillOval(p.x - holeRadius, p.y - holeRadius, holeRadius * 2, - holeRadius * 2); + g2d.fillOval(p.x - holeDiameter / 2, p.y - holeDiameter / 2, holeDiameter, + holeDiameter); } } g2d.setComposite(oldComposite); diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/VeroBoard.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/VeroBoard.java index 689e6372..8199739a 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/VeroBoard.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/VeroBoard.java @@ -26,7 +26,7 @@ public class VeroBoard extends AbstractBoard { private static Size SPACING = new Size(0.1d, SizeUnit.in); private static Size STRIP_SIZE = new Size(0.085d, SizeUnit.in); - private static Size HOLE_SIZE = new Size(0.8d, SizeUnit.mm); + private static Size HOLE_SIZE = new Size(0.7d, SizeUnit.mm); // private Area copperArea; private Size spacing = SPACING; @@ -52,17 +52,18 @@ public class VeroBoard extends AbstractBoard { / MAX_ALPHA)); } Point p = new Point(controlPoints[0]); - int stripSize = STRIP_SIZE.convertToPixels() / 2 * 2; - int holeRadius = HOLE_SIZE.convertToPixels() / 2; + int stripSize = getClosestOdd(STRIP_SIZE.convertToPixels()); + int holeRadius = getClosestOdd(HOLE_SIZE.convertToPixels() / 2); + int spacing = this.spacing.convertToPixels(); - while (p.y < controlPoints[1].y - spacing.convertToPixels()) { + while (p.y < controlPoints[1].y - spacing) { p.x = controlPoints[0].x; - p.y += spacing.convertToPixels(); + p.y += spacing; g2d.setColor(COPPER_COLOR); g2d.fillRect(p.x + SPACING.convertToPixels() / 2, p.y - stripSize / 2, - controlPoints[1].x - spacing.convertToPixels() - p.x, stripSize); - while (p.x < controlPoints[1].x - spacing.convertToPixels()) { - p.x += spacing.convertToPixels(); + controlPoints[1].x - spacing - p.x, stripSize); + while (p.x < controlPoints[1].x - spacing) { + p.x += spacing; g2d.setColor(Constants.CANVAS_COLOR); g2d .fillOval(p.x - holeRadius, p.y - holeRadius, holeRadius * 2, @@ -153,7 +154,7 @@ public class VeroBoard extends AbstractBoard { g2d.setColor(COPPER_COLOR); g2d.fillRect(4, width / 4, width - 8, width / 2); g2d.setColor(Constants.CANVAS_COLOR); - g2d.fillOval(width / 3 - 1, width / 2 - 1, 2, 2); - g2d.fillOval(2 * width / 3 - 1, width / 2 - 1, 2, 2); + g2d.fillOval(width / 3 - 1, width / 2 - 1, 3, 3); + g2d.fillOval(2 * width / 3 - 1, width / 2 - 1, 3, 3); } } diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/SolderPad.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/SolderPad.java index 41bd3762..dfdd67f7 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/SolderPad.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/SolderPad.java @@ -2,8 +2,9 @@ package org.diylc.components.connectivity; import java.awt.Color; import java.awt.Graphics2D; +import java.awt.Point; -import org.diylc.components.AbstractSinglePointComponent; +import org.diylc.components.AbstractComponent; import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.Project; @@ -14,7 +15,7 @@ import org.diylc.core.measures.SizeUnit; import org.diylc.utils.Constants; @ComponentDescriptor(name = "Solder Pad", category = "Connectivity", author = "Branislav Stojkovic", description = "test", instanceNamePrefix = "", stretchable = false, zOrder = IDIYComponent.ABOVE_BOARD + 0.1) -public class SolderPad extends AbstractSinglePointComponent { +public class SolderPad extends AbstractComponent { private static final long serialVersionUID = 1L; @@ -24,11 +25,12 @@ public class SolderPad extends AbstractSinglePointComponent { private Size size = SIZE; private Color color = COLOR; + private Point point = new Point(0, 0); @Override public void draw(Graphics2D g2d, ComponentState componentState, Project project) { - int diameter = size.convertToPixels(); - int holeDiameter = HOLE_SIZE.convertToPixels(); + int diameter = getClosestOdd(size.convertToPixels()); + int holeDiameter = getClosestOdd(HOLE_SIZE.convertToPixels()); g2d.setColor(color); g2d.fillOval(point.x - diameter / 2, point.y - diameter / 2, diameter, diameter); g2d.setColor(Constants.CANVAS_COLOR); @@ -38,8 +40,8 @@ public class SolderPad extends AbstractSinglePointComponent { @Override public void drawIcon(Graphics2D g2d, int width, int height) { - int diameter = width / 2; - int holeDiameter = 4; + int diameter = getClosestOdd(width / 2); + int holeDiameter = 5; g2d.setColor(COLOR); g2d.fillOval((width - diameter) / 2, (height - diameter) / 2, diameter, diameter); g2d.setColor(Constants.CANVAS_COLOR); @@ -56,12 +58,35 @@ public class SolderPad extends AbstractSinglePointComponent { this.size = size; } - @EditableProperty - public Color getColor() { + @Deprecated + @Override + public String getName() { + return super.getName(); + } + + @Override + public int getControlPointCount() { + return 1; + } + + @Override + public Point getControlPoint(int index) { + return point; + } + + @Override + public void setControlPoint(Point point, int index) { + this.point.setLocation(point); + } + + @EditableProperty(name = "Color") + @Override + public Color getValue() { return color; } - public void setColor(Color color) { - this.color = color; + @Override + public void setValue(Color value) { + this.color = value; } } diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/TraceCut.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/TraceCut.java index d4c6b7d9..f172c074 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/TraceCut.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/TraceCut.java @@ -79,4 +79,10 @@ public class TraceCut extends AbstractSinglePointComponent { public void setBorderColor(Color borderColor) { this.borderColor = borderColor; } + + @Deprecated + @Override + public String getName() { + return super.getName(); + } } diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/electromechanical/MiniToggleSwitch.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/electromechanical/MiniToggleSwitch.java index 684c0378..20134884 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/electromechanical/MiniToggleSwitch.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/electromechanical/MiniToggleSwitch.java @@ -179,13 +179,13 @@ public class MiniToggleSwitch extends AbstractTransparentComponent