From af83a69ee008d73de01ac24da8a4eb2373cf11f7 Mon Sep 17 00:00:00 2001 From: Bane Stojkovic Date: Sat, 17 May 2025 21:29:52 +0200 Subject: [PATCH] initial --- .../components/boards/AbstractProtoBoard.java | 57 ++++++++++++++++++- .../diylc/components/boards/Breadboard.java | 7 +++ .../components/boards/EurorackStripboard.java | 10 ++++ .../diylc/components/boards/ProtoBoard.java | 7 +++ .../components/boards/ProtoBoard780.java | 15 +++++ 5 files changed, 94 insertions(+), 2 deletions(-) diff --git a/diylc/diylc-library/src/main/java/org/diylc/components/boards/AbstractProtoBoard.java b/diylc/diylc-library/src/main/java/org/diylc/components/boards/AbstractProtoBoard.java index 968db8b3..4d1eca3c 100644 --- a/diylc/diylc-library/src/main/java/org/diylc/components/boards/AbstractProtoBoard.java +++ b/diylc/diylc-library/src/main/java/org/diylc/components/boards/AbstractProtoBoard.java @@ -2,15 +2,24 @@ package org.diylc.components.boards; import org.diylc.common.Orientation; 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.measures.Size; +import org.diylc.core.measures.SizeUnit; -public abstract class AbstractProtoBoard extends AbstractComponent { - +public abstract class AbstractProtoBoard extends AbstractComponent implements IBoard { private static final long serialVersionUID = 1L; + + public static final Size DEFAULT_UNDERSIDE_OFFSET = new Size(0.1, SizeUnit.in); protected Orientation orientation; + protected BoardUndersideDisplay boardUndersideDisplay = BoardUndersideDisplay.NONE; + protected Size undersideOffset = DEFAULT_UNDERSIDE_OFFSET; + private Boolean undersideTransparency = true; + @EditableProperty public Orientation getOrientation() { if (orientation == null) @@ -21,4 +30,48 @@ public abstract class AbstractProtoBoard extends AbstractComponent { public void setOrientation(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; + } } diff --git a/diylc/diylc-library/src/main/java/org/diylc/components/boards/Breadboard.java b/diylc/diylc-library/src/main/java/org/diylc/components/boards/Breadboard.java index 2f159311..e093764f 100644 --- a/diylc/diylc-library/src/main/java/org/diylc/components/boards/Breadboard.java +++ b/diylc/diylc-library/src/main/java/org/diylc/components/boards/Breadboard.java @@ -369,6 +369,13 @@ public class Breadboard extends AbstractProtoBoard { public String getControlPointNodeName(int index) { 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 public Rectangle2D getCachingBounds() { diff --git a/diylc/diylc-library/src/main/java/org/diylc/components/boards/EurorackStripboard.java b/diylc/diylc-library/src/main/java/org/diylc/components/boards/EurorackStripboard.java index 5d6f7999..e0afd68b 100644 --- a/diylc/diylc-library/src/main/java/org/diylc/components/boards/EurorackStripboard.java +++ b/diylc/diylc-library/src/main/java/org/diylc/components/boards/EurorackStripboard.java @@ -720,6 +720,16 @@ public class EurorackStripboard extends AbstractProtoBoard { 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 public Rectangle2D getCachingBounds() { Point2D finalSecondPoint = getControlPoint(1); diff --git a/diylc/diylc-library/src/main/java/org/diylc/components/boards/ProtoBoard.java b/diylc/diylc-library/src/main/java/org/diylc/components/boards/ProtoBoard.java index 72c739e2..f469707e 100644 --- a/diylc/diylc-library/src/main/java/org/diylc/components/boards/ProtoBoard.java +++ b/diylc/diylc-library/src/main/java/org/diylc/components/boards/ProtoBoard.java @@ -685,6 +685,13 @@ public class ProtoBoard extends AbstractProtoBoard { public String getControlPointNodeName(int index) { 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 public Rectangle2D getCachingBounds() { diff --git a/diylc/diylc-library/src/main/java/org/diylc/components/boards/ProtoBoard780.java b/diylc/diylc-library/src/main/java/org/diylc/components/boards/ProtoBoard780.java index 9cd695ab..b54e6c24 100644 --- a/diylc/diylc-library/src/main/java/org/diylc/components/boards/ProtoBoard780.java +++ b/diylc/diylc-library/src/main/java/org/diylc/components/boards/ProtoBoard780.java @@ -510,6 +510,21 @@ public class ProtoBoard780 extends AbstractProtoBoard { 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 public Rectangle2D getCachingBounds() { double spacing = SPACING.convertToPixels();