This commit is contained in:
Bane Stojkovic
2025-05-17 21:29:52 +02:00
parent b757952533
commit af83a69ee0
5 changed files with 94 additions and 2 deletions
@@ -2,15 +2,24 @@ package org.diylc.components.boards;
import org.diylc.common.Orientation; import org.diylc.common.Orientation;
import org.diylc.components.AbstractComponent; import org.diylc.components.AbstractComponent;
import org.diylc.core.BoardUndersideDisplay;
import org.diylc.core.IBoard;
import org.diylc.core.annotations.EditableProperty; import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.measures.Size;
import org.diylc.core.measures.SizeUnit;
public abstract class AbstractProtoBoard extends AbstractComponent<Void> { public abstract class AbstractProtoBoard extends AbstractComponent<Void> implements IBoard {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public static final Size DEFAULT_UNDERSIDE_OFFSET = new Size(0.1, SizeUnit.in);
protected Orientation orientation; protected Orientation orientation;
protected BoardUndersideDisplay boardUndersideDisplay = BoardUndersideDisplay.NONE;
protected Size undersideOffset = DEFAULT_UNDERSIDE_OFFSET;
private Boolean undersideTransparency = true;
@EditableProperty @EditableProperty
public Orientation getOrientation() { public Orientation getOrientation() {
if (orientation == null) if (orientation == null)
@@ -21,4 +30,48 @@ public abstract class AbstractProtoBoard extends AbstractComponent<Void> {
public void setOrientation(Orientation orientation) { public void setOrientation(Orientation orientation) {
this.orientation = orientation; this.orientation = orientation;
} }
@EditableProperty(name = "Underside Display")
@Override
public BoardUndersideDisplay getUndersideDisplay() {
if (this.boardUndersideDisplay == null) {
this.boardUndersideDisplay = BoardUndersideDisplay.NONE;
}
return this.boardUndersideDisplay;
}
public void setUndersideDisplay(BoardUndersideDisplay boardUndersideDisplay) {
this.boardUndersideDisplay = boardUndersideDisplay;
}
@EditableProperty(name = "Underside Offset")
@Override
public Size getUndersideOffset() {
if (undersideOffset == null) {
undersideOffset = DEFAULT_UNDERSIDE_OFFSET;
}
return undersideOffset;
}
public void setUndersideOffset(Size undersideOffset) {
this.undersideOffset = undersideOffset;
}
@EditableProperty(name = "Underside Transparency")
@Override
public Boolean getUndersideTransparency() {
if (undersideTransparency == null) {
undersideTransparency = true;
}
return undersideTransparency;
}
public void setUndersideTransparency(Boolean undersideTransparency) {
this.undersideTransparency = undersideTransparency;
}
@Override
public boolean shouldExportToGerber() {
return false;
}
} }
@@ -370,6 +370,13 @@ public class Breadboard extends AbstractProtoBoard {
return null; return null;
} }
@Override
public Rectangle2D getBoardRectangle() {
Point2D finalSecondPoint = getControlPoint(1);
return new Rectangle2D.Double(Math.min(point.getX(), finalSecondPoint.getX()), Math.min(point.getY(), finalSecondPoint.getY()),
Math.abs(finalSecondPoint.getX() - point.getX()), Math.abs(finalSecondPoint.getY() - point.getY()));
}
@Override @Override
public Rectangle2D getCachingBounds() { public Rectangle2D getCachingBounds() {
Point2D finalSecondPoint = getControlPoint(1); Point2D finalSecondPoint = getControlPoint(1);
@@ -720,6 +720,16 @@ public class EurorackStripboard extends AbstractProtoBoard {
return null; return null;
} }
@Override
public Rectangle2D getBoardRectangle() {
Point2D finalSecondPoint = getControlPoint(1);
double offset = BODY_OFFSET_Y.convertToPixels();
return new Rectangle2D.Double(Math.min(point.getX(), finalSecondPoint.getX()) - offset,
Math.min(point.getY(), finalSecondPoint.getY()) - offset,
Math.abs(finalSecondPoint.getX() - point.getX()) + offset,
Math.abs(finalSecondPoint.getY() - point.getY()) + offset);
}
@Override @Override
public Rectangle2D getCachingBounds() { public Rectangle2D getCachingBounds() {
Point2D finalSecondPoint = getControlPoint(1); Point2D finalSecondPoint = getControlPoint(1);
@@ -686,6 +686,13 @@ public class ProtoBoard extends AbstractProtoBoard {
return null; return null;
} }
@Override
public Rectangle2D getBoardRectangle() {
Point2D finalSecondPoint = getControlPoint(1);
return new Rectangle2D.Double(Math.min(point.getX(), finalSecondPoint.getX()), Math.min(point.getY(), finalSecondPoint.getY()),
Math.abs(finalSecondPoint.getX() - point.getX()), Math.abs(finalSecondPoint.getY() - point.getY()));
}
@Override @Override
public Rectangle2D getCachingBounds() { public Rectangle2D getCachingBounds() {
Point2D finalSecondPoint = getControlPoint(1); Point2D finalSecondPoint = getControlPoint(1);
@@ -510,6 +510,21 @@ public class ProtoBoard780 extends AbstractProtoBoard {
return null; return null;
} }
@Override
public Rectangle2D getBoardRectangle() {
double spacing = SPACING.convertToPixels();
double offsetX = X_OFFSET.convertToPixels();
double dx = translateToGrid ? -offsetX : 0;
double dy = translateToGrid ? spacing / 2 : 0;
Point2D finalSecondPoint = getControlPoint(1);
return new Rectangle2D.Double(Math.min(point.getX(), finalSecondPoint.getX()) + dx,
Math.min(point.getY(), finalSecondPoint.getY()) + dy,
Math.abs(finalSecondPoint.getX() - point.getX()),
Math.abs(finalSecondPoint.getY() - point.getY()));
}
@Override @Override
public Rectangle2D getCachingBounds() { public Rectangle2D getCachingBounds() {
double spacing = SPACING.convertToPixels(); double spacing = SPACING.convertToPixels();