diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/.classpath b/ diy-layout-creator --username bancika@gmail.com/Library/.classpath index cba71c5e..74a976b1 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/.classpath +++ b/ diy-layout-creator --username bancika@gmail.com/Library/.classpath @@ -2,6 +2,6 @@ - + diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/AbstractBoard.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/AbstractBoard.java new file mode 100644 index 00000000..e26fcc19 --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/AbstractBoard.java @@ -0,0 +1,73 @@ +package org.diylc.components; + +import java.awt.BasicStroke; +import java.awt.Color; +import java.awt.Graphics2D; +import java.awt.Point; + +import org.diylc.core.ComponentState; +import org.diylc.core.IDIYComponent; +import org.diylc.core.Project; +import org.diylc.core.annotations.EditableProperty; +import org.diylc.utils.Constants; + +public abstract class AbstractBoard implements IDIYComponent { + + private static final long serialVersionUID = 1L; + + protected String name; + protected String value; + protected Point[] controlPoints = new Point[] { new Point(0, 0), + new Point((int) (10 * Constants.GRID), (int) (10 * Constants.GRID)) }; + + protected abstract Color getBoardColor(); + + protected abstract Color getBorderColor(); + + @Override + public void draw(Graphics2D g2d, ComponentState componentState, Project project) { + g2d.setStroke(new BasicStroke()); + g2d.setColor(getBoardColor()); + g2d.fillRect(controlPoints[0].x, controlPoints[0].y, controlPoints[1].x + - controlPoints[0].x, controlPoints[1].y - controlPoints[0].y); + g2d.setColor(getBorderColor()); + g2d.drawRect(controlPoints[0].x, controlPoints[0].y, controlPoints[1].x + - controlPoints[0].x, controlPoints[1].y - controlPoints[0].y); + } + + @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); + } + + @Override + public String getName() { + return name; + } + + @Override + public void setName(String name) { + this.name = name; + } + + @EditableProperty + @Override + public String getValue() { + return value; + } + + @Override + public void setValue(String value) { + this.value = value; + } +} diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/BlankBoard.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/BlankBoard.java new file mode 100644 index 00000000..30a5bc7e --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/BlankBoard.java @@ -0,0 +1,31 @@ +package org.diylc.components; + +import java.awt.Color; +import java.awt.Graphics2D; + +import org.diylc.core.ComponentLayer; +import org.diylc.core.annotations.ComponentDescriptor; + +@ComponentDescriptor(name = "Blank Board", category = "Boards", author = "Branislav Stojkovic", componentLayer = ComponentLayer.BOARD, instanceNamePrefix = "B", desciption = "Blank FR4 board") +public class BlankBoard extends AbstractBoard { + + private static final long serialVersionUID = 1L; + + public static Color BOARD_COLOR = Color.decode("#BCED91"); + public static Color BORDER_COLOR = BOARD_COLOR.darker(); + + @Override + protected Color getBoardColor() { + return BOARD_COLOR; + } + + @Override + protected Color getBorderColor() { + return BORDER_COLOR; + } + + @Override + public void drawIcon(Graphics2D g2d, int width, int height) { + + } +} diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/PerfBoard.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/PerfBoard.java new file mode 100644 index 00000000..03755921 --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/PerfBoard.java @@ -0,0 +1,58 @@ +package org.diylc.components; + +import java.awt.BasicStroke; +import java.awt.Color; +import java.awt.Graphics2D; +import java.awt.Point; + +import org.diylc.core.ComponentLayer; +import org.diylc.core.ComponentState; +import org.diylc.core.Project; +import org.diylc.core.annotations.ComponentDescriptor; +import org.diylc.core.measures.Size; +import org.diylc.core.measures.SizeUnit; + +@ComponentDescriptor(name = "Perf Board", category = "Boards", author = "Branislav Stojkovic", componentLayer = ComponentLayer.BOARD, instanceNamePrefix = "B", desciption = "Perforated FR4 board with solder pads spaced 0.1 inch apart") +public class PerfBoard extends AbstractBoard { + + private static final long serialVersionUID = 1L; + + public static Color BOARD_COLOR = Color.decode("#BCED91"); + public static Color COPPER_COLOR = Color.decode("#B87333"); + public static Color BORDER_COLOR = BOARD_COLOR.darker(); + + private static Size SPACING = new Size(0.1d, SizeUnit.in); + private static Size PAD_SIZE = new Size(0.06d, SizeUnit.in); + + @Override + public void draw(Graphics2D g2d, ComponentState componentState, Project project) { + super.draw(g2d, componentState, project); + Point p = new Point(controlPoints[0]); + int radius = PAD_SIZE.convertToPixels() / 2; + g2d.setStroke(new BasicStroke(radius)); + g2d.setColor(COPPER_COLOR); + while (p.y < controlPoints[1].y - SPACING.convertToPixels()) { + p.x = controlPoints[0].x; + p.y += SPACING.convertToPixels(); + while (p.x < controlPoints[1].x - SPACING.convertToPixels()) { + p.x += SPACING.convertToPixels(); + g2d.drawOval(p.x - radius, p.y - radius, radius * 2, radius * 2); + } + } + } + + @Override + protected Color getBoardColor() { + return BOARD_COLOR; + } + + @Override + protected Color getBorderColor() { + return BORDER_COLOR; + } + + @Override + public void drawIcon(Graphics2D g2d, int width, int height) { + + } +}