mirror of
https://github.com/bancika/diy-layout-creator
synced 2026-11-10 09:12:09 +10:00
fixes for double points
This commit is contained in:
@@ -304,7 +304,7 @@ class G2DWrapper extends Graphics2D implements IDrawingObserver {
|
|||||||
@Override
|
@Override
|
||||||
public void draw(Shape s) {
|
public void draw(Shape s) {
|
||||||
canvasGraphics.draw(s);
|
canvasGraphics.draw(s);
|
||||||
if (drawingComponent && trackingAllowed) {
|
if (drawingComponent && (trackingAllowed || trackingContinuityAllowed)) {
|
||||||
appendShapeOutline(s);
|
appendShapeOutline(s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -378,8 +378,10 @@ class G2DWrapper extends Graphics2D implements IDrawingObserver {
|
|||||||
@Override
|
@Override
|
||||||
public void fill(Shape s) {
|
public void fill(Shape s) {
|
||||||
canvasGraphics.fill(s);
|
canvasGraphics.fill(s);
|
||||||
|
if (drawingComponent && (trackingAllowed || trackingContinuityAllowed)) {
|
||||||
appendShape(s);
|
appendShape(s);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Color getBackground() {
|
public Color getBackground() {
|
||||||
|
|||||||
Binary file not shown.
@@ -23,7 +23,6 @@ package org.diylc.components;
|
|||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.geom.Point2D;
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
@@ -78,7 +77,7 @@ public abstract class AbstractSchematicLeadedSymbol<T> extends AbstractLeadedCom
|
|||||||
double y = (point1.getY() + point2.getY()) / 2.0;
|
double y = (point1.getY() + point2.getY()) / 2.0;
|
||||||
double theta = Math.atan2(point2.getY() - point1.getY(), point2.getX() - point2.getX()) - Math.PI / 2;
|
double theta = Math.atan2(point2.getY() - point1.getY(), point2.getX() - point2.getX()) - Math.PI / 2;
|
||||||
double r = width.convertToPixels() / 2 + LABEL_FONT.getSize() / 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")
|
@EditableProperty(name = "Label Position")
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import java.awt.AlphaComposite;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.geom.Point2D;
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
@@ -57,7 +56,7 @@ public abstract class AbstractBoard extends AbstractTransparentComponent<String>
|
|||||||
protected Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0),
|
protected Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0),
|
||||||
new Point2D.Double(DEFAULT_WIDTH.convertToPixels(), DEFAULT_HEIGHT.convertToPixels())};
|
new Point2D.Double(DEFAULT_WIDTH.convertToPixels(), DEFAULT_HEIGHT.convertToPixels())};
|
||||||
protected Point2D firstPoint = new Point2D.Double();
|
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 boardColor = BOARD_COLOR;
|
||||||
protected Color borderColor = BORDER_COLOR;
|
protected Color borderColor = BORDER_COLOR;
|
||||||
@@ -340,8 +339,8 @@ public abstract class AbstractBoard extends AbstractTransparentComponent<String>
|
|||||||
@Override
|
@Override
|
||||||
public Rectangle2D getCachingBounds() {
|
public Rectangle2D getCachingBounds() {
|
||||||
Point2D finalSecondPoint = getFinalSecondPoint();
|
Point2D finalSecondPoint = getFinalSecondPoint();
|
||||||
return new Rectangle2D.Double(Math.min(firstPoint.getX(), finalSecondPoint.getX()), Math.min(firstPoint.getY(), finalSecondPoint.getY()),
|
return new Rectangle2D.Double(Math.min(firstPoint.getX(), finalSecondPoint.getX()) - 2, Math.min(firstPoint.getY(), finalSecondPoint.getY()) - 2,
|
||||||
Math.abs(finalSecondPoint.getX() - firstPoint.getX()) + 2, Math.abs(finalSecondPoint.getY() - firstPoint.getY()) + 2);
|
Math.abs(finalSecondPoint.getX() - firstPoint.getX()) + 4, Math.abs(finalSecondPoint.getY() - firstPoint.getY()) + 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static enum CoordinateType {
|
public static enum CoordinateType {
|
||||||
|
|||||||
@@ -25,10 +25,11 @@ import java.awt.AlphaComposite;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Point2D;
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
import java.awt.geom.RoundRectangle2D;
|
||||||
|
|
||||||
import org.diylc.awt.StringUtils;
|
import org.diylc.awt.StringUtils;
|
||||||
import org.diylc.common.HorizontalAlignment;
|
import org.diylc.common.HorizontalAlignment;
|
||||||
@@ -72,7 +73,7 @@ public class Breadboard extends AbstractComponent<Void> {
|
|||||||
public static Size HOLE_SIZE = new Size(1.5, SizeUnit.mm);
|
public static Size HOLE_SIZE = new Size(1.5, SizeUnit.mm);
|
||||||
public static Size HOLE_ARC = new Size(1d, 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 BreadboardSize breadboardSize;
|
||||||
protected PowerStripPosition powerStripPosition;
|
protected PowerStripPosition powerStripPosition;
|
||||||
@@ -100,7 +101,7 @@ public class Breadboard extends AbstractComponent<Void> {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (theta != 0) {
|
if (theta != 0) {
|
||||||
g2d.rotate(theta, point.x, point.y);
|
g2d.rotate(theta, point.getX(), point.getY());
|
||||||
}
|
}
|
||||||
|
|
||||||
int bodyArc = (int) BODY_ARC.convertToPixels();
|
int bodyArc = (int) BODY_ARC.convertToPixels();
|
||||||
@@ -109,27 +110,28 @@ public class Breadboard extends AbstractComponent<Void> {
|
|||||||
|
|
||||||
// draw body
|
// draw body
|
||||||
g2d.setColor(FILL_COLOR);
|
g2d.setColor(FILL_COLOR);
|
||||||
int width = (int) (23 * project.getGridSpacing().convertToPixels());
|
int width = (int) (23 * SPACING.convertToPixels());
|
||||||
int height = (int) ((holeCount + 1) * project.getGridSpacing().convertToPixels());
|
int height = (int) ((holeCount + 1) * SPACING.convertToPixels());
|
||||||
g2d.fillRoundRect(point.x, point.y, width, height, bodyArc, bodyArc);
|
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
|
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
|
||||||
: BORDER_COLOR);
|
: BORDER_COLOR);
|
||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
|
||||||
g2d.drawRoundRect(point.x, point.y, width, height, bodyArc, bodyArc);
|
g2d.draw(rect);
|
||||||
|
|
||||||
drawingObserver.stopTracking();
|
drawingObserver.stopTracking();
|
||||||
|
|
||||||
// draw lines
|
// draw lines
|
||||||
g2d.setColor(PLUS_COLOR);
|
g2d.setColor(PLUS_COLOR);
|
||||||
g2d.drawLine((int) (point.x + spacing), (int) (point.y + spacing), (int) (point.x + spacing),
|
g2d.drawLine((int) (point.getX() + spacing), (int) (point.getY() + spacing), (int) (point.getX() + spacing),
|
||||||
(int) (point.y + holeCount * spacing));
|
(int) (point.getY() + holeCount * spacing));
|
||||||
g2d.drawLine((int) (point.x + 19 * spacing), (int) (point.y + spacing), (int) (point.x + 19 * spacing),
|
g2d.drawLine((int) (point.getX() + 19 * spacing), (int) (point.getY() + spacing), (int) (point.getX() + 19 * spacing),
|
||||||
(int) (point.y + holeCount * spacing));
|
(int) (point.getY() + holeCount * spacing));
|
||||||
g2d.setColor(MINUS_COLOR);
|
g2d.setColor(MINUS_COLOR);
|
||||||
g2d.drawLine((int) (point.x + 4 * spacing), (int) (point.y + spacing), (int) (point.x + 4 * spacing),
|
g2d.drawLine((int) (point.getX() + 4 * spacing), (int) (point.getY() + spacing), (int) (point.getX() + 4 * spacing),
|
||||||
(int) (point.y + holeCount * spacing));
|
(int) (point.getY() + holeCount * spacing));
|
||||||
g2d.drawLine((int) (point.x + 22 * spacing), (int) (point.y + spacing), (int) (point.x + 22 * spacing),
|
g2d.drawLine((int) (point.getX() + 22 * spacing), (int) (point.getY() + spacing), (int) (point.getX() + 22 * spacing),
|
||||||
(int) (point.y + holeCount * spacing));
|
(int) (point.getY() + holeCount * spacing));
|
||||||
|
|
||||||
int holeSize = getClosestOdd(HOLE_SIZE.convertToPixels());
|
int holeSize = getClosestOdd(HOLE_SIZE.convertToPixels());
|
||||||
int holeArc = (int) HOLE_ARC.convertToPixels();
|
int holeArc = (int) HOLE_ARC.convertToPixels();
|
||||||
@@ -145,15 +147,15 @@ public class Breadboard extends AbstractComponent<Void> {
|
|||||||
g2d.setColor(COORDINATE_COLOR);
|
g2d.setColor(COORDINATE_COLOR);
|
||||||
int coordinateX;
|
int coordinateX;
|
||||||
if (section == 0) {
|
if (section == 0) {
|
||||||
coordinateX = (int) (point.x + offset + 5.5 * spacing);
|
coordinateX = (int) (point.getX() + offset + 5.5 * spacing);
|
||||||
} else {
|
} 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);
|
section == 0 ? HorizontalAlignment.RIGHT : HorizontalAlignment.LEFT, VerticalAlignment.CENTER);
|
||||||
for (int x = 0; x < 5; x++) {
|
for (int x = 0; x < 5; x++) {
|
||||||
int holeX = (int) (point.x + offset + (x + 6) * spacing);
|
int holeX = (int) (point.getX() + offset + (x + 6) * spacing);
|
||||||
int holeY = (int) (point.y + (y + 1) * spacing);
|
int holeY = (int) (point.getY() + (y + 1) * spacing);
|
||||||
g2d.setColor(HOLE_COLOR);
|
g2d.setColor(HOLE_COLOR);
|
||||||
g2d.fillRoundRect(holeX - holeSize / 2, holeY - holeSize / 2, holeSize, holeSize, holeArc, holeArc);
|
g2d.fillRoundRect(holeX - holeSize / 2, holeY - holeSize / 2, holeSize, holeSize, holeArc, holeArc);
|
||||||
g2d.setColor(BORDER_COLOR);
|
g2d.setColor(BORDER_COLOR);
|
||||||
@@ -162,9 +164,9 @@ public class Breadboard extends AbstractComponent<Void> {
|
|||||||
// Draw horizontal labels
|
// Draw horizontal labels
|
||||||
if (y == 0) {
|
if (y == 0) {
|
||||||
g2d.setColor(COORDINATE_COLOR);
|
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);
|
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);
|
+ spacing * 31 - COORDINATE_FONT_SIZE / 2), HorizontalAlignment.CENTER, VerticalAlignment.TOP);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -184,8 +186,8 @@ public class Breadboard extends AbstractComponent<Void> {
|
|||||||
for (int x = 0; x < 2; x++) {
|
for (int x = 0; x < 2; x++) {
|
||||||
if ((y + 1) % 6 == 0)
|
if ((y + 1) % 6 == 0)
|
||||||
continue;
|
continue;
|
||||||
int holeX = (int) (point.x + offset + (x + 2) * spacing);
|
int holeX = (int) (point.getX() + offset + (x + 2) * spacing);
|
||||||
int holeY = (int) (point.y + (y + 1 + powerOffset) * spacing);
|
int holeY = (int) (point.getY() + (y + 1 + powerOffset) * spacing);
|
||||||
g2d.setColor(HOLE_COLOR);
|
g2d.setColor(HOLE_COLOR);
|
||||||
g2d.fillRoundRect(holeX - holeSize / 2, holeY - holeSize / 2, holeSize, holeSize, holeArc, holeArc);
|
g2d.fillRoundRect(holeX - holeSize / 2, holeY - holeSize / 2, holeSize, holeSize, holeArc, holeArc);
|
||||||
g2d.setColor(BORDER_COLOR);
|
g2d.setColor(BORDER_COLOR);
|
||||||
@@ -202,9 +204,9 @@ public class Breadboard extends AbstractComponent<Void> {
|
|||||||
for (int section = 0; section <= 1; section++) {
|
for (int section = 0; section <= 1; section++) {
|
||||||
double offset = section * 18 * spacing;
|
double offset = section * 18 * spacing;
|
||||||
for (int x = 0; x < 2; x++) {
|
for (int x = 0; x < 2; x++) {
|
||||||
int holeX = (int) (point.x + offset + (x + 2) * spacing);
|
int holeX = (int) (point.getX() + offset + (x + 2) * spacing);
|
||||||
int holeY1 = (int) (point.y + (1 + powerOffset) * spacing);
|
int holeY1 = (int) (point.getY() + (1 + powerOffset) * spacing);
|
||||||
int holeY2 = (int) (point.y + (psHoleCount -1 + powerOffset) * spacing);
|
int holeY2 = (int) (point.getY() + (psHoleCount -1 + powerOffset) * spacing);
|
||||||
g2d.setColor(HOLE_COLOR);
|
g2d.setColor(HOLE_COLOR);
|
||||||
g2d.fillRoundRect(holeX - holeSize / 2, holeY1 - holeSize / 2, holeSize, holeSize + holeY2 - holeY1, holeArc, holeArc);
|
g2d.fillRoundRect(holeX - holeSize / 2, holeY1 - holeSize / 2, holeSize, holeSize + holeY2 - holeY1, holeArc, holeArc);
|
||||||
}
|
}
|
||||||
@@ -217,16 +219,16 @@ public class Breadboard extends AbstractComponent<Void> {
|
|||||||
g2d.setColor(COORDINATE_COLOR);
|
g2d.setColor(COORDINATE_COLOR);
|
||||||
int coordinateX;
|
int coordinateX;
|
||||||
if (section == 0) {
|
if (section == 0) {
|
||||||
coordinateX = (int) (point.x + offset + 5.5 * spacing);
|
coordinateX = (int) (point.getX() + offset + 5.5 * spacing);
|
||||||
} else {
|
} 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);
|
section == 0 ? HorizontalAlignment.RIGHT : HorizontalAlignment.LEFT, VerticalAlignment.CENTER);
|
||||||
// for (int x = 0; x < 5; x++) {
|
// for (int x = 0; x < 5; x++) {
|
||||||
int holeX1 = (int) (point.x + offset + 6 * spacing);
|
int holeX1 = (int) (point.getX() + offset + 6 * spacing);
|
||||||
int holeX2 = (int) (point.x + offset + 10 * spacing);
|
int holeX2 = (int) (point.getX() + offset + 10 * spacing);
|
||||||
int holeY = (int) (point.y + (y + 1) * spacing);
|
int holeY = (int) (point.getY() + (y + 1) * spacing);
|
||||||
g2d.setColor(HOLE_COLOR);
|
g2d.setColor(HOLE_COLOR);
|
||||||
g2d.fillRoundRect(holeX1 - holeSize / 2, holeY - holeSize / 2, holeSize + holeX2 - holeX1, holeSize, holeArc, holeArc);
|
g2d.fillRoundRect(holeX1 - holeSize / 2, holeY - holeSize / 2, holeSize + holeX2 - holeX1, holeSize, holeArc, holeArc);
|
||||||
// }
|
// }
|
||||||
@@ -324,7 +326,7 @@ public class Breadboard extends AbstractComponent<Void> {
|
|||||||
|
|
||||||
@SuppressWarnings("incomplete-switch")
|
@SuppressWarnings("incomplete-switch")
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
if (index == 0)
|
if (index == 0)
|
||||||
return point;
|
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
|
// 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<Void> {
|
|||||||
theta = Math.PI * 3 / 2;
|
theta = Math.PI * 3 / 2;
|
||||||
break;
|
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) {
|
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);
|
tx.transform(secondPoint, secondPoint);
|
||||||
}
|
}
|
||||||
return secondPoint;
|
return secondPoint;
|
||||||
@@ -382,9 +384,9 @@ public class Breadboard extends AbstractComponent<Void> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Rectangle2D getCachingBounds() {
|
public Rectangle2D getCachingBounds() {
|
||||||
Point finalSecondPoint = getControlPoint(1);
|
Point2D finalSecondPoint = getControlPoint(1);
|
||||||
return new Rectangle2D.Double(Math.min(point.x, finalSecondPoint.x), Math.min(point.y, finalSecondPoint.y),
|
return new Rectangle2D.Double(Math.min(point.getX(), finalSecondPoint.getX()) - 2, Math.min(point.getY(), finalSecondPoint.getY()) - 2,
|
||||||
Math.abs(finalSecondPoint.x - point.x) + 2, Math.abs(finalSecondPoint.y - point.y) + 2);
|
Math.abs(finalSecondPoint.getX() - point.getX()) + 4, Math.abs(finalSecondPoint.getY() - point.getY()) + 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum BreadboardSize {
|
public enum BreadboardSize {
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ public class EyeletBoard extends AbstractBoard {
|
|||||||
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
|
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
|
||||||
}
|
}
|
||||||
double x = firstPoint.getX();
|
double x = firstPoint.getX();
|
||||||
double y = finalSecondPoint.getY();
|
double y = firstPoint.getY();
|
||||||
int diameter = getClosestOdd((int) EYELET_SIZE.convertToPixels());
|
int diameter = getClosestOdd((int) EYELET_SIZE.convertToPixels());
|
||||||
int holeDiameter = getClosestOdd((int) HOLE_SIZE.convertToPixels());
|
int holeDiameter = getClosestOdd((int) HOLE_SIZE.convertToPixels());
|
||||||
int spacing = (int) this.spacing.convertToPixels();
|
int spacing = (int) this.spacing.convertToPixels();
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ package org.diylc.components.boards;
|
|||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Point2D;
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
@@ -80,7 +80,7 @@ public class ProtoBoard extends AbstractComponent<Void> {
|
|||||||
private static int[] GAPS = new int[] { 1, 0, 2, 0, 0, 0 };
|
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 };
|
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;
|
protected Orientation orientation;
|
||||||
|
|
||||||
@@ -113,7 +113,7 @@ public class ProtoBoard extends AbstractComponent<Void> {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (theta != 0) {
|
if (theta != 0) {
|
||||||
g2d.rotate(theta, point.x, point.y);
|
g2d.rotate(theta, point.getX(), point.getY());
|
||||||
}
|
}
|
||||||
|
|
||||||
double spacing = SPACING.convertToPixels();
|
double spacing = SPACING.convertToPixels();
|
||||||
@@ -123,14 +123,16 @@ public class ProtoBoard extends AbstractComponent<Void> {
|
|||||||
int width = (int) WIDTH_SIZE.convertToPixels();
|
int width = (int) WIDTH_SIZE.convertToPixels();
|
||||||
int length = (int) LENGTH_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
|
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
|
||||||
: boardColor.darker());
|
: boardColor.darker());
|
||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
|
||||||
g2d.drawRect(point.x, point.y, width, length);
|
|
||||||
|
|
||||||
drawingObserver.stopTracking();
|
drawingObserver.stopTracking();
|
||||||
|
|
||||||
|
g2d.draw(rect);
|
||||||
|
|
||||||
int padSize = getClosestOdd(PAD_SIZE.convertToPixels());
|
int padSize = getClosestOdd(PAD_SIZE.convertToPixels());
|
||||||
int holeSize = getClosestOdd(padSize / 3);
|
int holeSize = getClosestOdd(padSize / 3);
|
||||||
|
|
||||||
@@ -148,10 +150,10 @@ public class ProtoBoard extends AbstractComponent<Void> {
|
|||||||
for (int y = 0; y < ROW_COUNT; y++) {
|
for (int y = 0; y < ROW_COUNT; y++) {
|
||||||
for (int segment = 0; segment < SEGMENTS.length; segment++) {
|
for (int segment = 0; segment < SEGMENTS.length; segment++) {
|
||||||
drawingObserver.setContinuityMarker("SEGMENT=" + segment + ";ROW=" + y);
|
drawingObserver.setContinuityMarker("SEGMENT=" + segment + ";ROW=" + y);
|
||||||
g2d.drawLine((int) (point.x + (xOffset + SEGMENTS_STARTS[segment]) * spacing),
|
g2d.drawLine((int) (point.getX() + (xOffset + SEGMENTS_STARTS[segment]) * spacing),
|
||||||
(int) (point.y + (yOffset + y) * spacing),
|
(int) (point.getY() + (yOffset + y) * spacing),
|
||||||
(int) (point.x + (xOffset + SEGMENTS_STARTS[segment] + SEGMENTS[segment] - 1) * spacing),
|
(int) (point.getX() + (xOffset + SEGMENTS_STARTS[segment] + SEGMENTS[segment] - 1) * spacing),
|
||||||
(int) (point.y + (yOffset + y) * spacing));
|
(int) (point.getY() + (yOffset + y) * spacing));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
drawingObserver.setContinuityMarker(null);
|
drawingObserver.setContinuityMarker(null);
|
||||||
@@ -161,62 +163,62 @@ public class ProtoBoard extends AbstractComponent<Void> {
|
|||||||
// draw central mini pad connectors, top row
|
// draw central mini pad connectors, top row
|
||||||
for (int y = 0; y < ROW_COUNT; y++) {
|
for (int y = 0; y < ROW_COUNT; y++) {
|
||||||
// top row
|
// top row
|
||||||
g2d.drawLine((int) (point.x + (1 + SEGMENTS_SUM[3]) * 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.x + (1 + SEGMENTS_SUM[3] + 0.5) * spacing), (int) (point.y + (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.x + (1 + SEGMENTS_SUM[3] + 3) * spacing), (int) (point.y + (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.x + (1 + SEGMENTS_SUM[3] + 2.5) * spacing), (int) (point.y + (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);
|
g2d.setColor(undersideTraceColor);
|
||||||
|
|
||||||
// bottom row.
|
// bottom row.
|
||||||
for (int y = 0; y < ROW_COUNT; y++) {
|
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),
|
g2d.drawLine((int) (point.getX() + (1 + SEGMENTS_SUM[3]) * spacing), (int) (point.getY() + (yOffset + y + 0.25d) * spacing + 1),
|
||||||
(int) (point.x + (1 + SEGMENTS_SUM[3] + 1) * spacing), (int) (point.y + (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.x + (1 + SEGMENTS_SUM[3] + 3) * spacing), (int) (point.y + (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.x + (1 + SEGMENTS_SUM[3] + 2) * spacing), (int) (point.y + (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
|
// vertical ground line
|
||||||
g2d.drawLine((int) (point.x + (1 + SEGMENTS_SUM[3] + 1.5) * spacing), (int) (point.y + (yOffset - 1.5) * spacing),
|
g2d.drawLine((int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.5) * spacing), (int) (point.getY() + (yOffset - 1.5) * spacing),
|
||||||
(int) (point.x + (1 + SEGMENTS_SUM[3] + 1.5) * spacing), (int) (point.y + (yOffset + ROW_COUNT + 0.5) * spacing));
|
(int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.5) * spacing), (int) (point.getY() + (yOffset + ROW_COUNT + 0.5) * spacing));
|
||||||
|
|
||||||
g2d.setColor(traceColor);
|
g2d.setColor(traceColor);
|
||||||
|
|
||||||
// traces to top and bottom 3 pads
|
// traces to top and bottom 3 pads
|
||||||
g2d.drawPolyline(new int[] {
|
g2d.drawPolyline(new int[] {
|
||||||
(int) (point.x + (1 + SEGMENTS_SUM[3] + 0.5) * spacing),
|
(int) (point.getX() + (1 + SEGMENTS_SUM[3] + 0.5) * spacing),
|
||||||
(int) (point.x + (1 + SEGMENTS_SUM[3] + 1.2) * spacing),
|
(int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.2) * spacing),
|
||||||
(int) (point.x + (1 + SEGMENTS_SUM[3] + 1.2) * spacing)},
|
(int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.2) * spacing)},
|
||||||
new int[] {
|
new int[] {
|
||||||
(int) (point.y + (yOffset - 1.5) * spacing),
|
(int) (point.getY() + (yOffset - 1.5) * spacing),
|
||||||
(int) (point.y + (yOffset - 1) * spacing),
|
(int) (point.getY() + (yOffset - 1) * spacing),
|
||||||
(int) (point.y + (yOffset - 0.3) * spacing)}, 3);
|
(int) (point.getY() + (yOffset - 0.3) * spacing)}, 3);
|
||||||
g2d.drawPolyline(new int[] {
|
g2d.drawPolyline(new int[] {
|
||||||
(int) (point.x + (1 + SEGMENTS_SUM[3] + 2.5) * spacing),
|
(int) (point.getX() + (1 + SEGMENTS_SUM[3] + 2.5) * spacing),
|
||||||
(int) (point.x + (1 + SEGMENTS_SUM[3] + 1.8) * spacing),
|
(int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.8) * spacing),
|
||||||
(int) (point.x + (1 + SEGMENTS_SUM[3] + 1.8) * spacing)},
|
(int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.8) * spacing)},
|
||||||
new int[] {
|
new int[] {
|
||||||
(int) (point.y + (yOffset - 1.5) * spacing),
|
(int) (point.getY() + (yOffset - 1.5) * spacing),
|
||||||
(int) (point.y + (yOffset - 1) * spacing),
|
(int) (point.getY() + (yOffset - 1) * spacing),
|
||||||
(int) (point.y + (yOffset - 0.3) * spacing)}, 3);
|
(int) (point.getY() + (yOffset - 0.3) * spacing)}, 3);
|
||||||
|
|
||||||
g2d.drawPolyline(new int[] {
|
g2d.drawPolyline(new int[] {
|
||||||
(int) (point.x + (1 + SEGMENTS_SUM[3] + 0.5) * spacing),
|
(int) (point.getX() + (1 + SEGMENTS_SUM[3] + 0.5) * spacing),
|
||||||
(int) (point.x + (1 + SEGMENTS_SUM[3] + 1.2) * spacing),
|
(int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.2) * spacing),
|
||||||
(int) (point.x + (1 + SEGMENTS_SUM[3] + 1.2) * spacing)},
|
(int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.2) * spacing)},
|
||||||
new int[] {
|
new int[] {
|
||||||
(int) (point.y + (yOffset + ROW_COUNT + 0.5) * spacing),
|
(int) (point.getY() + (yOffset + ROW_COUNT + 0.5) * spacing),
|
||||||
(int) (point.y + (yOffset + ROW_COUNT) * spacing),
|
(int) (point.getY() + (yOffset + ROW_COUNT) * spacing),
|
||||||
(int) (point.y + (yOffset + ROW_COUNT - 0.35) * spacing)}, 3);
|
(int) (point.getY() + (yOffset + ROW_COUNT - 0.35) * spacing)}, 3);
|
||||||
g2d.drawPolyline(new int[] {
|
g2d.drawPolyline(new int[] {
|
||||||
(int) (point.x + (1 + SEGMENTS_SUM[3] + 2.5) * spacing),
|
(int) (point.getX() + (1 + SEGMENTS_SUM[3] + 2.5) * spacing),
|
||||||
(int) (point.x + (1 + SEGMENTS_SUM[3] + 1.8) * spacing),
|
(int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.8) * spacing),
|
||||||
(int) (point.x + (1 + SEGMENTS_SUM[3] + 1.8) * spacing)},
|
(int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.8) * spacing)},
|
||||||
new int[] {
|
new int[] {
|
||||||
(int) (point.y + (yOffset + ROW_COUNT + 0.5) * spacing),
|
(int) (point.getY() + (yOffset + ROW_COUNT + 0.5) * spacing),
|
||||||
(int) (point.y + (yOffset + ROW_COUNT) * spacing),
|
(int) (point.getY() + (yOffset + ROW_COUNT) * spacing),
|
||||||
(int) (point.y + (yOffset + ROW_COUNT - 0.35) * spacing)}, 3);
|
(int) (point.getY() + (yOffset + ROW_COUNT - 0.35) * spacing)}, 3);
|
||||||
|
|
||||||
drawingObserver.stopTrackingContinuityArea();
|
drawingObserver.stopTrackingContinuityArea();
|
||||||
|
|
||||||
@@ -226,12 +228,12 @@ public class ProtoBoard extends AbstractComponent<Void> {
|
|||||||
g2d.setColor(traceColor);
|
g2d.setColor(traceColor);
|
||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(padSize / 4));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(padSize / 4));
|
||||||
drawingObserver.startTrackingContinuityArea(true);
|
drawingObserver.startTrackingContinuityArea(true);
|
||||||
g2d.drawLine((int) (point.x + (1 + SEGMENTS_SUM[3] + 0.5) * spacing), (int) (point.y + 1 * spacing),
|
g2d.drawLine((int) (point.getX() + (1 + SEGMENTS_SUM[3] + 0.5) * spacing), (int) (point.getY() + 1 * spacing),
|
||||||
(int) (point.x + (1 + SEGMENTS_SUM[3] + 0.5) * spacing), (int) (point.y + 3.5 * spacing));
|
(int) (point.getX() + (1 + SEGMENTS_SUM[3] + 0.5) * spacing), (int) (point.getY() + 3.5 * spacing));
|
||||||
g2d.drawLine((int) (point.x + (1 + SEGMENTS_SUM[3] + 1.5) * spacing + miniPadSize / 2), (int) (point.y + 1 * spacing),
|
g2d.drawLine((int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.5) * spacing + miniPadSize / 2), (int) (point.getY() + 1 * spacing),
|
||||||
(int) (point.x + (1 + SEGMENTS_SUM[3] + 1.5) * spacing + miniPadSize / 2), (int) (point.y + 3.5 * spacing));
|
(int) (point.getX() + (1 + SEGMENTS_SUM[3] + 1.5) * spacing + miniPadSize / 2), (int) (point.getY() + 3.5 * spacing));
|
||||||
g2d.drawLine((int) (point.x + (1 + SEGMENTS_SUM[3] + 2.5) * spacing), (int) (point.y + 1 * spacing),
|
g2d.drawLine((int) (point.getX() + (1 + SEGMENTS_SUM[3] + 2.5) * spacing), (int) (point.getY() + 1 * spacing),
|
||||||
(int) (point.x + (1 + SEGMENTS_SUM[3] + 2.5) * spacing), (int) (point.y + 3.5 * spacing));
|
(int) (point.getX() + (1 + SEGMENTS_SUM[3] + 2.5) * spacing), (int) (point.getY() + 3.5 * spacing));
|
||||||
drawingObserver.stopTrackingContinuityArea();
|
drawingObserver.stopTrackingContinuityArea();
|
||||||
|
|
||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
|
||||||
@@ -241,11 +243,11 @@ public class ProtoBoard extends AbstractComponent<Void> {
|
|||||||
|
|
||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(2));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(2));
|
||||||
|
|
||||||
g2d.drawLine((int) (point.x + (1 + SEGMENTS_STARTS[2] - 0.5) * 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.x + (1 + SEGMENTS_STARTS[2] - 0.5) * spacing), (int) (point.y + (yOffset + ROW_COUNT -0.5) * spacing));
|
(int) (point.getX() + (1 + SEGMENTS_STARTS[2] - 0.5) * spacing), (int) (point.getY() + (yOffset + ROW_COUNT -0.5) * spacing));
|
||||||
g2d.drawLine((int) (point.x + (1 + SEGMENTS_STARTS[4] - 0.5) * spacing), (int) (point.y + (yOffset - 1) * spacing),
|
g2d.drawLine((int) (point.getX() + (1 + SEGMENTS_STARTS[4] - 0.5) * spacing), (int) (point.getY() + (yOffset - 1) * spacing),
|
||||||
(int) (point.x + (1 + SEGMENTS_STARTS[4] - 0.5) * spacing), (int) (point.y + (yOffset + ROW_COUNT -0.5) * spacing));
|
(int) (point.getX() + (1 + SEGMENTS_STARTS[4] - 0.5) * spacing), (int) (point.getY() + (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.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));
|
(int)(0.5 * spacing), (int) ((ROW_COUNT + 0.5) * spacing));
|
||||||
|
|
||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
|
||||||
@@ -254,8 +256,8 @@ public class ProtoBoard extends AbstractComponent<Void> {
|
|||||||
for (int segment = 0; segment < SEGMENTS.length; segment++) {
|
for (int segment = 0; segment < SEGMENTS.length; segment++) {
|
||||||
for (int y = 0; y < ROW_COUNT; y++) {
|
for (int y = 0; y < ROW_COUNT; y++) {
|
||||||
for (int x = 0; x < SEGMENTS[segment]; x++) {
|
for (int x = 0; x < SEGMENTS[segment]; x++) {
|
||||||
int padX = (int) (point.x + (xOffset + x) * spacing);
|
int padX = (int) (point.getX() + (xOffset + x) * spacing);
|
||||||
int padY = (int) (point.y + (yOffset + y) * spacing);
|
int padY = (int) (point.getY() + (yOffset + y) * spacing);
|
||||||
|
|
||||||
drawingObserver.startTrackingContinuityArea(true);
|
drawingObserver.startTrackingContinuityArea(true);
|
||||||
drawingObserver.setContinuityMarker("SEGMENT=" + segment + ";ROW=" + y);
|
drawingObserver.setContinuityMarker("SEGMENT=" + segment + ";ROW=" + y);
|
||||||
@@ -282,7 +284,7 @@ public class ProtoBoard extends AbstractComponent<Void> {
|
|||||||
// Draw horizontal labels
|
// Draw horizontal labels
|
||||||
if (y == 0) {
|
if (y == 0) {
|
||||||
g2d.setColor(textColor);
|
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);
|
HorizontalAlignment.CENTER, VerticalAlignment.TOP);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -294,14 +296,14 @@ public class ProtoBoard extends AbstractComponent<Void> {
|
|||||||
// Draw top and bottom 3 pads
|
// Draw top and bottom 3 pads
|
||||||
for (int y = 0; y < 2; y++) {
|
for (int y = 0; y < 2; y++) {
|
||||||
g2d.setColor(SEPARATOR_COLOR);
|
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);
|
(int)(3 * spacing), (int)spacing);
|
||||||
|
|
||||||
drawingObserver.startTrackingContinuityArea(true);
|
drawingObserver.startTrackingContinuityArea(true);
|
||||||
|
|
||||||
for (int x = 0; x < 3; x++) {
|
for (int x = 0; x < 3; x++) {
|
||||||
int padX = (int) (point.x + (1 + SEGMENTS_SUM[3] + 0.5 + x) * spacing);
|
int padX = (int) (point.getX() + (1 + SEGMENTS_SUM[3] + 0.5 + x) * spacing);
|
||||||
int padY = (int) (point.y + (yOffset - 1.5 + y * (ROW_COUNT + 2)) * spacing);
|
int padY = (int) (point.getY() + (yOffset - 1.5 + y * (ROW_COUNT + 2)) * spacing);
|
||||||
|
|
||||||
g2d.setColor(padColor);
|
g2d.setColor(padColor);
|
||||||
|
|
||||||
@@ -332,16 +334,16 @@ public class ProtoBoard extends AbstractComponent<Void> {
|
|||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(2));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(2));
|
||||||
|
|
||||||
g2d.setColor(SCREEN_COLOR);
|
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.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,
|
g2d.drawLine((int) (point.getX() + width - 5.5 * spacing), (int) (point.getY() + 2 * spacing) + 8,
|
||||||
(int) (point.x + width - 5.5 * spacing), (int) (point.y + 3.5 * spacing));
|
(int) (point.getX() + width - 5.5 * spacing), (int) (point.getY() + 3.5 * spacing));
|
||||||
g2d.drawLine((int) (point.x + width - 4.5 * spacing), (int) (point.y + 2 * spacing + 8),
|
g2d.drawLine((int) (point.getX() + width - 4.5 * spacing), (int) (point.getY() + 2 * spacing + 8),
|
||||||
(int) (point.x + width - 4.5 * spacing), (int) (point.y + 3.5 * spacing));
|
(int) (point.getX() + width - 4.5 * spacing), (int) (point.getY() + 3.5 * spacing));
|
||||||
g2d.drawLine((int) (point.x + width - 1.5 * spacing), (int) (point.y + 2 * spacing + 8),
|
g2d.drawLine((int) (point.getX() + width - 1.5 * spacing), (int) (point.getY() + 2 * spacing + 8),
|
||||||
(int) (point.x + width - 1.5 * spacing), (int) (point.y + 3.5 * spacing));
|
(int) (point.getX() + width - 1.5 * spacing), (int) (point.getY() + 3.5 * spacing));
|
||||||
|
|
||||||
g2d.setColor(traceColor);
|
g2d.setColor(traceColor);
|
||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(padSize / 4));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(padSize / 4));
|
||||||
@@ -349,22 +351,22 @@ public class ProtoBoard extends AbstractComponent<Void> {
|
|||||||
drawingObserver.startTrackingContinuityArea(true);
|
drawingObserver.startTrackingContinuityArea(true);
|
||||||
|
|
||||||
// Draw two horizontal traces in the top-right section
|
// 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.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.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() + 1.5 * spacing), (int) (point.getX() + width - (2) * spacing), (int) (point.getY() + 1.5 * spacing));
|
||||||
|
|
||||||
// Draw top-right pads
|
// Draw top-right pads
|
||||||
for (int x = 0; x < 6; x++) {
|
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.setColor(traceColor);
|
||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(padSize / 4));
|
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));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
|
||||||
|
|
||||||
for (int y = 0; y < 3; y++) {
|
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)
|
if (x == 0)
|
||||||
drawingObserver.setContinuityMarker("-12V");
|
drawingObserver.setContinuityMarker("-12V");
|
||||||
@@ -398,10 +400,10 @@ public class ProtoBoard extends AbstractComponent<Void> {
|
|||||||
// draw top mini pads
|
// draw top mini pads
|
||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
|
||||||
for (int y = 0; y < 4; y++) {
|
for (int y = 0; y < 4; y++) {
|
||||||
int padY = (int) (point.y + (0.5 * y + 1) * spacing);
|
int padY = (int) (point.getY() + (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[] 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.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.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.x + (1 + SEGMENTS_SUM[3] + 2.5) * spacing), (int) (point.x + (1 + SEGMENTS_SUM[3] + 2.5) * spacing + miniPadSize + 2)};
|
(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++) {
|
for (int i = 0; i < padXs.length; i++) {
|
||||||
int padX = padXs[i];
|
int padX = padXs[i];
|
||||||
@@ -434,41 +436,41 @@ public class ProtoBoard extends AbstractComponent<Void> {
|
|||||||
g2d.setColor(textColor);
|
g2d.setColor(textColor);
|
||||||
|
|
||||||
// Draw top labels
|
// 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);
|
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);
|
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);
|
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);
|
HorizontalAlignment.RIGHT, VerticalAlignment.CENTER);
|
||||||
|
|
||||||
// Draw top-right labels
|
// Draw top-right labels
|
||||||
int labelY = (int) (point.y + 3.8 * spacing) + 1;
|
int labelY = (int) (point.getY() + 3.8 * spacing) + 1;
|
||||||
StringUtils.drawCenteredText(g2d, "+5V", (int) (point.x + width - 6 * spacing), labelY, HorizontalAlignment.CENTER, VerticalAlignment.TOP);
|
StringUtils.drawCenteredText(g2d, "+5V", (int) (point.getX() + 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, "+", (int) (point.getX() + 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, " 12V", (int) (point.getX() + 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, "GND", (int) (point.getX() + width - 3 * spacing), labelY, HorizontalAlignment.CENTER, VerticalAlignment.TOP);
|
||||||
StringUtils.drawCenteredText(g2d, "-12V", (int) (point.x + width - 1 * spacing), labelY, HorizontalAlignment.CENTER, VerticalAlignment.TOP);
|
StringUtils.drawCenteredText(g2d, "-12V", (int) (point.getX() + width - 1 * spacing), labelY, HorizontalAlignment.CENTER, VerticalAlignment.TOP);
|
||||||
|
|
||||||
// Draw vertical labels
|
// Draw vertical labels
|
||||||
byte A = "A".getBytes()[0];
|
byte A = "A".getBytes()[0];
|
||||||
byte a = "a".getBytes()[0];
|
byte a = "a".getBytes()[0];
|
||||||
for (int y = 0; y < ROW_COUNT; y++) {
|
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;
|
String label;
|
||||||
if (y >= 26)
|
if (y >= 26)
|
||||||
label = new String(new byte[] {(byte) (a + y - 26)});
|
label = new String(new byte[] {(byte) (a + y - 26)});
|
||||||
else
|
else
|
||||||
label = new String(new byte[] {(byte) (A + y)});
|
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.getX() + 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() + width - spacing * 0.35), padY, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
|
||||||
}
|
}
|
||||||
|
|
||||||
g2d.setColor(textColor);
|
g2d.setColor(textColor);
|
||||||
g2d.setFont(LABEL_FONT.deriveFont(COORDINATE_FONT_SIZE + 2));
|
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);
|
HorizontalAlignment.LEFT, VerticalAlignment.TOP);
|
||||||
|
|
||||||
// draw central mini pads
|
// draw central mini pads
|
||||||
@@ -478,19 +480,19 @@ public class ProtoBoard extends AbstractComponent<Void> {
|
|||||||
drawingObserver.startTrackingContinuityArea(true);
|
drawingObserver.startTrackingContinuityArea(true);
|
||||||
|
|
||||||
// top row
|
// 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");
|
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");
|
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);
|
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();
|
drawingObserver.stopTrackingContinuityArea();
|
||||||
|
|
||||||
g2d.setColor(padColor.darker());
|
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.getX() + (1 + SEGMENTS_SUM[3] + 0.5) * spacing) + 1, (int) (point.getY() + (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) + miniPadSize + 3, (int) (point.getY() + (yOffset + y - 0.5d) * spacing + 2), miniPadSize, miniPadSize);
|
||||||
|
|
||||||
g2d.setColor(undersidePadColor);
|
g2d.setColor(undersidePadColor);
|
||||||
|
|
||||||
@@ -498,22 +500,22 @@ public class ProtoBoard extends AbstractComponent<Void> {
|
|||||||
|
|
||||||
// bottom row
|
// 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");
|
// 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");
|
// 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();
|
drawingObserver.stopTrackingContinuityArea();
|
||||||
|
|
||||||
g2d.setColor(undersidePadColor.darker());
|
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.getX() + (1 + SEGMENTS_SUM[3] + 1.5) * spacing) + 3, (int) (point.getY() + (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) + 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.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.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.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.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 + 3, (int) (point.getY() + (yOffset + y + 0.5d) * spacing - 1 - miniPadSize), miniPadSize, miniPadSize);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -640,7 +642,7 @@ public class ProtoBoard extends AbstractComponent<Void> {
|
|||||||
|
|
||||||
@SuppressWarnings("incomplete-switch")
|
@SuppressWarnings("incomplete-switch")
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
if (index == 0)
|
if (index == 0)
|
||||||
return point;
|
return point;
|
||||||
|
|
||||||
@@ -661,9 +663,9 @@ public class ProtoBoard extends AbstractComponent<Void> {
|
|||||||
}
|
}
|
||||||
int width = (int) WIDTH_SIZE.convertToPixels();
|
int width = (int) WIDTH_SIZE.convertToPixels();
|
||||||
int length = (int) LENGTH_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) {
|
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);
|
tx.transform(secondPoint, secondPoint);
|
||||||
}
|
}
|
||||||
return secondPoint;
|
return secondPoint;
|
||||||
@@ -700,8 +702,8 @@ public class ProtoBoard extends AbstractComponent<Void> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Rectangle2D getCachingBounds() {
|
public Rectangle2D getCachingBounds() {
|
||||||
Point finalSecondPoint = getControlPoint(1);
|
Point2D finalSecondPoint = getControlPoint(1);
|
||||||
return new Rectangle2D.Double(Math.min(point.x, finalSecondPoint.x), Math.min(point.y, finalSecondPoint.y),
|
return new Rectangle2D.Double(Math.min(point.getX(), finalSecondPoint.getX()), Math.min(point.getY(), finalSecondPoint.getY()),
|
||||||
Math.abs(finalSecondPoint.x - point.x) + 2, Math.abs(finalSecondPoint.y - point.y) + 2);
|
Math.abs(finalSecondPoint.getX() - point.getX()) + 2, Math.abs(finalSecondPoint.getY() - point.getY()) + 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import java.awt.AlphaComposite;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
import java.awt.geom.Point2D;
|
import java.awt.geom.Point2D;
|
||||||
@@ -72,7 +71,7 @@ public class TagStrip extends AbstractTransparentComponent<String> implements IC
|
|||||||
private int terminalCount = 7;
|
private int terminalCount = 7;
|
||||||
private static Size BOARD_THICKNESS = new Size(0.05d, SizeUnit.in);
|
private static Size BOARD_THICKNESS = new Size(0.05d, SizeUnit.in);
|
||||||
private Size terminalSpacing = new Size(0.375d, 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 Color boardColor = BOARD_COLOR;
|
||||||
|
|
||||||
private TagStripMount mount = TagStripMount.Central;
|
private TagStripMount mount = TagStripMount.Central;
|
||||||
@@ -135,7 +134,7 @@ public class TagStrip extends AbstractTransparentComponent<String> implements IC
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -156,8 +155,8 @@ public class TagStrip extends AbstractTransparentComponent<String> implements IC
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateControlPoints() {
|
private void updateControlPoints() {
|
||||||
Point firstPoint = controlPoints[0];
|
Point2D firstPoint = controlPoints[0];
|
||||||
controlPoints = new Point[getTerminalCount()];
|
controlPoints = new Point2D[getTerminalCount()];
|
||||||
controlPoints[0] = firstPoint;
|
controlPoints[0] = firstPoint;
|
||||||
int pinSpacing = (int) this.terminalSpacing.convertToPixels();
|
int pinSpacing = (int) this.terminalSpacing.convertToPixels();
|
||||||
// Update control points.
|
// Update control points.
|
||||||
@@ -184,15 +183,15 @@ public class TagStrip extends AbstractTransparentComponent<String> implements IC
|
|||||||
default:
|
default:
|
||||||
throw new RuntimeException("Unexpected orientation: " + orientation);
|
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() {
|
public Area[] getBody() {
|
||||||
if (body == null) {
|
if (body == null) {
|
||||||
body = new Area[1 + getTerminalCount()];
|
body = new Area[1 + getTerminalCount()];
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
int width;
|
int width;
|
||||||
int height;
|
int height;
|
||||||
int terminalSpacing = (int) getTerminalSpacing().convertToPixels();
|
int terminalSpacing = (int) getTerminalSpacing().convertToPixels();
|
||||||
@@ -254,9 +253,9 @@ public class TagStrip extends AbstractTransparentComponent<String> implements IC
|
|||||||
body[0] = bodyArea;
|
body[0] = bodyArea;
|
||||||
|
|
||||||
for (int i = 0; i < getTerminalCount(); i++) {
|
for (int i = 0; i < getTerminalCount(); i++) {
|
||||||
Point p1 = getControlPoint(i);
|
Point2D p1 = getControlPoint(i);
|
||||||
Area terminal =
|
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;
|
body[1 + i] = terminal;
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import java.awt.AlphaComposite;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
import java.awt.geom.Point2D;
|
import java.awt.geom.Point2D;
|
||||||
@@ -72,7 +71,7 @@ public class TerminalStrip extends AbstractTransparentComponent<String> implemen
|
|||||||
private Size boardWidth = new Size(0.35d, SizeUnit.in);
|
private Size boardWidth = new Size(0.35d, SizeUnit.in);
|
||||||
private Size terminalSpacing = new Size(0.25d, SizeUnit.in);
|
private Size terminalSpacing = new Size(0.25d, SizeUnit.in);
|
||||||
private Size holeSpacing = new Size(0.5d, 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;
|
private Color boardColor = BOARD_COLOR;
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
@Deprecated
|
@Deprecated
|
||||||
@@ -172,7 +171,7 @@ public class TerminalStrip extends AbstractTransparentComponent<String> implemen
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -193,8 +192,8 @@ public class TerminalStrip extends AbstractTransparentComponent<String> implemen
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateControlPoints() {
|
private void updateControlPoints() {
|
||||||
Point firstPoint = controlPoints[0];
|
Point2D firstPoint = controlPoints[0];
|
||||||
controlPoints = new Point[getTerminalCount() * (getCenterHole() ? 3 : 2)];
|
controlPoints = new Point2D[getTerminalCount() * (getCenterHole() ? 3 : 2)];
|
||||||
controlPoints[0] = firstPoint;
|
controlPoints[0] = firstPoint;
|
||||||
int pinSpacing = (int) this.terminalSpacing.convertToPixels();
|
int pinSpacing = (int) this.terminalSpacing.convertToPixels();
|
||||||
int rowSpacing = (int) this.holeSpacing.convertToPixels();
|
int rowSpacing = (int) this.holeSpacing.convertToPixels();
|
||||||
@@ -242,18 +241,18 @@ public class TerminalStrip extends AbstractTransparentComponent<String> implemen
|
|||||||
default:
|
default:
|
||||||
throw new RuntimeException("Unexpected orientation: " + orientation);
|
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);
|
||||||
controlPoints[i + getTerminalCount()] = new Point(firstPoint.x + dx2, firstPoint.y + dy2);
|
controlPoints[i + getTerminalCount()] = new Point2D.Double(firstPoint.getX() + dx2, firstPoint.getY() + dy2);
|
||||||
if (centerHole)
|
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() {
|
public Area[] getBody() {
|
||||||
if (body == null) {
|
if (body == null) {
|
||||||
body = new Area[1 + getTerminalCount()];
|
body = new Area[1 + getTerminalCount()];
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
int width;
|
int width;
|
||||||
int height;
|
int height;
|
||||||
int holeSize = (int) HOLE_SIZE.convertToPixels();
|
int holeSize = (int) HOLE_SIZE.convertToPixels();
|
||||||
@@ -318,24 +317,24 @@ public class TerminalStrip extends AbstractTransparentComponent<String> implemen
|
|||||||
|
|
||||||
|
|
||||||
for (int i = 0; i < getTerminalCount(); i++) {
|
for (int i = 0; i < getTerminalCount(); i++) {
|
||||||
Point p1 = getControlPoint(i);
|
Point2D p1 = getControlPoint(i);
|
||||||
Point p2 = getControlPoint(i + getTerminalCount());
|
Point2D p2 = getControlPoint(i + getTerminalCount());
|
||||||
if (p2.x < p1.x || p2.y < p1.y) {
|
if (p2.getX() < p1.getX() || p2.getY() < p1.getY()) {
|
||||||
Point p = p1;
|
Point2D p = p1;
|
||||||
p1 = p2;
|
p1 = p2;
|
||||||
p2 = p;
|
p2 = p;
|
||||||
}
|
}
|
||||||
|
|
||||||
Area terminal =
|
Area terminal =
|
||||||
new Area(new RoundRectangle2D.Double(p1.x - holeSize, p1.y - holeSize, p2.x - p1.x + holeSize * 2, p2.y
|
new Area(new RoundRectangle2D.Double(p1.getX() - holeSize, p1.getY() - holeSize, p2.getX() - p1.getX() + holeSize * 2, p2.getY()
|
||||||
- p1.y + holeSize * 2, holeSize, holeSize));
|
- 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(p1.getX() - holeSize / 2, p1.getY() - 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(p2.getX() - holeSize / 2, p2.getY() - holeSize / 2, holeSize, holeSize)));
|
||||||
if (centerHole) {
|
if (centerHole) {
|
||||||
Point p3 = getControlPoint(i + 2 * getTerminalCount());
|
Point2D p3 = getControlPoint(i + 2 * getTerminalCount());
|
||||||
Area centerHole =
|
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);
|
terminal.subtract(centerHole);
|
||||||
bodyArea.subtract(centerHole);
|
bodyArea.subtract(centerHole);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ public class VeroBoard extends AbstractBoard {
|
|||||||
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
|
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
|
||||||
}
|
}
|
||||||
double x = firstPoint.getX();
|
double x = firstPoint.getX();
|
||||||
double y = finalSecondPoint.getY();
|
double y = firstPoint.getY();
|
||||||
int stripSize = getClosestOdd((int) STRIP_SIZE.convertToPixels());
|
int stripSize = getClosestOdd((int) STRIP_SIZE.convertToPixels());
|
||||||
int holeSize = getClosestOdd((int) HOLE_SIZE.convertToPixels());
|
int holeSize = getClosestOdd((int) HOLE_SIZE.convertToPixels());
|
||||||
int spacing = (int) this.spacing.convertToPixels();
|
int spacing = (int) this.spacing.convertToPixels();
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ import java.awt.AlphaComposite;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.geom.Point2D;
|
import java.awt.geom.Point2D;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
@@ -49,9 +48,10 @@ public class PolygonalCutout extends AbstractShape {
|
|||||||
super();
|
super();
|
||||||
this.borderColor = LIGHT_METAL_COLOR.darker();
|
this.borderColor = LIGHT_METAL_COLOR.darker();
|
||||||
this.controlPoints =
|
this.controlPoints =
|
||||||
new Point[] {new Point(0, 0), new Point(0, (int) DEFAULT_HEIGHT.convertToPixels()),
|
new Point2D[] {new Point2D.Double(0, 0),
|
||||||
new Point((int) DEFAULT_WIDTH.convertToPixels(), (int) DEFAULT_HEIGHT.convertToPixels()),
|
new Point2D.Double(0, (int) DEFAULT_HEIGHT.convertToPixels()),
|
||||||
new Point((int) DEFAULT_WIDTH.convertToPixels(), 0)};
|
new Point2D.Double((int) DEFAULT_WIDTH.convertToPixels(), (int) DEFAULT_HEIGHT.convertToPixels()),
|
||||||
|
new Point2D.Double((int) DEFAULT_WIDTH.convertToPixels(), 0)};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ package org.diylc.components.connectivity;
|
|||||||
import java.awt.BasicStroke;
|
import java.awt.BasicStroke;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Stroke;
|
import java.awt.Stroke;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.CubicCurve2D;
|
import java.awt.geom.CubicCurve2D;
|
||||||
@@ -278,7 +277,7 @@ public class TwistedWire extends AbstractCurvedComponent<Void> implements IConti
|
|||||||
public void recalculate(Path2D path, float thickness, Area firstLeadArea, Area secondLeadArea, boolean stripe) {
|
public void recalculate(Path2D path, float thickness, Area firstLeadArea, Area secondLeadArea, boolean stripe) {
|
||||||
PathIterator iterator = path.getPathIterator(null);
|
PathIterator iterator = path.getPathIterator(null);
|
||||||
float[] coords = new float[6];
|
float[] coords = new float[6];
|
||||||
Point current = new Point();
|
Point2D current = new Point2D.Double();
|
||||||
|
|
||||||
// convert all segments to cubic curves
|
// convert all segments to cubic curves
|
||||||
List<CubicCurve2D> curves = new ArrayList<CubicCurve2D>();
|
List<CubicCurve2D> curves = new ArrayList<CubicCurve2D>();
|
||||||
@@ -289,18 +288,18 @@ public class TwistedWire extends AbstractCurvedComponent<Void> implements IConti
|
|||||||
current.setLocation(coords[0], coords[1]);
|
current.setLocation(coords[0], coords[1]);
|
||||||
break;
|
break;
|
||||||
case PathIterator.SEG_LINETO:
|
case PathIterator.SEG_LINETO:
|
||||||
curves.add(new CubicCurve2D.Double(current.x, current.y, (current.x + coords[0]) / 2,
|
curves.add(new CubicCurve2D.Double(current.getX(), current.getY(), (current.getX() + coords[0]) / 2,
|
||||||
(current.y + coords[1]) / 2, (current.x + coords[0]) / 2, (current.y + coords[1]) / 2, coords[0],
|
(current.getY() + coords[1]) / 2, (current.getX() + coords[0]) / 2, (current.getY() + coords[1]) / 2, coords[0],
|
||||||
coords[1]));
|
coords[1]));
|
||||||
current.setLocation(coords[0], coords[1]);
|
current.setLocation(coords[0], coords[1]);
|
||||||
break;
|
break;
|
||||||
case PathIterator.SEG_QUADTO:
|
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]));
|
coords[2], coords[3]));
|
||||||
current.setLocation(coords[2], coords[3]);
|
current.setLocation(coords[2], coords[3]);
|
||||||
break;
|
break;
|
||||||
case PathIterator.SEG_CUBICTO:
|
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]));
|
coords[4], coords[5]));
|
||||||
current.setLocation(coords[4], coords[5]);
|
current.setLocation(coords[4], coords[5]);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import java.awt.AlphaComposite;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Polygon;
|
import java.awt.Polygon;
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
@@ -67,7 +66,7 @@ public class BatterySnap9V extends AbstractTransparentComponent<String> {
|
|||||||
private static Size TERMINAL_BORDER = new Size(0.7d, SizeUnit.mm);
|
private static Size TERMINAL_BORDER = new Size(0.7d, SizeUnit.mm);
|
||||||
|
|
||||||
private String value = "";
|
private String value = "";
|
||||||
private Point controlPoint = new Point(0, 0);
|
private Point2D controlPoint = new Point2D.Double(0, 0);
|
||||||
transient Shape[] body;
|
transient Shape[] body;
|
||||||
private Orientation orientation = Orientation.DEFAULT;
|
private Orientation orientation = Orientation.DEFAULT;
|
||||||
private Color color = BODY_COLOR;
|
private Color color = BODY_COLOR;
|
||||||
@@ -117,8 +116,8 @@ public class BatterySnap9V extends AbstractTransparentComponent<String> {
|
|||||||
if (body == null) {
|
if (body == null) {
|
||||||
body = new Shape[3];
|
body = new Shape[3];
|
||||||
|
|
||||||
int x = controlPoint.x;
|
double x = controlPoint.getX();
|
||||||
int y = controlPoint.y;
|
double y = controlPoint.getY();
|
||||||
int width = (int) WIDTH.convertToPixels();
|
int width = (int) WIDTH.convertToPixels();
|
||||||
int length = (int) LENGTH.convertToPixels();
|
int length = (int) LENGTH.convertToPixels();
|
||||||
int totalLength = length + width / 2;
|
int totalLength = length + width / 2;
|
||||||
@@ -135,7 +134,7 @@ public class BatterySnap9V extends AbstractTransparentComponent<String> {
|
|||||||
new Area(new Ellipse2D.Double(x + (totalLength - terminalSpacing) / 2 - terminalDiameter / 2, y
|
new Area(new Ellipse2D.Double(x + (totalLength - terminalSpacing) / 2 - terminalDiameter / 2, y
|
||||||
- terminalDiameter / 2, terminalDiameter, terminalDiameter));
|
- terminalDiameter / 2, terminalDiameter, terminalDiameter));
|
||||||
|
|
||||||
int centerX = x + (totalLength + terminalSpacing) / 2;
|
double centerX = x + (totalLength + terminalSpacing) / 2;
|
||||||
int[] terminalX = new int[6];
|
int[] terminalX = new int[6];
|
||||||
int[] terminalY = new int[6];
|
int[] terminalY = new int[6];
|
||||||
|
|
||||||
@@ -231,7 +230,7 @@ public class BatterySnap9V extends AbstractTransparentComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoint;
|
return controlPoint;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import java.awt.AlphaComposite;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
@@ -166,8 +165,8 @@ public class OpenJack1_4 extends AbstractMultiPartComponent<String> {
|
|||||||
Point2D tipLabel = new Point2D.Double(controlPoints[0].getX(), (int) (controlPoints[0].getY() + holeToEdge * 1.25));
|
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 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);
|
AffineTransform sleeveTransform = AffineTransform.getRotateInstance(getType() == OpenJackType.SWITCHED ? SLEEVE_SWITCHED_THETA : SLEEVE_THETA, controlPoints[0].getX(), centerY);
|
||||||
Point ringOrSwitchLabel = new Point(0, 0);
|
Point2D ringOrSwitchLabel = new Point2D.Double(0, 0);
|
||||||
Point sleeveLabel = new Point(0, 0);
|
Point2D sleeveLabel = new Point2D.Double(0, 0);
|
||||||
ringTransform.transform(tipLabel, ringOrSwitchLabel);
|
ringTransform.transform(tipLabel, ringOrSwitchLabel);
|
||||||
sleeveTransform.transform(tipLabel, sleeveLabel);
|
sleeveTransform.transform(tipLabel, sleeveLabel);
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import java.awt.AlphaComposite;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
@@ -129,7 +128,8 @@ public class PinHeader extends AbstractTransparentComponent<Void> {
|
|||||||
|
|
||||||
for (int i = 0; i < columnCount; i++)
|
for (int i = 0; i < columnCount; i++)
|
||||||
for (int j = 0; j < rowCount; j++)
|
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
|
// Apply rotation if necessary
|
||||||
double angle = getAngle();
|
double angle = getAngle();
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ import java.awt.Color;
|
|||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Polygon;
|
import java.awt.Polygon;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
@@ -86,7 +85,7 @@ public class PotentiometerPanel extends AbstractPotentiometer {
|
|||||||
transient protected Area[] body = null;
|
transient protected Area[] body = null;
|
||||||
|
|
||||||
public PotentiometerPanel() {
|
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();
|
updateControlPoints();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ import java.awt.Color;
|
|||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
@@ -82,7 +81,7 @@ public class TrimmerPotentiometer extends AbstractPotentiometer {
|
|||||||
protected TrimmerType type = TrimmerType.FLAT_SMALL;
|
protected TrimmerType type = TrimmerType.FLAT_SMALL;
|
||||||
|
|
||||||
public TrimmerPotentiometer() {
|
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();
|
updateControlPoints();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+5
-6
@@ -24,7 +24,6 @@ package org.diylc.components.semiconductors;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Font;
|
import java.awt.Font;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Point2D;
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
@@ -45,7 +44,7 @@ public abstract class AbstractTransistorPackage extends AbstractTransparentCompo
|
|||||||
protected String value = "";
|
protected String value = "";
|
||||||
protected TransistorPinout pinout;
|
protected TransistorPinout pinout;
|
||||||
protected Orientation orientation = Orientation.DEFAULT;
|
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;
|
transient protected Area[] body;
|
||||||
|
|
||||||
protected Color bodyColor;
|
protected Color bodyColor;
|
||||||
@@ -143,7 +142,7 @@ public abstract class AbstractTransistorPackage extends AbstractTransparentCompo
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -257,7 +256,7 @@ public abstract class AbstractTransistorPackage extends AbstractTransparentCompo
|
|||||||
if (b.getMaxY() > maxY)
|
if (b.getMaxY() > maxY)
|
||||||
maxY = b.getMaxY();
|
maxY = b.getMaxY();
|
||||||
}
|
}
|
||||||
for (Point p : controlPoints) {
|
for (Point2D p : controlPoints) {
|
||||||
if (p.getX() < minX)
|
if (p.getX() < minX)
|
||||||
minX = p.getX();
|
minX = p.getX();
|
||||||
if (p.getX() > maxX)
|
if (p.getX() > maxX)
|
||||||
@@ -284,7 +283,7 @@ public abstract class AbstractTransistorPackage extends AbstractTransparentCompo
|
|||||||
int d = 4; // hard-coded
|
int d = 4; // hard-coded
|
||||||
String pinout = p.toPinout();
|
String pinout = p.toPinout();
|
||||||
for (int i = 0; i < pinout.length(); i++) {
|
for (int i = 0; i < pinout.length(); i++) {
|
||||||
Point point = getControlPoint(i);
|
Point2D point = getControlPoint(i);
|
||||||
int dx = 0;
|
int dx = 0;
|
||||||
int dy = 0;
|
int dy = 0;
|
||||||
HorizontalAlignment ha = HorizontalAlignment.CENTER;
|
HorizontalAlignment ha = HorizontalAlignment.CENTER;
|
||||||
@@ -327,7 +326,7 @@ public abstract class AbstractTransistorPackage extends AbstractTransparentCompo
|
|||||||
}
|
}
|
||||||
break;
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,10 +26,11 @@ import java.awt.Color;
|
|||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Rectangle;
|
import java.awt.Rectangle;
|
||||||
|
import java.awt.Shape;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.awt.geom.RoundRectangle2D;
|
import java.awt.geom.RoundRectangle2D;
|
||||||
|
|
||||||
@@ -82,8 +83,8 @@ public class TransistorTO1 extends AbstractTransistorPackage {
|
|||||||
protected void updateControlPoints() {
|
protected void updateControlPoints() {
|
||||||
int pinSpacing = (int) getPinSpacing().convertToPixels();
|
int pinSpacing = (int) getPinSpacing().convertToPixels();
|
||||||
// Update control points.
|
// Update control points.
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
switch (orientation) {
|
switch (orientation) {
|
||||||
case DEFAULT:
|
case DEFAULT:
|
||||||
controlPoints[1].setLocation(x - (folded ? 0 : pinSpacing), y + pinSpacing);
|
controlPoints[1].setLocation(x - (folded ? 0 : pinSpacing), y + pinSpacing);
|
||||||
@@ -108,8 +109,8 @@ public class TransistorTO1 extends AbstractTransistorPackage {
|
|||||||
|
|
||||||
public Area[] getBody() {
|
public Area[] getBody() {
|
||||||
if (body == null) {
|
if (body == null) {
|
||||||
int x = (controlPoints[0].x + controlPoints[1].x + controlPoints[2].x) / 3;
|
double x = (controlPoints[0].getX() + controlPoints[1].getX() + controlPoints[2].getX()) / 3;
|
||||||
int y = (controlPoints[0].y + controlPoints[1].y + controlPoints[2].y) / 3;
|
double y = (controlPoints[0].getY() + controlPoints[1].getY() + controlPoints[2].getY()) / 3;
|
||||||
int bodyDiameter = getClosestOdd(BODY_DIAMETER.convertToPixels());
|
int bodyDiameter = getClosestOdd(BODY_DIAMETER.convertToPixels());
|
||||||
int bodyLength = getClosestOdd(BODY_LENGTH.convertToPixels());
|
int bodyLength = getClosestOdd(BODY_LENGTH.convertToPixels());
|
||||||
int edgeRadius = (int) EDGE_RADIUS.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);
|
Theme theme = (Theme) ConfigurationManager.getInstance().readObject(IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME);
|
||||||
|
|
||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1f));
|
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) {
|
if (!outlineMode) {
|
||||||
g2d.setColor(PIN_COLOR);
|
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.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];
|
Area mainArea = getBody()[0];
|
||||||
@@ -229,8 +231,8 @@ public class TransistorTO1 extends AbstractTransistorPackage {
|
|||||||
int textWidth = (int) (rect.getWidth());
|
int textWidth = (int) (rect.getWidth());
|
||||||
// Center text horizontally and vertically
|
// Center text horizontally and vertically
|
||||||
Rectangle bounds = mainArea.getBounds();
|
Rectangle bounds = mainArea.getBounds();
|
||||||
int x = bounds.x + (bounds.width - textWidth) / 2;
|
int x = (int) (bounds.getX() + (bounds.width - textWidth) / 2);
|
||||||
int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
|
int y = (int) (bounds.getY() + (bounds.height - textHeight) / 2 + fontMetrics.getAscent());
|
||||||
g2d.drawString(label, x, y);
|
g2d.drawString(label, x, y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,11 +26,12 @@ import java.awt.Color;
|
|||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Rectangle;
|
import java.awt.Rectangle;
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
|
import java.awt.geom.Line2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import org.diylc.appframework.miscutils.ConfigurationManager;
|
import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||||
@@ -86,8 +87,8 @@ public class TransistorTO126 extends AbstractTransistorPackage {
|
|||||||
protected void updateControlPoints() {
|
protected void updateControlPoints() {
|
||||||
int pinSpacing = (int) PIN_SPACING.convertToPixels();
|
int pinSpacing = (int) PIN_SPACING.convertToPixels();
|
||||||
// Update control points.
|
// Update control points.
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
switch (orientation) {
|
switch (orientation) {
|
||||||
case DEFAULT:
|
case DEFAULT:
|
||||||
controlPoints[1].setLocation(x, y + pinSpacing);
|
controlPoints[1].setLocation(x, y + pinSpacing);
|
||||||
@@ -113,8 +114,8 @@ public class TransistorTO126 extends AbstractTransistorPackage {
|
|||||||
public Area[] getBody() {
|
public Area[] getBody() {
|
||||||
if (body == null) {
|
if (body == null) {
|
||||||
body = new Area[2];
|
body = new Area[2];
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
int pinSpacing = (int) PIN_SPACING.convertToPixels();
|
int pinSpacing = (int) PIN_SPACING.convertToPixels();
|
||||||
int bodyWidth = getClosestOdd(BODY_WIDTH.convertToPixels());
|
int bodyWidth = getClosestOdd(BODY_WIDTH.convertToPixels());
|
||||||
int bodyThickness = getClosestOdd(BODY_THICKNESS.convertToPixels());
|
int bodyThickness = getClosestOdd(BODY_THICKNESS.convertToPixels());
|
||||||
@@ -203,51 +204,57 @@ public class TransistorTO126 extends AbstractTransistorPackage {
|
|||||||
finalPinColor = METAL_COLOR;
|
finalPinColor = METAL_COLOR;
|
||||||
finalPinBorderColor = METAL_COLOR.darker();
|
finalPinBorderColor = METAL_COLOR.darker();
|
||||||
}
|
}
|
||||||
for (Point point : controlPoints) {
|
Line2D line;
|
||||||
|
for (Point2D point : controlPoints) {
|
||||||
switch (orientation) {
|
switch (orientation) {
|
||||||
case DEFAULT:
|
case DEFAULT:
|
||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness));
|
||||||
g2d.setColor(finalPinBorderColor);
|
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.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2));
|
||||||
g2d.setColor(finalPinColor);
|
g2d.setColor(finalPinColor);
|
||||||
g2d.drawLine(point.x, point.y, point.x + leadLength - leadThickness / 2, point.y);
|
g2d.draw(line);
|
||||||
break;
|
break;
|
||||||
case _90:
|
case _90:
|
||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness));
|
||||||
g2d.setColor(finalPinBorderColor);
|
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.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2));
|
||||||
g2d.setColor(finalPinColor);
|
g2d.setColor(finalPinColor);
|
||||||
g2d.drawLine(point.x, point.y, point.x, point.y + leadLength - leadThickness / 2);
|
g2d.draw(line);
|
||||||
break;
|
break;
|
||||||
case _180:
|
case _180:
|
||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness));
|
||||||
g2d.setColor(finalPinBorderColor);
|
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.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2));
|
||||||
g2d.setColor(finalPinColor);
|
g2d.setColor(finalPinColor);
|
||||||
g2d.drawLine(point.x, point.y, point.x - leadLength - leadThickness / 2, point.y);
|
g2d.draw(line);
|
||||||
break;
|
break;
|
||||||
case _270:
|
case _270:
|
||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness));
|
||||||
g2d.setColor(finalPinBorderColor);
|
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.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2));
|
||||||
g2d.setColor(finalPinColor);
|
g2d.setColor(finalPinColor);
|
||||||
g2d.drawLine(point.x, point.y, point.x, point.y - leadLength);
|
g2d.draw(line);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!outlineMode) {
|
if (!outlineMode) {
|
||||||
for (Point point : controlPoints) {
|
for (Point2D point : controlPoints) {
|
||||||
|
|
||||||
g2d.setColor(PIN_COLOR);
|
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.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());
|
int textWidth = (int) (rect.getWidth());
|
||||||
// Center text horizontally and vertically
|
// Center text horizontally and vertically
|
||||||
Rectangle bounds = mainArea.getBounds();
|
Rectangle bounds = mainArea.getBounds();
|
||||||
int x = bounds.x + (bounds.width - textWidth) / 2;
|
int x = (int) (bounds.getX() + (bounds.width - textWidth) / 2);
|
||||||
int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
|
int y = (int) (bounds.getY() + (bounds.height - textHeight) / 2 + fontMetrics.getAscent());
|
||||||
g2d.drawString(label, x, y);
|
g2d.drawString(label, x, y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,11 +26,12 @@ import java.awt.Color;
|
|||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Rectangle;
|
import java.awt.Rectangle;
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
|
import java.awt.geom.Line2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import org.diylc.appframework.miscutils.ConfigurationManager;
|
import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||||
@@ -91,8 +92,8 @@ public class TransistorTO220 extends AbstractTransistorPackage {
|
|||||||
protected void updateControlPoints() {
|
protected void updateControlPoints() {
|
||||||
int pinSpacing = (int) PIN_SPACING.convertToPixels();
|
int pinSpacing = (int) PIN_SPACING.convertToPixels();
|
||||||
// Update control points.
|
// Update control points.
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
switch (orientation) {
|
switch (orientation) {
|
||||||
case DEFAULT:
|
case DEFAULT:
|
||||||
controlPoints[1].setLocation(x, y + pinSpacing);
|
controlPoints[1].setLocation(x, y + pinSpacing);
|
||||||
@@ -118,8 +119,8 @@ public class TransistorTO220 extends AbstractTransistorPackage {
|
|||||||
public Area[] getBody() {
|
public Area[] getBody() {
|
||||||
if (body == null) {
|
if (body == null) {
|
||||||
body = new Area[2];
|
body = new Area[2];
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
int pinSpacing = (int) PIN_SPACING.convertToPixels();
|
int pinSpacing = (int) PIN_SPACING.convertToPixels();
|
||||||
int bodyWidth = getClosestOdd(BODY_WIDTH.convertToPixels());
|
int bodyWidth = getClosestOdd(BODY_WIDTH.convertToPixels());
|
||||||
int bodyThickness = getClosestOdd(BODY_THICKNESS.convertToPixels());
|
int bodyThickness = getClosestOdd(BODY_THICKNESS.convertToPixels());
|
||||||
@@ -230,51 +231,57 @@ public class TransistorTO220 extends AbstractTransistorPackage {
|
|||||||
finalPinColor = METAL_COLOR;
|
finalPinColor = METAL_COLOR;
|
||||||
finalPinBorderColor = METAL_COLOR.darker();
|
finalPinBorderColor = METAL_COLOR.darker();
|
||||||
}
|
}
|
||||||
for (Point point : controlPoints) {
|
Line2D line;
|
||||||
|
for (Point2D point : controlPoints) {
|
||||||
switch (orientation) {
|
switch (orientation) {
|
||||||
case DEFAULT:
|
case DEFAULT:
|
||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness));
|
||||||
g2d.setColor(finalPinBorderColor);
|
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.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2));
|
||||||
g2d.setColor(finalPinColor);
|
g2d.setColor(finalPinColor);
|
||||||
g2d.drawLine(point.x, point.y, point.x + leadLength - leadThickness / 2, point.y);
|
g2d.draw(line);
|
||||||
break;
|
break;
|
||||||
case _90:
|
case _90:
|
||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness));
|
||||||
g2d.setColor(finalPinBorderColor);
|
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.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2));
|
||||||
g2d.setColor(finalPinColor);
|
g2d.setColor(finalPinColor);
|
||||||
g2d.drawLine(point.x, point.y, point.x, point.y + leadLength - leadThickness / 2);
|
g2d.draw(line);
|
||||||
break;
|
break;
|
||||||
case _180:
|
case _180:
|
||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness));
|
||||||
g2d.setColor(finalPinBorderColor);
|
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.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2));
|
||||||
g2d.setColor(finalPinColor);
|
g2d.setColor(finalPinColor);
|
||||||
g2d.drawLine(point.x, point.y, point.x - leadLength - leadThickness / 2, point.y);
|
g2d.draw(line);
|
||||||
break;
|
break;
|
||||||
case _270:
|
case _270:
|
||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness));
|
||||||
g2d.setColor(finalPinBorderColor);
|
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.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2));
|
||||||
g2d.setColor(finalPinColor);
|
g2d.setColor(finalPinColor);
|
||||||
g2d.drawLine(point.x, point.y, point.x, point.y - leadLength);
|
g2d.draw(line);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!outlineMode) {
|
if (!outlineMode) {
|
||||||
for (Point point : controlPoints) {
|
for (Point2D point : controlPoints) {
|
||||||
|
|
||||||
g2d.setColor(PIN_COLOR);
|
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.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());
|
int textWidth = (int) (rect.getWidth());
|
||||||
// Center text horizontally and vertically
|
// Center text horizontally and vertically
|
||||||
Rectangle bounds = mainArea.getBounds();
|
Rectangle bounds = mainArea.getBounds();
|
||||||
int x = bounds.x + (bounds.width - textWidth) / 2;
|
int x = (int) (bounds.getX() + (bounds.width - textWidth) / 2);
|
||||||
int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
|
int y = (int) (bounds.getY() + (bounds.height - textHeight) / 2 + fontMetrics.getAscent());
|
||||||
g2d.drawString(label, x, y);
|
g2d.drawString(label, x, y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,11 +26,12 @@ import java.awt.Color;
|
|||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Rectangle;
|
import java.awt.Rectangle;
|
||||||
import java.awt.RenderingHints;
|
import java.awt.RenderingHints;
|
||||||
|
import java.awt.Shape;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import org.diylc.appframework.miscutils.ConfigurationManager;
|
import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||||
@@ -95,8 +96,8 @@ public class TransistorTO92 extends AbstractTransistorPackage {
|
|||||||
protected void updateControlPoints() {
|
protected void updateControlPoints() {
|
||||||
int pinSpacing = (int) getPinSpacing().convertToPixels();
|
int pinSpacing = (int) getPinSpacing().convertToPixels();
|
||||||
// Update control points.
|
// Update control points.
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
switch (orientation) {
|
switch (orientation) {
|
||||||
case DEFAULT:
|
case DEFAULT:
|
||||||
controlPoints[1].setLocation(x, y + pinSpacing);
|
controlPoints[1].setLocation(x, y + pinSpacing);
|
||||||
@@ -121,8 +122,8 @@ public class TransistorTO92 extends AbstractTransistorPackage {
|
|||||||
|
|
||||||
public Area[] getBody() {
|
public Area[] getBody() {
|
||||||
if (body == null) {
|
if (body == null) {
|
||||||
int x = (controlPoints[0].x + controlPoints[1].x + controlPoints[2].x) / 3;
|
double x = (controlPoints[0].getX() + controlPoints[1].getX() + controlPoints[2].getX()) / 3;
|
||||||
int y = (controlPoints[0].y + controlPoints[1].y + controlPoints[2].y) / 3;
|
double y = (controlPoints[0].getY() + controlPoints[1].getY() + controlPoints[2].getY()) / 3;
|
||||||
int bodyDiameter = getClosestOdd(BODY_DIAMETER.convertToPixels());
|
int bodyDiameter = getClosestOdd(BODY_DIAMETER.convertToPixels());
|
||||||
|
|
||||||
Area newBody = null;
|
Area newBody = null;
|
||||||
@@ -190,11 +191,12 @@ public class TransistorTO92 extends AbstractTransistorPackage {
|
|||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1f));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1f));
|
||||||
|
|
||||||
if (!outlineMode) {
|
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.setColor(PIN_COLOR);
|
||||||
g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
|
g2d.fill(pin);
|
||||||
g2d.setColor(PIN_BORDER_COLOR);
|
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());
|
int textWidth = (int) (rect.getWidth());
|
||||||
// Center text horizontally and vertically
|
// Center text horizontally and vertically
|
||||||
Rectangle bounds = mainArea.getBounds();
|
Rectangle bounds = mainArea.getBounds();
|
||||||
int x = bounds.x + (bounds.width - textWidth) / 2;
|
int x = (int) (bounds.getX() + (bounds.width - textWidth) / 2);
|
||||||
int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
|
int y = (int) (bounds.getY() + (bounds.height - textHeight) / 2 + fontMetrics.getAscent());
|
||||||
g2d.drawString(label, x, y);
|
g2d.drawString(label, x, y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,6 @@
|
|||||||
package org.diylc.components.shapes;
|
package org.diylc.components.shapes;
|
||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.geom.Point2D;
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
import org.diylc.components.AbstractTransparentComponent;
|
import org.diylc.components.AbstractTransparentComponent;
|
||||||
@@ -42,10 +41,10 @@ public abstract class AbstractShape extends AbstractTransparentComponent<Void> {
|
|||||||
public static Size DEFAULT_HEIGHT = new Size(0.4d, SizeUnit.in);
|
public static Size DEFAULT_HEIGHT = new Size(0.4d, SizeUnit.in);
|
||||||
|
|
||||||
protected String value = "";
|
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())};
|
new Point2D.Double(DEFAULT_WIDTH.convertToPixels(), DEFAULT_HEIGHT.convertToPixels())};
|
||||||
protected Point2D firstPoint = new Point();
|
protected Point2D firstPoint = new Point2D.Double();
|
||||||
protected Point2D secondPoint = new Point();
|
protected Point2D secondPoint = new Point2D.Double();
|
||||||
|
|
||||||
protected Color color = COLOR;
|
protected Color color = COLOR;
|
||||||
protected Color borderColor = BORDER_COLOR;
|
protected Color borderColor = BORDER_COLOR;
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import java.awt.AlphaComposite;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.geom.Point2D;
|
import java.awt.geom.Point2D;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
@@ -52,9 +51,10 @@ public class Polygon extends AbstractShape {
|
|||||||
public Polygon() {
|
public Polygon() {
|
||||||
super();
|
super();
|
||||||
this.controlPoints =
|
this.controlPoints =
|
||||||
new Point[] {new Point(0, 0), new Point(0, (int) DEFAULT_HEIGHT.convertToPixels()),
|
new Point2D[] {new Point2D.Double(0, 0),
|
||||||
new Point((int) DEFAULT_WIDTH.convertToPixels(), (int) DEFAULT_HEIGHT.convertToPixels()),
|
new Point2D.Double(0, (int) DEFAULT_HEIGHT.convertToPixels()),
|
||||||
new Point((int) DEFAULT_WIDTH.convertToPixels(), 0)};
|
new Point2D.Double((int) DEFAULT_WIDTH.convertToPixels(), (int) DEFAULT_HEIGHT.convertToPixels()),
|
||||||
|
new Point2D.Double((int) DEFAULT_WIDTH.convertToPixels(), 0)};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -21,7 +21,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.diylc.components.transform;
|
package org.diylc.components.transform;
|
||||||
|
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Point2D;
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
@@ -90,7 +89,7 @@ public class BatterySnapTransformer implements IComponentTransformer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < snap.getControlPointCount(); i++) {
|
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);
|
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++) {
|
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);
|
snap.setControlPoint(new Point2D.Double(p.getX() + dx, p.getY() + dy), i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.diylc.components.transform;
|
package org.diylc.components.transform;
|
||||||
|
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Point2D;
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
@@ -91,7 +90,7 @@ public class TO1Transformer implements IComponentTransformer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < transistor.getControlPointCount(); i++) {
|
for (int i = 0; i < transistor.getControlPointCount(); i++) {
|
||||||
Point p = transistor.getControlPoint(i);
|
Point2D p = transistor.getControlPoint(i);
|
||||||
transistor.setControlPoint(
|
transistor.setControlPoint(
|
||||||
new Point2D.Double(p.getX() + 2 * dx, p.getY() + (transistor.getControlPoint(2).getY() - transistor.getControlPoint(0).getY())), i);
|
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++) {
|
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()),
|
transistor.setControlPoint(new Point2D.Double(p.getX() + (transistor.getControlPoint(2).getX() - transistor.getControlPoint(0).getX()),
|
||||||
p.getY() + 2 * dy), i);
|
p.getY() + 2 * dy), i);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.diylc.components.transform;
|
package org.diylc.components.transform;
|
||||||
|
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Point2D;
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
@@ -93,7 +92,7 @@ public class TO220Transformer implements IComponentTransformer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < transistor.getControlPointCount(); i++) {
|
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);
|
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++) {
|
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);
|
transistor.setControlPoint(new Point2D.Double(p.getX() + dx, p.getY() + dy), i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.diylc.components.transform;
|
package org.diylc.components.transform;
|
||||||
|
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Point2D;
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
@@ -85,7 +84,7 @@ public class TO92Transformer implements IComponentTransformer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < transistor.getControlPointCount(); i++) {
|
for (int i = 0; i < transistor.getControlPointCount(); i++) {
|
||||||
Point p = transistor.getControlPoint(i);
|
Point2D p = transistor.getControlPoint(i);
|
||||||
transistor.setControlPoint(
|
transistor.setControlPoint(
|
||||||
new Point2D.Double(p.getX() + 2 * dx, p.getY() + (transistor.getControlPoint(2).getY() - transistor.getControlPoint(0).getY())), i);
|
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++) {
|
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()),
|
transistor.setControlPoint(new Point2D.Double(p.getX() + (transistor.getControlPoint(2).getX() - transistor.getControlPoint(0).getX()),
|
||||||
p.getY() + 2 * dy), i);
|
p.getY() + 2 * dy), i);
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-3
@@ -21,7 +21,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.diylc.components.transform;
|
package org.diylc.components.transform;
|
||||||
|
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Point2D;
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
@@ -96,7 +95,7 @@ public class TerminalStripTransformer implements IComponentTransformer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < strip.getControlPointCount(); i++) {
|
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);
|
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++) {
|
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);
|
strip.setControlPoint(new Point2D.Double(p.getX() + dx, p.getY() + dy), i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,6 @@
|
|||||||
package org.diylc.components.tube;
|
package org.diylc.components.tube;
|
||||||
|
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
import java.awt.geom.GeneralPath;
|
import java.awt.geom.GeneralPath;
|
||||||
@@ -50,7 +49,8 @@ public class DuoDiodeSymbol extends AbstractTubeSymbol {
|
|||||||
public DuoDiodeSymbol() {
|
public DuoDiodeSymbol() {
|
||||||
super();
|
super();
|
||||||
this.controlPoints =
|
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();
|
updateControlPoints();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import java.awt.AlphaComposite;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
@@ -98,7 +97,7 @@ public class TubeSocket extends AbstractTransparentComponent<String> {
|
|||||||
private Mount mount = Mount.CHASSIS;
|
private Mount mount = Mount.CHASSIS;
|
||||||
private Color labelColor = LABEL_COLOR;
|
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;
|
transient private Shape body;
|
||||||
|
|
||||||
@@ -168,7 +167,7 @@ public class TubeSocket extends AbstractTransparentComponent<String> {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
private void updateControlPoints() {
|
private void updateControlPoints() {
|
||||||
Point firstPoint = controlPoints[0];
|
Point2D firstPoint = controlPoints[0];
|
||||||
int pinCount;
|
int pinCount;
|
||||||
int pinSpacing;
|
int pinSpacing;
|
||||||
boolean hasEmptySpace;
|
boolean hasEmptySpace;
|
||||||
@@ -199,13 +198,13 @@ public class TubeSocket extends AbstractTransparentComponent<String> {
|
|||||||
double angleIncrement = Math.PI * 2 / (hasEmptySpace ? (pinCount + 1) : pinCount);
|
double angleIncrement = Math.PI * 2 / (hasEmptySpace ? (pinCount + 1) : pinCount);
|
||||||
double initialAngleOffset = hasEmptySpace ? angleIncrement : (angleIncrement / 2);
|
double initialAngleOffset = hasEmptySpace ? angleIncrement : (angleIncrement / 2);
|
||||||
|
|
||||||
controlPoints = new Point[pinCount + 1];
|
controlPoints = new Point2D[pinCount + 1];
|
||||||
double theta = initialAngleOffset + Math.toRadians(getAngle());
|
double theta = initialAngleOffset + Math.toRadians(getAngle());
|
||||||
controlPoints[0] = firstPoint;
|
controlPoints[0] = firstPoint;
|
||||||
for (int i = 0; i < pinCount; i++) {
|
for (int i = 0; i < pinCount; i++) {
|
||||||
controlPoints[i + 1] =
|
controlPoints[i + 1] =
|
||||||
new Point((int) (firstPoint.getX() + Math.cos(theta) * pinSpacing / 2),
|
new Point2D.Double(firstPoint.getX() + Math.cos(theta) * pinSpacing / 2,
|
||||||
(int) (firstPoint.getY() + Math.sin(theta) * pinSpacing / 2));
|
firstPoint.getY() + Math.sin(theta) * pinSpacing / 2);
|
||||||
theta += angleIncrement;
|
theta += angleIncrement;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -231,32 +230,32 @@ public class TubeSocket extends AbstractTransparentComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
body =
|
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);
|
bodyDiameter, bodyDiameter);
|
||||||
Area bodyArea = new Area(body);
|
Area bodyArea = new Area(body);
|
||||||
int holeSize = getClosestOdd(base == Base.B12C ? B12C_HOLE_SIZE.convertToPixels() : HOLE_SIZE.convertToPixels());
|
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)));
|
/ 2, holeSize, holeSize)));
|
||||||
|
|
||||||
if (base == Base.OCTAL) {
|
if (base == Base.OCTAL) {
|
||||||
int tickSize = getClosestOdd(OCTAL_TICK_SIZE.convertToPixels());
|
int tickSize = getClosestOdd(OCTAL_TICK_SIZE.convertToPixels());
|
||||||
double theta = Math.toRadians(getAngle());
|
double theta = Math.toRadians(getAngle());
|
||||||
int centerX = (int) (controlPoints[0].x + Math.cos(theta) * holeSize / 2);
|
int centerX = (int) (controlPoints[0].getX() + Math.cos(theta) * holeSize / 2);
|
||||||
int centerY = (int) (controlPoints[0].y + Math.sin(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,
|
bodyArea.subtract(new Area(new Ellipse2D.Double(centerX - tickSize / 2, centerY - tickSize / 2, tickSize,
|
||||||
tickSize)));
|
tickSize)));
|
||||||
} else if (base == Base.B9A && getMount() == Mount.CHASSIS) {
|
} else if (base == Base.B9A && getMount() == Mount.CHASSIS) {
|
||||||
double cutoutDiameter = getClosestOdd(B9A_CUTOUT_DIAMETER.convertToPixels());
|
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].getX() - cutoutDiameter / 2, controlPoints[0].getY() - 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 / 4, cutoutDiameter, cutoutDiameter)));
|
||||||
} else if (base == Base.B7G && getMount() == Mount.CHASSIS) {
|
} else if (base == Base.B7G && getMount() == Mount.CHASSIS) {
|
||||||
double cutoutDiameter = getClosestOdd(B7G_CUTOUT_DIAMETER.convertToPixels());
|
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].getX() - cutoutDiameter / 2, controlPoints[0].getY() - 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 / 4, cutoutDiameter, cutoutDiameter)));
|
||||||
} else if (base == Base.B12C && getMount() == Mount.CHASSIS) {
|
} else if (base == Base.B12C && getMount() == Mount.CHASSIS) {
|
||||||
double cutoutDiameter = getClosestOdd(B12C_CUTOUT_DIAMETER.convertToPixels());
|
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].getX() - cutoutDiameter / 2, controlPoints[0].getY() - 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 / 4, cutoutDiameter, cutoutDiameter)));
|
||||||
}
|
}
|
||||||
|
|
||||||
body = bodyArea;
|
body = bodyArea;
|
||||||
@@ -304,14 +303,14 @@ public class TubeSocket extends AbstractTransparentComponent<String> {
|
|||||||
Shape pinShape;
|
Shape pinShape;
|
||||||
if (getMount() == Mount.PCB) {
|
if (getMount() == Mount.PCB) {
|
||||||
int pinSize = getClosestOdd(PIN_DIAMETER.convertToPixels());
|
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 {
|
} else {
|
||||||
int pinWidth = getClosestOdd(PIN_WIDTH.convertToPixels());
|
int pinWidth = getClosestOdd(PIN_WIDTH.convertToPixels());
|
||||||
int pinThickness = getClosestOdd(PIN_THICKNESS.convertToPixels());
|
int pinThickness = getClosestOdd(PIN_THICKNESS.convertToPixels());
|
||||||
pinShape = new Rectangle2D.Double(controlPoints[i].x - pinWidth / 2, controlPoints[i].y - pinThickness / 2, pinWidth, pinThickness);
|
pinShape = new Rectangle2D.Double(controlPoints[i].getX() - pinWidth / 2, controlPoints[i].getY() - pinThickness / 2, pinWidth, pinThickness);
|
||||||
double theta = Math.atan2(controlPoints[i].y - controlPoints[0].y, controlPoints[i].x - controlPoints[0].x) + Math.PI / 2;
|
double theta = Math.atan2(controlPoints[i].getY() - controlPoints[0].getY(), controlPoints[i].getX() - controlPoints[0].getX()) + Math.PI / 2;
|
||||||
Area rotatedPin = new Area(pinShape);
|
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;
|
pinShape = rotatedPin;
|
||||||
}
|
}
|
||||||
g2d.setColor(PIN_COLOR);
|
g2d.setColor(PIN_COLOR);
|
||||||
@@ -330,9 +329,9 @@ public class TubeSocket extends AbstractTransparentComponent<String> {
|
|||||||
for (int i = 0; i < labels.length; i++) {
|
for (int i = 0; i < labels.length; i++) {
|
||||||
if (i < controlPoints.length - 1) {
|
if (i < controlPoints.length - 1) {
|
||||||
String label = labels[i];
|
String label = labels[i];
|
||||||
double theta = Math.atan2(controlPoints[i + 1].y - controlPoints[0].y, controlPoints[i + 1].x - controlPoints[0].x);
|
double theta = Math.atan2(controlPoints[i + 1].getY() - controlPoints[0].getY(), controlPoints[i + 1].getX() - controlPoints[0].getX());
|
||||||
double x = controlPoints[i + 1].x - Math.cos(theta) * electrodeLabelOffset;
|
double x = controlPoints[i + 1].getX() - Math.cos(theta) * electrodeLabelOffset;
|
||||||
double y = controlPoints[i + 1].y - Math.sin(theta) * electrodeLabelOffset;
|
double y = controlPoints[i + 1].getY() - Math.sin(theta) * electrodeLabelOffset;
|
||||||
StringUtils.drawCenteredText(g2d, label, (int)x, (int)y, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
|
StringUtils.drawCenteredText(g2d, label, (int)x, (int)y, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user