From b6b50d376d09bf1ca99697c313617299f0336148 Mon Sep 17 00:00:00 2001 From: bancika Date: Fri, 11 Dec 2020 23:51:32 +0100 Subject: [PATCH] When rotating Vero and Tri-Pad boards, change the orientation of strips to match the rotation angle --- .../src/org/diylc/presenter/update.xml | 22 +++++--- diylc/diylc-library/lib/diylc-core.jar | Bin 338545 -> 338732 bytes .../components/boards/AbstractVeroBoard.java | 52 ++++++++++++++++++ .../diylc/components/boards/TriPadBoard.java | 47 +--------------- .../diylc/components/boards/VeroBoard.java | 48 ++-------------- .../transform/VeroBoardTransformer.java | 44 +++++++++++++++ 6 files changed, 116 insertions(+), 97 deletions(-) create mode 100644 diylc/diylc-library/src/org/diylc/components/boards/AbstractVeroBoard.java create mode 100644 diylc/diylc-library/src/org/diylc/components/transform/VeroBoardTransformer.java diff --git a/diylc/diylc-core/src/org/diylc/presenter/update.xml b/diylc/diylc-core/src/org/diylc/presenter/update.xml index 29eb6507..1137f320 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/update.xml +++ b/diylc/diylc-core/src/org/diylc/presenter/update.xml @@ -3290,14 +3290,6 @@ IMPROVEMENT macOS: two finger click shows the popup menu without deselecting a selected component - - IMPROVEMENT - Apply context menu rotation and mirroring to Trimmer potentiometers - - - IMPROVEMENT - Apply context menu rotation and mirroring to SMD components - IMPROVEMENT Do not allow for components like traces, jumpers and wires to be reduced to nothing by dragging connected components @@ -3305,7 +3297,19 @@ IMPROVEMENT In cases when there's already a component in the selection that is reduced to nothing, allow moving the selection - + + + IMPROVEMENT + Apply context menu rotation and mirroring to Trimmer potentiometers + + + IMPROVEMENT + Apply context menu rotation and mirroring to SMD components + + + IMPROVEMENT + When rotating Vero and Tri-Pad boards, change the orientation of strips to match the rotation angle + https://github.com/bancika/diy-layout-creator/releases diff --git a/diylc/diylc-library/lib/diylc-core.jar b/diylc/diylc-library/lib/diylc-core.jar index 6fea02d4910ea87a5ae1fddc6b7a9d8de8177493..37e1ac83cf020d8f387ba36301b75e253820f25f 100644 GIT binary patch delta 32658 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 delta 32417 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 DLba9j diff --git a/diylc/diylc-library/src/org/diylc/components/boards/AbstractVeroBoard.java b/diylc/diylc-library/src/org/diylc/components/boards/AbstractVeroBoard.java new file mode 100644 index 00000000..46c0bd54 --- /dev/null +++ b/diylc/diylc-library/src/org/diylc/components/boards/AbstractVeroBoard.java @@ -0,0 +1,52 @@ +package org.diylc.components.boards; + +import java.awt.Color; + +import org.diylc.common.OrientationHV; +import org.diylc.core.annotations.EditableProperty; +import org.diylc.core.annotations.PositiveNonZeroMeasureValidator; +import org.diylc.core.measures.Size; +import org.diylc.core.measures.SizeUnit; + +public abstract class AbstractVeroBoard extends AbstractBoard { + + private static final long serialVersionUID = 1L; + + public static Color BORDER_COLOR = BOARD_COLOR.darker(); + + public static Size SPACING = new Size(0.1d, SizeUnit.in); + public static Size STRIP_SIZE = new Size(0.07d, SizeUnit.in); + public static Size HOLE_SIZE = new Size(0.7d, SizeUnit.mm); + + // strip + protected Size spacing = SPACING; + protected Color stripColor = COPPER_COLOR; + protected OrientationHV orientation = OrientationHV.HORIZONTAL; + + @EditableProperty(name = "Strip Color") + public Color getStripColor() { + return stripColor; + } + + public void setStripColor(Color padColor) { + this.stripColor = padColor; + } + + @EditableProperty(validatorClass = PositiveNonZeroMeasureValidator.class) + public Size getSpacing() { + return spacing; + } + + public void setSpacing(Size spacing) { + this.spacing = spacing; + } + + @EditableProperty + public OrientationHV getOrientation() { + return orientation; + } + + public void setOrientation(OrientationHV orientation) { + this.orientation = orientation; + } +} diff --git a/diylc/diylc-library/src/org/diylc/components/boards/TriPadBoard.java b/diylc/diylc-library/src/org/diylc/components/boards/TriPadBoard.java index a95ae7e4..79840488 100644 --- a/diylc/diylc-library/src/org/diylc/components/boards/TriPadBoard.java +++ b/diylc/diylc-library/src/org/diylc/components/boards/TriPadBoard.java @@ -22,14 +22,13 @@ package org.diylc.components.boards; import java.awt.AlphaComposite; -import java.awt.Color; import java.awt.Composite; import java.awt.Graphics2D; import java.awt.Shape; import java.awt.geom.Point2D; import org.diylc.common.OrientationHV; -import org.diylc.common.SimpleComponentTransformer; +import org.diylc.components.transform.VeroBoardTransformer; import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; @@ -37,30 +36,17 @@ import org.diylc.core.Project; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.annotations.KeywordPolicy; -import org.diylc.core.annotations.PositiveNonZeroMeasureValidator; -import org.diylc.core.measures.Size; -import org.diylc.core.measures.SizeUnit; import org.diylc.utils.Constants; @ComponentDescriptor(name = "TriPad Board", category = "Boards", author = "Hauke Juhls", zOrder = IDIYComponent.BOARD, instanceNamePrefix = "Board", description = "Perforated FR4 board with copper strips connecting 3 holes in a row (aka TriPad Board)", - keywordPolicy = KeywordPolicy.SHOW_TYPE_NAME, transformer = SimpleComponentTransformer.class, enableCache = true) -public class TriPadBoard extends AbstractBoard { + keywordPolicy = KeywordPolicy.SHOW_TYPE_NAME, transformer = VeroBoardTransformer.class, enableCache = true) +public class TriPadBoard extends AbstractVeroBoard { private static final long serialVersionUID = 1L; - public static Color BORDER_COLOR = BOARD_COLOR.darker(); - - public static Size SPACING = new Size(0.1d, SizeUnit.in); - public static Size STRIP_SIZE = new Size(0.07d, SizeUnit.in); - public static Size HOLE_SIZE = new Size(0.7d, SizeUnit.mm); - protected int stripSpan = 3; // determines how many holes are covered by a - // strip - protected Size spacing = SPACING; - protected Color stripColor = COPPER_COLOR; - protected OrientationHV orientation = OrientationHV.HORIZONTAL; @Override public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project, @@ -166,33 +152,6 @@ public class TriPadBoard extends AbstractBoard { } } - @EditableProperty(name = "Strip Color") - public Color getStripColor() { - return stripColor; - } - - public void setStripColor(Color padColor) { - this.stripColor = padColor; - } - - @EditableProperty(validatorClass = PositiveNonZeroMeasureValidator.class) - public Size getSpacing() { - return spacing; - } - - public void setSpacing(Size spacing) { - this.spacing = spacing; - } - - @EditableProperty - public OrientationHV getOrientation() { - return orientation; - } - - public void setOrientation(OrientationHV orientation) { - this.orientation = orientation; - } - @Override public void drawIcon(Graphics2D g2d, int width, int height) { g2d.setColor(BOARD_COLOR); diff --git a/diylc/diylc-library/src/org/diylc/components/boards/VeroBoard.java b/diylc/diylc-library/src/org/diylc/components/boards/VeroBoard.java index acfc5127..d4067307 100644 --- a/diylc/diylc-library/src/org/diylc/components/boards/VeroBoard.java +++ b/diylc/diylc-library/src/org/diylc/components/boards/VeroBoard.java @@ -22,46 +22,31 @@ package org.diylc.components.boards; import java.awt.AlphaComposite; -import java.awt.Color; import java.awt.Composite; import java.awt.Graphics2D; import java.awt.Shape; import java.awt.geom.Point2D; import org.diylc.common.OrientationHV; -import org.diylc.common.SimpleComponentTransformer; +import org.diylc.components.transform.VeroBoardTransformer; import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; import org.diylc.core.annotations.BomPolicy; import org.diylc.core.annotations.ComponentDescriptor; -import org.diylc.core.annotations.EditableProperty; import org.diylc.core.annotations.KeywordPolicy; -import org.diylc.core.annotations.PositiveNonZeroMeasureValidator; -import org.diylc.core.measures.Size; -import org.diylc.core.measures.SizeUnit; import org.diylc.utils.Constants; @ComponentDescriptor(name = "Vero Board", category = "Boards", author = "Branislav Stojkovic", zOrder = IDIYComponent.BOARD, instanceNamePrefix = "Board", description = "Perforated FR4 board with copper strips connecting all holes in a row", bomPolicy = BomPolicy.SHOW_ONLY_TYPE_NAME, autoEdit = false, keywordPolicy = KeywordPolicy.SHOW_TYPE_NAME, - transformer = SimpleComponentTransformer.class, enableCache = true) -public class VeroBoard extends AbstractBoard { + transformer = VeroBoardTransformer.class, enableCache = true) +public class VeroBoard extends AbstractVeroBoard { private static final long serialVersionUID = 1L; - public static Color BORDER_COLOR = BOARD_COLOR.darker(); - - public static Size SPACING = new Size(0.1d, SizeUnit.in); - public static Size STRIP_SIZE = new Size(0.07d, SizeUnit.in); - public static Size HOLE_SIZE = new Size(0.7d, SizeUnit.mm); - - protected Size spacing = SPACING; - protected Color stripColor = COPPER_COLOR; - protected OrientationHV orientation = OrientationHV.HORIZONTAL; - @Override public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project, IDrawingObserver drawingObserver) { @@ -126,32 +111,7 @@ public class VeroBoard extends AbstractBoard { } } - @EditableProperty(name = "Strip Color") - public Color getStripColor() { - return stripColor; - } - - public void setStripColor(Color padColor) { - this.stripColor = padColor; - } - - @EditableProperty(validatorClass = PositiveNonZeroMeasureValidator.class) - public Size getSpacing() { - return spacing; - } - - public void setSpacing(Size spacing) { - this.spacing = spacing; - } - - @EditableProperty - public OrientationHV getOrientation() { - return orientation; - } - - public void setOrientation(OrientationHV orientation) { - this.orientation = orientation; - } + @Override public String getControlPointNodeName(int index) { diff --git a/diylc/diylc-library/src/org/diylc/components/transform/VeroBoardTransformer.java b/diylc/diylc-library/src/org/diylc/components/transform/VeroBoardTransformer.java new file mode 100644 index 00000000..60613986 --- /dev/null +++ b/diylc/diylc-library/src/org/diylc/components/transform/VeroBoardTransformer.java @@ -0,0 +1,44 @@ +/* + + DIY Layout Creator (DIYLC). + Copyright (c) 2009-2018 held jointly by the individual authors. + + This file is part of DIYLC. + + DIYLC is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + DIYLC is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with DIYLC. If not, see . + +*/ +package org.diylc.components.transform; + +import java.awt.geom.Point2D; + +import org.diylc.common.OrientationHV; +import org.diylc.common.SimpleComponentTransformer; +import org.diylc.components.boards.AbstractVeroBoard; +import org.diylc.core.IDIYComponent; + +public class VeroBoardTransformer extends SimpleComponentTransformer { + + @Override + public void rotate(IDIYComponent component, Point2D center, int direction) { + super.rotate(component, center, direction); + + AbstractVeroBoard board = (AbstractVeroBoard)component; + OrientationHV orientation = board.getOrientation(); + if (orientation == OrientationHV.HORIZONTAL) + board.setOrientation(OrientationHV.VERTICAL); + else + board.setOrientation(OrientationHV.HORIZONTAL); + } +}