diff --git a/diylc/diylc-core/src/main/java/org/diylc/core/IBoard.java b/diylc/diylc-core/src/main/java/org/diylc/core/IBoard.java index 302547d3..6d1f7222 100644 --- a/diylc/diylc-core/src/main/java/org/diylc/core/IBoard.java +++ b/diylc/diylc-core/src/main/java/org/diylc/core/IBoard.java @@ -8,9 +8,11 @@ public interface IBoard { Rectangle2D getBoardRectangle(); - BoardUndersideDisplay getBoardUndersideDisplay(); + BoardUndersideDisplay getUndersideDisplay(); Size getUndersideOffset(); + + Boolean getUndersideTransparency(); boolean shouldExportToGerber(); } diff --git a/diylc/diylc-core/src/main/java/org/diylc/presenter/DrawingManager.java b/diylc/diylc-core/src/main/java/org/diylc/presenter/DrawingManager.java index c272692e..a1194449 100644 --- a/diylc/diylc-core/src/main/java/org/diylc/presenter/DrawingManager.java +++ b/diylc/diylc-core/src/main/java/org/diylc/presenter/DrawingManager.java @@ -191,7 +191,7 @@ public class DrawingManager { Map>> boardMap = project.getComponents().stream() .filter(IBoard.class::isInstance) .map(IBoard.class::cast) - .filter(b -> b.getBoardUndersideDisplay() != BoardUndersideDisplay.NONE) + .filter(b -> b.getUndersideDisplay() != BoardUndersideDisplay.NONE) .collect(Collectors.toMap(x -> x, x -> new ArrayList>())); Map, Set> componentBoardMap = new HashMap, Set>(); @@ -524,7 +524,7 @@ public class DrawingManager { IDIYComponent clonedComponent = component.clone(); int direction = 0; Point2D pivotPoint = new Point2D.Double(); - switch (board.getBoardUndersideDisplay()) { + switch (board.getUndersideDisplay()) { case ABOVE: direction = IComponentTransformer.VERTICAL; pivotPoint.setLocation(boardRectangle.getMinX(), boardRectangle.getMinY() - offset / 2); @@ -543,7 +543,7 @@ public class DrawingManager { break; } componentType.getTransformer().mirror(clonedComponent, pivotPoint, direction); - if (AbstractTransparentComponent.class.isInstance(clonedComponent)) { + if (board.getUndersideTransparency() && AbstractTransparentComponent.class.isInstance(clonedComponent)) { AbstractTransparentComponent transparentComponent = (AbstractTransparentComponent) clonedComponent; transparentComponent.setAlpha(MIRROR_ALPHA); } diff --git a/diylc/diylc-core/src/main/resources/update.xml b/diylc/diylc-core/src/main/resources/update.xml index 1da68e8f..b41b386f 100644 --- a/diylc/diylc-core/src/main/resources/update.xml +++ b/diylc/diylc-core/src/main/resources/update.xml @@ -337,6 +337,10 @@ NEW_FEATURE Added a 'Save' button to all analysis screens which saves results of a circuit analysis to an HTML file + + NEW_FEATURE + Added ability control if the board underside display should render as transparent or not + IMPROVEMENT Moved 'Analyze' functions from 'File' menu to their own menu for faster access diff --git a/diylc/diylc-library/src/main/java/org/diylc/components/boards/AbstractBoard.java b/diylc/diylc-library/src/main/java/org/diylc/components/boards/AbstractBoard.java index 8a2d1ddb..c967615c 100644 --- a/diylc/diylc-library/src/main/java/org/diylc/components/boards/AbstractBoard.java +++ b/diylc/diylc-library/src/main/java/org/diylc/components/boards/AbstractBoard.java @@ -79,6 +79,7 @@ public abstract class AbstractBoard extends AbstractTransparentComponent protected BoardUndersideDisplay boardUndersideDisplay = BoardUndersideDisplay.NONE; protected Size undersideOffset = DEFAULT_UNDERSIDE_OFFSET; + private Boolean undersideTransparency = true; @Override public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project, @@ -372,14 +373,14 @@ public abstract class AbstractBoard extends AbstractTransparentComponent @EditableProperty(name = "Underside Display") @Override - public BoardUndersideDisplay getBoardUndersideDisplay() { + public BoardUndersideDisplay getUndersideDisplay() { if (this.boardUndersideDisplay == null) { this.boardUndersideDisplay = BoardUndersideDisplay.NONE; } return this.boardUndersideDisplay; } - public void setBoardUndersideDisplay(BoardUndersideDisplay boardUndersideDisplay) { + public void setUndersideDisplay(BoardUndersideDisplay boardUndersideDisplay) { this.boardUndersideDisplay = boardUndersideDisplay; } @@ -396,6 +397,19 @@ public abstract class AbstractBoard extends AbstractTransparentComponent 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 Rectangle2D getBoardRectangle() { Point2D finalSecondPoint = getFinalSecondPoint(); @@ -452,4 +466,4 @@ public abstract class AbstractBoard extends AbstractTransparentComponent return label; } } -} \ No newline at end of file +}