From 2b0d9dd9d3d86cbf2ac3c1e73bd3da56dade2b34 Mon Sep 17 00:00:00 2001 From: bancika Date: Mon, 29 Apr 2013 10:58:38 +0000 Subject: [PATCH] Trace cuts can be placed between two holes for tighter layouts --- .../diylc-library/lib/diylc-core.jar | Bin 211066 -> 211094 bytes .../components/connectivity/TraceCut.java | 75 ++++++++++++++---- 2 files changed, 60 insertions(+), 15 deletions(-) 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 ccf7a42b113d336beda7888a968165c14427fc9f..81f7e9c359458be7fceade71132706f75021cab3 100644 GIT binary patch delta 22827 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 diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/connectivity/TraceCut.java b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/connectivity/TraceCut.java index 41dff007..231dcfae 100644 --- a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/connectivity/TraceCut.java +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/connectivity/TraceCut.java @@ -4,9 +4,10 @@ import java.awt.Color; import java.awt.Graphics2D; import java.awt.Point; -import org.diylc.common.Display; import org.diylc.common.ObjectCache; import org.diylc.components.AbstractComponent; +import org.diylc.components.boards.AbstractBoard; +import org.diylc.components.boards.VeroBoard; import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; @@ -24,6 +25,7 @@ public class TraceCut extends AbstractComponent { private static final long serialVersionUID = 1L; public static Size SIZE = new Size(0.07d, SizeUnit.in); + public static Size CUT_WIDTH = new Size(0.5d, SizeUnit.mm); public static Color FILL_COLOR = Color.white; public static Color BORDER_COLOR = Color.red; public static Color SELECTION_COLOR = Color.blue; @@ -31,26 +33,42 @@ public class TraceCut extends AbstractComponent { private Size size = SIZE; private Color fillColor = FILL_COLOR; private Color borderColor = BORDER_COLOR; + private Color boardColor = AbstractBoard.BOARD_COLOR; + private boolean cutBetweenHoles = false; + private Size holeSpacing = VeroBoard.SPACING; protected Point point = new Point(0, 0); @Override - public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, - Project project, IDrawingObserver drawingObserver) { + public void draw(Graphics2D g2d, ComponentState componentState, + boolean outlineMode, Project project, + IDrawingObserver drawingObserver) { if (checkPointsClipped(g2d.getClip())) { return; } int size = getClosestOdd((int) this.size.convertToPixels()); - int dotDiameter = size - 6; - g2d.setColor(fillColor); - g2d.fillRect(point.x - size / 2, point.y - size / 2, size, size); - g2d.setColor(componentState == ComponentState.SELECTED - || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : borderColor); - g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1)); - g2d.drawRect(point.x - size / 2, point.y - size / 2, size, size); - g2d - .fillOval(point.x - dotDiameter / 2, point.y - dotDiameter / 2, dotDiameter, - dotDiameter); + int holeSpacing = getClosestOdd(this.holeSpacing.convertToPixels()); + int cutWidth = getClosestOdd((int) CUT_WIDTH.convertToPixels()); + if (cutBetweenHoles) { + g2d + .setColor(componentState == ComponentState.SELECTED + || componentState == ComponentState.DRAGGING ? SELECTION_COLOR + : boardColor); + g2d.fillRect(point.x - holeSpacing / 2 - cutWidth / 2, point.y - size / 2 - 1, + cutWidth, size + 2); + } else { + int dotDiameter = size - 6; + g2d.setColor(fillColor); + g2d.fillRect(point.x - size / 2, point.y - size / 2, size, size); + g2d + .setColor(componentState == ComponentState.SELECTED + || componentState == ComponentState.DRAGGING ? SELECTION_COLOR + : borderColor); + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1)); + g2d.drawRect(point.x - size / 2, point.y - size / 2, size, size); + g2d.fillOval(point.x - dotDiameter / 2, point.y - dotDiameter / 2, + dotDiameter, dotDiameter); + } } @Override @@ -62,8 +80,8 @@ public class TraceCut extends AbstractComponent { g2d.setColor(BORDER_COLOR); g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1)); g2d.drawRect((width - size) / 2, (height - size) / 2, size, size); - g2d.fillOval((width - dotDiameter) / 2, (height - dotDiameter) / 2, dotDiameter, - dotDiameter); + g2d.fillOval((width - dotDiameter) / 2, (height - dotDiameter) / 2, + dotDiameter, dotDiameter); } @Override @@ -127,6 +145,33 @@ public class TraceCut extends AbstractComponent { this.borderColor = borderColor; } + @EditableProperty(name = "Cut between holes") + public boolean getCutBetweenHoles() { + return cutBetweenHoles; + } + + public void setCutBetweenHoles(boolean cutBetweenHoles) { + this.cutBetweenHoles = cutBetweenHoles; + } + + @EditableProperty(name = "Board") + public Color getBoardColor() { + return boardColor; + } + + public void setBoardColor(Color boardColor) { + this.boardColor = boardColor; + } + + @EditableProperty(name = "Hole spacing") + public Size getHoleSpacing() { + return holeSpacing; + } + + public void setHoleSpacing(Size holeSpacing) { + this.holeSpacing = holeSpacing; + } + @Deprecated @Override public String getName() {