mirror of
https://github.com/bancika/diy-layout-creator
synced 2026-11-10 17:22:09 +10:00
Trace cuts can be placed between two holes for tighter layouts
This commit is contained in:
Binary file not shown.
+60
-15
@@ -4,9 +4,10 @@ import java.awt.Color;
|
|||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
import java.awt.Point;
|
||||||
|
|
||||||
import org.diylc.common.Display;
|
|
||||||
import org.diylc.common.ObjectCache;
|
import org.diylc.common.ObjectCache;
|
||||||
import org.diylc.components.AbstractComponent;
|
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.ComponentState;
|
||||||
import org.diylc.core.IDIYComponent;
|
import org.diylc.core.IDIYComponent;
|
||||||
import org.diylc.core.IDrawingObserver;
|
import org.diylc.core.IDrawingObserver;
|
||||||
@@ -24,6 +25,7 @@ public class TraceCut extends AbstractComponent<Void> {
|
|||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
public static Size SIZE = new Size(0.07d, SizeUnit.in);
|
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 FILL_COLOR = Color.white;
|
||||||
public static Color BORDER_COLOR = Color.red;
|
public static Color BORDER_COLOR = Color.red;
|
||||||
public static Color SELECTION_COLOR = Color.blue;
|
public static Color SELECTION_COLOR = Color.blue;
|
||||||
@@ -31,26 +33,42 @@ public class TraceCut extends AbstractComponent<Void> {
|
|||||||
private Size size = SIZE;
|
private Size size = SIZE;
|
||||||
private Color fillColor = FILL_COLOR;
|
private Color fillColor = FILL_COLOR;
|
||||||
private Color borderColor = BORDER_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);
|
protected Point point = new Point(0, 0);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode,
|
public void draw(Graphics2D g2d, ComponentState componentState,
|
||||||
Project project, IDrawingObserver drawingObserver) {
|
boolean outlineMode, Project project,
|
||||||
|
IDrawingObserver drawingObserver) {
|
||||||
if (checkPointsClipped(g2d.getClip())) {
|
if (checkPointsClipped(g2d.getClip())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int size = getClosestOdd((int) this.size.convertToPixels());
|
int size = getClosestOdd((int) this.size.convertToPixels());
|
||||||
int dotDiameter = size - 6;
|
int holeSpacing = getClosestOdd(this.holeSpacing.convertToPixels());
|
||||||
g2d.setColor(fillColor);
|
int cutWidth = getClosestOdd((int) CUT_WIDTH.convertToPixels());
|
||||||
g2d.fillRect(point.x - size / 2, point.y - size / 2, size, size);
|
if (cutBetweenHoles) {
|
||||||
g2d.setColor(componentState == ComponentState.SELECTED
|
g2d
|
||||||
|| componentState == ComponentState.DRAGGING ? SELECTION_COLOR : borderColor);
|
.setColor(componentState == ComponentState.SELECTED
|
||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
|
|| componentState == ComponentState.DRAGGING ? SELECTION_COLOR
|
||||||
g2d.drawRect(point.x - size / 2, point.y - size / 2, size, size);
|
: boardColor);
|
||||||
g2d
|
g2d.fillRect(point.x - holeSpacing / 2 - cutWidth / 2, point.y - size / 2 - 1,
|
||||||
.fillOval(point.x - dotDiameter / 2, point.y - dotDiameter / 2, dotDiameter,
|
cutWidth, size + 2);
|
||||||
dotDiameter);
|
} 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
|
@Override
|
||||||
@@ -62,8 +80,8 @@ public class TraceCut extends AbstractComponent<Void> {
|
|||||||
g2d.setColor(BORDER_COLOR);
|
g2d.setColor(BORDER_COLOR);
|
||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
|
||||||
g2d.drawRect((width - size) / 2, (height - size) / 2, size, size);
|
g2d.drawRect((width - size) / 2, (height - size) / 2, size, size);
|
||||||
g2d.fillOval((width - dotDiameter) / 2, (height - dotDiameter) / 2, dotDiameter,
|
g2d.fillOval((width - dotDiameter) / 2, (height - dotDiameter) / 2,
|
||||||
dotDiameter);
|
dotDiameter, dotDiameter);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -127,6 +145,33 @@ public class TraceCut extends AbstractComponent<Void> {
|
|||||||
this.borderColor = borderColor;
|
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
|
@Deprecated
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
|
|||||||
Reference in New Issue
Block a user