From 5c7143b1a09c529ba2c52d9a8f9bb6100d7fff68 Mon Sep 17 00:00:00 2001 From: bancika Date: Fri, 7 Apr 2017 17:52:07 +0200 Subject: [PATCH] rotate breadboard --- .../diylc/components/boards/Breadboard.java | 55 +++++++++++++++++- diylc/diylc-swing/library/main.jar | Bin 401765 -> 403041 bytes diylc/diylc-swing/update.xml | 2 +- 3 files changed, 54 insertions(+), 3 deletions(-) diff --git a/diylc/diylc-library/src/org/diylc/components/boards/Breadboard.java b/diylc/diylc-library/src/org/diylc/components/boards/Breadboard.java index 26b90ac1..971faf7d 100644 --- a/diylc/diylc-library/src/org/diylc/components/boards/Breadboard.java +++ b/diylc/diylc-library/src/org/diylc/components/boards/Breadboard.java @@ -3,9 +3,11 @@ package org.diylc.components.boards; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Point; +import java.awt.geom.AffineTransform; import org.diylc.common.HorizontalAlignment; import org.diylc.common.ObjectCache; +import org.diylc.common.Orientation; import org.diylc.common.VerticalAlignment; import org.diylc.components.AbstractComponent; import org.diylc.core.ComponentState; @@ -48,7 +50,9 @@ public class Breadboard extends AbstractComponent { protected BreadboardSize breadboardSize; protected PowerStripPosition powerStripPosition; + protected Orientation orientation; + @SuppressWarnings("incomplete-switch") @Override public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project, IDrawingObserver drawingObserver) { @@ -56,6 +60,23 @@ public class Breadboard extends AbstractComponent { return; } + // adjust the angle + double theta = 0; + switch (getOrientation()) { + case _90: + theta = Math.PI / 2; + break; + case _180: + theta = Math.PI; + break; + case _270: + theta = Math.PI * 3 / 2; + break; + } + if (theta != 0) { + g2d.rotate(theta, point.x, point.y); + } + int bodyArc = (int) BODY_ARC.convertToPixels(); double spacing = SPACING.convertToPixels(); int holeCount = getBreadboardSize() == BreadboardSize.Full ? 63 : 30; @@ -189,10 +210,21 @@ public class Breadboard extends AbstractComponent { g2d.drawLine(width / 2, 2 / factor, width / 2, height - 4 / factor); } + @EditableProperty + public Orientation getOrientation() { + if (orientation == null) + orientation = Orientation.DEFAULT; + return orientation; + } + + public void setOrientation(Orientation orientation) { + this.orientation = orientation; + } + @EditableProperty(name = "Size") public BreadboardSize getBreadboardSize() { if (breadboardSize == null) - breadboardSize = BreadboardSize.Full; + breadboardSize = BreadboardSize.Half; return breadboardSize; } @@ -216,13 +248,32 @@ public class Breadboard extends AbstractComponent { return 2; } + @SuppressWarnings("incomplete-switch") @Override public Point getControlPoint(int index) { if (index == 0) return point; double spacing = SPACING.convertToPixels(); int holeCount = getBreadboardSize() == BreadboardSize.Full ? 63 : 30; - return new Point((int)(point.x + 23 * spacing), (int)(point.y + holeCount * spacing)); + // adjust the angle + double theta = 0; + switch (getOrientation()) { + case _90: + theta = Math.PI / 2; + break; + case _180: + theta = Math.PI; + break; + case _270: + theta = Math.PI * 3 / 2; + break; + } + Point secondPoint = new Point((int) (point.x + 23 * spacing), (int) (point.y + (holeCount + 1) * spacing)); + if (theta != 0) { + AffineTransform tx = AffineTransform.getRotateInstance(theta, point.x, point.y); + tx.transform(secondPoint, secondPoint); + } + return secondPoint; } @Override diff --git a/diylc/diylc-swing/library/main.jar b/diylc/diylc-swing/library/main.jar index 0090521318aa7c8e88de58d0b84ae6a5b7ed7331..93bfe4cf04f6333a79c4807cd5338aa17a4825d2 100644 GIT binary patch delta 15067 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 F{{z|=vi<-7 delta 13840 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 CaDZL_ diff --git a/diylc/diylc-swing/update.xml b/diylc/diylc-swing/update.xml index 0d90066d..b71bf752 100644 --- a/diylc/diylc-swing/update.xml +++ b/diylc/diylc-swing/update.xml @@ -1628,7 +1628,7 @@ IMPROVEMENT - Added more control over Breadboard size and appearance + Added more control over Breadboard size, orientation and appearance https://github.com/bancika/diy-layout-creator/releases