diff --git a/diylc/diylc-core/src/org/diylc/presenter/G2DWrapper.java b/diylc/diylc-core/src/org/diylc/presenter/G2DWrapper.java index ce9a1e13..47594847 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/G2DWrapper.java +++ b/diylc/diylc-core/src/org/diylc/presenter/G2DWrapper.java @@ -304,7 +304,7 @@ class G2DWrapper extends Graphics2D implements IDrawingObserver { @Override public void draw(Shape s) { canvasGraphics.draw(s); - if (drawingComponent && trackingAllowed) { + if (drawingComponent && (trackingAllowed || trackingContinuityAllowed)) { appendShapeOutline(s); } } @@ -378,7 +378,9 @@ class G2DWrapper extends Graphics2D implements IDrawingObserver { @Override public void fill(Shape s) { canvasGraphics.fill(s); - appendShape(s); + if (drawingComponent && (trackingAllowed || trackingContinuityAllowed)) { + appendShape(s); + } } @Override diff --git a/diylc/diylc-library/lib/diylc-core.jar b/diylc/diylc-library/lib/diylc-core.jar index f864f5db..909e364e 100644 Binary files a/diylc/diylc-library/lib/diylc-core.jar and b/diylc/diylc-library/lib/diylc-core.jar differ diff --git a/diylc/diylc-library/src/org/diylc/components/AbstractSchematicLeadedSymbol.java b/diylc/diylc-library/src/org/diylc/components/AbstractSchematicLeadedSymbol.java index 9699fe07..c8eb791c 100644 --- a/diylc/diylc-library/src/org/diylc/components/AbstractSchematicLeadedSymbol.java +++ b/diylc/diylc-library/src/org/diylc/components/AbstractSchematicLeadedSymbol.java @@ -23,7 +23,6 @@ package org.diylc.components; import java.awt.Color; import java.awt.FontMetrics; -import java.awt.Point; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; @@ -78,7 +77,7 @@ public abstract class AbstractSchematicLeadedSymbol extends AbstractLeadedCom double y = (point1.getY() + point2.getY()) / 2.0; double theta = Math.atan2(point2.getY() - point1.getY(), point2.getX() - point2.getX()) - Math.PI / 2; double r = width.convertToPixels() / 2 + LABEL_FONT.getSize() / 2; - return new Point((int) (x + Math.cos(theta) * r), (int) (y + Math.sin(theta) * r)); + return new Point2D.Double(x + Math.cos(theta) * r, y + Math.sin(theta) * r); } @EditableProperty(name = "Label Position") diff --git a/diylc/diylc-library/src/org/diylc/components/boards/AbstractBoard.java b/diylc/diylc-library/src/org/diylc/components/boards/AbstractBoard.java index 7d34e27c..a992fe18 100644 --- a/diylc/diylc-library/src/org/diylc/components/boards/AbstractBoard.java +++ b/diylc/diylc-library/src/org/diylc/components/boards/AbstractBoard.java @@ -25,7 +25,6 @@ import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Composite; import java.awt.Graphics2D; -import java.awt.Point; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; @@ -57,7 +56,7 @@ public abstract class AbstractBoard extends AbstractTransparentComponent protected Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0), new Point2D.Double(DEFAULT_WIDTH.convertToPixels(), DEFAULT_HEIGHT.convertToPixels())}; protected Point2D firstPoint = new Point2D.Double(); - protected Point2D secondPoint = new Point.Double(); + protected Point2D secondPoint = new Point2D.Double(); protected Color boardColor = BOARD_COLOR; protected Color borderColor = BORDER_COLOR; @@ -340,8 +339,8 @@ public abstract class AbstractBoard extends AbstractTransparentComponent @Override public Rectangle2D getCachingBounds() { Point2D finalSecondPoint = getFinalSecondPoint(); - return new Rectangle2D.Double(Math.min(firstPoint.getX(), finalSecondPoint.getX()), Math.min(firstPoint.getY(), finalSecondPoint.getY()), - Math.abs(finalSecondPoint.getX() - firstPoint.getX()) + 2, Math.abs(finalSecondPoint.getY() - firstPoint.getY()) + 2); + return new Rectangle2D.Double(Math.min(firstPoint.getX(), finalSecondPoint.getX()) - 2, Math.min(firstPoint.getY(), finalSecondPoint.getY()) - 2, + Math.abs(finalSecondPoint.getX() - firstPoint.getX()) + 4, Math.abs(finalSecondPoint.getY() - firstPoint.getY()) + 4); } public static enum CoordinateType { 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 7898a4bc..aa6da041 100644 --- a/diylc/diylc-library/src/org/diylc/components/boards/Breadboard.java +++ b/diylc/diylc-library/src/org/diylc/components/boards/Breadboard.java @@ -25,10 +25,11 @@ import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Composite; import java.awt.Graphics2D; -import java.awt.Point; +import java.awt.Shape; import java.awt.geom.AffineTransform; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; +import java.awt.geom.RoundRectangle2D; import org.diylc.awt.StringUtils; import org.diylc.common.HorizontalAlignment; @@ -72,7 +73,7 @@ public class Breadboard extends AbstractComponent { public static Size HOLE_SIZE = new Size(1.5, SizeUnit.mm); public static Size HOLE_ARC = new Size(1d, SizeUnit.mm); - protected Point point = new Point(0, 0); + protected Point2D point = new Point2D.Double(0, 0); protected BreadboardSize breadboardSize; protected PowerStripPosition powerStripPosition; @@ -100,7 +101,7 @@ public class Breadboard extends AbstractComponent { break; } if (theta != 0) { - g2d.rotate(theta, point.x, point.y); + g2d.rotate(theta, point.getX(), point.getY()); } int bodyArc = (int) BODY_ARC.convertToPixels(); @@ -109,27 +110,28 @@ public class Breadboard extends AbstractComponent { // draw body g2d.setColor(FILL_COLOR); - int width = (int) (23 * project.getGridSpacing().convertToPixels()); - int height = (int) ((holeCount + 1) * project.getGridSpacing().convertToPixels()); - g2d.fillRoundRect(point.x, point.y, width, height, bodyArc, bodyArc); + int width = (int) (23 * SPACING.convertToPixels()); + int height = (int) ((holeCount + 1) * SPACING.convertToPixels()); + Shape rect = new RoundRectangle2D.Double(point.getX(), point.getY(), width, height, bodyArc, bodyArc); + g2d.fill(rect); g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : BORDER_COLOR); g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1)); - g2d.drawRoundRect(point.x, point.y, width, height, bodyArc, bodyArc); + g2d.draw(rect); drawingObserver.stopTracking(); // draw lines g2d.setColor(PLUS_COLOR); - g2d.drawLine((int) (point.x + spacing), (int) (point.y + spacing), (int) (point.x + spacing), - (int) (point.y + holeCount * spacing)); - g2d.drawLine((int) (point.x + 19 * spacing), (int) (point.y + spacing), (int) (point.x + 19 * spacing), - (int) (point.y + holeCount * spacing)); + g2d.drawLine((int) (point.getX() + spacing), (int) (point.getY() + spacing), (int) (point.getX() + spacing), + (int) (point.getY() + holeCount * spacing)); + g2d.drawLine((int) (point.getX() + 19 * spacing), (int) (point.getY() + spacing), (int) (point.getX() + 19 * spacing), + (int) (point.getY() + holeCount * spacing)); g2d.setColor(MINUS_COLOR); - g2d.drawLine((int) (point.x + 4 * spacing), (int) (point.y + spacing), (int) (point.x + 4 * spacing), - (int) (point.y + holeCount * spacing)); - g2d.drawLine((int) (point.x + 22 * spacing), (int) (point.y + spacing), (int) (point.x + 22 * spacing), - (int) (point.y + holeCount * spacing)); + g2d.drawLine((int) (point.getX() + 4 * spacing), (int) (point.getY() + spacing), (int) (point.getX() + 4 * spacing), + (int) (point.getY() + holeCount * spacing)); + g2d.drawLine((int) (point.getX() + 22 * spacing), (int) (point.getY() + spacing), (int) (point.getX() + 22 * spacing), + (int) (point.getY() + holeCount * spacing)); int holeSize = getClosestOdd(HOLE_SIZE.convertToPixels()); int holeArc = (int) HOLE_ARC.convertToPixels(); @@ -145,15 +147,15 @@ public class Breadboard extends AbstractComponent { g2d.setColor(COORDINATE_COLOR); int coordinateX; if (section == 0) { - coordinateX = (int) (point.x + offset + 5.5 * spacing); + coordinateX = (int) (point.getX() + offset + 5.5 * spacing); } else { - coordinateX = (int) (point.x + offset + 10.5 * spacing); + coordinateX = (int) (point.getX() + offset + 10.5 * spacing); } - StringUtils.drawCenteredText(g2d, String.valueOf(y + 1), coordinateX, (int) (point.y + (y + 1) * spacing), + StringUtils.drawCenteredText(g2d, String.valueOf(y + 1), coordinateX, (int) (point.getY() + (y + 1) * spacing), section == 0 ? HorizontalAlignment.RIGHT : HorizontalAlignment.LEFT, VerticalAlignment.CENTER); for (int x = 0; x < 5; x++) { - int holeX = (int) (point.x + offset + (x + 6) * spacing); - int holeY = (int) (point.y + (y + 1) * spacing); + int holeX = (int) (point.getX() + offset + (x + 6) * spacing); + int holeY = (int) (point.getY() + (y + 1) * spacing); g2d.setColor(HOLE_COLOR); g2d.fillRoundRect(holeX - holeSize / 2, holeY - holeSize / 2, holeSize, holeSize, holeArc, holeArc); g2d.setColor(BORDER_COLOR); @@ -162,9 +164,9 @@ public class Breadboard extends AbstractComponent { // Draw horizontal labels if (y == 0) { g2d.setColor(COORDINATE_COLOR); - StringUtils.drawCenteredText(g2d, new String(new byte[] {(byte) (a + x + 5 * section)}), holeX, (int) (point.y + COORDINATE_FONT_SIZE), + StringUtils.drawCenteredText(g2d, new String(new byte[] {(byte) (a + x + 5 * section)}), holeX, (int) (point.getY() + COORDINATE_FONT_SIZE), HorizontalAlignment.CENTER, VerticalAlignment.TOP); - StringUtils.drawCenteredText(g2d, new String(new byte[] {(byte) (a + x + 5 * section)}), holeX, (int) (point.y + StringUtils.drawCenteredText(g2d, new String(new byte[] {(byte) (a + x + 5 * section)}), holeX, (int) (point.getY() + spacing * 31 - COORDINATE_FONT_SIZE / 2), HorizontalAlignment.CENTER, VerticalAlignment.TOP); } } @@ -184,8 +186,8 @@ public class Breadboard extends AbstractComponent { for (int x = 0; x < 2; x++) { if ((y + 1) % 6 == 0) continue; - int holeX = (int) (point.x + offset + (x + 2) * spacing); - int holeY = (int) (point.y + (y + 1 + powerOffset) * spacing); + int holeX = (int) (point.getX() + offset + (x + 2) * spacing); + int holeY = (int) (point.getY() + (y + 1 + powerOffset) * spacing); g2d.setColor(HOLE_COLOR); g2d.fillRoundRect(holeX - holeSize / 2, holeY - holeSize / 2, holeSize, holeSize, holeArc, holeArc); g2d.setColor(BORDER_COLOR); @@ -202,9 +204,9 @@ public class Breadboard extends AbstractComponent { for (int section = 0; section <= 1; section++) { double offset = section * 18 * spacing; for (int x = 0; x < 2; x++) { - int holeX = (int) (point.x + offset + (x + 2) * spacing); - int holeY1 = (int) (point.y + (1 + powerOffset) * spacing); - int holeY2 = (int) (point.y + (psHoleCount -1 + powerOffset) * spacing); + int holeX = (int) (point.getX() + offset + (x + 2) * spacing); + int holeY1 = (int) (point.getY() + (1 + powerOffset) * spacing); + int holeY2 = (int) (point.getY() + (psHoleCount -1 + powerOffset) * spacing); g2d.setColor(HOLE_COLOR); g2d.fillRoundRect(holeX - holeSize / 2, holeY1 - holeSize / 2, holeSize, holeSize + holeY2 - holeY1, holeArc, holeArc); } @@ -217,16 +219,16 @@ public class Breadboard extends AbstractComponent { g2d.setColor(COORDINATE_COLOR); int coordinateX; if (section == 0) { - coordinateX = (int) (point.x + offset + 5.5 * spacing); + coordinateX = (int) (point.getX() + offset + 5.5 * spacing); } else { - coordinateX = (int) (point.x + offset + 10.5 * spacing); + coordinateX = (int) (point.getX() + offset + 10.5 * spacing); } - StringUtils.drawCenteredText(g2d, String.valueOf(y + 1), coordinateX, (int) (point.y + (y + 1) * spacing), + StringUtils.drawCenteredText(g2d, String.valueOf(y + 1), coordinateX, (int) (point.getY() + (y + 1) * spacing), section == 0 ? HorizontalAlignment.RIGHT : HorizontalAlignment.LEFT, VerticalAlignment.CENTER); // for (int x = 0; x < 5; x++) { - int holeX1 = (int) (point.x + offset + 6 * spacing); - int holeX2 = (int) (point.x + offset + 10 * spacing); - int holeY = (int) (point.y + (y + 1) * spacing); + int holeX1 = (int) (point.getX() + offset + 6 * spacing); + int holeX2 = (int) (point.getX() + offset + 10 * spacing); + int holeY = (int) (point.getY() + (y + 1) * spacing); g2d.setColor(HOLE_COLOR); g2d.fillRoundRect(holeX1 - holeSize / 2, holeY - holeSize / 2, holeSize + holeX2 - holeX1, holeSize, holeArc, holeArc); // } @@ -324,7 +326,7 @@ public class Breadboard extends AbstractComponent { @SuppressWarnings("incomplete-switch") @Override - public Point getControlPoint(int index) { + public Point2D getControlPoint(int index) { if (index == 0) return point; // create a synthetic second control point for clipping check and to make sure that we cannot drag the right side of the board off the screen @@ -343,9 +345,9 @@ public class Breadboard extends AbstractComponent { theta = Math.PI * 3 / 2; break; } - Point secondPoint = new Point((int) (point.x + 23 * spacing), (int) (point.y + (holeCount + 1) * spacing)); + Point2D secondPoint = new Point2D.Double(point.getX() + 23 * spacing, point.getY() + (holeCount + 1) * spacing); if (theta != 0) { - AffineTransform tx = AffineTransform.getRotateInstance(theta, point.x, point.y); + AffineTransform tx = AffineTransform.getRotateInstance(theta, point.getX(), point.getY()); tx.transform(secondPoint, secondPoint); } return secondPoint; @@ -382,9 +384,9 @@ public class Breadboard extends AbstractComponent { @Override public Rectangle2D getCachingBounds() { - Point finalSecondPoint = getControlPoint(1); - return new Rectangle2D.Double(Math.min(point.x, finalSecondPoint.x), Math.min(point.y, finalSecondPoint.y), - Math.abs(finalSecondPoint.x - point.x) + 2, Math.abs(finalSecondPoint.y - point.y) + 2); + Point2D finalSecondPoint = getControlPoint(1); + return new Rectangle2D.Double(Math.min(point.getX(), finalSecondPoint.getX()) - 2, Math.min(point.getY(), finalSecondPoint.getY()) - 2, + Math.abs(finalSecondPoint.getX() - point.getX()) + 4, Math.abs(finalSecondPoint.getY() - point.getY()) + 4); } public enum BreadboardSize { diff --git a/diylc/diylc-library/src/org/diylc/components/boards/EyeletBoard.java b/diylc/diylc-library/src/org/diylc/components/boards/EyeletBoard.java index 8196abbd..28ebb486 100644 --- a/diylc/diylc-library/src/org/diylc/components/boards/EyeletBoard.java +++ b/diylc/diylc-library/src/org/diylc/components/boards/EyeletBoard.java @@ -82,7 +82,7 @@ public class EyeletBoard extends AbstractBoard { g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA)); } double x = firstPoint.getX(); - double y = finalSecondPoint.getY(); + double y = firstPoint.getY(); int diameter = getClosestOdd((int) EYELET_SIZE.convertToPixels()); int holeDiameter = getClosestOdd((int) HOLE_SIZE.convertToPixels()); int spacing = (int) this.spacing.convertToPixels(); diff --git a/diylc/diylc-library/src/org/diylc/components/boards/ProtoBoard.java b/diylc/diylc-library/src/org/diylc/components/boards/ProtoBoard.java index 39ec562a..3740b17d 100644 --- a/diylc/diylc-library/src/org/diylc/components/boards/ProtoBoard.java +++ b/diylc/diylc-library/src/org/diylc/components/boards/ProtoBoard.java @@ -23,7 +23,7 @@ package org.diylc.components.boards; import java.awt.Color; import java.awt.Graphics2D; -import java.awt.Point; +import java.awt.Shape; import java.awt.geom.AffineTransform; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; @@ -80,7 +80,7 @@ public class ProtoBoard extends AbstractComponent { private static int[] GAPS = new int[] { 1, 0, 2, 0, 0, 0 }; private static int[] SEGMENTS_STARTS = new int[] { 0, 3, 6, 11, 14, 17 }; - protected Point point = new Point(0, 0); + protected Point2D point = new Point2D.Double(0, 0); protected Orientation orientation; @@ -113,7 +113,7 @@ public class ProtoBoard extends AbstractComponent { break; } if (theta != 0) { - g2d.rotate(theta, point.x, point.y); + g2d.rotate(theta, point.getX(), point.getY()); } double spacing = SPACING.convertToPixels(); @@ -122,14 +122,16 @@ public class ProtoBoard extends AbstractComponent { g2d.setColor(boardColor); int width = (int) WIDTH_SIZE.convertToPixels(); int length = (int) LENGTH_SIZE.convertToPixels(); - - g2d.fillRect(point.x, point.y, width, length); + + Shape rect = new Rectangle2D.Double(point.getX(), point.getY(), width, length); + g2d.fill(rect); g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : boardColor.darker()); - g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1)); - g2d.drawRect(point.x, point.y, width, length); - - drawingObserver.stopTracking(); + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1)); + + drawingObserver.stopTracking(); + + g2d.draw(rect); int padSize = getClosestOdd(PAD_SIZE.convertToPixels()); int holeSize = getClosestOdd(padSize / 3); @@ -148,10 +150,10 @@ public class ProtoBoard extends AbstractComponent { for (int y = 0; y < ROW_COUNT; y++) { for (int segment = 0; segment < SEGMENTS.length; segment++) { drawingObserver.setContinuityMarker("SEGMENT=" + segment + ";ROW=" + y); - g2d.drawLine((int) (point.x + (xOffset + SEGMENTS_STARTS[segment]) * spacing), - (int) (point.y + (yOffset + y) * spacing), - (int) (point.x + (xOffset + SEGMENTS_STARTS[segment] + SEGMENTS[segment] - 1) * spacing), - (int) (point.y + (yOffset + y) * spacing)); + g2d.drawLine((int) (point.getX() + (xOffset + SEGMENTS_STARTS[segment]) * spacing), + (int) (point.getY() + (yOffset + y) * spacing), + (int) (point.getX() + (xOffset + SEGMENTS_STARTS[segment] + SEGMENTS[segment] - 1) * spacing), + (int) (point.getY() + (yOffset + y) * spacing)); } } drawingObserver.setContinuityMarker(null); @@ -161,62 +163,62 @@ public class ProtoBoard extends AbstractComponent { // draw central mini pad connectors, top row for (int y = 0; y < ROW_COUNT; y++) { // top row - g2d.drawLine((int) (point.x + (1 + SEGMENTS_SUM[3]) * spacing), (int) (point.y + (yOffset + y - 0.25d) * spacing + 1), - (int) (point.x + (1 + SEGMENTS_SUM[3] + 0.5) * spacing), (int) (point.y + (yOffset + y - 0.25d) * spacing + 1)); - g2d.drawLine((int) (point.x + (1 + SEGMENTS_SUM[3] + 3) * spacing), (int) (point.y + (yOffset + y - 0.25d) * spacing + 1), - (int) (point.x + (1 + SEGMENTS_SUM[3] + 2.5) * spacing), (int) (point.y + (yOffset + y - 0.25d) * spacing + 1)); + g2d.drawLine((int) (point.getX() + (1 + SEGMENTS_SUM[3]) * spacing), (int) (point.getY() + (yOffset + y - 0.25d) * spacing + 1), + (int) (point.getX() + (1 + SEGMENTS_SUM[3] + 0.5) * spacing), (int) (point.getY() + (yOffset + y - 0.25d) * spacing + 1)); + g2d.drawLine((int) (point.getX() + (1 + SEGMENTS_SUM[3] + 3) * spacing), (int) (point.getY() + (yOffset + y - 0.25d) * spacing + 1), + (int) (point.getX() + (1 + SEGMENTS_SUM[3] + 2.5) * spacing), (int) (point.getY() + (yOffset + y - 0.25d) * spacing + 1)); } g2d.setColor(undersideTraceColor); // bottom row. for (int y = 0; y < ROW_COUNT; y++) { - g2d.drawLine((int) (point.x + (1 + SEGMENTS_SUM[3]) * spacing), (int) (point.y + (yOffset + y + 0.25d) * spacing + 1), - (int) (point.x + (1 + SEGMENTS_SUM[3] + 1) * spacing), (int) (point.y + (yOffset + y + 0.25d) * spacing + 1)); - g2d.drawLine((int) (point.x + (1 + SEGMENTS_SUM[3] + 3) * spacing), (int) (point.y + (yOffset + y + 0.25d) * spacing + 1), - (int) (point.x + (1 + SEGMENTS_SUM[3] + 2) * spacing), (int) (point.y + (yOffset + y + 0.25d) * spacing + 1)); + g2d.drawLine((int) (point.getX() + (1 + SEGMENTS_SUM[3]) * spacing), (int) (point.getY() + (yOffset + y + 0.25d) * spacing + 1), + (int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1) * spacing), (int) (point.getY() + (yOffset + y + 0.25d) * spacing + 1)); + g2d.drawLine((int) (point.getX() + (1 + SEGMENTS_SUM[3] + 3) * spacing), (int) (point.getY() + (yOffset + y + 0.25d) * spacing + 1), + (int) (point.getX() + (1 + SEGMENTS_SUM[3] + 2) * spacing), (int) (point.getY() + (yOffset + y + 0.25d) * spacing + 1)); } // vertical ground line - g2d.drawLine((int) (point.x + (1 + SEGMENTS_SUM[3] + 1.5) * spacing), (int) (point.y + (yOffset - 1.5) * spacing), - (int) (point.x + (1 + SEGMENTS_SUM[3] + 1.5) * spacing), (int) (point.y + (yOffset + ROW_COUNT + 0.5) * spacing)); + g2d.drawLine((int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.5) * spacing), (int) (point.getY() + (yOffset - 1.5) * spacing), + (int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.5) * spacing), (int) (point.getY() + (yOffset + ROW_COUNT + 0.5) * spacing)); g2d.setColor(traceColor); // traces to top and bottom 3 pads g2d.drawPolyline(new int[] { - (int) (point.x + (1 + SEGMENTS_SUM[3] + 0.5) * spacing), - (int) (point.x + (1 + SEGMENTS_SUM[3] + 1.2) * spacing), - (int) (point.x + (1 + SEGMENTS_SUM[3] + 1.2) * spacing)}, + (int) (point.getX() + (1 + SEGMENTS_SUM[3] + 0.5) * spacing), + (int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.2) * spacing), + (int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.2) * spacing)}, new int[] { - (int) (point.y + (yOffset - 1.5) * spacing), - (int) (point.y + (yOffset - 1) * spacing), - (int) (point.y + (yOffset - 0.3) * spacing)}, 3); + (int) (point.getY() + (yOffset - 1.5) * spacing), + (int) (point.getY() + (yOffset - 1) * spacing), + (int) (point.getY() + (yOffset - 0.3) * spacing)}, 3); g2d.drawPolyline(new int[] { - (int) (point.x + (1 + SEGMENTS_SUM[3] + 2.5) * spacing), - (int) (point.x + (1 + SEGMENTS_SUM[3] + 1.8) * spacing), - (int) (point.x + (1 + SEGMENTS_SUM[3] + 1.8) * spacing)}, + (int) (point.getX() + (1 + SEGMENTS_SUM[3] + 2.5) * spacing), + (int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.8) * spacing), + (int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.8) * spacing)}, new int[] { - (int) (point.y + (yOffset - 1.5) * spacing), - (int) (point.y + (yOffset - 1) * spacing), - (int) (point.y + (yOffset - 0.3) * spacing)}, 3); + (int) (point.getY() + (yOffset - 1.5) * spacing), + (int) (point.getY() + (yOffset - 1) * spacing), + (int) (point.getY() + (yOffset - 0.3) * spacing)}, 3); g2d.drawPolyline(new int[] { - (int) (point.x + (1 + SEGMENTS_SUM[3] + 0.5) * spacing), - (int) (point.x + (1 + SEGMENTS_SUM[3] + 1.2) * spacing), - (int) (point.x + (1 + SEGMENTS_SUM[3] + 1.2) * spacing)}, + (int) (point.getX() + (1 + SEGMENTS_SUM[3] + 0.5) * spacing), + (int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.2) * spacing), + (int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.2) * spacing)}, new int[] { - (int) (point.y + (yOffset + ROW_COUNT + 0.5) * spacing), - (int) (point.y + (yOffset + ROW_COUNT) * spacing), - (int) (point.y + (yOffset + ROW_COUNT - 0.35) * spacing)}, 3); + (int) (point.getY() + (yOffset + ROW_COUNT + 0.5) * spacing), + (int) (point.getY() + (yOffset + ROW_COUNT) * spacing), + (int) (point.getY() + (yOffset + ROW_COUNT - 0.35) * spacing)}, 3); g2d.drawPolyline(new int[] { - (int) (point.x + (1 + SEGMENTS_SUM[3] + 2.5) * spacing), - (int) (point.x + (1 + SEGMENTS_SUM[3] + 1.8) * spacing), - (int) (point.x + (1 + SEGMENTS_SUM[3] + 1.8) * spacing)}, + (int) (point.getX() + (1 + SEGMENTS_SUM[3] + 2.5) * spacing), + (int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.8) * spacing), + (int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.8) * spacing)}, new int[] { - (int) (point.y + (yOffset + ROW_COUNT + 0.5) * spacing), - (int) (point.y + (yOffset + ROW_COUNT) * spacing), - (int) (point.y + (yOffset + ROW_COUNT - 0.35) * spacing)}, 3); + (int) (point.getY() + (yOffset + ROW_COUNT + 0.5) * spacing), + (int) (point.getY() + (yOffset + ROW_COUNT) * spacing), + (int) (point.getY() + (yOffset + ROW_COUNT - 0.35) * spacing)}, 3); drawingObserver.stopTrackingContinuityArea(); @@ -226,12 +228,12 @@ public class ProtoBoard extends AbstractComponent { g2d.setColor(traceColor); g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(padSize / 4)); drawingObserver.startTrackingContinuityArea(true); - g2d.drawLine((int) (point.x + (1 + SEGMENTS_SUM[3] + 0.5) * spacing), (int) (point.y + 1 * spacing), - (int) (point.x + (1 + SEGMENTS_SUM[3] + 0.5) * spacing), (int) (point.y + 3.5 * spacing)); - g2d.drawLine((int) (point.x + (1 + SEGMENTS_SUM[3] + 1.5) * spacing + miniPadSize / 2), (int) (point.y + 1 * spacing), - (int) (point.x + (1 + SEGMENTS_SUM[3] + 1.5) * spacing + miniPadSize / 2), (int) (point.y + 3.5 * spacing)); - g2d.drawLine((int) (point.x + (1 + SEGMENTS_SUM[3] + 2.5) * spacing), (int) (point.y + 1 * spacing), - (int) (point.x + (1 + SEGMENTS_SUM[3] + 2.5) * spacing), (int) (point.y + 3.5 * spacing)); + g2d.drawLine((int) (point.getX() + (1 + SEGMENTS_SUM[3] + 0.5) * spacing), (int) (point.getY() + 1 * spacing), + (int) (point.getX() + (1 + SEGMENTS_SUM[3] + 0.5) * spacing), (int) (point.getY() + 3.5 * spacing)); + g2d.drawLine((int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.5) * spacing + miniPadSize / 2), (int) (point.getY() + 1 * spacing), + (int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.5) * spacing + miniPadSize / 2), (int) (point.getY() + 3.5 * spacing)); + g2d.drawLine((int) (point.getX() + (1 + SEGMENTS_SUM[3] + 2.5) * spacing), (int) (point.getY() + 1 * spacing), + (int) (point.getX() + (1 + SEGMENTS_SUM[3] + 2.5) * spacing), (int) (point.getY() + 3.5 * spacing)); drawingObserver.stopTrackingContinuityArea(); g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1)); @@ -241,11 +243,11 @@ public class ProtoBoard extends AbstractComponent { g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(2)); - g2d.drawLine((int) (point.x + (1 + SEGMENTS_STARTS[2] - 0.5) * spacing), (int) (point.y + (yOffset - 1) * spacing), - (int) (point.x + (1 + SEGMENTS_STARTS[2] - 0.5) * spacing), (int) (point.y + (yOffset + ROW_COUNT -0.5) * spacing)); - g2d.drawLine((int) (point.x + (1 + SEGMENTS_STARTS[4] - 0.5) * spacing), (int) (point.y + (yOffset - 1) * spacing), - (int) (point.x + (1 + SEGMENTS_STARTS[4] - 0.5) * spacing), (int) (point.y + (yOffset + ROW_COUNT -0.5) * spacing)); - g2d.fillRect((int) (point.x + (1 + SEGMENTS_STARTS[1] - 1.25) * spacing), (int) (point.y + (yOffset - 1) * spacing), + g2d.drawLine((int) (point.getX() + (1 + SEGMENTS_STARTS[2] - 0.5) * spacing), (int) (point.getY() + (yOffset - 1) * spacing), + (int) (point.getX() + (1 + SEGMENTS_STARTS[2] - 0.5) * spacing), (int) (point.getY() + (yOffset + ROW_COUNT -0.5) * spacing)); + g2d.drawLine((int) (point.getX() + (1 + SEGMENTS_STARTS[4] - 0.5) * spacing), (int) (point.getY() + (yOffset - 1) * spacing), + (int) (point.getX() + (1 + SEGMENTS_STARTS[4] - 0.5) * spacing), (int) (point.getY() + (yOffset + ROW_COUNT -0.5) * spacing)); + g2d.fillRect((int) (point.getX() + (1 + SEGMENTS_STARTS[1] - 1.25) * spacing), (int) (point.getY() + (yOffset - 1) * spacing), (int)(0.5 * spacing), (int) ((ROW_COUNT + 0.5) * spacing)); g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1)); @@ -254,8 +256,8 @@ public class ProtoBoard extends AbstractComponent { for (int segment = 0; segment < SEGMENTS.length; segment++) { for (int y = 0; y < ROW_COUNT; y++) { for (int x = 0; x < SEGMENTS[segment]; x++) { - int padX = (int) (point.x + (xOffset + x) * spacing); - int padY = (int) (point.y + (yOffset + y) * spacing); + int padX = (int) (point.getX() + (xOffset + x) * spacing); + int padY = (int) (point.getY() + (yOffset + y) * spacing); drawingObserver.startTrackingContinuityArea(true); drawingObserver.setContinuityMarker("SEGMENT=" + segment + ";ROW=" + y); @@ -282,7 +284,7 @@ public class ProtoBoard extends AbstractComponent { // Draw horizontal labels if (y == 0) { g2d.setColor(textColor); - StringUtils.drawCenteredText(g2d, Integer.toString(SEGMENTS_SUM[segment] + x + 1), padX, (int) (point.y + (yOffset) * spacing) - padSize / 2 - 2, + StringUtils.drawCenteredText(g2d, Integer.toString(SEGMENTS_SUM[segment] + x + 1), padX, (int) (point.getY() + (yOffset) * spacing) - padSize / 2 - 2, HorizontalAlignment.CENTER, VerticalAlignment.TOP); } } @@ -294,14 +296,14 @@ public class ProtoBoard extends AbstractComponent { // Draw top and bottom 3 pads for (int y = 0; y < 2; y++) { g2d.setColor(SEPARATOR_COLOR); - g2d.drawRect((int) (point.x + (1 + SEGMENTS_SUM[3]) * spacing), (int) (point.y + (yOffset - 2 + y * (ROW_COUNT + 2)) * spacing), + g2d.drawRect((int) (point.getX() + (1 + SEGMENTS_SUM[3]) * spacing), (int) (point.getY() + (yOffset - 2 + y * (ROW_COUNT + 2)) * spacing), (int)(3 * spacing), (int)spacing); drawingObserver.startTrackingContinuityArea(true); for (int x = 0; x < 3; x++) { - int padX = (int) (point.x + (1 + SEGMENTS_SUM[3] + 0.5 + x) * spacing); - int padY = (int) (point.y + (yOffset - 1.5 + y * (ROW_COUNT + 2)) * spacing); + int padX = (int) (point.getX() + (1 + SEGMENTS_SUM[3] + 0.5 + x) * spacing); + int padY = (int) (point.getY() + (yOffset - 1.5 + y * (ROW_COUNT + 2)) * spacing); g2d.setColor(padColor); @@ -332,16 +334,16 @@ public class ProtoBoard extends AbstractComponent { g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(2)); g2d.setColor(SCREEN_COLOR); - g2d.fillRect((int) (point.x + width - 1.5 * spacing), point.y + 2, (int) (spacing), (int) (2 * spacing)); + g2d.fill(new Rectangle2D.Double(point.getX() + width - 1.5 * spacing, point.getY() + 2, spacing, 2 * spacing)); g2d.setColor(SEPARATOR_COLOR); - g2d.drawRect((int) (point.x + width - 5.5 * spacing), point.y + 2, (int) (5 * spacing), (int) (2 * spacing)); + g2d.draw(new Rectangle2D.Double(point.getX() + width - 5.5 * spacing, point.getY() + 2, 5 * spacing, 2 * spacing)); - g2d.drawLine((int) (point.x + width - 5.5 * spacing), (int) (point.y + 2 * spacing) + 8, - (int) (point.x + width - 5.5 * spacing), (int) (point.y + 3.5 * spacing)); - g2d.drawLine((int) (point.x + width - 4.5 * spacing), (int) (point.y + 2 * spacing + 8), - (int) (point.x + width - 4.5 * spacing), (int) (point.y + 3.5 * spacing)); - g2d.drawLine((int) (point.x + width - 1.5 * spacing), (int) (point.y + 2 * spacing + 8), - (int) (point.x + width - 1.5 * spacing), (int) (point.y + 3.5 * spacing)); + g2d.drawLine((int) (point.getX() + width - 5.5 * spacing), (int) (point.getY() + 2 * spacing) + 8, + (int) (point.getX() + width - 5.5 * spacing), (int) (point.getY() + 3.5 * spacing)); + g2d.drawLine((int) (point.getX() + width - 4.5 * spacing), (int) (point.getY() + 2 * spacing + 8), + (int) (point.getX() + width - 4.5 * spacing), (int) (point.getY() + 3.5 * spacing)); + g2d.drawLine((int) (point.getX() + width - 1.5 * spacing), (int) (point.getY() + 2 * spacing + 8), + (int) (point.getX() + width - 1.5 * spacing), (int) (point.getY() + 3.5 * spacing)); g2d.setColor(traceColor); g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(padSize / 4)); @@ -349,22 +351,22 @@ public class ProtoBoard extends AbstractComponent { drawingObserver.startTrackingContinuityArea(true); // Draw two horizontal traces in the top-right section - g2d.drawLine((int) (point.x + width - 4 * spacing), (int) (point.y + 0.5 * spacing), (int) (point.x + width - (2) * spacing), (int) (point.y + 0.5 * spacing)); - g2d.drawLine((int) (point.x + width - 4 * spacing), (int) (point.y + 1.5 * spacing), (int) (point.x + width - (2) * spacing), (int) (point.y + 1.5 * spacing)); + g2d.drawLine((int) (point.getX() + width - 4 * spacing), (int) (point.getY() + 0.5 * spacing), (int) (point.getX() + width - (2) * spacing), (int) (point.getY() + 0.5 * spacing)); + g2d.drawLine((int) (point.getX() + width - 4 * spacing), (int) (point.getY() + 1.5 * spacing), (int) (point.getX() + width - (2) * spacing), (int) (point.getY() + 1.5 * spacing)); // Draw top-right pads for (int x = 0; x < 6; x++) { - int padX = (int) (point.x + width - (x + 1) * spacing); + int padX = (int) (point.getX() + width - (x + 1) * spacing); g2d.setColor(traceColor); g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(padSize / 4)); - g2d.drawLine(padX, (int) (point.y + 0.5 * spacing), padX, (int) (point.y + 3 * spacing)); + g2d.drawLine(padX, (int) (point.getY() + 0.5 * spacing), padX, (int) (point.getY() + 3 * spacing)); g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1)); for (int y = 0; y < 3; y++) { - int padY = (int) (point.y + (y + (y == 2 ? 0.5 : 0) + 0.5) * spacing); + int padY = (int) (point.getY() + (y + (y == 2 ? 0.5 : 0) + 0.5) * spacing); if (x == 0) drawingObserver.setContinuityMarker("-12V"); @@ -398,10 +400,10 @@ public class ProtoBoard extends AbstractComponent { // draw top mini pads g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1)); for (int y = 0; y < 4; y++) { - int padY = (int) (point.y + (0.5 * y + 1) * spacing); - int[] padXs = new int[] {(int) (point.x + (1 + SEGMENTS_SUM[3] + 0.5) * spacing - miniPadSize - 2), (int) (point.x + (1 + SEGMENTS_SUM[3] + 0.5) * spacing), - (int) (point.x + (1 + SEGMENTS_SUM[3] + 1.5) * spacing) - miniPadSize / 2 - 2, (int) (point.x + (1 + SEGMENTS_SUM[3] + 1.5) * spacing) + miniPadSize / 2 + 1, - (int) (point.x + (1 + SEGMENTS_SUM[3] + 2.5) * spacing), (int) (point.x + (1 + SEGMENTS_SUM[3] + 2.5) * spacing + miniPadSize + 2)}; + int padY = (int) (point.getY() + (0.5 * y + 1) * spacing); + int[] padXs = new int[] {(int) (point.getX() + (1 + SEGMENTS_SUM[3] + 0.5) * spacing - miniPadSize - 2), (int) (point.getX() + (1 + SEGMENTS_SUM[3] + 0.5) * spacing), + (int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.5) * spacing) - miniPadSize / 2 - 2, (int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.5) * spacing) + miniPadSize / 2 + 1, + (int) (point.getX() + (1 + SEGMENTS_SUM[3] + 2.5) * spacing), (int) (point.getX() + (1 + SEGMENTS_SUM[3] + 2.5) * spacing + miniPadSize + 2)}; for (int i = 0; i < padXs.length; i++) { int padX = padXs[i]; @@ -434,41 +436,41 @@ public class ProtoBoard extends AbstractComponent { g2d.setColor(textColor); // Draw top labels - StringUtils.drawCenteredText(g2d, "+5V", (int) (point.x + (1 + SEGMENTS_SUM[3] - 0.3) * spacing), (int) (point.y + 1 * spacing) + 1, + StringUtils.drawCenteredText(g2d, "+5V", (int) (point.getX() + (1 + SEGMENTS_SUM[3] - 0.3) * spacing), (int) (point.getY() + 1 * spacing) + 1, HorizontalAlignment.RIGHT, VerticalAlignment.CENTER); - StringUtils.drawCenteredText(g2d, "+12V", (int) (point.x + (1 + SEGMENTS_SUM[3] - 0.3) * spacing), (int) (point.y + 1.5 * spacing) + 1, + StringUtils.drawCenteredText(g2d, "+12V", (int) (point.getX() + (1 + SEGMENTS_SUM[3] - 0.3) * spacing), (int) (point.getY() + 1.5 * spacing) + 1, HorizontalAlignment.RIGHT, VerticalAlignment.CENTER); - StringUtils.drawCenteredText(g2d, "GND", (int) (point.x + (1 + SEGMENTS_SUM[3] - 0.3) * spacing), (int) (point.y + 2 * spacing) + 1, + StringUtils.drawCenteredText(g2d, "GND", (int) (point.getX() + (1 + SEGMENTS_SUM[3] - 0.3) * spacing), (int) (point.getY() + 2 * spacing) + 1, HorizontalAlignment.RIGHT, VerticalAlignment.CENTER); - StringUtils.drawCenteredText(g2d, "-12V", (int) (point.x + (1 + SEGMENTS_SUM[3] - 0.3) * spacing), (int) (point.y + 2.5 * spacing) + 1, + StringUtils.drawCenteredText(g2d, "-12V", (int) (point.getX() + (1 + SEGMENTS_SUM[3] - 0.3) * spacing), (int) (point.getY() + 2.5 * spacing) + 1, HorizontalAlignment.RIGHT, VerticalAlignment.CENTER); // Draw top-right labels - int labelY = (int) (point.y + 3.8 * spacing) + 1; - StringUtils.drawCenteredText(g2d, "+5V", (int) (point.x + width - 6 * spacing), labelY, HorizontalAlignment.CENTER, VerticalAlignment.TOP); - StringUtils.drawCenteredText(g2d, "+", (int) (point.x + width - 5 * spacing) - 6, labelY, HorizontalAlignment.CENTER, VerticalAlignment.TOP); - StringUtils.drawCenteredText(g2d, " 12V", (int) (point.x + width - 5 * spacing) + 2, labelY, HorizontalAlignment.CENTER, VerticalAlignment.TOP); - StringUtils.drawCenteredText(g2d, "GND", (int) (point.x + width - 3 * spacing), labelY, HorizontalAlignment.CENTER, VerticalAlignment.TOP); - StringUtils.drawCenteredText(g2d, "-12V", (int) (point.x + width - 1 * spacing), labelY, HorizontalAlignment.CENTER, VerticalAlignment.TOP); + int labelY = (int) (point.getY() + 3.8 * spacing) + 1; + StringUtils.drawCenteredText(g2d, "+5V", (int) (point.getX() + width - 6 * spacing), labelY, HorizontalAlignment.CENTER, VerticalAlignment.TOP); + StringUtils.drawCenteredText(g2d, "+", (int) (point.getX() + width - 5 * spacing) - 6, labelY, HorizontalAlignment.CENTER, VerticalAlignment.TOP); + StringUtils.drawCenteredText(g2d, " 12V", (int) (point.getX() + width - 5 * spacing) + 2, labelY, HorizontalAlignment.CENTER, VerticalAlignment.TOP); + StringUtils.drawCenteredText(g2d, "GND", (int) (point.getX() + width - 3 * spacing), labelY, HorizontalAlignment.CENTER, VerticalAlignment.TOP); + StringUtils.drawCenteredText(g2d, "-12V", (int) (point.getX() + width - 1 * spacing), labelY, HorizontalAlignment.CENTER, VerticalAlignment.TOP); // Draw vertical labels byte A = "A".getBytes()[0]; byte a = "a".getBytes()[0]; for (int y = 0; y < ROW_COUNT; y++) { - int padY = (int) (point.y + (yOffset + y) * spacing); + int padY = (int) (point.getY() + (yOffset + y) * spacing); String label; if (y >= 26) label = new String(new byte[] {(byte) (a + y - 26)}); else label = new String(new byte[] {(byte) (A + y)}); - StringUtils.drawCenteredText(g2d, label, (int) (point.x + spacing * 0.35), padY, HorizontalAlignment.CENTER, VerticalAlignment.CENTER); - StringUtils.drawCenteredText(g2d, label, (int) (point.x + width - spacing * 0.35), padY, HorizontalAlignment.CENTER, VerticalAlignment.CENTER); + StringUtils.drawCenteredText(g2d, label, (int) (point.getX() + spacing * 0.35), padY, HorizontalAlignment.CENTER, VerticalAlignment.CENTER); + StringUtils.drawCenteredText(g2d, label, (int) (point.getX() + width - spacing * 0.35), padY, HorizontalAlignment.CENTER, VerticalAlignment.CENTER); } g2d.setColor(textColor); g2d.setFont(LABEL_FONT.deriveFont(COORDINATE_FONT_SIZE + 2)); - StringUtils.drawCenteredText(g2d, "P-0+o by:\nKristian Blåsol 2019", (int) (point.x + width * 0.70d), (int) (point.y + (yOffset + ROW_COUNT + 0.9) * spacing), + StringUtils.drawCenteredText(g2d, "P-0+o by:\nKristian Blåsol 2019", (int) (point.getX() + width * 0.70d), (int) (point.getY() + (yOffset + ROW_COUNT + 0.9) * spacing), HorizontalAlignment.LEFT, VerticalAlignment.TOP); // draw central mini pads @@ -478,19 +480,19 @@ public class ProtoBoard extends AbstractComponent { drawingObserver.startTrackingContinuityArea(true); // top row - g2d.fillRect((int) (point.x + (1 + SEGMENTS_SUM[3] + 0.5) * spacing) + 1, (int) (point.y + (yOffset + y - 0.5d) * spacing + 2), miniPadSize, miniPadSize); + g2d.fillRect((int) (point.getX() + (1 + SEGMENTS_SUM[3] + 0.5) * spacing) + 1, (int) (point.getY() + (yOffset + y - 0.5d) * spacing + 2), miniPadSize, miniPadSize); drawingObserver.setContinuityMarker("columnA"); - g2d.fillRect((int) (point.x + (1 + SEGMENTS_SUM[3] + 0.5) * spacing) + miniPadSize + 3, (int) (point.y + (yOffset + y - 0.5d) * spacing + 2), miniPadSize, miniPadSize); + g2d.fillRect((int) (point.getX() + (1 + SEGMENTS_SUM[3] + 0.5) * spacing) + miniPadSize + 3, (int) (point.getY() + (yOffset + y - 0.5d) * spacing + 2), miniPadSize, miniPadSize); drawingObserver.setContinuityMarker("columnC"); - g2d.fillRect((int) (point.x + (1 + SEGMENTS_SUM[3] + 1.5) * spacing) + 3, (int) (point.y + (yOffset + y - 0.5d) * spacing + 2), miniPadSize, miniPadSize); + g2d.fillRect((int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.5) * spacing) + 3, (int) (point.getY() + (yOffset + y - 0.5d) * spacing + 2), miniPadSize, miniPadSize); drawingObserver.setContinuityMarker(null); - g2d.fillRect((int) (point.x + (1 + SEGMENTS_SUM[3] + 1.5) * spacing) + miniPadSize + 5, (int) (point.y + (yOffset + y - 0.5d) * spacing + 2), miniPadSize, miniPadSize); + g2d.fillRect((int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.5) * spacing) + miniPadSize + 5, (int) (point.getY() + (yOffset + y - 0.5d) * spacing + 2), miniPadSize, miniPadSize); drawingObserver.stopTrackingContinuityArea(); g2d.setColor(padColor.darker()); - g2d.drawRect((int) (point.x + (1 + SEGMENTS_SUM[3] + 0.5) * spacing) + 1, (int) (point.y + (yOffset + y - 0.5d) * spacing + 2), miniPadSize, miniPadSize); - g2d.drawRect((int) (point.x + (1 + SEGMENTS_SUM[3] + 0.5) * spacing) + miniPadSize + 3, (int) (point.y + (yOffset + y - 0.5d) * spacing + 2), miniPadSize, miniPadSize); + g2d.drawRect((int) (point.getX() + (1 + SEGMENTS_SUM[3] + 0.5) * spacing) + 1, (int) (point.getY() + (yOffset + y - 0.5d) * spacing + 2), miniPadSize, miniPadSize); + g2d.drawRect((int) (point.getX() + (1 + SEGMENTS_SUM[3] + 0.5) * spacing) + miniPadSize + 3, (int) (point.getY() + (yOffset + y - 0.5d) * spacing + 2), miniPadSize, miniPadSize); g2d.setColor(undersidePadColor); @@ -498,22 +500,22 @@ public class ProtoBoard extends AbstractComponent { // bottom row - g2d.fillRect((int) (point.x + (1 + SEGMENTS_SUM[3] + 1.5) * spacing) - miniPadSize / 2, (int) (point.y + (yOffset + y + 0.5d) * spacing - 1 - miniPadSize), miniPadSize, miniPadSize); + g2d.fillRect((int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.5) * spacing) - miniPadSize / 2, (int) (point.getY() + (yOffset + y + 0.5d) * spacing - 1 - miniPadSize), miniPadSize, miniPadSize); // drawingObserver.setContinuityMarker("columnB"); - g2d.fillRect((int) (point.x + (1 + SEGMENTS_SUM[3] + 1.5) * spacing) - miniPadSize * 3 / 2 - 2, (int) (point.y + (yOffset + y + 0.5d) * spacing - 1 - miniPadSize), miniPadSize, miniPadSize); + g2d.fillRect((int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.5) * spacing) - miniPadSize * 3 / 2 - 2, (int) (point.getY() + (yOffset + y + 0.5d) * spacing - 1 - miniPadSize), miniPadSize, miniPadSize); // drawingObserver.setContinuityMarker("null"); - g2d.fillRect((int) (point.x + (1 + SEGMENTS_SUM[3] + 1.5) * spacing) + miniPadSize / 2 + 3, (int) (point.y + (yOffset + y + 0.5d) * spacing - 1 - miniPadSize), miniPadSize, miniPadSize); + g2d.fillRect((int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.5) * spacing) + miniPadSize / 2 + 3, (int) (point.getY() + (yOffset + y + 0.5d) * spacing - 1 - miniPadSize), miniPadSize, miniPadSize); drawingObserver.stopTrackingContinuityArea(); g2d.setColor(undersidePadColor.darker()); - g2d.drawRect((int) (point.x + (1 + SEGMENTS_SUM[3] + 1.5) * spacing) + 3, (int) (point.y + (yOffset + y - 0.5d) * spacing + 2), miniPadSize, miniPadSize); - g2d.drawRect((int) (point.x + (1 + SEGMENTS_SUM[3] + 1.5) * spacing) + miniPadSize + 5, (int) (point.y + (yOffset + y - 0.5d) * spacing + 2), miniPadSize, miniPadSize); + g2d.drawRect((int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.5) * spacing) + 3, (int) (point.getY() + (yOffset + y - 0.5d) * spacing + 2), miniPadSize, miniPadSize); + g2d.drawRect((int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.5) * spacing) + miniPadSize + 5, (int) (point.getY() + (yOffset + y - 0.5d) * spacing + 2), miniPadSize, miniPadSize); - g2d.drawRect((int) (point.x + (1 + SEGMENTS_SUM[3] + 1.5) * spacing) - miniPadSize / 2, (int) (point.y + (yOffset + y + 0.5d) * spacing - 1 - miniPadSize), miniPadSize, miniPadSize); - g2d.drawRect((int) (point.x + (1 + SEGMENTS_SUM[3] + 1.5) * spacing) - miniPadSize * 3 / 2 - 2, (int) (point.y + (yOffset + y + 0.5d) * spacing - 1 - miniPadSize), miniPadSize, miniPadSize); - g2d.drawRect((int) (point.x + (1 + SEGMENTS_SUM[3] + 1.5) * spacing) + miniPadSize / 2 + 3, (int) (point.y + (yOffset + y + 0.5d) * spacing - 1 - miniPadSize), miniPadSize, miniPadSize); + g2d.drawRect((int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.5) * spacing) - miniPadSize / 2, (int) (point.getY() + (yOffset + y + 0.5d) * spacing - 1 - miniPadSize), miniPadSize, miniPadSize); + g2d.drawRect((int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.5) * spacing) - miniPadSize * 3 / 2 - 2, (int) (point.getY() + (yOffset + y + 0.5d) * spacing - 1 - miniPadSize), miniPadSize, miniPadSize); + g2d.drawRect((int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.5) * spacing) + miniPadSize / 2 + 3, (int) (point.getY() + (yOffset + y + 0.5d) * spacing - 1 - miniPadSize), miniPadSize, miniPadSize); } } @@ -640,7 +642,7 @@ public class ProtoBoard extends AbstractComponent { @SuppressWarnings("incomplete-switch") @Override - public Point getControlPoint(int index) { + public Point2D getControlPoint(int index) { if (index == 0) return point; @@ -661,9 +663,9 @@ public class ProtoBoard extends AbstractComponent { } int width = (int) WIDTH_SIZE.convertToPixels(); int length = (int) LENGTH_SIZE.convertToPixels(); - Point secondPoint = new Point((int) (point.x + width), (int) (point.y + length)); + Point2D secondPoint = new Point2D.Double(point.getX() + width, point.getY() + length); if (theta != 0) { - AffineTransform tx = AffineTransform.getRotateInstance(theta, point.x, point.y); + AffineTransform tx = AffineTransform.getRotateInstance(theta, point.getX(), point.getY()); tx.transform(secondPoint, secondPoint); } return secondPoint; @@ -700,8 +702,8 @@ public class ProtoBoard extends AbstractComponent { @Override public Rectangle2D getCachingBounds() { - Point finalSecondPoint = getControlPoint(1); - return new Rectangle2D.Double(Math.min(point.x, finalSecondPoint.x), Math.min(point.y, finalSecondPoint.y), - Math.abs(finalSecondPoint.x - point.x) + 2, Math.abs(finalSecondPoint.y - point.y) + 2); + 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()) + 2, Math.abs(finalSecondPoint.getY() - point.getY()) + 2); } } diff --git a/diylc/diylc-library/src/org/diylc/components/boards/TagStrip.java b/diylc/diylc-library/src/org/diylc/components/boards/TagStrip.java index 7f7ec4c1..16a1ce69 100644 --- a/diylc/diylc-library/src/org/diylc/components/boards/TagStrip.java +++ b/diylc/diylc-library/src/org/diylc/components/boards/TagStrip.java @@ -25,7 +25,6 @@ import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Composite; import java.awt.Graphics2D; -import java.awt.Point; import java.awt.geom.Area; import java.awt.geom.Ellipse2D; import java.awt.geom.Point2D; @@ -72,7 +71,7 @@ public class TagStrip extends AbstractTransparentComponent implements IC private int terminalCount = 7; private static Size BOARD_THICKNESS = new Size(0.05d, SizeUnit.in); private Size terminalSpacing = new Size(0.375d, SizeUnit.in); - private Point[] controlPoints = new Point[] {new Point(0, 0)}; + private Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0)}; private Color boardColor = BOARD_COLOR; private TagStripMount mount = TagStripMount.Central; @@ -135,7 +134,7 @@ public class TagStrip extends AbstractTransparentComponent implements IC } @Override - public Point getControlPoint(int index) { + public Point2D getControlPoint(int index) { return controlPoints[index]; } @@ -156,8 +155,8 @@ public class TagStrip extends AbstractTransparentComponent implements IC } private void updateControlPoints() { - Point firstPoint = controlPoints[0]; - controlPoints = new Point[getTerminalCount()]; + Point2D firstPoint = controlPoints[0]; + controlPoints = new Point2D[getTerminalCount()]; controlPoints[0] = firstPoint; int pinSpacing = (int) this.terminalSpacing.convertToPixels(); // Update control points. @@ -184,15 +183,15 @@ public class TagStrip extends AbstractTransparentComponent implements IC default: throw new RuntimeException("Unexpected orientation: " + orientation); } - controlPoints[i] = new Point(firstPoint.x + dx1, firstPoint.y + dy1); + controlPoints[i] = new Point2D.Double(firstPoint.getX() + dx1, firstPoint.getY() + dy1); } } public Area[] getBody() { if (body == null) { body = new Area[1 + getTerminalCount()]; - int x = controlPoints[0].x; - int y = controlPoints[0].y; + double x = controlPoints[0].getX(); + double y = controlPoints[0].getY(); int width; int height; int terminalSpacing = (int) getTerminalSpacing().convertToPixels(); @@ -254,9 +253,9 @@ public class TagStrip extends AbstractTransparentComponent implements IC body[0] = bodyArea; for (int i = 0; i < getTerminalCount(); i++) { - Point p1 = getControlPoint(i); + Point2D p1 = getControlPoint(i); Area terminal = - new Area(new Rectangle2D.Double(p1.x - terminalWidth/ 2, p1.y - terminalHeight / 2, terminalWidth, terminalHeight)); + new Area(new Rectangle2D.Double(p1.getX() - terminalWidth/ 2, p1.getY() - terminalHeight / 2, terminalWidth, terminalHeight)); body[1 + i] = terminal; diff --git a/diylc/diylc-library/src/org/diylc/components/boards/TerminalStrip.java b/diylc/diylc-library/src/org/diylc/components/boards/TerminalStrip.java index 07658b91..2a8c1a7e 100644 --- a/diylc/diylc-library/src/org/diylc/components/boards/TerminalStrip.java +++ b/diylc/diylc-library/src/org/diylc/components/boards/TerminalStrip.java @@ -25,7 +25,6 @@ import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Composite; import java.awt.Graphics2D; -import java.awt.Point; import java.awt.geom.Area; import java.awt.geom.Ellipse2D; import java.awt.geom.Point2D; @@ -72,7 +71,7 @@ public class TerminalStrip extends AbstractTransparentComponent implemen private Size boardWidth = new Size(0.35d, SizeUnit.in); private Size terminalSpacing = new Size(0.25d, SizeUnit.in); private Size holeSpacing = new Size(0.5d, SizeUnit.in); - private Point[] controlPoints = new Point[] {new Point(0, 0)}; + private Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0)}; private Color boardColor = BOARD_COLOR; @SuppressWarnings("unused") @Deprecated @@ -172,7 +171,7 @@ public class TerminalStrip extends AbstractTransparentComponent implemen } @Override - public Point getControlPoint(int index) { + public Point2D getControlPoint(int index) { return controlPoints[index]; } @@ -193,8 +192,8 @@ public class TerminalStrip extends AbstractTransparentComponent implemen } private void updateControlPoints() { - Point firstPoint = controlPoints[0]; - controlPoints = new Point[getTerminalCount() * (getCenterHole() ? 3 : 2)]; + Point2D firstPoint = controlPoints[0]; + controlPoints = new Point2D[getTerminalCount() * (getCenterHole() ? 3 : 2)]; controlPoints[0] = firstPoint; int pinSpacing = (int) this.terminalSpacing.convertToPixels(); int rowSpacing = (int) this.holeSpacing.convertToPixels(); @@ -242,18 +241,18 @@ public class TerminalStrip extends AbstractTransparentComponent implemen default: throw new RuntimeException("Unexpected orientation: " + orientation); } - controlPoints[i] = new Point(firstPoint.x + dx1, firstPoint.y + dy1); - controlPoints[i + getTerminalCount()] = new Point(firstPoint.x + dx2, firstPoint.y + dy2); + controlPoints[i] = new Point2D.Double(firstPoint.getX() + dx1, firstPoint.getY() + dy1); + controlPoints[i + getTerminalCount()] = new Point2D.Double(firstPoint.getX() + dx2, firstPoint.getY() + dy2); if (centerHole) - controlPoints[i + 2 * getTerminalCount()] = new Point(firstPoint.x + cx, firstPoint.y + cy); + controlPoints[i + 2 * getTerminalCount()] = new Point2D.Double(firstPoint.getX() + cx, firstPoint.getY() + cy); } } public Area[] getBody() { if (body == null) { body = new Area[1 + getTerminalCount()]; - int x = controlPoints[0].x; - int y = controlPoints[0].y; + double x = controlPoints[0].getX(); + double y = controlPoints[0].getY(); int width; int height; int holeSize = (int) HOLE_SIZE.convertToPixels(); @@ -318,24 +317,24 @@ public class TerminalStrip extends AbstractTransparentComponent implemen for (int i = 0; i < getTerminalCount(); i++) { - Point p1 = getControlPoint(i); - Point p2 = getControlPoint(i + getTerminalCount()); - if (p2.x < p1.x || p2.y < p1.y) { - Point p = p1; + Point2D p1 = getControlPoint(i); + Point2D p2 = getControlPoint(i + getTerminalCount()); + if (p2.getX() < p1.getX() || p2.getY() < p1.getY()) { + Point2D p = p1; p1 = p2; p2 = p; } Area terminal = - new Area(new RoundRectangle2D.Double(p1.x - holeSize, p1.y - holeSize, p2.x - p1.x + holeSize * 2, p2.y - - p1.y + holeSize * 2, holeSize, holeSize)); + new Area(new RoundRectangle2D.Double(p1.getX() - holeSize, p1.getY() - holeSize, p2.getX() - p1.getX() + holeSize * 2, p2.getY() + - p1.getY() + holeSize * 2, holeSize, holeSize)); - terminal.subtract(new Area(new Ellipse2D.Double(p1.x - holeSize / 2, p1.y - holeSize / 2, holeSize, holeSize))); - terminal.subtract(new Area(new Ellipse2D.Double(p2.x - holeSize / 2, p2.y - holeSize / 2, holeSize, holeSize))); + terminal.subtract(new Area(new Ellipse2D.Double(p1.getX() - holeSize / 2, p1.getY() - holeSize / 2, holeSize, holeSize))); + terminal.subtract(new Area(new Ellipse2D.Double(p2.getX() - holeSize / 2, p2.getY() - holeSize / 2, holeSize, holeSize))); if (centerHole) { - Point p3 = getControlPoint(i + 2 * getTerminalCount()); + Point2D p3 = getControlPoint(i + 2 * getTerminalCount()); Area centerHole = - new Area(new Ellipse2D.Double(p3.x - holeSize / 2, p3.y - holeSize / 2, holeSize, holeSize)); + new Area(new Ellipse2D.Double(p3.getX() - holeSize / 2, p3.getY() - holeSize / 2, holeSize, holeSize)); terminal.subtract(centerHole); bodyArea.subtract(centerHole); } 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 d17a4dc3..acfc5127 100644 --- a/diylc/diylc-library/src/org/diylc/components/boards/VeroBoard.java +++ b/diylc/diylc-library/src/org/diylc/components/boards/VeroBoard.java @@ -79,7 +79,7 @@ public class VeroBoard extends AbstractBoard { g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA)); } double x = firstPoint.getX(); - double y = finalSecondPoint.getY(); + double y = firstPoint.getY(); int stripSize = getClosestOdd((int) STRIP_SIZE.convertToPixels()); int holeSize = getClosestOdd((int) HOLE_SIZE.convertToPixels()); int spacing = (int) this.spacing.convertToPixels(); diff --git a/diylc/diylc-library/src/org/diylc/components/chassis/PolygonalCutout.java b/diylc/diylc-library/src/org/diylc/components/chassis/PolygonalCutout.java index 02f022ce..00f96c9c 100644 --- a/diylc/diylc-library/src/org/diylc/components/chassis/PolygonalCutout.java +++ b/diylc/diylc-library/src/org/diylc/components/chassis/PolygonalCutout.java @@ -21,7 +21,6 @@ import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Composite; import java.awt.Graphics2D; -import java.awt.Point; import java.awt.geom.Point2D; import java.util.Arrays; @@ -49,9 +48,10 @@ public class PolygonalCutout extends AbstractShape { super(); this.borderColor = LIGHT_METAL_COLOR.darker(); this.controlPoints = - new Point[] {new Point(0, 0), new Point(0, (int) DEFAULT_HEIGHT.convertToPixels()), - new Point((int) DEFAULT_WIDTH.convertToPixels(), (int) DEFAULT_HEIGHT.convertToPixels()), - new Point((int) DEFAULT_WIDTH.convertToPixels(), 0)}; + new Point2D[] {new Point2D.Double(0, 0), + new Point2D.Double(0, (int) DEFAULT_HEIGHT.convertToPixels()), + new Point2D.Double((int) DEFAULT_WIDTH.convertToPixels(), (int) DEFAULT_HEIGHT.convertToPixels()), + new Point2D.Double((int) DEFAULT_WIDTH.convertToPixels(), 0)}; } @Override diff --git a/diylc/diylc-library/src/org/diylc/components/connectivity/TwistedWire.java b/diylc/diylc-library/src/org/diylc/components/connectivity/TwistedWire.java index 5565fcd5..7f9e108c 100644 --- a/diylc/diylc-library/src/org/diylc/components/connectivity/TwistedWire.java +++ b/diylc/diylc-library/src/org/diylc/components/connectivity/TwistedWire.java @@ -20,7 +20,6 @@ package org.diylc.components.connectivity; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics2D; -import java.awt.Point; import java.awt.Stroke; import java.awt.geom.Area; import java.awt.geom.CubicCurve2D; @@ -278,7 +277,7 @@ public class TwistedWire extends AbstractCurvedComponent implements IConti public void recalculate(Path2D path, float thickness, Area firstLeadArea, Area secondLeadArea, boolean stripe) { PathIterator iterator = path.getPathIterator(null); float[] coords = new float[6]; - Point current = new Point(); + Point2D current = new Point2D.Double(); // convert all segments to cubic curves List curves = new ArrayList(); @@ -289,18 +288,18 @@ public class TwistedWire extends AbstractCurvedComponent implements IConti current.setLocation(coords[0], coords[1]); break; case PathIterator.SEG_LINETO: - curves.add(new CubicCurve2D.Double(current.x, current.y, (current.x + coords[0]) / 2, - (current.y + coords[1]) / 2, (current.x + coords[0]) / 2, (current.y + coords[1]) / 2, coords[0], + curves.add(new CubicCurve2D.Double(current.getX(), current.getY(), (current.getX() + coords[0]) / 2, + (current.getY() + coords[1]) / 2, (current.getX() + coords[0]) / 2, (current.getY() + coords[1]) / 2, coords[0], coords[1])); current.setLocation(coords[0], coords[1]); break; case PathIterator.SEG_QUADTO: - curves.add(new CubicCurve2D.Double(current.x, current.y, coords[0], coords[1], coords[0], coords[1], + curves.add(new CubicCurve2D.Double(current.getX(), current.getY(), coords[0], coords[1], coords[0], coords[1], coords[2], coords[3])); current.setLocation(coords[2], coords[3]); break; case PathIterator.SEG_CUBICTO: - curves.add(new CubicCurve2D.Double(current.x, current.y, coords[0], coords[1], coords[2], coords[3], + curves.add(new CubicCurve2D.Double(current.getX(), current.getY(), coords[0], coords[1], coords[2], coords[3], coords[4], coords[5])); current.setLocation(coords[4], coords[5]); break; diff --git a/diylc/diylc-library/src/org/diylc/components/electromechanical/BatterySnap9V.java b/diylc/diylc-library/src/org/diylc/components/electromechanical/BatterySnap9V.java index 86442bc7..f43d0988 100644 --- a/diylc/diylc-library/src/org/diylc/components/electromechanical/BatterySnap9V.java +++ b/diylc/diylc-library/src/org/diylc/components/electromechanical/BatterySnap9V.java @@ -25,7 +25,6 @@ import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Composite; import java.awt.Graphics2D; -import java.awt.Point; import java.awt.Polygon; import java.awt.Shape; import java.awt.geom.AffineTransform; @@ -67,7 +66,7 @@ public class BatterySnap9V extends AbstractTransparentComponent { private static Size TERMINAL_BORDER = new Size(0.7d, SizeUnit.mm); private String value = ""; - private Point controlPoint = new Point(0, 0); + private Point2D controlPoint = new Point2D.Double(0, 0); transient Shape[] body; private Orientation orientation = Orientation.DEFAULT; private Color color = BODY_COLOR; @@ -117,8 +116,8 @@ public class BatterySnap9V extends AbstractTransparentComponent { if (body == null) { body = new Shape[3]; - int x = controlPoint.x; - int y = controlPoint.y; + double x = controlPoint.getX(); + double y = controlPoint.getY(); int width = (int) WIDTH.convertToPixels(); int length = (int) LENGTH.convertToPixels(); int totalLength = length + width / 2; @@ -135,7 +134,7 @@ public class BatterySnap9V extends AbstractTransparentComponent { new Area(new Ellipse2D.Double(x + (totalLength - terminalSpacing) / 2 - terminalDiameter / 2, y - terminalDiameter / 2, terminalDiameter, terminalDiameter)); - int centerX = x + (totalLength + terminalSpacing) / 2; + double centerX = x + (totalLength + terminalSpacing) / 2; int[] terminalX = new int[6]; int[] terminalY = new int[6]; @@ -231,7 +230,7 @@ public class BatterySnap9V extends AbstractTransparentComponent { } @Override - public Point getControlPoint(int index) { + public Point2D getControlPoint(int index) { return controlPoint; } diff --git a/diylc/diylc-library/src/org/diylc/components/electromechanical/OpenJack1_4.java b/diylc/diylc-library/src/org/diylc/components/electromechanical/OpenJack1_4.java index ccde9bd3..1a3dfb04 100644 --- a/diylc/diylc-library/src/org/diylc/components/electromechanical/OpenJack1_4.java +++ b/diylc/diylc-library/src/org/diylc/components/electromechanical/OpenJack1_4.java @@ -25,7 +25,6 @@ import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Composite; import java.awt.Graphics2D; -import java.awt.Point; import java.awt.Shape; import java.awt.geom.AffineTransform; import java.awt.geom.Area; @@ -166,8 +165,8 @@ public class OpenJack1_4 extends AbstractMultiPartComponent { Point2D tipLabel = new Point2D.Double(controlPoints[0].getX(), (int) (controlPoints[0].getY() + holeToEdge * 1.25)); AffineTransform ringTransform = AffineTransform.getRotateInstance(getType() == OpenJackType.SWITCHED ? SWITCH_THETA : RING_THETA, controlPoints[0].getX(), centerY); AffineTransform sleeveTransform = AffineTransform.getRotateInstance(getType() == OpenJackType.SWITCHED ? SLEEVE_SWITCHED_THETA : SLEEVE_THETA, controlPoints[0].getX(), centerY); - Point ringOrSwitchLabel = new Point(0, 0); - Point sleeveLabel = new Point(0, 0); + Point2D ringOrSwitchLabel = new Point2D.Double(0, 0); + Point2D sleeveLabel = new Point2D.Double(0, 0); ringTransform.transform(tipLabel, ringOrSwitchLabel); sleeveTransform.transform(tipLabel, sleeveLabel); diff --git a/diylc/diylc-library/src/org/diylc/components/electromechanical/PinHeader.java b/diylc/diylc-library/src/org/diylc/components/electromechanical/PinHeader.java index c8ff1044..72be8a2d 100644 --- a/diylc/diylc-library/src/org/diylc/components/electromechanical/PinHeader.java +++ b/diylc/diylc-library/src/org/diylc/components/electromechanical/PinHeader.java @@ -25,7 +25,6 @@ import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Composite; import java.awt.Graphics2D; -import java.awt.Point; import java.awt.Shape; import java.awt.geom.AffineTransform; import java.awt.geom.Area; @@ -129,7 +128,8 @@ public class PinHeader extends AbstractTransparentComponent { for (int i = 0; i < columnCount; i++) for (int j = 0; j < rowCount; j++) - controlPoints[i + j * columnCount] = new Point((int)Math.round(firstPoint.getX() + j * pinSpacing), (int)Math.round(firstPoint.getY() + i * pinSpacing)); + controlPoints[i + j * columnCount] = new Point2D.Double(Math.round(firstPoint.getX() + j * pinSpacing), + Math.round(firstPoint.getY() + i * pinSpacing)); // Apply rotation if necessary double angle = getAngle(); diff --git a/diylc/diylc-library/src/org/diylc/components/passive/PotentiometerPanel.java b/diylc/diylc-library/src/org/diylc/components/passive/PotentiometerPanel.java index 63dad3f5..9ebd34f8 100644 --- a/diylc/diylc-library/src/org/diylc/components/passive/PotentiometerPanel.java +++ b/diylc/diylc-library/src/org/diylc/components/passive/PotentiometerPanel.java @@ -26,7 +26,6 @@ import java.awt.Color; import java.awt.Composite; import java.awt.FontMetrics; import java.awt.Graphics2D; -import java.awt.Point; import java.awt.Polygon; import java.awt.geom.Area; import java.awt.geom.Ellipse2D; @@ -86,7 +85,7 @@ public class PotentiometerPanel extends AbstractPotentiometer { transient protected Area[] body = null; public PotentiometerPanel() { - controlPoints = new Point[] {new Point(0, 0), new Point(0, 0), new Point(0, 0)}; + controlPoints = new Point2D[] {new Point2D.Double(0, 0), new Point2D.Double(0, 0), new Point2D.Double(0, 0)}; updateControlPoints(); } diff --git a/diylc/diylc-library/src/org/diylc/components/passive/TrimmerPotentiometer.java b/diylc/diylc-library/src/org/diylc/components/passive/TrimmerPotentiometer.java index 7ea2711e..a2daad64 100644 --- a/diylc/diylc-library/src/org/diylc/components/passive/TrimmerPotentiometer.java +++ b/diylc/diylc-library/src/org/diylc/components/passive/TrimmerPotentiometer.java @@ -22,7 +22,6 @@ import java.awt.Color; import java.awt.Composite; import java.awt.FontMetrics; import java.awt.Graphics2D; -import java.awt.Point; import java.awt.Shape; import java.awt.geom.AffineTransform; import java.awt.geom.Area; @@ -82,7 +81,7 @@ public class TrimmerPotentiometer extends AbstractPotentiometer { protected TrimmerType type = TrimmerType.FLAT_SMALL; public TrimmerPotentiometer() { - controlPoints = new Point[] {new Point(0, 0), new Point(0, 0), new Point(0, 0)}; + controlPoints = new Point2D[] {new Point2D.Double(0, 0), new Point2D.Double(0, 0), new Point2D.Double(0, 0)}; updateControlPoints(); } diff --git a/diylc/diylc-library/src/org/diylc/components/semiconductors/AbstractTransistorPackage.java b/diylc/diylc-library/src/org/diylc/components/semiconductors/AbstractTransistorPackage.java index a30816aa..9d2162ad 100644 --- a/diylc/diylc-library/src/org/diylc/components/semiconductors/AbstractTransistorPackage.java +++ b/diylc/diylc-library/src/org/diylc/components/semiconductors/AbstractTransistorPackage.java @@ -24,7 +24,6 @@ package org.diylc.components.semiconductors; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; -import java.awt.Point; import java.awt.geom.Area; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; @@ -45,7 +44,7 @@ public abstract class AbstractTransistorPackage extends AbstractTransparentCompo protected String value = ""; protected TransistorPinout pinout; protected Orientation orientation = Orientation.DEFAULT; - protected Point[] controlPoints = new Point[] {new Point(0, 0), new Point(0, 0), new Point(0, 0)}; + protected Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0), new Point2D.Double(0, 0), new Point2D.Double(0, 0)}; transient protected Area[] body; protected Color bodyColor; @@ -143,7 +142,7 @@ public abstract class AbstractTransistorPackage extends AbstractTransparentCompo } @Override - public Point getControlPoint(int index) { + public Point2D getControlPoint(int index) { return controlPoints[index]; } @@ -257,7 +256,7 @@ public abstract class AbstractTransistorPackage extends AbstractTransparentCompo if (b.getMaxY() > maxY) maxY = b.getMaxY(); } - for (Point p : controlPoints) { + for (Point2D p : controlPoints) { if (p.getX() < minX) minX = p.getX(); if (p.getX() > maxX) @@ -284,7 +283,7 @@ public abstract class AbstractTransistorPackage extends AbstractTransparentCompo int d = 4; // hard-coded String pinout = p.toPinout(); for (int i = 0; i < pinout.length(); i++) { - Point point = getControlPoint(i); + Point2D point = getControlPoint(i); int dx = 0; int dy = 0; HorizontalAlignment ha = HorizontalAlignment.CENTER; @@ -327,7 +326,7 @@ public abstract class AbstractTransistorPackage extends AbstractTransparentCompo } break; } - StringUtils.drawCenteredText(g2d, pinout.charAt(i) + "", point.x + dx, point.y + dy, ha, va); + StringUtils.drawCenteredText(g2d, pinout.charAt(i) + "", point.getX() + dx, point.getY() + dy, ha, va); } } diff --git a/diylc/diylc-library/src/org/diylc/components/semiconductors/TransistorTO1.java b/diylc/diylc-library/src/org/diylc/components/semiconductors/TransistorTO1.java index 68c41881..c4f3a961 100644 --- a/diylc/diylc-library/src/org/diylc/components/semiconductors/TransistorTO1.java +++ b/diylc/diylc-library/src/org/diylc/components/semiconductors/TransistorTO1.java @@ -26,10 +26,11 @@ import java.awt.Color; import java.awt.Composite; import java.awt.FontMetrics; import java.awt.Graphics2D; -import java.awt.Point; import java.awt.Rectangle; +import java.awt.Shape; import java.awt.geom.Area; import java.awt.geom.Ellipse2D; +import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; import java.awt.geom.RoundRectangle2D; @@ -82,8 +83,8 @@ public class TransistorTO1 extends AbstractTransistorPackage { protected void updateControlPoints() { int pinSpacing = (int) getPinSpacing().convertToPixels(); // Update control points. - int x = controlPoints[0].x; - int y = controlPoints[0].y; + double x = controlPoints[0].getX(); + double y = controlPoints[0].getY(); switch (orientation) { case DEFAULT: controlPoints[1].setLocation(x - (folded ? 0 : pinSpacing), y + pinSpacing); @@ -108,8 +109,8 @@ public class TransistorTO1 extends AbstractTransistorPackage { public Area[] getBody() { if (body == null) { - int x = (controlPoints[0].x + controlPoints[1].x + controlPoints[2].x) / 3; - int y = (controlPoints[0].y + controlPoints[1].y + controlPoints[2].y) / 3; + double x = (controlPoints[0].getX() + controlPoints[1].getX() + controlPoints[2].getX()) / 3; + double y = (controlPoints[0].getY() + controlPoints[1].getY() + controlPoints[2].getY()) / 3; int bodyDiameter = getClosestOdd(BODY_DIAMETER.convertToPixels()); int bodyLength = getClosestOdd(BODY_LENGTH.convertToPixels()); int edgeRadius = (int) EDGE_RADIUS.convertToPixels(); @@ -167,13 +168,14 @@ public class TransistorTO1 extends AbstractTransistorPackage { Theme theme = (Theme) ConfigurationManager.getInstance().readObject(IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME); g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1f)); - for (Point point : controlPoints) { + for (Point2D point : controlPoints) { + Shape shape = new Ellipse2D.Double(point.getX() - pinSize / 2, point.getY() - pinSize / 2, pinSize, pinSize); if (!outlineMode) { g2d.setColor(PIN_COLOR); - g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize); + g2d.fill(shape); } g2d.setColor(outlineMode ? theme.getOutlineColor() : PIN_BORDER_COLOR); - g2d.drawOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize); + g2d.draw(shape); } Area mainArea = getBody()[0]; @@ -229,8 +231,8 @@ public class TransistorTO1 extends AbstractTransistorPackage { int textWidth = (int) (rect.getWidth()); // Center text horizontally and vertically Rectangle bounds = mainArea.getBounds(); - int x = bounds.x + (bounds.width - textWidth) / 2; - int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent(); + int x = (int) (bounds.getX() + (bounds.width - textWidth) / 2); + int y = (int) (bounds.getY() + (bounds.height - textHeight) / 2 + fontMetrics.getAscent()); g2d.drawString(label, x, y); } } diff --git a/diylc/diylc-library/src/org/diylc/components/semiconductors/TransistorTO126.java b/diylc/diylc-library/src/org/diylc/components/semiconductors/TransistorTO126.java index ea7a4e75..484b3e67 100644 --- a/diylc/diylc-library/src/org/diylc/components/semiconductors/TransistorTO126.java +++ b/diylc/diylc-library/src/org/diylc/components/semiconductors/TransistorTO126.java @@ -26,11 +26,12 @@ import java.awt.Color; import java.awt.Composite; import java.awt.FontMetrics; import java.awt.Graphics2D; -import java.awt.Point; import java.awt.Rectangle; import java.awt.Shape; import java.awt.geom.Area; import java.awt.geom.Ellipse2D; +import java.awt.geom.Line2D; +import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; import org.diylc.appframework.miscutils.ConfigurationManager; @@ -86,8 +87,8 @@ public class TransistorTO126 extends AbstractTransistorPackage { protected void updateControlPoints() { int pinSpacing = (int) PIN_SPACING.convertToPixels(); // Update control points. - int x = controlPoints[0].x; - int y = controlPoints[0].y; + double x = controlPoints[0].getX(); + double y = controlPoints[0].getY(); switch (orientation) { case DEFAULT: controlPoints[1].setLocation(x, y + pinSpacing); @@ -113,8 +114,8 @@ public class TransistorTO126 extends AbstractTransistorPackage { public Area[] getBody() { if (body == null) { body = new Area[2]; - int x = controlPoints[0].x; - int y = controlPoints[0].y; + double x = controlPoints[0].getX(); + double y = controlPoints[0].getY(); int pinSpacing = (int) PIN_SPACING.convertToPixels(); int bodyWidth = getClosestOdd(BODY_WIDTH.convertToPixels()); int bodyThickness = getClosestOdd(BODY_THICKNESS.convertToPixels()); @@ -203,51 +204,57 @@ public class TransistorTO126 extends AbstractTransistorPackage { finalPinColor = METAL_COLOR; finalPinBorderColor = METAL_COLOR.darker(); } - for (Point point : controlPoints) { + Line2D line; + for (Point2D point : controlPoints) { switch (orientation) { case DEFAULT: g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness)); g2d.setColor(finalPinBorderColor); - g2d.drawLine(point.x, point.y, point.x + leadLength - leadThickness / 2, point.y); + line = new Line2D.Double(point.getX(), point.getY(), point.getX() + leadLength - leadThickness / 2, point.getY()); + g2d.draw(line); g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2)); g2d.setColor(finalPinColor); - g2d.drawLine(point.x, point.y, point.x + leadLength - leadThickness / 2, point.y); + g2d.draw(line); break; case _90: g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness)); g2d.setColor(finalPinBorderColor); - g2d.drawLine(point.x, point.y, point.x, point.y + leadLength - leadThickness / 2); + line = new Line2D.Double(point.getX(), point.getY(), point.getX(), point.getY() + leadLength - leadThickness / 2); + g2d.draw(line); g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2)); g2d.setColor(finalPinColor); - g2d.drawLine(point.x, point.y, point.x, point.y + leadLength - leadThickness / 2); + g2d.draw(line); break; case _180: g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness)); g2d.setColor(finalPinBorderColor); - g2d.drawLine(point.x, point.y, point.x - leadLength - leadThickness / 2, point.y); + line = new Line2D.Double(point.getX(), point.getY(), point.getX() - leadLength - leadThickness / 2, point.getY()); + g2d.draw(line); g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2)); g2d.setColor(finalPinColor); - g2d.drawLine(point.x, point.y, point.x - leadLength - leadThickness / 2, point.y); + g2d.draw(line); break; case _270: g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness)); g2d.setColor(finalPinBorderColor); - g2d.drawLine(point.x, point.y, point.x, point.y - leadLength); + line = new Line2D.Double(point.getX(), point.getY(), point.getX(), point.getY() - leadLength); + g2d.draw(line); g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2)); g2d.setColor(finalPinColor); - g2d.drawLine(point.x, point.y, point.x, point.y - leadLength); + g2d.draw(line); break; } } } } else { if (!outlineMode) { - for (Point point : controlPoints) { + for (Point2D point : controlPoints) { g2d.setColor(PIN_COLOR); - g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize); + Shape pin = new Ellipse2D.Double(point.getX() - pinSize / 2, point.getY() - pinSize / 2, pinSize, pinSize); + g2d.fill(pin); g2d.setColor(outlineMode ? theme.getOutlineColor() : PIN_BORDER_COLOR); - g2d.drawOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize); + g2d.draw(pin); } } } @@ -312,8 +319,8 @@ public class TransistorTO126 extends AbstractTransistorPackage { int textWidth = (int) (rect.getWidth()); // Center text horizontally and vertically Rectangle bounds = mainArea.getBounds(); - int x = bounds.x + (bounds.width - textWidth) / 2; - int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent(); + int x = (int) (bounds.getX() + (bounds.width - textWidth) / 2); + int y = (int) (bounds.getY() + (bounds.height - textHeight) / 2 + fontMetrics.getAscent()); g2d.drawString(label, x, y); } } diff --git a/diylc/diylc-library/src/org/diylc/components/semiconductors/TransistorTO220.java b/diylc/diylc-library/src/org/diylc/components/semiconductors/TransistorTO220.java index aac46a4d..c705e23d 100644 --- a/diylc/diylc-library/src/org/diylc/components/semiconductors/TransistorTO220.java +++ b/diylc/diylc-library/src/org/diylc/components/semiconductors/TransistorTO220.java @@ -26,11 +26,12 @@ import java.awt.Color; import java.awt.Composite; import java.awt.FontMetrics; import java.awt.Graphics2D; -import java.awt.Point; import java.awt.Rectangle; import java.awt.Shape; import java.awt.geom.Area; import java.awt.geom.Ellipse2D; +import java.awt.geom.Line2D; +import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; import org.diylc.appframework.miscutils.ConfigurationManager; @@ -91,8 +92,8 @@ public class TransistorTO220 extends AbstractTransistorPackage { protected void updateControlPoints() { int pinSpacing = (int) PIN_SPACING.convertToPixels(); // Update control points. - int x = controlPoints[0].x; - int y = controlPoints[0].y; + double x = controlPoints[0].getX(); + double y = controlPoints[0].getY(); switch (orientation) { case DEFAULT: controlPoints[1].setLocation(x, y + pinSpacing); @@ -118,8 +119,8 @@ public class TransistorTO220 extends AbstractTransistorPackage { public Area[] getBody() { if (body == null) { body = new Area[2]; - int x = controlPoints[0].x; - int y = controlPoints[0].y; + double x = controlPoints[0].getX(); + double y = controlPoints[0].getY(); int pinSpacing = (int) PIN_SPACING.convertToPixels(); int bodyWidth = getClosestOdd(BODY_WIDTH.convertToPixels()); int bodyThickness = getClosestOdd(BODY_THICKNESS.convertToPixels()); @@ -230,51 +231,57 @@ public class TransistorTO220 extends AbstractTransistorPackage { finalPinColor = METAL_COLOR; finalPinBorderColor = METAL_COLOR.darker(); } - for (Point point : controlPoints) { + Line2D line; + for (Point2D point : controlPoints) { switch (orientation) { case DEFAULT: g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness)); g2d.setColor(finalPinBorderColor); - g2d.drawLine(point.x, point.y, point.x + leadLength - leadThickness / 2, point.y); + line = new Line2D.Double(point.getX(), point.getY(), point.getX() + leadLength - leadThickness / 2, point.getY()); + g2d.draw(line); g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2)); g2d.setColor(finalPinColor); - g2d.drawLine(point.x, point.y, point.x + leadLength - leadThickness / 2, point.y); + g2d.draw(line); break; case _90: g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness)); g2d.setColor(finalPinBorderColor); - g2d.drawLine(point.x, point.y, point.x, point.y + leadLength - leadThickness / 2); + line = new Line2D.Double(point.getX(), point.getY(), point.getX(), point.getY() + leadLength - leadThickness / 2); + g2d.draw(line); g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2)); g2d.setColor(finalPinColor); - g2d.drawLine(point.x, point.y, point.x, point.y + leadLength - leadThickness / 2); + g2d.draw(line); break; case _180: g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness)); g2d.setColor(finalPinBorderColor); - g2d.drawLine(point.x, point.y, point.x - leadLength - leadThickness / 2, point.y); + line = new Line2D.Double(point.getX(), point.getY(), point.getX() - leadLength - leadThickness / 2, point.getY()); + g2d.draw(line); g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2)); g2d.setColor(finalPinColor); - g2d.drawLine(point.x, point.y, point.x - leadLength - leadThickness / 2, point.y); + g2d.draw(line); break; case _270: g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness)); g2d.setColor(finalPinBorderColor); - g2d.drawLine(point.x, point.y, point.x, point.y - leadLength); + line = new Line2D.Double(point.getX(), point.getY(), point.getX(), point.getY() - leadLength); + g2d.draw(line); g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2)); g2d.setColor(finalPinColor); - g2d.drawLine(point.x, point.y, point.x, point.y - leadLength); + g2d.draw(line); break; } } } } else { if (!outlineMode) { - for (Point point : controlPoints) { + for (Point2D point : controlPoints) { g2d.setColor(PIN_COLOR); - g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize); + Shape pin = new Ellipse2D.Double(point.getX() - pinSize / 2, point.getY() - pinSize / 2, pinSize, pinSize); + g2d.fill(pin); g2d.setColor(outlineMode ? theme.getOutlineColor() : PIN_BORDER_COLOR); - g2d.drawOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize); + g2d.draw(pin); } } } @@ -349,8 +356,8 @@ public class TransistorTO220 extends AbstractTransistorPackage { int textWidth = (int) (rect.getWidth()); // Center text horizontally and vertically Rectangle bounds = mainArea.getBounds(); - int x = bounds.x + (bounds.width - textWidth) / 2; - int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent(); + int x = (int) (bounds.getX() + (bounds.width - textWidth) / 2); + int y = (int) (bounds.getY() + (bounds.height - textHeight) / 2 + fontMetrics.getAscent()); g2d.drawString(label, x, y); } } diff --git a/diylc/diylc-library/src/org/diylc/components/semiconductors/TransistorTO92.java b/diylc/diylc-library/src/org/diylc/components/semiconductors/TransistorTO92.java index 72c94916..9a93d367 100644 --- a/diylc/diylc-library/src/org/diylc/components/semiconductors/TransistorTO92.java +++ b/diylc/diylc-library/src/org/diylc/components/semiconductors/TransistorTO92.java @@ -26,11 +26,12 @@ import java.awt.Color; import java.awt.Composite; import java.awt.FontMetrics; import java.awt.Graphics2D; -import java.awt.Point; import java.awt.Rectangle; import java.awt.RenderingHints; +import java.awt.Shape; import java.awt.geom.Area; import java.awt.geom.Ellipse2D; +import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; import org.diylc.appframework.miscutils.ConfigurationManager; @@ -95,8 +96,8 @@ public class TransistorTO92 extends AbstractTransistorPackage { protected void updateControlPoints() { int pinSpacing = (int) getPinSpacing().convertToPixels(); // Update control points. - int x = controlPoints[0].x; - int y = controlPoints[0].y; + double x = controlPoints[0].getX(); + double y = controlPoints[0].getY(); switch (orientation) { case DEFAULT: controlPoints[1].setLocation(x, y + pinSpacing); @@ -121,8 +122,8 @@ public class TransistorTO92 extends AbstractTransistorPackage { public Area[] getBody() { if (body == null) { - int x = (controlPoints[0].x + controlPoints[1].x + controlPoints[2].x) / 3; - int y = (controlPoints[0].y + controlPoints[1].y + controlPoints[2].y) / 3; + double x = (controlPoints[0].getX() + controlPoints[1].getX() + controlPoints[2].getX()) / 3; + double y = (controlPoints[0].getY() + controlPoints[1].getY() + controlPoints[2].getY()) / 3; int bodyDiameter = getClosestOdd(BODY_DIAMETER.convertToPixels()); Area newBody = null; @@ -190,11 +191,12 @@ public class TransistorTO92 extends AbstractTransistorPackage { g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1f)); if (!outlineMode) { - for (Point point : controlPoints) { + for (Point2D point : controlPoints) { + Shape pin = new Ellipse2D.Double(point.getX() - pinSize / 2, point.getY() - pinSize / 2, pinSize, pinSize); g2d.setColor(PIN_COLOR); - g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize); + g2d.fill(pin); g2d.setColor(PIN_BORDER_COLOR); - g2d.drawOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize); + g2d.draw(pin); } } @@ -254,8 +256,8 @@ public class TransistorTO92 extends AbstractTransistorPackage { int textWidth = (int) (rect.getWidth()); // Center text horizontally and vertically Rectangle bounds = mainArea.getBounds(); - int x = bounds.x + (bounds.width - textWidth) / 2; - int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent(); + int x = (int) (bounds.getX() + (bounds.width - textWidth) / 2); + int y = (int) (bounds.getY() + (bounds.height - textHeight) / 2 + fontMetrics.getAscent()); g2d.drawString(label, x, y); } } diff --git a/diylc/diylc-library/src/org/diylc/components/shapes/AbstractShape.java b/diylc/diylc-library/src/org/diylc/components/shapes/AbstractShape.java index ededc4d9..add7429f 100644 --- a/diylc/diylc-library/src/org/diylc/components/shapes/AbstractShape.java +++ b/diylc/diylc-library/src/org/diylc/components/shapes/AbstractShape.java @@ -22,7 +22,6 @@ package org.diylc.components.shapes; import java.awt.Color; -import java.awt.Point; import java.awt.geom.Point2D; import org.diylc.components.AbstractTransparentComponent; @@ -42,10 +41,10 @@ public abstract class AbstractShape extends AbstractTransparentComponent { public static Size DEFAULT_HEIGHT = new Size(0.4d, SizeUnit.in); protected String value = ""; - protected Point2D[] controlPoints = new Point2D[] {new Point(0, 0), + protected Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0), new Point2D.Double(DEFAULT_WIDTH.convertToPixels(), DEFAULT_HEIGHT.convertToPixels())}; - protected Point2D firstPoint = new Point(); - protected Point2D secondPoint = new Point(); + protected Point2D firstPoint = new Point2D.Double(); + protected Point2D secondPoint = new Point2D.Double(); protected Color color = COLOR; protected Color borderColor = BORDER_COLOR; diff --git a/diylc/diylc-library/src/org/diylc/components/shapes/Polygon.java b/diylc/diylc-library/src/org/diylc/components/shapes/Polygon.java index 9f0d70c3..64ed4288 100644 --- a/diylc/diylc-library/src/org/diylc/components/shapes/Polygon.java +++ b/diylc/diylc-library/src/org/diylc/components/shapes/Polygon.java @@ -25,7 +25,6 @@ import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Composite; import java.awt.Graphics2D; -import java.awt.Point; import java.awt.geom.Point2D; import java.util.Arrays; @@ -52,9 +51,10 @@ public class Polygon extends AbstractShape { public Polygon() { super(); this.controlPoints = - new Point[] {new Point(0, 0), new Point(0, (int) DEFAULT_HEIGHT.convertToPixels()), - new Point((int) DEFAULT_WIDTH.convertToPixels(), (int) DEFAULT_HEIGHT.convertToPixels()), - new Point((int) DEFAULT_WIDTH.convertToPixels(), 0)}; + new Point2D[] {new Point2D.Double(0, 0), + new Point2D.Double(0, (int) DEFAULT_HEIGHT.convertToPixels()), + new Point2D.Double((int) DEFAULT_WIDTH.convertToPixels(), (int) DEFAULT_HEIGHT.convertToPixels()), + new Point2D.Double((int) DEFAULT_WIDTH.convertToPixels(), 0)}; } @Override diff --git a/diylc/diylc-library/src/org/diylc/components/transform/BatterySnapTransformer.java b/diylc/diylc-library/src/org/diylc/components/transform/BatterySnapTransformer.java index 4147504d..3a1bb4b0 100644 --- a/diylc/diylc-library/src/org/diylc/components/transform/BatterySnapTransformer.java +++ b/diylc/diylc-library/src/org/diylc/components/transform/BatterySnapTransformer.java @@ -21,7 +21,6 @@ */ package org.diylc.components.transform; -import java.awt.Point; import java.awt.geom.AffineTransform; import java.awt.geom.Point2D; @@ -90,7 +89,7 @@ public class BatterySnapTransformer implements IComponentTransformer { } for (int i = 0; i < snap.getControlPointCount(); i++) { - Point p = snap.getControlPoint(i); + Point2D p = snap.getControlPoint(i); snap.setControlPoint(new Point2D.Double(p.getX() + dx, p.getY() + dy), i); } @@ -113,7 +112,7 @@ public class BatterySnapTransformer implements IComponentTransformer { } for (int i = 0; i < snap.getControlPointCount(); i++) { - Point p = snap.getControlPoint(i); + Point2D p = snap.getControlPoint(i); snap.setControlPoint(new Point2D.Double(p.getX() + dx, p.getY() + dy), i); } diff --git a/diylc/diylc-library/src/org/diylc/components/transform/TO1Transformer.java b/diylc/diylc-library/src/org/diylc/components/transform/TO1Transformer.java index 013b93dd..296d4acb 100644 --- a/diylc/diylc-library/src/org/diylc/components/transform/TO1Transformer.java +++ b/diylc/diylc-library/src/org/diylc/components/transform/TO1Transformer.java @@ -21,7 +21,6 @@ */ package org.diylc.components.transform; -import java.awt.Point; import java.awt.geom.AffineTransform; import java.awt.geom.Point2D; @@ -91,7 +90,7 @@ public class TO1Transformer implements IComponentTransformer { } for (int i = 0; i < transistor.getControlPointCount(); i++) { - Point p = transistor.getControlPoint(i); + Point2D p = transistor.getControlPoint(i); transistor.setControlPoint( new Point2D.Double(p.getX() + 2 * dx, p.getY() + (transistor.getControlPoint(2).getY() - transistor.getControlPoint(0).getY())), i); } @@ -115,7 +114,7 @@ public class TO1Transformer implements IComponentTransformer { } for (int i = 0; i < transistor.getControlPointCount(); i++) { - Point p = transistor.getControlPoint(i); + Point2D p = transistor.getControlPoint(i); transistor.setControlPoint(new Point2D.Double(p.getX() + (transistor.getControlPoint(2).getX() - transistor.getControlPoint(0).getX()), p.getY() + 2 * dy), i); } diff --git a/diylc/diylc-library/src/org/diylc/components/transform/TO220Transformer.java b/diylc/diylc-library/src/org/diylc/components/transform/TO220Transformer.java index 166d02a4..60da2994 100644 --- a/diylc/diylc-library/src/org/diylc/components/transform/TO220Transformer.java +++ b/diylc/diylc-library/src/org/diylc/components/transform/TO220Transformer.java @@ -21,7 +21,6 @@ */ package org.diylc.components.transform; -import java.awt.Point; import java.awt.geom.AffineTransform; import java.awt.geom.Point2D; @@ -93,7 +92,7 @@ public class TO220Transformer implements IComponentTransformer { } for (int i = 0; i < transistor.getControlPointCount(); i++) { - Point p = transistor.getControlPoint(i); + Point2D p = transistor.getControlPoint(i); transistor.setControlPoint(new Point2D.Double(p.getX() + dx, p.getY() + dy), i); } @@ -120,7 +119,7 @@ public class TO220Transformer implements IComponentTransformer { } for (int i = 0; i < transistor.getControlPointCount(); i++) { - Point p = transistor.getControlPoint(i); + Point2D p = transistor.getControlPoint(i); transistor.setControlPoint(new Point2D.Double(p.getX() + dx, p.getY() + dy), i); } diff --git a/diylc/diylc-library/src/org/diylc/components/transform/TO92Transformer.java b/diylc/diylc-library/src/org/diylc/components/transform/TO92Transformer.java index fdec1555..d02cdc11 100644 --- a/diylc/diylc-library/src/org/diylc/components/transform/TO92Transformer.java +++ b/diylc/diylc-library/src/org/diylc/components/transform/TO92Transformer.java @@ -21,7 +21,6 @@ */ package org.diylc.components.transform; -import java.awt.Point; import java.awt.geom.AffineTransform; import java.awt.geom.Point2D; @@ -85,7 +84,7 @@ public class TO92Transformer implements IComponentTransformer { } for (int i = 0; i < transistor.getControlPointCount(); i++) { - Point p = transistor.getControlPoint(i); + Point2D p = transistor.getControlPoint(i); transistor.setControlPoint( new Point2D.Double(p.getX() + 2 * dx, p.getY() + (transistor.getControlPoint(2).getY() - transistor.getControlPoint(0).getY())), i); } @@ -102,7 +101,7 @@ public class TO92Transformer implements IComponentTransformer { } for (int i = 0; i < transistor.getControlPointCount(); i++) { - Point p = transistor.getControlPoint(i); + Point2D p = transistor.getControlPoint(i); transistor.setControlPoint(new Point2D.Double(p.getX() + (transistor.getControlPoint(2).getX() - transistor.getControlPoint(0).getX()), p.getY() + 2 * dy), i); } diff --git a/diylc/diylc-library/src/org/diylc/components/transform/TerminalStripTransformer.java b/diylc/diylc-library/src/org/diylc/components/transform/TerminalStripTransformer.java index 261e82fe..f0cc1100 100644 --- a/diylc/diylc-library/src/org/diylc/components/transform/TerminalStripTransformer.java +++ b/diylc/diylc-library/src/org/diylc/components/transform/TerminalStripTransformer.java @@ -21,7 +21,6 @@ */ package org.diylc.components.transform; -import java.awt.Point; import java.awt.geom.AffineTransform; import java.awt.geom.Point2D; @@ -96,7 +95,7 @@ public class TerminalStripTransformer implements IComponentTransformer { } for (int i = 0; i < strip.getControlPointCount(); i++) { - Point p = strip.getControlPoint(i); + Point2D p = strip.getControlPoint(i); strip.setControlPoint(new Point2D.Double(p.getX() + dx, p.getY() + dy), i); } @@ -125,7 +124,7 @@ public class TerminalStripTransformer implements IComponentTransformer { } for (int i = 0; i < strip.getControlPointCount(); i++) { - Point p = strip.getControlPoint(i); + Point2D p = strip.getControlPoint(i); strip.setControlPoint(new Point2D.Double(p.getX() + dx, p.getY() + dy), i); } diff --git a/diylc/diylc-library/src/org/diylc/components/tube/DuoDiodeSymbol.java b/diylc/diylc-library/src/org/diylc/components/tube/DuoDiodeSymbol.java index d3031dfc..e05f21c8 100644 --- a/diylc/diylc-library/src/org/diylc/components/tube/DuoDiodeSymbol.java +++ b/diylc/diylc-library/src/org/diylc/components/tube/DuoDiodeSymbol.java @@ -22,7 +22,6 @@ package org.diylc.components.tube; import java.awt.Graphics2D; -import java.awt.Point; import java.awt.Shape; import java.awt.geom.Ellipse2D; import java.awt.geom.GeneralPath; @@ -50,7 +49,8 @@ public class DuoDiodeSymbol extends AbstractTubeSymbol { public DuoDiodeSymbol() { super(); this.controlPoints = - new Point[] {new Point(0, 0), new Point(0, 0), new Point(0, 0), new Point(0, 0), new Point(0, 0), new Point(0, 0)}; + new Point2D[] {new Point2D.Double(0, 0), new Point2D.Double(0, 0), new Point2D.Double(0, 0), + new Point2D.Double(0, 0), new Point2D.Double(0, 0), new Point2D.Double(0, 0)}; updateControlPoints(); } diff --git a/diylc/diylc-library/src/org/diylc/components/tube/TubeSocket.java b/diylc/diylc-library/src/org/diylc/components/tube/TubeSocket.java index 1b433ac8..896a5874 100644 --- a/diylc/diylc-library/src/org/diylc/components/tube/TubeSocket.java +++ b/diylc/diylc-library/src/org/diylc/components/tube/TubeSocket.java @@ -25,7 +25,6 @@ import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Composite; import java.awt.Graphics2D; -import java.awt.Point; import java.awt.Shape; import java.awt.geom.AffineTransform; import java.awt.geom.Area; @@ -98,7 +97,7 @@ public class TubeSocket extends AbstractTransparentComponent { private Mount mount = Mount.CHASSIS; private Color labelColor = LABEL_COLOR; - private Point[] controlPoints = new Point[] {new Point(0, 0)}; + private Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0)}; transient private Shape body; @@ -168,7 +167,7 @@ public class TubeSocket extends AbstractTransparentComponent { // } private void updateControlPoints() { - Point firstPoint = controlPoints[0]; + Point2D firstPoint = controlPoints[0]; int pinCount; int pinSpacing; boolean hasEmptySpace; @@ -199,13 +198,13 @@ public class TubeSocket extends AbstractTransparentComponent { double angleIncrement = Math.PI * 2 / (hasEmptySpace ? (pinCount + 1) : pinCount); double initialAngleOffset = hasEmptySpace ? angleIncrement : (angleIncrement / 2); - controlPoints = new Point[pinCount + 1]; + controlPoints = new Point2D[pinCount + 1]; double theta = initialAngleOffset + Math.toRadians(getAngle()); controlPoints[0] = firstPoint; for (int i = 0; i < pinCount; i++) { controlPoints[i + 1] = - new Point((int) (firstPoint.getX() + Math.cos(theta) * pinSpacing / 2), - (int) (firstPoint.getY() + Math.sin(theta) * pinSpacing / 2)); + new Point2D.Double(firstPoint.getX() + Math.cos(theta) * pinSpacing / 2, + firstPoint.getY() + Math.sin(theta) * pinSpacing / 2); theta += angleIncrement; } } @@ -231,32 +230,32 @@ public class TubeSocket extends AbstractTransparentComponent { } body = - new Ellipse2D.Double(controlPoints[0].x - bodyDiameter / 2, controlPoints[0].y - bodyDiameter / 2, + new Ellipse2D.Double(controlPoints[0].getX() - bodyDiameter / 2, controlPoints[0].getY() - bodyDiameter / 2, bodyDiameter, bodyDiameter); Area bodyArea = new Area(body); int holeSize = getClosestOdd(base == Base.B12C ? B12C_HOLE_SIZE.convertToPixels() : HOLE_SIZE.convertToPixels()); - bodyArea.subtract(new Area(new Ellipse2D.Double(controlPoints[0].x - holeSize / 2, controlPoints[0].y - holeSize + bodyArea.subtract(new Area(new Ellipse2D.Double(controlPoints[0].getX() - holeSize / 2, controlPoints[0].getY() - holeSize / 2, holeSize, holeSize))); if (base == Base.OCTAL) { int tickSize = getClosestOdd(OCTAL_TICK_SIZE.convertToPixels()); double theta = Math.toRadians(getAngle()); - int centerX = (int) (controlPoints[0].x + Math.cos(theta) * holeSize / 2); - int centerY = (int) (controlPoints[0].y + Math.sin(theta) * holeSize / 2); + int centerX = (int) (controlPoints[0].getX() + Math.cos(theta) * holeSize / 2); + int centerY = (int) (controlPoints[0].getY() + Math.sin(theta) * holeSize / 2); bodyArea.subtract(new Area(new Ellipse2D.Double(centerX - tickSize / 2, centerY - tickSize / 2, tickSize, tickSize))); } else if (base == Base.B9A && getMount() == Mount.CHASSIS) { double cutoutDiameter = getClosestOdd(B9A_CUTOUT_DIAMETER.convertToPixels()); - bodyArea.subtract(new Area(new Ellipse2D.Double(controlPoints[0].x - cutoutDiameter / 2, controlPoints[0].y - bodyDiameter / 2 - cutoutDiameter * 3 / 4, cutoutDiameter, cutoutDiameter))); - bodyArea.subtract(new Area(new Ellipse2D.Double(controlPoints[0].x - cutoutDiameter / 2, controlPoints[0].y + bodyDiameter / 2 - cutoutDiameter / 4, cutoutDiameter, cutoutDiameter))); + bodyArea.subtract(new Area(new Ellipse2D.Double(controlPoints[0].getX() - cutoutDiameter / 2, controlPoints[0].getY() - bodyDiameter / 2 - cutoutDiameter * 3 / 4, cutoutDiameter, cutoutDiameter))); + bodyArea.subtract(new Area(new Ellipse2D.Double(controlPoints[0].getX() - cutoutDiameter / 2, controlPoints[0].getY() + bodyDiameter / 2 - cutoutDiameter / 4, cutoutDiameter, cutoutDiameter))); } else if (base == Base.B7G && getMount() == Mount.CHASSIS) { double cutoutDiameter = getClosestOdd(B7G_CUTOUT_DIAMETER.convertToPixels()); - bodyArea.subtract(new Area(new Ellipse2D.Double(controlPoints[0].x - cutoutDiameter / 2, controlPoints[0].y - bodyDiameter / 2 - cutoutDiameter * 3 / 4, cutoutDiameter, cutoutDiameter))); - bodyArea.subtract(new Area(new Ellipse2D.Double(controlPoints[0].x - cutoutDiameter / 2, controlPoints[0].y + bodyDiameter / 2 - cutoutDiameter / 4, cutoutDiameter, cutoutDiameter))); + bodyArea.subtract(new Area(new Ellipse2D.Double(controlPoints[0].getX() - cutoutDiameter / 2, controlPoints[0].getY() - bodyDiameter / 2 - cutoutDiameter * 3 / 4, cutoutDiameter, cutoutDiameter))); + bodyArea.subtract(new Area(new Ellipse2D.Double(controlPoints[0].getX() - cutoutDiameter / 2, controlPoints[0].getY() + bodyDiameter / 2 - cutoutDiameter / 4, cutoutDiameter, cutoutDiameter))); } else if (base == Base.B12C && getMount() == Mount.CHASSIS) { double cutoutDiameter = getClosestOdd(B12C_CUTOUT_DIAMETER.convertToPixels()); - bodyArea.subtract(new Area(new Ellipse2D.Double(controlPoints[0].x - cutoutDiameter / 2, controlPoints[0].y - bodyDiameter / 2 - cutoutDiameter * 3 / 4, cutoutDiameter, cutoutDiameter))); - bodyArea.subtract(new Area(new Ellipse2D.Double(controlPoints[0].x - cutoutDiameter / 2, controlPoints[0].y + bodyDiameter / 2 - cutoutDiameter / 4, cutoutDiameter, cutoutDiameter))); + bodyArea.subtract(new Area(new Ellipse2D.Double(controlPoints[0].getX() - cutoutDiameter / 2, controlPoints[0].getY() - bodyDiameter / 2 - cutoutDiameter * 3 / 4, cutoutDiameter, cutoutDiameter))); + bodyArea.subtract(new Area(new Ellipse2D.Double(controlPoints[0].getX() - cutoutDiameter / 2, controlPoints[0].getY() + bodyDiameter / 2 - cutoutDiameter / 4, cutoutDiameter, cutoutDiameter))); } body = bodyArea; @@ -304,14 +303,14 @@ public class TubeSocket extends AbstractTransparentComponent { Shape pinShape; if (getMount() == Mount.PCB) { int pinSize = getClosestOdd(PIN_DIAMETER.convertToPixels()); - pinShape = new Ellipse2D.Double(controlPoints[i].x - pinSize / 2, controlPoints[i].y - pinSize / 2, pinSize, pinSize); + pinShape = new Ellipse2D.Double(controlPoints[i].getX() - pinSize / 2, controlPoints[i].getY() - pinSize / 2, pinSize, pinSize); } else { int pinWidth = getClosestOdd(PIN_WIDTH.convertToPixels()); int pinThickness = getClosestOdd(PIN_THICKNESS.convertToPixels()); - pinShape = new Rectangle2D.Double(controlPoints[i].x - pinWidth / 2, controlPoints[i].y - pinThickness / 2, pinWidth, pinThickness); - double theta = Math.atan2(controlPoints[i].y - controlPoints[0].y, controlPoints[i].x - controlPoints[0].x) + Math.PI / 2; + pinShape = new Rectangle2D.Double(controlPoints[i].getX() - pinWidth / 2, controlPoints[i].getY() - pinThickness / 2, pinWidth, pinThickness); + double theta = Math.atan2(controlPoints[i].getY() - controlPoints[0].getY(), controlPoints[i].getX() - controlPoints[0].getX()) + Math.PI / 2; Area rotatedPin = new Area(pinShape); - rotatedPin.transform(AffineTransform.getRotateInstance(theta, controlPoints[i].x, controlPoints[i].y)); + rotatedPin.transform(AffineTransform.getRotateInstance(theta, controlPoints[i].getX(), controlPoints[i].getY())); pinShape = rotatedPin; } g2d.setColor(PIN_COLOR); @@ -330,9 +329,9 @@ public class TubeSocket extends AbstractTransparentComponent { for (int i = 0; i < labels.length; i++) { if (i < controlPoints.length - 1) { String label = labels[i]; - double theta = Math.atan2(controlPoints[i + 1].y - controlPoints[0].y, controlPoints[i + 1].x - controlPoints[0].x); - double x = controlPoints[i + 1].x - Math.cos(theta) * electrodeLabelOffset; - double y = controlPoints[i + 1].y - Math.sin(theta) * electrodeLabelOffset; + double theta = Math.atan2(controlPoints[i + 1].getY() - controlPoints[0].getY(), controlPoints[i + 1].getX() - controlPoints[0].getX()); + double x = controlPoints[i + 1].getX() - Math.cos(theta) * electrodeLabelOffset; + double y = controlPoints[i + 1].getY() - Math.sin(theta) * electrodeLabelOffset; StringUtils.drawCenteredText(g2d, label, (int)x, (int)y, HorizontalAlignment.CENTER, VerticalAlignment.CENTER); } } diff --git a/diylc/diylc-swing/lib/diylc-core.jar b/diylc/diylc-swing/lib/diylc-core.jar index f864f5db..909e364e 100644 Binary files a/diylc/diylc-swing/lib/diylc-core.jar and b/diylc/diylc-swing/lib/diylc-core.jar differ diff --git a/diylc/diylc-swing/library/main.jar b/diylc/diylc-swing/library/main.jar index ec304b16..af23411f 100644 Binary files a/diylc/diylc-swing/library/main.jar and b/diylc/diylc-swing/library/main.jar differ