Big update - replace Point with Point2D in most places to increase

accuracy
This commit is contained in:
bancika
2020-09-10 12:21:48 +02:00
parent f79fb73cb2
commit 82f37a5225
134 changed files with 2458 additions and 2452 deletions
@@ -195,7 +195,7 @@ public class StringUtils {
return strings;
}
public static void drawCenteredText(Graphics2D g2d, String text, int x, int y, HorizontalAlignment horizontalAlignment,
public static void drawCenteredText(Graphics2D g2d, String text, double x, double y, HorizontalAlignment horizontalAlignment,
VerticalAlignment verticalAlignment) {
String[] parts = text.split("\n");
if (parts.length > 1) {
@@ -214,7 +214,7 @@ public class StringUtils {
GlyphVector glyphVector = font.createGlyphVector(renderContext, text);
Rectangle visualBounds = glyphVector.getVisualBounds().getBounds();
int textX = 0;
double textX = 0;
switch (horizontalAlignment) {
case CENTER:
textX = x - stringBounds.width / 2;
@@ -227,7 +227,7 @@ public class StringUtils {
break;
}
int textY = 0;
double textY = 0;
switch (verticalAlignment) {
case TOP:
textY = y;
@@ -240,6 +240,6 @@ public class StringUtils {
break;
}
g2d.drawString(text, textX, textY);
g2d.drawString(text, (int)Math.round(textX), (int)Math.round(textY));
}
}
@@ -24,10 +24,10 @@ package org.diylc.components;
import java.awt.Color;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.diylc.appframework.miscutils.ConfigurationManager;
@@ -57,7 +57,7 @@ public abstract class Abstract3LegSymbol extends AbstractComponent<String> {
public static Color COLOR = Color.black;
protected String value = "";
protected Point[] controlPoints = new Point[] { new Point(0, 0), 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), new Point2D.Double(0, 0) };
protected Color color = COLOR;
protected SymbolFlipping flip = SymbolFlipping.NONE;
protected Display display = Display.NAME;
@@ -71,17 +71,17 @@ public abstract class Abstract3LegSymbol extends AbstractComponent<String> {
controlPoints[3] = getDefaultLabelPosition(controlPoints);
}
public Point[] getControlPoints() {
public Point2D[] getControlPoints() {
if (controlPoints.length == 3) {
controlPoints = new Point[] { controlPoints[0], controlPoints[1], controlPoints[2], getDefaultLabelPosition(controlPoints) };
controlPoints = new Point2D[] { controlPoints[0], controlPoints[1], controlPoints[2], getDefaultLabelPosition(controlPoints) };
}
return controlPoints;
}
protected Point getDefaultLabelPosition(Point[] oldControlPoints) {
protected Point2D getDefaultLabelPosition(Point2D[] oldControlPoints) {
int f = flip == SymbolFlipping.X ? -1 : 1;
int d = flip == SymbolFlipping.X ? (int) PIN_SPACING.convertToPixels() / 2 : 0;
return new Point(oldControlPoints[0].x + f * (int) (PIN_SPACING.convertToPixels() * 1.5 + d), oldControlPoints[0].y);
return new Point2D.Double(oldControlPoints[0].getX() + f * (PIN_SPACING.convertToPixels() * 1.5 + d), oldControlPoints[0].getY());
}
@Override
@@ -110,16 +110,16 @@ public abstract class Abstract3LegSymbol extends AbstractComponent<String> {
AffineTransform old = g2d.getTransform();
Point[] controlPoints = getControlPoints();
Point2D[] controlPoints = getControlPoints();
if (this.flip == SymbolFlipping.Y) {
g2d.translate(0, controlPoints[0].y);
g2d.translate(0, controlPoints[0].getY());
g2d.scale(1, -1);
g2d.translate(0, -1 * controlPoints[0].y);
g2d.translate(0, -1 * controlPoints[0].getY());
} else if (this.flip == SymbolFlipping.X) {
g2d.translate(controlPoints[0].x, 0);
g2d.translate(controlPoints[0].getX(), 0);
g2d.scale(-1, 1);
g2d.translate(-1 * controlPoints[0].x, 0);
g2d.translate(-1 * controlPoints[0].getX(), 0);
}
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(2));
@@ -160,7 +160,7 @@ public abstract class Abstract3LegSymbol extends AbstractComponent<String> {
Rectangle shapeRect = body[0].getBounds().union(body[1].getBounds()).union(body[2].getBounds());
if (getMoveLabel()) {
StringUtils.drawCenteredText(g2d, label, controlPoints[3].x, controlPoints[3].y, flip == SymbolFlipping.X ? HorizontalAlignment.RIGHT
StringUtils.drawCenteredText(g2d, label, controlPoints[3].getX(), controlPoints[3].getY(), flip == SymbolFlipping.X ? HorizontalAlignment.RIGHT
: HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
} else {
StringUtils.drawCenteredText(g2d, label, getLabelX(shapeRect, textRect, fontMetrics, outlineMode),
@@ -170,7 +170,7 @@ public abstract class Abstract3LegSymbol extends AbstractComponent<String> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return getControlPoints()[index];
}
@@ -179,39 +179,36 @@ public abstract class Abstract3LegSymbol extends AbstractComponent<String> {
return getControlPoints().length;
}
protected int getLabelX(Rectangle2D shapeRect, Rectangle2D textRect, FontMetrics fontMetrics, boolean outlineMode) {
protected double getLabelX(Rectangle2D shapeRect, Rectangle2D textRect, FontMetrics fontMetrics, boolean outlineMode) {
int f = flip == SymbolFlipping.X ? -1 : 1;
int d = flip == SymbolFlipping.X ? (int) PIN_SPACING.convertToPixels() / 2 : 0;
return getControlPoints()[0].x + f * (int) (PIN_SPACING.convertToPixels() * 1.5 + d);
return getControlPoints()[0].getX() + f * (int) (PIN_SPACING.convertToPixels() * 1.5 + d);
}
protected int getLabelY(Rectangle2D shapeRect, Rectangle2D textRect, FontMetrics fontMetrics, boolean outlineMode) {
return getControlPoints()[0].y;
protected double getLabelY(Rectangle2D shapeRect, Rectangle2D textRect, FontMetrics fontMetrics, boolean outlineMode) {
return getControlPoints()[0].getY();
}
protected void updateControlPoints() {
int pinSpacing = (int) PIN_SPACING.convertToPixels();
Point[] controlPoints = getControlPoints();
Point2D[] controlPoints = getControlPoints();
int x = controlPoints[0].x;
int y = controlPoints[0].y;
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
// set default point positions
controlPoints[1].x = x + pinSpacing * 2;
controlPoints[1].y = y - pinSpacing * 2;
// set default point positions
controlPoints[1].setLocation(x + pinSpacing * 2, y - pinSpacing * 2);
controlPoints[2].x = x + pinSpacing * 2;
controlPoints[2].y = y + pinSpacing * 2;
controlPoints[2].setLocation(x + pinSpacing * 2, y + pinSpacing * 2);
controlPoints[3].x = x + (int) (PIN_SPACING.convertToPixels() * 2);
controlPoints[3].y = y;
controlPoints[3].setLocation(x + PIN_SPACING.convertToPixels() * 2, y);
// apply rotation if needed
if (getOrientation() != Orientation.DEFAULT)
{
Point first = controlPoints[0];
Point2D first = controlPoints[0];
double angle = Double.parseDouble(getOrientation().name().replace("_", ""));
AffineTransform rotate = AffineTransform.getRotateInstance(Math.toRadians(angle), first.x, first.y);
AffineTransform rotate = AffineTransform.getRotateInstance(Math.toRadians(angle), first.getX(), first.getY());
for (int i = 1; i < controlPoints.length; i++) {
rotate.transform(controlPoints[i], controlPoints[i]);
}
@@ -219,14 +216,14 @@ public abstract class Abstract3LegSymbol extends AbstractComponent<String> {
// flip at the end
if (flip == SymbolFlipping.X) {
controlPoints[1].x = controlPoints[0].x - (controlPoints[1].x - controlPoints[0].x);
controlPoints[2].x = controlPoints[0].x - (controlPoints[2].x - controlPoints[0].x);
controlPoints[3].x = controlPoints[0].x - (controlPoints[3].x - controlPoints[0].x);
controlPoints[1].setLocation(controlPoints[0].getX() - (controlPoints[1].getX() - controlPoints[0].getX()), controlPoints[1].getY());
controlPoints[2].setLocation(controlPoints[0].getX() - (controlPoints[2].getX() - controlPoints[0].getX()), controlPoints[2].getY());
controlPoints[3].setLocation(controlPoints[0].getX() - (controlPoints[3].getX() - controlPoints[0].getX()), controlPoints[3].getY());
}
if (flip == SymbolFlipping.Y) {
controlPoints[1].y = controlPoints[0].y - (controlPoints[1].y - controlPoints[0].y);
controlPoints[2].y = controlPoints[0].y - (controlPoints[2].y - controlPoints[0].y);
controlPoints[3].y = controlPoints[0].y - (controlPoints[3].y - controlPoints[0].y);
controlPoints[1].setLocation(controlPoints[1].getX(), controlPoints[0].getY() - (controlPoints[1].getY() - controlPoints[0].getY()));
controlPoints[2].setLocation(controlPoints[2].getX(), controlPoints[0].getY() - (controlPoints[2].getY() - controlPoints[0].getY()));
controlPoints[3].setLocation(controlPoints[3].getX(), controlPoints[0].getY() - (controlPoints[3].getY() - controlPoints[0].getY()));
}
}
@@ -252,7 +249,7 @@ public abstract class Abstract3LegSymbol extends AbstractComponent<String> {
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
getControlPoints()[index].setLocation(point);
// make sure we have a new drawing
@@ -329,9 +326,9 @@ public abstract class Abstract3LegSymbol extends AbstractComponent<String> {
if (getOrientation() == Orientation.DEFAULT)
return;
Point first = getControlPoints()[0];
Point2D first = getControlPoints()[0];
double angle = Double.parseDouble(getOrientation().name().replace("_", ""));
AffineTransform rotate = AffineTransform.getRotateInstance(Math.toRadians(angle), first.x, first.y);
AffineTransform rotate = AffineTransform.getRotateInstance(Math.toRadians(angle), first.getX(), first.getY());
if (body != null) {
for (int i = 0; i < body.length; i++) {
@@ -32,6 +32,7 @@ import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.diylc.appframework.miscutils.ConfigurationManager;
@@ -73,8 +74,8 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
protected Size length;
protected Size width;
protected Point[] points = new Point[] {new Point((int) (-DEFAULT_SIZE.convertToPixels() / 2), 0),
new Point((int) (DEFAULT_SIZE.convertToPixels() / 2), 0), new Point(0, 0)};
protected Point2D[] points = new Point2D[] {new Point2D.Double(-DEFAULT_SIZE.convertToPixels() / 2, 0),
new Point2D.Double(DEFAULT_SIZE.convertToPixels() / 2, 0), new Point2D.Double(0, 0)};
protected Color bodyColor = Color.white;
protected Color borderColor = Color.black;
protected Color labelColor = LABEL_COLOR;
@@ -85,8 +86,8 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
protected boolean moveLabel = false;
// parameters for adjusting the label control point
protected transient Double gamma = null;
protected transient Double r = null;
protected transient java.lang.Double gamma = null;
protected transient java.lang.Double r = null;
private Boolean hideShortLeads = false;
@@ -107,10 +108,10 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
return false;
}
protected Point[] getPoints() {
protected Point2D[] getPoints() {
// convert old points to new
if (points.length == 2) {
points = new Point[] { points[0], points[1], calculateLabelPosition(points[0], points[1]) };
points = new Point2D[] { points[0], points[1], calculateLabelPosition(points[0], points[1]) };
// to make standing components backward compatible and not show a label until the user switches the display to something else
if (isStanding())
display = Display.NONE;
@@ -118,10 +119,10 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
return points;
}
protected Point calculateLabelPosition(Point point1, Point point2) {
double x = (point1.x + point2.x) / 2.0;
double y = (point1.y + point2.y) / 2.0;
return new Point((int) x, (int) y);
protected Point2D calculateLabelPosition(Point2D point1, Point2D point2) {
double x = (point1.getX() + point2.getX()) / 2.0;
double y = (point1.getY() + point2.getY()) / 2.0;
return new Point2D.Double(x, y);
}
@Override
@@ -129,9 +130,9 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
IDrawingObserver drawingObserver) {
if (gamma != null) {
// recalculate center position and theta, then adjust label point accordingly, while preserving alpha and p
double x = (getPoints()[1].x + getPoints()[0].x) / 2.0;
double y = (getPoints()[1].y + getPoints()[0].y) / 2.0;
double theta = Math.atan2(getPoints()[1].y - getPoints()[0].y, getPoints()[1].x - getPoints()[0].x);
double x = (getPoints()[1].getX() + getPoints()[0].getX()) / 2.0;
double y = (getPoints()[1].getY() + getPoints()[0].getY()) / 2.0;
double theta = Math.atan2(getPoints()[1].getY() - getPoints()[0].getY(), getPoints()[1].getX() - getPoints()[0].getX());
double beta = gamma - (Math.PI / 2 - theta);
getPoints()[2].setLocation(x + Math.cos(beta) * r, y + Math.sin(beta) * r);
gamma = null;
@@ -150,15 +151,15 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
double width;
double length;
Rectangle shapeRect;
double theta = Math.atan2(getPoints()[1].y - getPoints()[0].y, getPoints()[1].x - getPoints()[0].x);
double theta = Math.atan2(getPoints()[1].getY() - getPoints()[0].getY(), getPoints()[1].getX() - getPoints()[0].getX());
if (isStanding()) {
// When ending points are too close draw the component in standing
// mode.
width = length = getClosestOdd(this.width.convertToPixels());
Shape body =
new Ellipse2D.Double((getFlipStanding() ? getPoints()[1] : getPoints()[0]).x - width / 2,
(getFlipStanding() ? getPoints()[1] : getPoints()[0]).y - width / 2, width, width);
new Ellipse2D.Double((getFlipStanding() ? getPoints()[1] : getPoints()[0]).getX() - width / 2,
(getFlipStanding() ? getPoints()[1] : getPoints()[0]).getY() - width / 2, width, width);
shapeRect = body.getBounds();
Composite oldComposite = g2d.getComposite();
if (alpha < MAX_ALPHA) {
@@ -214,14 +215,14 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
Area leadArea = new Area();
int endX = (int) (getPoints()[0].x + Math.cos(theta) * leadLength);
int endY = (int) (getPoints()[0].y + Math.sin(theta) * leadLength);
Line2D line = new Line2D.Double(getPoints()[0].x, getPoints()[0].y, endX, endY);
int endX = (int) (getPoints()[0].getX() + Math.cos(theta) * leadLength);
int endY = (int) (getPoints()[0].getY() + Math.sin(theta) * leadLength);
Line2D line = new Line2D.Double(getPoints()[0].getX(), getPoints()[0].getY(), endX, endY);
leadArea.add(new Area(leadStroke.createStrokedShape(line)));
endX = (int) (getPoints()[1].x + Math.cos(theta - Math.PI) * leadLength);
endY = (int) (getPoints()[1].y + Math.sin(theta - Math.PI) * leadLength);
line = new Line2D.Double(getPoints()[1].x, getPoints()[1].y, endX, endY);
endX = (int) (getPoints()[1].getX() + Math.cos(theta - Math.PI) * leadLength);
endY = (int) (getPoints()[1].getY() + Math.sin(theta - Math.PI) * leadLength);
line = new Line2D.Double(getPoints()[1].getX(), getPoints()[1].getY(), endX, endY);
leadArea.add(new Area(leadStroke.createStrokedShape(line)));
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1f));
@@ -247,7 +248,7 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
width = getWidth().convertToPixels();
length = getLength().convertToPixels();
}
g2d.translate((getPoints()[0].x + getPoints()[1].x - length) / 2, (getPoints()[0].y + getPoints()[1].y - width) / 2);
g2d.translate((getPoints()[0].getX() + getPoints()[1].getX() - length) / 2, (getPoints()[0].getY() + getPoints()[1].getY() - width) / 2);
g2d.rotate(theta, length / 2, width / 2);
// Draw body.
Composite oldComposite = g2d.getComposite();
@@ -317,7 +318,7 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
// Draw label.
g2d.setFont(project.getFont());
if (useShapeRectAsPosition()) {
g2d.translate(shapeRect.x, shapeRect.y);
g2d.translate(shapeRect.getX(), shapeRect.getY());
}
Color finalLabelColor;
if (outlineMode) {
@@ -356,7 +357,7 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
if (getMoveLabel()) {
g2d.setTransform(oldTransform);
g2d.translate(getPoints()[2].x, getPoints()[2].y);
g2d.translate(getPoints()[2].getX(), getPoints()[2].getY());
if (getLabelOriantation() != LabelOriantation.Horizontal) {
g2d.rotate(theta);
}
@@ -365,8 +366,8 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
} else {
if (isStanding() || getLabelOriantation() == LabelOriantation.Horizontal) {
g2d.setTransform(oldTransform);
double x = (getPoints()[0].x + getPoints()[1].x - length) / 2.0;
double y = (getPoints()[0].y + getPoints()[1].y - width) / 2.0;
double x = (getPoints()[0].getX() + getPoints()[1].getX() - length) / 2.0;
double y = (getPoints()[0].getY() + getPoints()[1].getY() - width) / 2.0;
g2d.drawString(label, (int) (x + (length - textRect.getWidth()) / 2 + offset),
(int)(y + calculateLabelYOffset(shapeRect, textRect, fontMetrics)));
} else {
@@ -377,7 +378,7 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
}
// if (getLabelOriantation() == LabelOriantation.Horizontal) {
//
// drawCenteredText(g2d, label, getNewPoints()[2].x, getNewPoints()[2].x, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
// drawCenteredText(g2d, label, getNewPoints()[2].getX(), getNewPoints()[2].getX(), HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
// g2d.drawString(label, (int) (x + (length - textRect.getWidth()) / 2 + offset),
// (int)(y + calculateLabelYCoordinate(shapeRect, textRect, fontMetrics)));
// } else {
@@ -392,13 +393,13 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
}
private void drawLeads(Graphics2D g2d, double theta, double leadLength) {
double endX = getPoints()[0].x + Math.cos(theta) * leadLength;
double endY = getPoints()[0].y + Math.sin(theta) * leadLength;
g2d.draw(new Line2D.Double(getPoints()[0].x, getPoints()[0].y, endX, endY));
double endX = getPoints()[0].getX() + Math.cos(theta) * leadLength;
double endY = getPoints()[0].getY() + Math.sin(theta) * leadLength;
g2d.draw(new Line2D.Double(getPoints()[0].getX(), getPoints()[0].getY(), endX, endY));
endX = getPoints()[1].x + Math.cos(theta - Math.PI) * leadLength;
endY = getPoints()[1].y + Math.sin(theta - Math.PI) * leadLength;
g2d.draw(new Line2D.Double(getPoints()[1].x, getPoints()[1].y, endX, endY));
endX = getPoints()[1].getX() + Math.cos(theta - Math.PI) * leadLength;
endY = getPoints()[1].getY() + Math.sin(theta - Math.PI) * leadLength;
g2d.draw(new Line2D.Double(getPoints()[1].getX(), getPoints()[1].getY(), endX, endY));
}
private void drawLead(Graphics2D g2d, ComponentState componentState, IDrawingObserver observer, boolean isCopperArea) {
@@ -407,7 +408,7 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
float thickness = getLeadThickness();
Line2D line = new Line2D.Double(getPoints()[0].x, getPoints()[0].y, getPoints()[1].x, getPoints()[1].y);
Line2D line = new Line2D.Double(getPoints()[0].getX(), getPoints()[0].getY(), getPoints()[1].getX(), getPoints()[1].getY());
if (shouldShadeLeads()) {
// for some reason the stroked line gets approx 1px thicker when converted to shape
@@ -548,8 +549,8 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
}
@Override
public Point getControlPoint(int index) {
return (Point) getPoints()[index];
public Point2D getControlPoint(int index) {
return (Point2D) getPoints()[index];
}
@Override
@@ -568,14 +569,14 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
// when moving one of the ending points, try to retain the angle and distance from the center point to label point
if (index < 2) {
if (gamma == null) {
double x = (getPoints()[1].x + getPoints()[0].x) / 2.0;
double y = (getPoints()[1].y + getPoints()[0].y) / 2.0;
double theta = Math.atan2(getPoints()[1].y - getPoints()[0].y, getPoints()[1].x - getPoints()[0].x);
double beta = Math.atan2(getPoints()[2].y - y, getPoints()[2].x - x);
double x = (getPoints()[1].getX() + getPoints()[0].getX()) / 2.0;
double y = (getPoints()[1].getY() + getPoints()[0].getY()) / 2.0;
double theta = Math.atan2(getPoints()[1].getY() - getPoints()[0].getY(), getPoints()[1].getX() - getPoints()[0].getX());
double beta = Math.atan2(getPoints()[2].getY() - y, getPoints()[2].getX() - x);
gamma = beta + (Math.PI / 2 - theta);
r = getPoints()[2].distance(x, y);
}
@@ -699,21 +700,21 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
@Override
public Rectangle2D getCachingBounds() {
int minX = Integer.MAX_VALUE;
int maxX = Integer.MIN_VALUE;
int minY = Integer.MAX_VALUE;
int maxY = Integer.MIN_VALUE;
int margin = (int) Math.max(Math.max(getWidth().convertToPixels(), getLength().convertToPixels()), getLeadThickness());
double minX = Integer.MAX_VALUE;
double maxX = Integer.MIN_VALUE;
double minY = Integer.MAX_VALUE;
double maxY = Integer.MIN_VALUE;
double margin = (int) Math.max(Math.max(getWidth().convertToPixels(), getLength().convertToPixels()), getLeadThickness());
for (int i = 0; i < getControlPointCount(); i++) {
Point p = getControlPoint(i);
if (p.x < minX)
minX = p.x;
if (p.x > maxX)
maxX = p.x;
if (p.y < minY)
minY = p.y;
if (p.y > maxY)
maxY = p.y;
Point2D p = getControlPoint(i);
if (p.getX() < minX)
minX = p.getX();
if (p.getX() > maxX)
maxX = p.getX();
if (p.getY() < minY)
minY = p.getY();
if (p.getY() > maxY)
maxY = p.getY();
}
return new Rectangle2D.Double(minX - margin, minY - margin, maxX - minX + 2 * margin, maxY - minY + 2 * margin);
@@ -24,6 +24,7 @@ package org.diylc.components;
import java.awt.Color;
import java.awt.FontMetrics;
import java.awt.Point;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.diylc.common.LabelPosition;
@@ -72,10 +73,10 @@ public abstract class AbstractSchematicLeadedSymbol<T> extends AbstractLeadedCom
}
@Override
protected Point calculateLabelPosition(Point point1, Point point2) {
double x = (point1.x + point2.x) / 2.0;
double y = (point1.y + point2.y) / 2.0;
double theta = Math.atan2(point2.y - point1.y, point2.x - point2.x) - Math.PI / 2;
protected Point2D calculateLabelPosition(Point2D point1, Point2D point2) {
double x = (point1.getX() + point2.getX()) / 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 r = width.convertToPixels() / 2 + LABEL_FONT.getSize() / 2;
return new Point((int) (x + Math.cos(theta) * r), (int) (y + Math.sin(theta) * r));
}
@@ -21,31 +21,31 @@
*/
package org.diylc.components;
import java.awt.Point;
import java.awt.geom.Path2D;
import java.awt.geom.Point2D;
public class RoundedPolygon extends Path2D.Double {
private static final long serialVersionUID = 1L;
public RoundedPolygon(Point[] points, double[] radiuses) {
public RoundedPolygon(Point2D[] points, double[] radiuses) {
super();
moveTo(points[0].x, points[0].y);
moveTo(points[0].getX(), points[0].getY());
for (int i = 0; i < points.length - 1; i++) {
Point first = points[i];
Point second = points[i + 1 >= points.length ? i + 1 - points.length : i + 1];
Point third = points[i + 2 >= points.length ? i + 2 - points.length : i + 2];
Point2D first = points[i];
Point2D second = points[i + 1 >= points.length ? i + 1 - points.length : i + 1];
Point2D third = points[i + 2 >= points.length ? i + 2 - points.length : i + 2];
Point p1 = new Point(0, 0);
Point p2 = new Point(0, 0);
Point2D p1 = new Point2D.Double(0, 0);
Point2D p2 = new Point2D.Double(0, 0);
locateTwoPoints(first, second, third, radiuses.length <= i ? radiuses[radiuses.length - 1] : radiuses[i], p1, p2);
lineTo(p1.x, p1.y);
quadTo(second.x, second.y, p2.x, p2.y);
lineTo(p1.getX(), p1.getY());
quadTo(second.getX(), second.getY(), p2.getX(), p2.getY());
}
closePath();
}
private void locateTwoPoints(Point first, Point second, Point third, double radius, Point p1, Point p2) {
private void locateTwoPoints(Point2D first, Point2D second, Point2D third, double radius, Point2D p1, Point2D p2) {
double d1 = distance(first, second);
double d2 = distance(second, third);
double t1 = 1 - radius / d1;
@@ -54,11 +54,11 @@ public class RoundedPolygon extends Path2D.Double {
interpolate(second, third, t2, p2);
}
private void interpolate(Point p1, Point p2, double t, Point p) {
p.setLocation((int)Math.round(p1.x * (1-t) + p2.x * t), (int)Math.round(p1.y * (1-t) + p2.y * t));
private void interpolate(Point2D p1, Point2D p2, double t, Point2D p) {
p.setLocation((int)Math.round(p1.getX() * (1-t) + p2.getX() * t), (int)Math.round(p1.getY() * (1-t) + p2.getY() * t));
}
private double distance(Point p1, Point p2) {
return Math.sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y));
private double distance(Point2D p1, Point2D p2) {
return Math.sqrt((p1.getX() - p2.getX()) * (p1.getX() - p2.getX()) + (p1.getY() - p2.getY()) * (p1.getY() - p2.getY()));
}
}
@@ -26,6 +26,7 @@ import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.diylc.awt.StringUtils;
@@ -53,10 +54,10 @@ public abstract class AbstractBoard extends AbstractTransparentComponent<String>
public static Size DEFAULT_HEIGHT = new Size(1.2d, SizeUnit.in);
protected String value = "";
protected Point[] controlPoints = new Point[] {new Point(0, 0),
new Point((int) DEFAULT_WIDTH.convertToPixels(), (int) DEFAULT_HEIGHT.convertToPixels())};
protected Point firstPoint = new Point();
protected Point secondPoint = new Point();
protected Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0),
new Point2D.Double(DEFAULT_WIDTH.convertToPixels(), DEFAULT_HEIGHT.convertToPixels())};
protected Point2D firstPoint = new Point2D.Double();
protected Point2D secondPoint = new Point.Double();
protected Color boardColor = BOARD_COLOR;
protected Color borderColor = BORDER_COLOR;
@@ -76,7 +77,7 @@ public abstract class AbstractBoard extends AbstractTransparentComponent<String>
IDrawingObserver drawingObserver) {
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
Point finalSecondPoint = getFinalSecondPoint();
Point2D finalSecondPoint = getFinalSecondPoint();
Composite oldComposite = g2d.getComposite();
// render as transparent when dragging
@@ -85,7 +86,7 @@ public abstract class AbstractBoard extends AbstractTransparentComponent<String>
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
}
g2d.setColor(boardColor);
g2d.fillRect(firstPoint.x, firstPoint.y, finalSecondPoint.x - firstPoint.x, finalSecondPoint.y - firstPoint.y);
g2d.fillRect((int)firstPoint.getX(), (int)firstPoint.getY(), (int)(finalSecondPoint.getX() - firstPoint.getX()), (int)(finalSecondPoint.getY() - firstPoint.getY()));
g2d.setComposite(oldComposite);
// Do not track any changes that follow because the whole board has been
@@ -93,55 +94,56 @@ public abstract class AbstractBoard extends AbstractTransparentComponent<String>
drawingObserver.stopTracking();
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
: borderColor);
g2d.drawRect(firstPoint.x, firstPoint.y, finalSecondPoint.x - firstPoint.x, finalSecondPoint.y - firstPoint.y);
g2d.drawRect((int)firstPoint.getX(), (int)firstPoint.getY(), (int)(finalSecondPoint.getX() - firstPoint.getX()), (int)(finalSecondPoint.getY() - firstPoint.getY()));
}
protected Point getFinalSecondPoint() {
Point finalSecondPoint;
protected Point2D getFinalSecondPoint() {
Point2D finalSecondPoint;
if (getMode() == BoardSizingMode.TwoPoints)
finalSecondPoint = secondPoint;
else
finalSecondPoint = new Point((int)(firstPoint.x + getLength().convertToPixels()),
(int)(firstPoint.y + getWidth().convertToPixels()));
finalSecondPoint = new Point2D.Double(firstPoint.getX() + getLength().convertToPixels(),
firstPoint.getY() + getWidth().convertToPixels());
return finalSecondPoint;
}
protected void drawCoordinates(Graphics2D g2d, int spacing, Project project) {
protected void drawCoordinates(Graphics2D g2d, double spacing, Project project) {
g2d.setColor(coordinateColor);
g2d.setFont(project.getFont().deriveFont(COORDINATE_FONT_SIZE));
// The half space is used to do rounding when calculating the range.
int halfSpace = spacing / 2;
double halfSpace = spacing / 2;
CoordinateOrigin origin = getCoordinateOrigin();
Point finalSecondPoint = getFinalSecondPoint();
Point2D finalSecondPoint = getFinalSecondPoint();
if (getCoordinateDisplay() != CoordinateDisplay.None) {
int range;
int yOffset;
double yOffset;
CoordinateType yType = getyType();
Point drawPoint = new Point(firstPoint);
double y = firstPoint.getY();
if (origin == CoordinateOrigin.Top_Left || origin == CoordinateOrigin.Top_Right) {
range = (int) ((finalSecondPoint.y - firstPoint.y + halfSpace) / spacing);
range = (int) ((finalSecondPoint.getY() - firstPoint.getY() + halfSpace) / spacing);
yOffset = spacing;
} else {
range = (int) ((finalSecondPoint.y - firstPoint.y + halfSpace) / spacing);
range = (int) ((finalSecondPoint.getY() - firstPoint.getY() + halfSpace) / spacing);
yOffset = -spacing;
drawPoint.y = finalSecondPoint.y;
y = finalSecondPoint.getY();
}
for (int c = 1; c < range; c++) {
int xOffset = (yType == CoordinateType.Numbers && c >= 10) || (yType == CoordinateType.Letters && c >= 27) ? 0 : 2;
String label = yType == CoordinateType.Letters ? getCoordinateLabel(c) : Integer.toString(c);
drawPoint.y += yOffset;
y += yOffset;
StringUtils.drawCenteredText(g2d, label,
firstPoint.x + xOffset, drawPoint.y,
firstPoint.getX() + xOffset, y,
HorizontalAlignment.LEFT, VerticalAlignment.CENTER);
if (getCoordinateDisplay() == CoordinateDisplay.Both_Sides) {
StringUtils.drawCenteredText(g2d, label,
finalSecondPoint.x - xOffset, drawPoint.y,
finalSecondPoint.getX() - xOffset, y,
HorizontalAlignment.RIGHT, VerticalAlignment.CENTER);
}
}
@@ -149,29 +151,30 @@ public abstract class AbstractBoard extends AbstractTransparentComponent<String>
if (getCoordinateDisplay() != CoordinateDisplay.None) {
int range;
int xOffset;
double xOffset;
CoordinateType xType = getxType();
Point drawPoint = new Point(firstPoint);
double x = firstPoint.getX();
if (origin == CoordinateOrigin.Top_Left || origin == CoordinateOrigin.Bottom_Left) {
range = (int) ((finalSecondPoint.x - firstPoint.x + halfSpace) / spacing);
range = (int) ((finalSecondPoint.getX() - firstPoint.getX() + halfSpace) / spacing);
xOffset = spacing;
} else {
range = (int) ((finalSecondPoint.x - firstPoint.x + halfSpace) / spacing);
range = (int) ((finalSecondPoint.getX() - firstPoint.getX() + halfSpace) / spacing);
xOffset = -spacing;
drawPoint.x = finalSecondPoint.x;
x = finalSecondPoint.getX();
}
for (int c = 1; c < range; c++) {
String label = xType == CoordinateType.Letters ? getCoordinateLabel(c) : Integer.toString(c);
drawPoint.x += xOffset;
x += xOffset;
StringUtils.drawCenteredText(g2d, label,
drawPoint.x, firstPoint.y + 2,
x, firstPoint.getY() + 2,
HorizontalAlignment.CENTER, VerticalAlignment.BOTTOM);
if (getCoordinateDisplay() == CoordinateDisplay.Both_Sides) {
StringUtils.drawCenteredText(g2d, label,
drawPoint.x, (int) (finalSecondPoint.y - COORDINATE_FONT_SIZE),
x, (int) (finalSecondPoint.getY() - COORDINATE_FONT_SIZE),
HorizontalAlignment.CENTER, VerticalAlignment.BOTTOM);
}
}
@@ -271,7 +274,7 @@ public abstract class AbstractBoard extends AbstractTransparentComponent<String>
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@@ -286,12 +289,12 @@ public abstract class AbstractBoard extends AbstractTransparentComponent<String>
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
controlPoints[index].setLocation(point);
firstPoint.setLocation(Math.min(controlPoints[0].x, controlPoints[1].x),
Math.min(controlPoints[0].y, controlPoints[1].y));
secondPoint.setLocation(Math.max(controlPoints[0].x, controlPoints[1].x),
Math.max(controlPoints[0].y, controlPoints[1].y));
firstPoint.setLocation(Math.min(controlPoints[0].getX(), controlPoints[1].getX()),
Math.min(controlPoints[0].getY(), controlPoints[1].getY()));
secondPoint.setLocation(Math.max(controlPoints[0].getX(), controlPoints[1].getX()),
Math.max(controlPoints[0].getY(), controlPoints[1].getY()));
}
@EditableProperty
@@ -336,9 +339,9 @@ public abstract class AbstractBoard extends AbstractTransparentComponent<String>
@Override
public Rectangle2D getCachingBounds() {
Point finalSecondPoint = getFinalSecondPoint();
return new Rectangle2D.Double(Math.min(firstPoint.x, finalSecondPoint.x), Math.min(firstPoint.y, finalSecondPoint.y),
Math.abs(finalSecondPoint.x - firstPoint.x) + 2, Math.abs(finalSecondPoint.y - firstPoint.y) + 2);
Point2D finalSecondPoint = getFinalSecondPoint();
return new Rectangle2D.Double(Math.min(firstPoint.getX(), finalSecondPoint.getX()), Math.min(firstPoint.getY(), finalSecondPoint.getY()),
Math.abs(finalSecondPoint.getX() - firstPoint.getX()) + 2, Math.abs(finalSecondPoint.getY() - firstPoint.getY()) + 2);
}
public static enum CoordinateType {
@@ -25,8 +25,8 @@ import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Shape;
import java.awt.geom.Point2D;
import org.diylc.common.ObjectCache;
import org.diylc.common.SimpleComponentTransformer;
@@ -59,11 +59,11 @@ public class BlankBoard extends AbstractBoard {
@Override
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
IDrawingObserver drawingObserver) {
Point finalSecondPoint = getFinalSecondPoint();
Point2D finalSecondPoint = getFinalSecondPoint();
Shape clip = g2d.getClip();
if (checkPointsClipped(clip) && !clip.contains(firstPoint.x, finalSecondPoint.y)
&& !clip.contains(finalSecondPoint.x, firstPoint.y)) {
if (checkPointsClipped(clip) && !clip.contains(firstPoint.getX(), finalSecondPoint.getY())
&& !clip.contains(finalSecondPoint.getX(), firstPoint.getY())) {
return;
}
@@ -75,9 +75,9 @@ public class BlankBoard extends AbstractBoard {
}
g2d.setColor(boardColor);
if (getType() == Type.SQUARE)
g2d.fillRect(firstPoint.x, firstPoint.y, finalSecondPoint.x - firstPoint.x, finalSecondPoint.y - firstPoint.y);
g2d.fillRect((int)firstPoint.getX(), (int)firstPoint.getY(), (int)(finalSecondPoint.getX() - firstPoint.getX()), (int)(finalSecondPoint.getY() - firstPoint.getY()));
else
g2d.fillOval(firstPoint.x, firstPoint.y, finalSecondPoint.x - firstPoint.x, finalSecondPoint.y - firstPoint.y);
g2d.fillOval((int)firstPoint.getX(), (int)firstPoint.getY(), (int)(finalSecondPoint.getX() - firstPoint.getX()), (int)(finalSecondPoint.getY() - firstPoint.getY()));
g2d.setComposite(oldComposite);
}
// Do not track any changes that follow because the whole board has been
@@ -86,9 +86,9 @@ public class BlankBoard extends AbstractBoard {
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
: borderColor);
if (getType() == Type.SQUARE)
g2d.drawRect(firstPoint.x, firstPoint.y, finalSecondPoint.x - firstPoint.x, finalSecondPoint.y - firstPoint.y);
g2d.drawRect((int)firstPoint.getX(), (int)firstPoint.getY(), (int)(finalSecondPoint.getX() - firstPoint.getX()), (int)(finalSecondPoint.getY() - firstPoint.getY()));
else
g2d.drawOval(firstPoint.x, firstPoint.y, finalSecondPoint.x - firstPoint.x, finalSecondPoint.y - firstPoint.y);
g2d.drawOval((int)firstPoint.getX(), (int)firstPoint.getY(), (int)(finalSecondPoint.getX() - firstPoint.getX()), (int)(finalSecondPoint.getY() - firstPoint.getY()));
}
@Override
@@ -27,6 +27,7 @@ import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.diylc.awt.StringUtils;
@@ -361,7 +362,7 @@ public class Breadboard extends AbstractComponent<Void> {
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
if (index == 0)
this.point.setLocation(point);
}
@@ -24,8 +24,8 @@ package org.diylc.components.boards;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Shape;
import java.awt.geom.Point2D;
import org.diylc.common.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
@@ -69,11 +69,11 @@ public class EyeletBoard extends AbstractBoard {
@Override
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
IDrawingObserver drawingObserver) {
Point finalSecondPoint = getFinalSecondPoint();
Point2D finalSecondPoint = getFinalSecondPoint();
Shape clip = g2d.getClip();
if (checkPointsClipped(clip) && !clip.contains(firstPoint.x, finalSecondPoint.y)
&& !clip.contains(finalSecondPoint.x, firstPoint.y)) {
if (checkPointsClipped(clip) && !clip.contains(firstPoint.getX(), finalSecondPoint.getY())
&& !clip.contains(finalSecondPoint.getX(), firstPoint.getY())) {
return;
}
super.draw(g2d, componentState, outlineMode, project, drawingObserver);
@@ -81,24 +81,25 @@ public class EyeletBoard extends AbstractBoard {
if (alpha < MAX_ALPHA) {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
}
Point p = new Point(firstPoint);
double x = firstPoint.getX();
double y = finalSecondPoint.getY();
int diameter = getClosestOdd((int) EYELET_SIZE.convertToPixels());
int holeDiameter = getClosestOdd((int) HOLE_SIZE.convertToPixels());
int spacing = (int) this.spacing.convertToPixels();
while (p.y < finalSecondPoint.y - spacing) {
p.x = firstPoint.x;
p.y += spacing;
while (p.x < finalSecondPoint.x - spacing - diameter) {
p.x += spacing;
while (y < finalSecondPoint.getY() - spacing) {
x = firstPoint.getX();
y += spacing;
while (x < finalSecondPoint.getX() - spacing - diameter) {
x += spacing;
g2d.setColor(eyeletColor);
g2d.fillOval(p.x - diameter / 2, p.y - diameter / 2, diameter, diameter);
g2d.fillOval((int)(x - diameter / 2), (int)(y - diameter / 2), diameter, diameter);
g2d.setColor(eyeletColor.darker());
g2d.drawOval(p.x - diameter / 2, p.y - diameter / 2, diameter, diameter);
g2d.drawOval((int)(x - diameter / 2), (int)(y - diameter / 2), diameter, diameter);
g2d.setColor(Constants.CANVAS_COLOR);
g2d.fillOval(p.x - holeDiameter / 2, p.y - holeDiameter / 2, holeDiameter, holeDiameter);
g2d.fillOval((int)(x - holeDiameter / 2), (int)(y - holeDiameter / 2), holeDiameter, holeDiameter);
g2d.setColor(eyeletColor.darker());
g2d.drawOval(p.x - holeDiameter / 2, p.y - holeDiameter / 2, holeDiameter, holeDiameter);
g2d.drawOval((int)(x - holeDiameter / 2), (int)(y - holeDiameter / 2), holeDiameter, holeDiameter);
}
}
super.drawCoordinates(g2d, spacing, project);
@@ -24,8 +24,8 @@ package org.diylc.components.boards;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Shape;
import java.awt.geom.Point2D;
import org.diylc.common.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
@@ -67,11 +67,11 @@ public class MarshallPerfBoard extends AbstractBoard {
@Override
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
IDrawingObserver drawingObserver) {
Point finalSecondPoint = getFinalSecondPoint();
Point2D finalSecondPoint = getFinalSecondPoint();
Shape clip = g2d.getClip();
if (checkPointsClipped(clip) && !clip.contains(firstPoint.x, finalSecondPoint.y)
&& !clip.contains(finalSecondPoint.x, firstPoint.y)) {
if (checkPointsClipped(clip) && !clip.contains(firstPoint.getX(), finalSecondPoint.getY())
&& !clip.contains(finalSecondPoint.getX(), firstPoint.getY())) {
return;
}
super.draw(g2d, componentState, outlineMode, project, drawingObserver);
@@ -79,19 +79,20 @@ public class MarshallPerfBoard extends AbstractBoard {
if (alpha < MAX_ALPHA) {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
}
Point p = new Point(firstPoint);
double x = firstPoint.getX();
double y = firstPoint.getY();
int holeDiameter = getClosestOdd((int) HOLE_SIZE.convertToPixels());
int spacing = (int) this.spacing.convertToPixels();
double spacing = this.spacing.convertToPixels();
while (p.y < finalSecondPoint.y - spacing) {
p.x = firstPoint.x;
p.y += spacing;
while (p.x < finalSecondPoint.x - spacing - holeDiameter) {
p.x += spacing;
while (y < finalSecondPoint.getY() - spacing) {
x = firstPoint.getX();
y += spacing;
while (x < finalSecondPoint.getX() - spacing - holeDiameter) {
x += spacing;
g2d.setColor(Constants.CANVAS_COLOR);
g2d.fillOval(p.x - holeDiameter / 2, p.y - holeDiameter / 2, holeDiameter, holeDiameter);
g2d.fillOval((int)(x - holeDiameter / 2), (int)(y - holeDiameter / 2), holeDiameter, holeDiameter);
g2d.setColor(borderColor);
g2d.drawOval(p.x - holeDiameter / 2, p.y - holeDiameter / 2, holeDiameter, holeDiameter);
g2d.drawOval((int)(x - holeDiameter / 2), (int)(y - holeDiameter / 2), holeDiameter, holeDiameter);
}
}
super.drawCoordinates(g2d, spacing, project);
@@ -24,8 +24,8 @@ package org.diylc.components.boards;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Shape;
import java.awt.geom.Point2D;
import org.diylc.common.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
@@ -62,11 +62,11 @@ public class PerfBoard extends AbstractBoard {
@Override
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
IDrawingObserver drawingObserver) {
Point finalSecondPoint = getFinalSecondPoint();
Point2D finalSecondPoint = getFinalSecondPoint();
Shape clip = g2d.getClip();
if (checkPointsClipped(clip) && !clip.contains(firstPoint.x, finalSecondPoint.y)
&& !clip.contains(finalSecondPoint.x, firstPoint.y)) {
if (checkPointsClipped(clip) && !clip.contains(firstPoint.getX(), finalSecondPoint.getY())
&& !clip.contains(finalSecondPoint.getX(), firstPoint.getY())) {
return;
}
super.draw(g2d, componentState, outlineMode, project, drawingObserver);
@@ -74,24 +74,25 @@ public class PerfBoard extends AbstractBoard {
if (alpha < MAX_ALPHA) {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
}
Point p = new Point(firstPoint);
double x = firstPoint.getX();
double y = firstPoint.getY();
int diameter = getClosestOdd((int) PAD_SIZE.convertToPixels());
int holeDiameter = getClosestOdd((int) HOLE_SIZE.convertToPixels());
int spacing = (int) this.spacing.convertToPixels();
double spacing = this.spacing.convertToPixels();
while (p.y < finalSecondPoint.y - spacing) {
p.x = firstPoint.x;
p.y += spacing;
while (p.x < finalSecondPoint.x - spacing - diameter) {
p.x += spacing;
while (y < finalSecondPoint.getY() - spacing) {
x = firstPoint.getX();
y += spacing;
while (x < finalSecondPoint.getX() - spacing - diameter) {
x += spacing;
g2d.setColor(padColor);
g2d.fillOval(p.x - diameter / 2, p.y - diameter / 2, diameter, diameter);
g2d.fillOval((int)(x - diameter / 2), (int)(y - diameter / 2), diameter, diameter);
g2d.setColor(padColor.darker());
g2d.drawOval(p.x - diameter / 2, p.y - diameter / 2, diameter, diameter);
g2d.drawOval((int)(x - diameter / 2), (int)(y - diameter / 2), diameter, diameter);
g2d.setColor(Constants.CANVAS_COLOR);
g2d.fillOval(p.x - holeDiameter / 2, p.y - holeDiameter / 2, holeDiameter, holeDiameter);
g2d.fillOval((int)(x - holeDiameter / 2), (int)(y - holeDiameter / 2), holeDiameter, holeDiameter);
g2d.setColor(padColor.darker());
g2d.drawOval(p.x - holeDiameter / 2, p.y - holeDiameter / 2, holeDiameter, holeDiameter);
g2d.drawOval((int)(x - holeDiameter / 2), (int)(y - holeDiameter / 2), holeDiameter, holeDiameter);
}
}
super.drawCoordinates(g2d, spacing, project);
@@ -25,6 +25,7 @@ import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.diylc.awt.StringUtils;
@@ -679,7 +680,7 @@ public class ProtoBoard extends AbstractComponent<Void> {
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
if (index == 0)
this.point.setLocation(point);
}
@@ -28,6 +28,7 @@ import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.diylc.appframework.miscutils.ConfigurationManager;
@@ -149,7 +150,7 @@ public class TagStrip extends AbstractTransparentComponent<String> implements IC
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
controlPoints[index].setLocation(point);
body = null;
}
@@ -28,6 +28,7 @@ import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
import java.awt.geom.RoundRectangle2D;
import org.diylc.appframework.miscutils.ConfigurationManager;
@@ -186,7 +187,7 @@ public class TerminalStrip extends AbstractTransparentComponent<String> implemen
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
controlPoints[index].setLocation(point);
body = null;
}
@@ -25,8 +25,8 @@ import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Shape;
import java.awt.geom.Point2D;
import org.diylc.common.OrientationHV;
import org.diylc.common.SimpleComponentTransformer;
@@ -65,11 +65,11 @@ public class TriPadBoard extends AbstractBoard {
@Override
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
IDrawingObserver drawingObserver) {
Point finalSecondPoint = getFinalSecondPoint();
Point2D finalSecondPoint = getFinalSecondPoint();
Shape clip = g2d.getClip();
if (checkPointsClipped(clip) && !clip.contains(firstPoint.x, finalSecondPoint.y)
&& !clip.contains(finalSecondPoint.x, firstPoint.y)) {
if (checkPointsClipped(clip) && !clip.contains(firstPoint.getX(), finalSecondPoint.getY())
&& !clip.contains(finalSecondPoint.getX(), firstPoint.getY())) {
return;
}
super.draw(g2d, componentState, outlineMode, project, drawingObserver);
@@ -78,20 +78,21 @@ public class TriPadBoard extends AbstractBoard {
if (alpha < MAX_ALPHA) {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
}
Point p = new Point(firstPoint);
double x = firstPoint.getX();
double y = firstPoint.getY();
int stripSize = getClosestOdd((int) STRIP_SIZE.convertToPixels());
int holeSize = getClosestOdd((int) HOLE_SIZE.convertToPixels());
int spacing = (int) this.spacing.convertToPixels();
double spacing = this.spacing.convertToPixels();
if (orientation == OrientationHV.HORIZONTAL) {
while (p.y < finalSecondPoint.y - spacing) {
p.x = firstPoint.x;
p.y += spacing;
while (y < finalSecondPoint.getY() - spacing) {
x = firstPoint.getX();
y += spacing;
while (p.x + spacing < finalSecondPoint.x) {
while (x + spacing < finalSecondPoint.getX()) {
int remainingSpace = finalSecondPoint.x - p.x;
int spacesToDraw = stripSpan;
double remainingSpace = finalSecondPoint.getX() - x;
double spacesToDraw = stripSpan;
if (remainingSpace < (stripSize + (stripSpan * spacing))) {
spacesToDraw = (remainingSpace - stripSize) / spacing;
@@ -99,37 +100,37 @@ public class TriPadBoard extends AbstractBoard {
g2d.setColor(stripColor);
drawingObserver.startTrackingContinuityArea(true);
g2d.fillRect(p.x + spacing - stripSize / 2, p.y - stripSize / 2, spacing * (spacesToDraw - 1) + stripSize,
g2d.fillRect((int)(x + spacing - stripSize / 2), (int)(y - stripSize / 2), (int)(spacing * (spacesToDraw - 1) + stripSize),
stripSize);
drawingObserver.stopTrackingContinuityArea();
g2d.setColor(stripColor.darker());
g2d.drawRect(p.x + spacing - stripSize / 2, p.y - stripSize / 2, spacing * (spacesToDraw - 1) + stripSize,
g2d.drawRect((int)(x + spacing - stripSize / 2), (int)(y - stripSize / 2), (int)(spacing * (spacesToDraw - 1) + stripSize),
stripSize);
p.x += spacing * spacesToDraw;
x += spacing * spacesToDraw;
}
// draw holes
p.x = firstPoint.x;
x = firstPoint.getX();
while (p.x < finalSecondPoint.x - spacing - holeSize) {
p.x += spacing;
while (x < finalSecondPoint.getX() - spacing - holeSize) {
x += spacing;
g2d.setColor(Constants.CANVAS_COLOR);
g2d.fillOval(p.x - holeSize / 2, p.y - holeSize / 2, holeSize, holeSize);
g2d.fillOval((int)(x - holeSize / 2), (int)(y - holeSize / 2), holeSize, holeSize);
g2d.setColor(stripColor.darker());
g2d.drawOval(p.x - holeSize / 2, p.y - holeSize / 2, holeSize, holeSize);
g2d.drawOval((int)(x - holeSize / 2), (int)(y - holeSize / 2), holeSize, holeSize);
}
}
} else {
while (p.x < finalSecondPoint.x - spacing) {
p.x += spacing;
p.y = firstPoint.y;
while (x < finalSecondPoint.getX() - spacing) {
x += spacing;
y = firstPoint.getY();
while (p.y + spacing < finalSecondPoint.y) {
while (y + spacing < finalSecondPoint.getY()) {
int remainingSpace = finalSecondPoint.y - p.y;
int spacesToDraw = stripSpan;
double remainingSpace = finalSecondPoint.getY() - y;
double spacesToDraw = stripSpan;
if (remainingSpace < (stripSize + (stripSpan * spacing))) {
spacesToDraw = (remainingSpace - stripSize) / spacing;
@@ -137,25 +138,25 @@ public class TriPadBoard extends AbstractBoard {
g2d.setColor(stripColor);
drawingObserver.startTrackingContinuityArea(true);
g2d.fillRect(p.x - stripSize / 2, p.y + spacing - stripSize / 2, stripSize, spacing * (spacesToDraw - 1)
+ stripSize);
g2d.fillRect((int)(x - stripSize / 2), (int)(y + spacing - stripSize / 2), stripSize, (int)(spacing * (spacesToDraw - 1)
+ stripSize));
drawingObserver.stopTrackingContinuityArea();
g2d.setColor(stripColor.darker());
g2d.drawRect(p.x - stripSize / 2, p.y + spacing - stripSize / 2, stripSize, spacing * (spacesToDraw - 1)
+ stripSize);
g2d.drawRect((int)(x - stripSize / 2), (int)(y + spacing - stripSize / 2), stripSize, (int)(spacing * (spacesToDraw - 1)
+ stripSize));
p.y += spacing * spacesToDraw;
y += spacing * spacesToDraw;
}
// draw holes
p.y = firstPoint.y;
y = firstPoint.getY();
while (p.y < finalSecondPoint.y - spacing - holeSize) {
p.y += spacing;
while (y < finalSecondPoint.getY() - spacing - holeSize) {
y += spacing;
g2d.setColor(Constants.CANVAS_COLOR);
g2d.fillOval(p.x - holeSize / 2, p.y - holeSize / 2, holeSize, holeSize);
g2d.fillOval((int)(x - holeSize / 2), (int)(y - holeSize / 2), holeSize, holeSize);
g2d.setColor(stripColor.darker());
g2d.drawOval(p.x - holeSize / 2, p.y - holeSize / 2, holeSize, holeSize);
g2d.drawOval((int)(x - holeSize / 2), (int)(y - holeSize / 2), holeSize, holeSize);
}
}
}
@@ -25,8 +25,8 @@ import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Shape;
import java.awt.geom.Point2D;
import org.diylc.common.OrientationHV;
import org.diylc.common.SimpleComponentTransformer;
@@ -65,11 +65,11 @@ public class VeroBoard extends AbstractBoard {
@Override
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
IDrawingObserver drawingObserver) {
Point finalSecondPoint = getFinalSecondPoint();
Point2D finalSecondPoint = getFinalSecondPoint();
Shape clip = g2d.getClip();
if (checkPointsClipped(clip) && !clip.contains(firstPoint.x, finalSecondPoint.y)
&& !clip.contains(finalSecondPoint.x, firstPoint.y)) {
if (checkPointsClipped(clip) && !clip.contains(firstPoint.getX(), finalSecondPoint.getY())
&& !clip.contains(finalSecondPoint.getX(), firstPoint.getY())) {
return;
}
super.draw(g2d, componentState, outlineMode, project, drawingObserver);
@@ -78,45 +78,46 @@ public class VeroBoard extends AbstractBoard {
if (alpha < MAX_ALPHA) {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
}
Point p = new Point(firstPoint);
double x = firstPoint.getX();
double y = finalSecondPoint.getY();
int stripSize = getClosestOdd((int) STRIP_SIZE.convertToPixels());
int holeSize = getClosestOdd((int) HOLE_SIZE.convertToPixels());
int spacing = (int) this.spacing.convertToPixels();
if (orientation == OrientationHV.HORIZONTAL) {
while (p.y < finalSecondPoint.y - spacing) {
p.x = firstPoint.x;
p.y += spacing;
while (y < finalSecondPoint.getY() - spacing) {
x = firstPoint.getX();
y += spacing;
g2d.setColor(stripColor);
drawingObserver.startTrackingContinuityArea(true);
g2d.fillRect(p.x + spacing / 2, p.y - stripSize / 2, finalSecondPoint.x - spacing - p.x, stripSize);
g2d.fillRect((int)(x + spacing / 2), (int)(y - stripSize / 2), (int)(finalSecondPoint.getX() - spacing - x), stripSize);
drawingObserver.stopTrackingContinuityArea();
g2d.setColor(stripColor.darker());
g2d.drawRect(p.x + spacing / 2, p.y - stripSize / 2, finalSecondPoint.x - spacing - p.x, stripSize);
while (p.x < finalSecondPoint.x - spacing - holeSize) {
p.x += spacing;
g2d.drawRect((int)(x + spacing / 2), (int)(y - stripSize / 2), (int)(finalSecondPoint.getX() - spacing - x), stripSize);
while (x < finalSecondPoint.getX() - spacing - holeSize) {
x += spacing;
g2d.setColor(Constants.CANVAS_COLOR);
g2d.fillOval(p.x - holeSize / 2, p.y - holeSize / 2, holeSize, holeSize);
g2d.fillOval((int)(x - holeSize / 2), (int)(y - holeSize / 2), holeSize, holeSize);
g2d.setColor(stripColor.darker());
g2d.drawOval(p.x - holeSize / 2, p.y - holeSize / 2, holeSize, holeSize);
g2d.drawOval((int)(x - holeSize / 2), (int)(y - holeSize / 2), holeSize, holeSize);
}
}
} else {
while (p.x < finalSecondPoint.x - spacing) {
p.x += spacing;
p.y = firstPoint.y;
while (x < finalSecondPoint.getX() - spacing) {
x += spacing;
y = firstPoint.getY();
g2d.setColor(stripColor);
drawingObserver.startTrackingContinuityArea(true);
g2d.fillRect(p.x - stripSize / 2, p.y + spacing / 2, stripSize, finalSecondPoint.y - spacing - p.y);
g2d.fillRect((int)(x - stripSize / 2), (int)(y + spacing / 2), stripSize, (int)(finalSecondPoint.getY() - spacing - y));
drawingObserver.stopTrackingContinuityArea();
g2d.setColor(stripColor.darker());
g2d.drawRect(p.x - stripSize / 2, p.y + spacing / 2, stripSize, finalSecondPoint.y - spacing - p.y);
while (p.y < finalSecondPoint.y - spacing - holeSize) {
p.y += spacing;
g2d.drawRect((int)(x - stripSize / 2), (int)(y + spacing / 2), stripSize, (int)(finalSecondPoint.getY() - spacing - y));
while (y < finalSecondPoint.getY() - spacing - holeSize) {
y += spacing;
g2d.setColor(Constants.CANVAS_COLOR);
g2d.fillOval(p.x - holeSize / 2, p.y - holeSize / 2, holeSize, holeSize);
g2d.fillOval((int)(x - holeSize / 2), (int)(y - holeSize / 2), holeSize, holeSize);
g2d.setColor(stripColor.darker());
g2d.drawOval(p.x - holeSize / 2, p.y - holeSize / 2, holeSize, holeSize);
g2d.drawOval((int)(x - holeSize / 2), (int)(y - holeSize / 2), holeSize, holeSize);
}
}
}
@@ -64,7 +64,7 @@ public class ChassisPanel extends AbstractShape {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
}
g2d.setColor(color);
g2d.fillRoundRect(firstPoint.x, firstPoint.y, secondPoint.x - firstPoint.x, secondPoint.y - firstPoint.y, radius,
g2d.fillRoundRect((int)firstPoint.getX(), (int)firstPoint.getY(), (int)(secondPoint.getX() - firstPoint.getX()), (int)(secondPoint.getY() - firstPoint.getY()), radius,
radius);
g2d.setComposite(oldComposite);
}
@@ -73,7 +73,7 @@ public class ChassisPanel extends AbstractShape {
drawingObserver.stopTracking();
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
: borderColor);
g2d.drawRoundRect(firstPoint.x, firstPoint.y, secondPoint.x - firstPoint.x, secondPoint.y - firstPoint.y, radius,
g2d.drawRoundRect((int)(firstPoint.getX()), (int)(firstPoint.getY()), (int)(secondPoint.getX() - firstPoint.getX()), (int)(secondPoint.getY() - firstPoint.getY()), radius,
radius);
}
@@ -53,7 +53,7 @@ public class EllipticalCutout extends AbstractShape {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
}
g2d.setColor(color);
g2d.fillOval(firstPoint.x, firstPoint.y, secondPoint.x - firstPoint.x, secondPoint.y - firstPoint.y);
g2d.fillOval((int)firstPoint.getX(), (int)firstPoint.getY(), (int)(secondPoint.getX() - firstPoint.getX()), (int)(secondPoint.getY() - firstPoint.getY()));
g2d.setComposite(oldComposite);
}
// Do not track any changes that follow because the whole oval has been
@@ -61,7 +61,7 @@ public class EllipticalCutout extends AbstractShape {
drawingObserver.stopTracking();
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
: borderColor);
g2d.drawOval(firstPoint.x, firstPoint.y, secondPoint.x - firstPoint.x, secondPoint.y - firstPoint.y);
g2d.drawOval((int)firstPoint.getX(), (int)firstPoint.getY(), (int)(secondPoint.getX() - firstPoint.getX()), (int)(secondPoint.getY() - firstPoint.getY()));
}
@Override
@@ -22,6 +22,7 @@ import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.Point2D;
import java.util.Arrays;
import org.diylc.common.ObjectCache;
@@ -61,8 +62,8 @@ public class PolygonalCutout extends AbstractShape {
int[] xPoints = new int[controlPoints.length];
int[] yPoints = new int[controlPoints.length];
for (int i = 0; i < controlPoints.length; i++) {
xPoints[i] = controlPoints[i].x;
yPoints[i] = controlPoints[i].y;
xPoints[i] = (int)controlPoints[i].getX();
yPoints[i] = (int)controlPoints[i].getY();
}
Composite oldComposite = g2d.getComposite();
@@ -97,8 +98,8 @@ public class PolygonalCutout extends AbstractShape {
this.controlPoints[newPointCount - 1] = this.controlPoints[oldPointCount - 1];
for (int i = oldPointCount - 1; i < newPointCount - 1; i++) {
this.controlPoints[i] =
new Point((this.controlPoints[i - 1].x + this.controlPoints[newPointCount - 1].x) / 2,
(this.controlPoints[i - 1].y + this.controlPoints[newPointCount - 1].y) / 2);
new Point2D.Double((this.controlPoints[i - 1].getX() + this.controlPoints[newPointCount - 1].getX()) / 2,
(this.controlPoints[i - 1].getY() + this.controlPoints[newPointCount - 1].getY()) / 2);
}
}
this.pointCount = pointCount;
@@ -59,7 +59,7 @@ public class RectangularCutout extends AbstractShape {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
}
g2d.setColor(color);
g2d.fillRoundRect(firstPoint.x, firstPoint.y, secondPoint.x - firstPoint.x, secondPoint.y - firstPoint.y, radius,
g2d.fillRoundRect((int)firstPoint.getX(), (int)firstPoint.getY(), (int)(secondPoint.getX() - firstPoint.getX()), (int)(secondPoint.getY() - firstPoint.getY()), radius,
radius);
g2d.setComposite(oldComposite);
}
@@ -68,7 +68,7 @@ public class RectangularCutout extends AbstractShape {
drawingObserver.stopTracking();
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
: borderColor);
g2d.drawRoundRect(firstPoint.x, firstPoint.y, secondPoint.x - firstPoint.x, secondPoint.y - firstPoint.y, radius,
g2d.drawRoundRect((int)firstPoint.getX(), (int)firstPoint.getY(), (int)(secondPoint.getX() - firstPoint.getX()), (int)(secondPoint.getY() - firstPoint.getY()), radius,
radius);
}
@@ -21,7 +21,7 @@ import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.Point2D;
import org.diylc.common.ObjectCache;
import org.diylc.common.OrientationHV;
@@ -52,7 +52,7 @@ public class CutLine extends AbstractTransparentComponent<Void> {
private Size width = WIDTH;
private Size length = LENGTH;
private Color color = COLOR;
private Point point = new Point(0, 0);
private Point2D point = new Point2D.Double(0, 0);
private OrientationHV orientation = OrientationHV.VERTICAL;
@Override
@@ -70,9 +70,9 @@ public class CutLine extends AbstractTransparentComponent<Void> {
}
if (getOrientation() == OrientationHV.HORIZONTAL)
g2d.drawLine(point.x, point.y, point.x + l, point.y);
g2d.drawLine((int)point.getX(), (int)point.getY(), (int)point.getX() + l, (int)point.getY());
else
g2d.drawLine(point.x, point.y, point.x, point.y + l);
g2d.drawLine((int)point.getX(), (int)point.getY(), (int)point.getX(), (int)point.getY() + l);
g2d.setComposite(oldComposite);
}
@@ -132,12 +132,12 @@ public class CutLine extends AbstractTransparentComponent<Void> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return point;
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
this.point.setLocation(point);
}
@@ -23,7 +23,7 @@ package org.diylc.components.connectivity;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.Point2D;
import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.AbstractComponent;
@@ -51,7 +51,7 @@ public class Dot extends AbstractComponent<Void> {
private Size size = SIZE;
private Color color = COLOR;
private Point point = new Point(0, 0);
private Point2D point = new Point2D.Double(0, 0);
@Override
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
@@ -62,7 +62,7 @@ public class Dot extends AbstractComponent<Void> {
int diameter = getClosestOdd((int) getSize().convertToPixels());
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
: color);
g2d.fillOval(point.x - diameter / 2, point.y - diameter / 2, diameter, diameter);
g2d.fillOval((int)(point.getX() - diameter / 2), (int)(point.getY() - diameter / 2), diameter, diameter);
}
@Override
@@ -102,12 +102,12 @@ public class Dot extends AbstractComponent<Void> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return point;
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
this.point.setLocation(point);
}
@@ -23,7 +23,7 @@ package org.diylc.components.connectivity;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.diylc.common.ObjectCache;
@@ -60,7 +60,7 @@ public class Eyelet extends AbstractComponent<String> {
private Size size = SIZE;
private Size holeSize = HOLE_SIZE;
private Color color = COLOR;
private Point point = new Point(0, 0);
private Point2D point = new Point2D.Double(0, 0);
private String value = "";
@Override
@@ -74,16 +74,16 @@ public class Eyelet extends AbstractComponent<String> {
g2d.setStroke(ObjectCache.getInstance().fetchZoomableStroke(1f));
g2d.setColor(color);
drawingObserver.startTrackingContinuityArea(true);
g2d.fillOval(point.x - diameter / 2, point.y - diameter / 2, diameter, diameter);
g2d.fillOval((int)(point.getX() - diameter / 2), (int)(point.getY() - diameter / 2), diameter, diameter);
drawingObserver.stopTrackingContinuityArea();
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
: color.darker());
g2d.drawOval(point.x - diameter / 2, point.y - diameter / 2, diameter, diameter);
g2d.drawOval((int)(point.getX() - diameter / 2), (int)(point.getY() - diameter / 2), diameter, diameter);
g2d.setColor(Constants.CANVAS_COLOR);
g2d.fillOval(point.x - holeDiameter / 2, point.y - holeDiameter / 2, holeDiameter, holeDiameter);
g2d.fillOval((int)(point.getX() - holeDiameter / 2), (int)(point.getY() - holeDiameter / 2), holeDiameter, holeDiameter);
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
: color.darker());
g2d.drawOval(point.x - holeDiameter / 2, point.y - holeDiameter / 2, holeDiameter, holeDiameter);
g2d.drawOval((int)(point.getX() - holeDiameter / 2), (int)(point.getY() - holeDiameter / 2), holeDiameter, holeDiameter);
}
@Override
@@ -139,12 +139,12 @@ public class Eyelet extends AbstractComponent<String> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return point;
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
this.point.setLocation(point);
}
@@ -23,7 +23,7 @@ package org.diylc.components.connectivity;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.Point2D;
import java.util.Arrays;
import org.diylc.common.ObjectCache;
@@ -52,9 +52,9 @@ public class GroundFill extends AbstractComponent<Void> {
public static Size DEFAULT_WIDTH = new Size(1.5d, SizeUnit.in);
public static Size DEFAULT_HEIGHT = new Size(1.2d, SizeUnit.in);
protected Point[] controlPoints = new Point[] {new Point(0, 0), new Point(0, (int) DEFAULT_HEIGHT.convertToPixels()),
new Point((int) DEFAULT_WIDTH.convertToPixels(), (int) DEFAULT_HEIGHT.convertToPixels()),
new Point((int) DEFAULT_WIDTH.convertToPixels(), 0)};
protected Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0), new Point2D.Double(0, (int) DEFAULT_HEIGHT.convertToPixels()),
new Point2D.Double((int) DEFAULT_WIDTH.convertToPixels(), (int) DEFAULT_HEIGHT.convertToPixels()),
new Point2D.Double((int) DEFAULT_WIDTH.convertToPixels(), 0)};
protected Color color = COLOR;
protected PointCount pointCount = PointCount._4;
@@ -71,8 +71,8 @@ public class GroundFill extends AbstractComponent<Void> {
int[] xPoints = new int[controlPoints.length];
int[] yPoints = new int[controlPoints.length];
for (int i = 0; i < controlPoints.length; i++) {
xPoints[i] = controlPoints[i].x;
yPoints[i] = controlPoints[i].y;
xPoints[i] = (int)controlPoints[i].getX();
yPoints[i] = (int)controlPoints[i].getY();
}
drawingObserver.startTrackingContinuityArea(true);
g2d.fillPolygon(xPoints, yPoints, controlPoints.length);
@@ -97,7 +97,7 @@ public class GroundFill extends AbstractComponent<Void> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@@ -112,7 +112,7 @@ public class GroundFill extends AbstractComponent<Void> {
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
controlPoints[index].setLocation(point);
}
@@ -131,8 +131,8 @@ public class GroundFill extends AbstractComponent<Void> {
this.controlPoints[newPointCount - 1] = this.controlPoints[oldPointCount - 1];
for (int i = oldPointCount - 1; i < newPointCount - 1; i++) {
this.controlPoints[i] =
new Point((this.controlPoints[i - 1].x + this.controlPoints[newPointCount - 1].x) / 2,
(this.controlPoints[i - 1].y + this.controlPoints[newPointCount - 1].y) / 2);
new Point2D.Double((this.controlPoints[i - 1].getX() + this.controlPoints[newPointCount - 1].getX()) / 2,
(this.controlPoints[i - 1].getY() + this.controlPoints[newPointCount - 1].getY()) / 2);
}
}
this.pointCount = pointCount;
@@ -24,11 +24,11 @@ package org.diylc.components.connectivity;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Polygon;
import java.awt.Shape;
import java.awt.Stroke;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import org.diylc.common.Display;
import org.diylc.common.LineStyle;
@@ -91,13 +91,15 @@ public class Line extends AbstractLeadedComponent<Void> {
g2d.setStroke(stroke);
g2d.setColor(componentState == ComponentState.SELECTED ? SELECTION_COLOR : color);
Point startPoint = new Point(getControlPoint(0));
Point endPoint = new Point(getControlPoint(1));
Point2D first = getControlPoint(0);
Point2D second = getControlPoint(1);
Point2D startPoint = new Point2D.Double(first.getX(), first.getY());
Point2D endPoint = new Point2D.Double(second.getX(), second.getY());
if (arrowStart) {
arrowTx.setToIdentity();
double angle = Math.atan2(getControlPoint(1).y - getControlPoint(0).y, getControlPoint(1).x - getControlPoint(0).x);
arrowTx.translate(getControlPoint(0).x, getControlPoint(0).y);
double angle = Math.atan2(getControlPoint(1).getY() - getControlPoint(0).getY(), getControlPoint(1).getX() - getControlPoint(0).getX());
arrowTx.translate(getControlPoint(0).getX(), getControlPoint(0).getY());
arrowTx.rotate((angle + Math.PI / 2d));
AffineTransform oldTx = g2d.getTransform();
g2d.transform(arrowTx);
@@ -110,8 +112,8 @@ public class Line extends AbstractLeadedComponent<Void> {
}
if (arrowEnd) {
arrowTx.setToIdentity();
double angle = Math.atan2(getControlPoint(1).y - getControlPoint(0).y, getControlPoint(1).x - getControlPoint(0).x);
arrowTx.translate(getControlPoint(1).x, getControlPoint(1).y);
double angle = Math.atan2(getControlPoint(1).getY() - getControlPoint(0).getY(), getControlPoint(1).getX() - getControlPoint(0).getX());
arrowTx.translate(getControlPoint(1).getX(), getControlPoint(1).getY());
arrowTx.rotate((angle - Math.PI / 2d));
AffineTransform oldTx = g2d.getTransform();
g2d.transform(arrowTx);
@@ -123,15 +125,15 @@ public class Line extends AbstractLeadedComponent<Void> {
interpolate(endPoint, startPoint, getArrowSize().convertToPixels() * 0.9 / distance, endPoint);
}
g2d.drawLine(startPoint.x, startPoint.y, endPoint.x, endPoint.y);
g2d.drawLine((int)startPoint.getX(), (int)startPoint.getY(), (int)endPoint.getX(), (int)endPoint.getY());
}
private void interpolate(Point p1, Point p2, double t, Point p) {
p.setLocation((int)Math.round(p1.x * (1-t) + p2.x * t), (int)Math.round(p1.y * (1-t) + p2.y * t));
private void interpolate(Point2D p1, Point2D p2, double t, Point2D p) {
p.setLocation((int)Math.round(p1.getX() * (1-t) + p2.getX() * t), (int)Math.round(p1.getY() * (1-t) + p2.getY() * t));
}
private double distance(Point p1, Point p2) {
return Math.sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y));
private double distance(Point2D p1, Point2D p2) {
return Math.sqrt((p1.getX() - p2.getX()) * (p1.getX() - p2.getX()) + (p1.getY() - p2.getY()) * (p1.getY() - p2.getY()));
}
@Override
@@ -19,8 +19,8 @@ package org.diylc.components.connectivity;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.diylc.common.PCBLayer;
@@ -55,7 +55,7 @@ public class SolderPad extends AbstractComponent<Void> {
private Size size = SIZE;
private Color color = COLOR;
private Point point = new Point(0, 0);
private Point2D point = new Point2D.Double(0, 0);
private Type type = Type.ROUND;
private Size holeSize = HOLE_SIZE;
private PCBLayer layer = PCBLayer._1;
@@ -72,18 +72,18 @@ public class SolderPad extends AbstractComponent<Void> {
: color);
drawingObserver.startTrackingContinuityArea(true);
if (type == Type.ROUND) {
g2d.fill(new Ellipse2D.Double(point.x - diameter / 2, point.y - diameter / 2, diameter, diameter));
g2d.fill(new Ellipse2D.Double(point.getX() - diameter / 2, point.getY() - diameter / 2, diameter, diameter));
} else if (type == Type.OVAL_HORIZONTAL) {
g2d.fill(new Ellipse2D.Double(point.x - diameter / 2, point.y - diameter * 3 / 8, diameter, diameter * 3 / 4));
g2d.fill(new Ellipse2D.Double(point.getX() - diameter / 2, point.getY() - diameter * 3 / 8, diameter, diameter * 3 / 4));
} else if (type == Type.OVAL_VERTICAL) {
g2d.fill(new Ellipse2D.Double(point.x - diameter * 3 / 8, point.y - diameter / 2, diameter * 3 / 4, diameter));
g2d.fill(new Ellipse2D.Double(point.getX() - diameter * 3 / 8, point.getY() - diameter / 2, diameter * 3 / 4, diameter));
} else {
g2d.fill(new Rectangle2D.Double(point.x - diameter / 2, point.y - diameter / 2, diameter, diameter));
g2d.fill(new Rectangle2D.Double(point.getX() - diameter / 2, point.getY() - diameter / 2, diameter, diameter));
}
drawingObserver.stopTrackingContinuityArea();
if (getHoleSize().getValue() > 0) {
g2d.setColor(Constants.CANVAS_COLOR);
g2d.fill(new Ellipse2D.Double(point.x - holeDiameter / 2, point.y - holeDiameter / 2, holeDiameter, holeDiameter));
g2d.fill(new Ellipse2D.Double(point.getX() - holeDiameter / 2, point.getY() - holeDiameter / 2, holeDiameter, holeDiameter));
}
}
@@ -151,12 +151,12 @@ public class SolderPad extends AbstractComponent<Void> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return point;
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
this.point.setLocation(point);
}
@@ -23,7 +23,7 @@ package org.diylc.components.connectivity;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.diylc.common.ObjectCache;
@@ -70,7 +70,7 @@ public class TraceCut extends AbstractComponent<Void> {
private OrientationHV orientation = OrientationHV.VERTICAL;
private Size holeSpacing = VeroBoard.SPACING;
protected Point point = new Point(0, 0);
protected Point2D point = new Point2D.Double(0, 0);
@Override
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
@@ -87,22 +87,22 @@ public class TraceCut extends AbstractComponent<Void> {
: getBoardColor());
drawingObserver.startTrackingContinuityArea(false);
if (getOrientation() == OrientationHV.VERTICAL)
g2d.fillRect(point.x - holeSpacing / 2 - cutWidth / 2, point.y - size / 2 - 1, cutWidth, size + 2);
g2d.fillRect((int)(point.getX() - holeSpacing / 2 - cutWidth / 2), (int)(point.getY() - size / 2 - 1), cutWidth, size + 2);
else
g2d.fillRect(point.x - size / 2 - 1, point.y - holeSpacing / 2 - cutWidth / 2, size + 2, cutWidth);
g2d.fillRect((int)(point.getX() - size / 2 - 1), (int)(point.getY() - holeSpacing / 2 - cutWidth / 2), size + 2, cutWidth);
drawingObserver.stopTrackingContinuityArea();
} else {
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
: getBoardColor());
drawingObserver.startTrackingContinuityArea(false);
g2d.fillRoundRect(point.x - size / 2, point.y - size / 2, size, size, size, size);
g2d.fillRoundRect((int)(point.getX() - size / 2), (int)(point.getY() - size / 2), size, size, size, size);
drawingObserver.stopTrackingContinuityArea();
g2d.setColor(Constants.CANVAS_COLOR);
int holeSize = getClosestOdd((int) HOLE_SIZE.convertToPixels());
g2d.fillOval(point.x - holeSize / 2, point.y - holeSize / 2, holeSize, holeSize);
g2d.fillOval((int)(point.getX() - holeSize / 2), (int)(point.getY() - holeSize / 2), holeSize, holeSize);
g2d.setColor(getBoardColor().darker());
g2d.drawOval(point.x - holeSize / 2, point.y - holeSize / 2, holeSize, holeSize);
g2d.drawOval((int)(point.getX() - holeSize / 2), (int)(point.getY() - holeSize / 2), holeSize, holeSize);
}
}
@@ -145,7 +145,7 @@ public class TraceCut extends AbstractComponent<Void> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return point;
}
@@ -160,7 +160,7 @@ public class TraceCut extends AbstractComponent<Void> {
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
this.point.setLocation(point);
}
@@ -23,7 +23,7 @@ package org.diylc.components.connectivity;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.diylc.common.ObjectCache;
@@ -58,7 +58,7 @@ public class Turret extends AbstractComponent<String> {
private Size size = SIZE;
private Size holeSize = HOLE_SIZE;
private Color color = COLOR;
private Point point = new Point(0, 0);
private Point2D point = new Point2D.Double(0, 0);
private String value = "";
@Override
@@ -72,16 +72,16 @@ public class Turret extends AbstractComponent<String> {
g2d.setColor(color);
g2d.setStroke(ObjectCache.getInstance().fetchZoomableStroke(1f));
drawingObserver.startTrackingContinuityArea(true);
g2d.fillOval(point.x - diameter / 2, point.y - diameter / 2, diameter, diameter);
g2d.fillOval((int)(point.getX() - diameter / 2), (int)(point.getY() - diameter / 2), diameter, diameter);
drawingObserver.stopTrackingContinuityArea();
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
: color.darker());
g2d.drawOval(point.x - diameter / 2, point.y - diameter / 2, diameter, diameter);
g2d.drawOval((int)(point.getX() - diameter / 2), (int)(point.getY() - diameter / 2), diameter, diameter);
g2d.setColor(Constants.CANVAS_COLOR);
g2d.fillOval(point.x - holeDiameter / 2, point.y - holeDiameter / 2, holeDiameter, holeDiameter);
g2d.fillOval((int)(point.getX() - holeDiameter / 2), (int)(point.getY() - holeDiameter / 2), holeDiameter, holeDiameter);
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
: color.darker());
g2d.drawOval(point.x - holeDiameter / 2, point.y - holeDiameter / 2, holeDiameter, holeDiameter);
g2d.drawOval((int)(point.getX() - holeDiameter / 2), (int)(point.getY() - holeDiameter / 2), holeDiameter, holeDiameter);
}
@Override
@@ -137,12 +137,12 @@ public class Turret extends AbstractComponent<String> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return point;
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
this.point.setLocation(point);
}
@@ -172,7 +172,7 @@ public class TwistedWire extends AbstractCurvedComponent<Void> implements IConti
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
super.setControlPoint(point, index);
// invalidate cached areas
@@ -21,34 +21,35 @@
*/
package org.diylc.components.electromechanical;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Polygon;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;
import org.diylc.appframework.miscutils.ConfigurationManager;
import org.diylc.common.IPlugInPort;
import org.diylc.common.ObjectCache;
import org.diylc.common.Orientation;
import org.diylc.components.AbstractTransparentComponent;
import org.diylc.components.transform.BatterySnapTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
import org.diylc.core.Project;
import org.diylc.core.Theme;
import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.measures.Size;
import org.diylc.core.measures.SizeUnit;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Polygon;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.diylc.appframework.miscutils.ConfigurationManager;
import org.diylc.common.IPlugInPort;
import org.diylc.common.ObjectCache;
import org.diylc.common.Orientation;
import org.diylc.components.AbstractTransparentComponent;
import org.diylc.components.transform.BatterySnapTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
import org.diylc.core.Project;
import org.diylc.core.Theme;
import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.measures.Size;
import org.diylc.core.measures.SizeUnit;
import org.diylc.utils.Constants;
@ComponentDescriptor(name = "9V Battery Snap", category = "Electro-Mechanical", author = "Branislav Stojkovic",
@@ -235,7 +236,7 @@ public class BatterySnap9V extends AbstractTransparentComponent<String> {
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
this.controlPoint.setLocation(point);
// Invalidate the body
body = null;
@@ -25,12 +25,11 @@ import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
@@ -74,7 +73,7 @@ public class CliffJack1_4 extends AbstractMultiPartComponent<String> {
private static Size BODY_LENGTH = new Size(0.9d, SizeUnit.in);
private static Size TAIL_LENGTH = new Size(0.1d, SizeUnit.in);
private Point[] controlPoints = new Point[] {new Point(0, 0)};
private Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0)};
private JackType type = JackType.MONO;
private Orientation orientation = Orientation.DEFAULT;
transient private Area[] body;
@@ -88,18 +87,18 @@ public class CliffJack1_4 extends AbstractMultiPartComponent<String> {
private void updateControlPoints() {
// invalidate body shape
body = null;
int x = controlPoints[0].x;
int y = controlPoints[0].y;
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
int spacing = (int) SPACING.convertToPixels();
controlPoints = new Point[type == JackType.STEREO ? 6 : 4];
controlPoints = new Point2D[type == JackType.STEREO ? 6 : 4];
controlPoints[0] = new Point(x, y);
controlPoints[1] = new Point(x, y + 2 * spacing);
controlPoints[2] = new Point(x + 2 * spacing, y);
controlPoints[3] = new Point(x + 2 * spacing, y + 2 * spacing);
controlPoints[0] = new Point2D.Double(x, y);
controlPoints[1] = new Point2D.Double(x, y + 2 * spacing);
controlPoints[2] = new Point2D.Double(x + 2 * spacing, y);
controlPoints[3] = new Point2D.Double(x + 2 * spacing, y + 2 * spacing);
if (type == JackType.STEREO) {
controlPoints[4] = new Point(x + spacing, y);
controlPoints[5] = new Point(x + spacing, y + 2 * spacing);
controlPoints[4] = new Point2D.Double(x + spacing, y);
controlPoints[5] = new Point2D.Double(x + spacing, y + 2 * spacing);
}
// Apply rotation if necessary
@@ -139,9 +138,9 @@ public class CliffJack1_4 extends AbstractMultiPartComponent<String> {
// Create body.
int bodyLength = (int) BODY_LENGTH.convertToPixels();
int bodyWidth = (int) BODY_WIDTH.convertToPixels();
int centerX = (controlPoints[0].x + controlPoints[3].x) / 2;
int centerY = (controlPoints[0].y + controlPoints[3].y) / 2;
body[0] = new Area(new Rectangle(centerX - bodyLength / 2, centerY - bodyWidth / 2, bodyLength, bodyWidth));
double centerX = (controlPoints[0].getX() + controlPoints[3].getX()) / 2;
double centerY = (controlPoints[0].getY() + controlPoints[3].getY()) / 2;
body[0] = new Area(new Rectangle2D.Double(centerX - bodyLength / 2, centerY - bodyWidth / 2, bodyLength, bodyWidth));
int tailLength = (int) TAIL_LENGTH.convertToPixels();
body[1] = new Area(new RoundRectangle2D.Double(centerX - bodyLength / 2 - tailLength, centerY - bodyWidth / 4, tailLength * 2,
@@ -150,9 +149,9 @@ public class CliffJack1_4 extends AbstractMultiPartComponent<String> {
tailArea.subtract(new Area(body[0]));
body[1] = tailArea;
body[2] = new Area(new Rectangle(centerX + bodyLength / 2, centerY - bodyWidth / 4, tailLength, bodyWidth / 2));
body[2] = new Area(new Rectangle2D.Double(centerX + bodyLength / 2, centerY - bodyWidth / 4, tailLength, bodyWidth / 2));
body[3] = new Area(new Rectangle(centerX + bodyLength / 2 + tailLength, centerY - bodyWidth / 4, tailLength, bodyWidth / 2));
body[3] = new Area(new Rectangle2D.Double(centerX + bodyLength / 2 + tailLength, centerY - bodyWidth / 4, tailLength, bodyWidth / 2));
tailArea = new Area(body[3]);
int radius = bodyLength / 2 + tailLength * 2;
tailArea.intersect(new Area(new Ellipse2D.Double(centerX - radius, centerY - radius, radius * 2, radius * 2)));
@@ -177,12 +176,12 @@ public class CliffJack1_4 extends AbstractMultiPartComponent<String> {
int pinWidth = (int) PIN_WIDTH.convertToPixels();
int pinThickness = (int) PIN_THICKNESS.convertToPixels();
for (int i = 0; i < getControlPointCount(); i++) {
Point point = getControlPoint(i);
Rectangle pin;
Point2D point = getControlPoint(i);
Rectangle2D pin;
if (orientation == Orientation.DEFAULT || orientation == Orientation._180) {
pin = new Rectangle(point.x - pinWidth / 2, point.y - pinThickness / 2, pinWidth, pinThickness);
pin = new Rectangle2D.Double(point.getX() - pinWidth / 2, point.getY() - pinThickness / 2, pinWidth, pinThickness);
} else {
pin = new Rectangle(point.x - pinThickness / 2, point.y - pinWidth / 2, pinThickness, pinWidth);
pin = new Rectangle2D.Double(point.getX() - pinThickness / 2, point.getY() - pinWidth / 2, pinThickness, pinWidth);
}
pins.add(new Area(pin));
}
@@ -249,8 +248,8 @@ public class CliffJack1_4 extends AbstractMultiPartComponent<String> {
}
g2d.setColor(finalLabelColor);
g2d.setFont(project.getFont());
int centerX = (controlPoints[0].x + controlPoints[3].x) / 2;
int centerY = (controlPoints[0].y + controlPoints[3].y) / 2;
double centerX = (controlPoints[0].getX() + controlPoints[3].getX()) / 2;
double centerY = (controlPoints[0].getY() + controlPoints[3].getY()) / 2;
StringUtils.drawCenteredText(g2d, name, centerX, centerY, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
drawSelectionOutline(g2d, componentState, outlineMode, project, drawingObserver);
@@ -293,12 +292,12 @@ public class CliffJack1_4 extends AbstractMultiPartComponent<String> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
controlPoints[index].setLocation(point);
body = null;
}
@@ -25,13 +25,13 @@ import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.GeneralPath;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.diylc.appframework.miscutils.ConfigurationManager;
@@ -75,7 +75,7 @@ public class ClosedJack1_4 extends AbstractMultiPartComponent<String> {
private static Size BODY_WIDTH = new Size(0.65d, SizeUnit.in);
private static Size BODY_LENGTH = new Size(0.8d, SizeUnit.in);
private Point[] controlPoints = new Point[] {new Point(0, 0)};
private Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0)};
private JackType type = JackType.MONO;
private Orientation orientation = Orientation.DEFAULT;
transient private Shape[] body;
@@ -89,16 +89,16 @@ public class ClosedJack1_4 extends AbstractMultiPartComponent<String> {
private void updateControlPoints() {
// invalidate body shape
body = null;
int x = controlPoints[0].x;
int y = controlPoints[0].y;
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
int spacing = (int) SPACING.convertToPixels();
int bodyLength = (int) BODY_LENGTH.convertToPixels();
controlPoints = new Point[type == JackType.STEREO ? 3 : 2];
controlPoints = new Point2D[type == JackType.STEREO ? 3 : 2];
controlPoints[0] = new Point(x, y);
controlPoints[1] = new Point(x + bodyLength, y);
controlPoints[0] = new Point2D.Double(x, y);
controlPoints[1] = new Point2D.Double(x + bodyLength, y);
if (type == JackType.STEREO) {
controlPoints[2] = new Point(x, y + 2 * spacing);
controlPoints[2] = new Point2D.Double(x, y + 2 * spacing);
}
// Apply rotation if necessary
@@ -136,18 +136,18 @@ public class ClosedJack1_4 extends AbstractMultiPartComponent<String> {
body = new Shape[5];
// Create body.
int x = controlPoints[0].x;
int y = controlPoints[0].y;
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
int lugWidth = (int) LUG_WIDTH.convertToPixels();
int lugLength = (int) LUG_LENGTH.convertToPixels();
int lugHoleSize = (int) LUG_HOLE_SIZE.convertToPixels();
int bodyLength = (int) BODY_LENGTH.convertToPixels();
int bodyWidth = (int) BODY_WIDTH.convertToPixels();
body[0] = new Area(new Rectangle(x + lugLength, y - bodyWidth / 2, bodyLength, bodyWidth));
body[0] = new Area(new Rectangle2D.Double(x + lugLength, y - bodyWidth / 2, bodyLength, bodyWidth));
int shaftLength = (int) SHAFT_LENGTH.convertToPixels();
int shaftWidth = (int) SHAFT_WIDTH.convertToPixels();
Area shaft = new Area(new Rectangle(x + lugLength + bodyLength, y - shaftWidth / 2, shaftLength, shaftWidth));
Area shaft = new Area(new Rectangle2D.Double(x + lugLength + bodyLength, y - shaftWidth / 2, shaftLength, shaftWidth));
body[1] = shaft;
double angle = getAngle();
@@ -158,17 +158,17 @@ public class ClosedJack1_4 extends AbstractMultiPartComponent<String> {
GeneralPath path = new GeneralPath();
int step = 4;
for (int i = x + lugLength + bodyLength + step; i <= x + lugLength + bodyLength + shaftLength; i += step) {
Point p = new Point(i, y - shaftWidth / 2 + 1);
for (double i = x + lugLength + bodyLength + step; i <= x + lugLength + bodyLength + shaftLength; i += step) {
Point2D p = new Point2D.Double(i, y - shaftWidth / 2 + 1);
if (rotation != null) {
rotation.transform(p, p);
}
path.moveTo(p.x, p.y);
p = new Point(i - step, y + shaftWidth / 2 - 1);
path.moveTo(p.getX(), p.getY());
p = new Point2D.Double(i - step, y + shaftWidth / 2 - 1);
if (rotation != null) {
rotation.transform(p, p);
}
path.lineTo(p.x, p.y);
path.lineTo(p.getX(), p.getY());
}
// Area pathArea = new Area(path);
// pathArea.intersect(shaft);
@@ -178,19 +178,19 @@ public class ClosedJack1_4 extends AbstractMultiPartComponent<String> {
Area lugs = new Area();
int spacing = (int) SPACING.convertToPixels();
Point[] untransformedControlPoints = new Point[type == JackType.STEREO ? 3 : 2];
Point2D[] untransformedControlPoints = new Point2D[type == JackType.STEREO ? 3 : 2];
untransformedControlPoints[0] = new Point(x, y);
untransformedControlPoints[1] = new Point(x + bodyLength, y);
untransformedControlPoints[0] = new Point2D.Double(x, y);
untransformedControlPoints[1] = new Point2D.Double(x + bodyLength, y);
if (type == JackType.STEREO) {
untransformedControlPoints[2] = new Point(x, y + 2 * spacing);
untransformedControlPoints[2] = new Point2D.Double(x, y + 2 * spacing);
}
for (int i = 0; i < untransformedControlPoints.length; i++) {
Point point = untransformedControlPoints[i];
Area lug = new Area(new Ellipse2D.Double(point.x - lugWidth / 2, point.y - lugWidth / 2, lugWidth, lugWidth));
lug.add(new Area(new Rectangle(point.x, point.y - lugWidth / 2, lugLength, lugWidth)));
lug.subtract(new Area(new Ellipse2D.Double(point.x - lugHoleSize / 2, point.y - lugHoleSize / 2, lugHoleSize,
Point2D point = untransformedControlPoints[i];
Area lug = new Area(new Ellipse2D.Double(point.getX() - lugWidth / 2, point.getY() - lugWidth / 2, lugWidth, lugWidth));
lug.add(new Area(new Rectangle2D.Double(point.getX(), point.getY() - lugWidth / 2, lugLength, lugWidth)));
lug.subtract(new Area(new Ellipse2D.Double(point.getX() - lugHoleSize / 2, point.getY() - lugHoleSize / 2, lugHoleSize,
lugHoleSize)));
lugs.add(lug);
}
@@ -269,8 +269,8 @@ public class ClosedJack1_4 extends AbstractMultiPartComponent<String> {
g2d.setColor(finalLabelColor);
g2d.setFont(project.getFont());
Rectangle bounds = body[0].getBounds();
int centerX = bounds.x + bounds.width / 2;
int centerY = bounds.y + bounds.height / 2;
double centerX = bounds.getX() + bounds.width / 2;
double centerY = bounds.getY() + bounds.height / 2;
StringUtils.drawCenteredText(g2d, name, centerX, centerY, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
drawSelectionOutline(g2d, componentState, outlineMode, project, drawingObserver);
@@ -303,12 +303,12 @@ public class ClosedJack1_4 extends AbstractMultiPartComponent<String> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
controlPoints[index].setLocation(point);
body = null;
}
@@ -26,10 +26,10 @@ import java.awt.Color;
import java.awt.Composite;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
@@ -79,7 +79,7 @@ public class DIPSwitch extends AbstractTransparentComponent<String> implements I
private SwitchCount switchCount = SwitchCount._8;
private Size pinSpacing = new Size(0.1d, SizeUnit.in);
private Size rowSpacing = new Size(0.3d, SizeUnit.in);
private Point[] controlPoints = new Point[] {new Point(0, 0)};
private Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0)};
protected Display display = Display.NONE;
private Color bodyColor = BODY_COLOR;
private Color borderColor = BORDER_COLOR;
@@ -179,7 +179,7 @@ public class DIPSwitch extends AbstractTransparentComponent<String> implements I
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@@ -194,14 +194,14 @@ public class DIPSwitch extends AbstractTransparentComponent<String> implements I
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
controlPoints[index].setLocation(point);
body = null;
}
private void updateControlPoints() {
Point firstPoint = controlPoints[0];
controlPoints = new Point[switchCount.getValue() * 2];
Point2D firstPoint = controlPoints[0];
controlPoints = new Point2D[switchCount.getValue() * 2];
controlPoints[0] = firstPoint;
double pinSpacing = this.pinSpacing.convertToPixels();
double rowSpacing = this.rowSpacing.convertToPixels();
@@ -239,16 +239,16 @@ public class DIPSwitch extends AbstractTransparentComponent<String> implements I
default:
throw new RuntimeException("Unexpected orientation: " + orientation);
}
controlPoints[i] = new Point((int) (firstPoint.x + dx1), (int) (firstPoint.y + dy1));
controlPoints[i + switchCount.getValue()] = new Point((int) (firstPoint.x + dx2), (int) (firstPoint.y + dy2));
controlPoints[i] = new Point2D.Double(firstPoint.getX() + dx1, firstPoint.getY() + dy1);
controlPoints[i + switchCount.getValue()] = new Point2D.Double(firstPoint.getX() + dx2, firstPoint.getY() + dy2);
}
}
public Area[] getBody() {
if (body == null) {
body = new Area[3];
double x = controlPoints[0].x;
double y = controlPoints[0].y;
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
double width;
double height;
double pinSpacing = this.pinSpacing.convertToPixels();
@@ -265,8 +265,8 @@ public class DIPSwitch extends AbstractTransparentComponent<String> implements I
x -= (bodyWidth - rowSpacing) / 2;
y -= pinSpacing / 2;
for (int i = 0; i < getSwitchCount().getValue(); i++) {
tickHoleArea.add(new Area(new Rectangle2D.Double(controlPoints[i].x + (rowSpacing - tickHoleLength) / 2, controlPoints[i].y - tickSize / 2, tickHoleLength, tickSize)));
tickArea.add(new Area(new Rectangle2D.Double(controlPoints[i].x + (rowSpacing - tickHoleLength) / 2, controlPoints[i].y - tickSize / 2, tickSize, tickSize)));
tickHoleArea.add(new Area(new Rectangle2D.Double(controlPoints[i].getX() + (rowSpacing - tickHoleLength) / 2, controlPoints[i].getY() - tickSize / 2, tickHoleLength, tickSize)));
tickArea.add(new Area(new Rectangle2D.Double(controlPoints[i].getX() + (rowSpacing - tickHoleLength) / 2, controlPoints[i].getY() - tickSize / 2, tickSize, tickSize)));
}
break;
case _90:
@@ -275,8 +275,8 @@ public class DIPSwitch extends AbstractTransparentComponent<String> implements I
x -= (pinSpacing / 2) + width - pinSpacing;
y -= (bodyWidth - rowSpacing) / 2;
for (int i = 0; i < getSwitchCount().getValue(); i++) {
tickHoleArea.add(new Area(new Rectangle2D.Double(controlPoints[i].x - tickSize / 2, controlPoints[i].y + (rowSpacing - tickHoleLength) / 2, tickSize, tickHoleLength)));
tickArea.add(new Area(new Rectangle2D.Double(controlPoints[i].x - tickSize / 2, controlPoints[i].y + (rowSpacing - tickHoleLength) / 2, tickSize, tickSize)));
tickHoleArea.add(new Area(new Rectangle2D.Double(controlPoints[i].getX() - tickSize / 2, controlPoints[i].getY() + (rowSpacing - tickHoleLength) / 2, tickSize, tickHoleLength)));
tickArea.add(new Area(new Rectangle2D.Double(controlPoints[i].getX() - tickSize / 2, controlPoints[i].getY() + (rowSpacing - tickHoleLength) / 2, tickSize, tickSize)));
}
break;
case _180:
@@ -285,8 +285,8 @@ public class DIPSwitch extends AbstractTransparentComponent<String> implements I
x -= rowSpacing + (bodyWidth - rowSpacing) / 2;
y -= (pinSpacing / 2) + height - pinSpacing;
for (int i = getSwitchCount().getValue(); i < controlPoints.length; i++) {
tickHoleArea.add(new Area(new Rectangle2D.Double(controlPoints[i].x + (rowSpacing - tickHoleLength) / 2, controlPoints[i].y - tickSize / 2, tickHoleLength, tickSize)));
tickArea.add(new Area(new Rectangle2D.Double(controlPoints[i].x + (rowSpacing + tickHoleLength) / 2 - tickSize, controlPoints[i].y - tickSize / 2, tickSize, tickSize)));
tickHoleArea.add(new Area(new Rectangle2D.Double(controlPoints[i].getX() + (rowSpacing - tickHoleLength) / 2, controlPoints[i].getY() - tickSize / 2, tickHoleLength, tickSize)));
tickArea.add(new Area(new Rectangle2D.Double(controlPoints[i].getX() + (rowSpacing + tickHoleLength) / 2 - tickSize, controlPoints[i].getY() - tickSize / 2, tickSize, tickSize)));
}
break;
case _270:
@@ -295,8 +295,8 @@ public class DIPSwitch extends AbstractTransparentComponent<String> implements I
x -= pinSpacing / 2;
y -= rowSpacing + (bodyWidth - rowSpacing) / 2;
for (int i = getSwitchCount().getValue(); i < controlPoints.length; i++) {
tickHoleArea.add(new Area(new Rectangle2D.Double(controlPoints[i].x - tickSize / 2, controlPoints[i].y + (rowSpacing - tickHoleLength) / 2, tickSize, tickHoleLength)));
tickArea.add(new Area(new Rectangle2D.Double(controlPoints[i].x - tickSize / 2, controlPoints[i].y + (rowSpacing - tickHoleLength) / 2 + tickHoleLength - tickSize, tickSize, tickSize)));
tickHoleArea.add(new Area(new Rectangle2D.Double(controlPoints[i].getX() - tickSize / 2, controlPoints[i].getY() + (rowSpacing - tickHoleLength) / 2, tickSize, tickHoleLength)));
tickArea.add(new Area(new Rectangle2D.Double(controlPoints[i].getX() - tickSize / 2, controlPoints[i].getY() + (rowSpacing - tickHoleLength) / 2 + tickHoleLength - tickSize, tickSize, tickSize)));
}
break;
default:
@@ -319,13 +319,13 @@ public class DIPSwitch extends AbstractTransparentComponent<String> implements I
Area mainArea = getBody()[0];
if (!outlineMode) {
int pinSize = (int) PIN_SIZE.convertToPixels() / 2 * 2;
for (Point point : controlPoints) {
for (Point2D point : controlPoints) {
g2d.setColor(PIN_COLOR);
int pinWidth = getClosestOdd(pinSize / (getOrientation() == Orientation.DEFAULT || getOrientation() == Orientation._180 ? 2f : 1f));
int pinHeight = getClosestOdd(pinSize / (getOrientation() == Orientation.DEFAULT || getOrientation() == Orientation._180 ? 1f : 2f));
g2d.fillRect(point.x - pinWidth / 2, point.y - pinHeight / 2, pinWidth, pinHeight);
g2d.fillRect((int)(point.getX() - pinWidth / 2), (int)(point.getY() - pinHeight / 2), pinWidth, pinHeight);
g2d.setColor(PIN_BORDER_COLOR);
g2d.drawRect(point.x - pinWidth / 2, point.y - pinHeight / 2, pinWidth, pinHeight);
g2d.drawRect((int)(point.getX() - pinWidth / 2), (int)(point.getY() - pinHeight / 2), pinWidth, pinHeight);
}
}
Composite oldComposite = g2d.getComposite();
@@ -407,14 +407,14 @@ public class DIPSwitch extends AbstractTransparentComponent<String> implements I
int textWidth = (int) (rect.getWidth());
// Center text horizontally and vertically
Rectangle bounds = mainArea.getBounds();
int x = bounds.x + (bounds.width - textWidth) / 2;
int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
double x = bounds.getX() + (bounds.width - textWidth) / 2;
double y = bounds.getY() + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
AffineTransform oldTransform = g2d.getTransform();
if (getOrientation() == Orientation.DEFAULT || getOrientation() == Orientation._180) {
int centerX = bounds.x + bounds.width / 2;
int centerY = bounds.y + bounds.height / 2;
double centerX = bounds.getX() + bounds.width / 2;
double centerY = bounds.getY() + bounds.height / 2;
g2d.rotate(-Math.PI / 2, centerX, centerY);
}
@@ -425,7 +425,7 @@ public class DIPSwitch extends AbstractTransparentComponent<String> implements I
g2d.translate(0, textHeight / 2);
}
g2d.drawString(l, x, y);
g2d.drawString(l, (int)x, (int)y);
g2d.setTransform(oldTransform);
}
@@ -26,11 +26,11 @@ import java.awt.Color;
import java.awt.Composite;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Shape;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.diylc.appframework.miscutils.ConfigurationManager;
@@ -69,7 +69,7 @@ public class FuseHolderPanel extends AbstractMultiPartComponent<String> {
private static Color BORDER_COLOR = BODY_COLOR.darker();
private static Color LABEL_COLOR = Color.white;
protected Point[] controlPoints = new Point[] { new Point(0, 0), new Point(0, 0) };
protected Point2D[] controlPoints = new Point2D[] { new Point2D.Double(0, 0), new Point2D.Double(0, 0) };
transient protected Area[] body;
protected String name;
protected String value = "";
@@ -87,14 +87,14 @@ public class FuseHolderPanel extends AbstractMultiPartComponent<String> {
}
private void updateControlPoints() {
Point firstPoint = controlPoints[0];
Point2D firstPoint = controlPoints[0];
int spacing = (int) SPACING.convertToPixels();
controlPoints[1].setLocation(firstPoint.x + (orientation == OrientationHV.HORIZONTAL ? spacing : 0), firstPoint.y + (orientation == OrientationHV.HORIZONTAL ? 0 : spacing));
controlPoints[1].setLocation(firstPoint.getX() + (orientation == OrientationHV.HORIZONTAL ? spacing : 0), firstPoint.getY() + (orientation == OrientationHV.HORIZONTAL ? 0 : spacing));
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@@ -114,7 +114,7 @@ public class FuseHolderPanel extends AbstractMultiPartComponent<String> {
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
controlPoints[index].setLocation(point);
// Reset body shape.
body = null;
@@ -213,13 +213,13 @@ public class FuseHolderPanel extends AbstractMultiPartComponent<String> {
lugWidth = p;
}
for (Point p : controlPoints) {
for (Point2D p : controlPoints) {
if (outlineMode) {
g2d.setColor(theme.getOutlineColor());
g2d.drawRect(p.x - lugWidth / 2, p.y - lugHeight / 2, lugWidth, lugHeight);
g2d.drawRect((int)(p.getX() - lugWidth / 2), (int)(p.getY() - lugHeight / 2), lugWidth, lugHeight);
} else {
g2d.setColor(METAL_COLOR);
g2d.fillRect(p.x - lugWidth / 2, p.y - lugHeight / 2, lugWidth, lugHeight);
g2d.fillRect((int)(p.getX() - lugWidth / 2), (int)(p.getY() - lugHeight / 2), lugWidth, lugHeight);
}
}
@@ -250,9 +250,9 @@ public class FuseHolderPanel extends AbstractMultiPartComponent<String> {
int textWidth = (int) (rect.getWidth());
// Center text horizontally and vertically
Rectangle bounds = body[0].getBounds();
int x = bounds.x + (bounds.width - textWidth) / 2;
int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
g2d.drawString(label, x, y);
double x = bounds.getX() + (bounds.width - textWidth) / 2;
double y = bounds.getY() + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
g2d.drawString(label, (int)x, (int)y);
drawSelectionOutline(g2d, componentState, outlineMode, project, drawingObserver);
}
@@ -260,7 +260,7 @@ public class FuseHolderPanel extends AbstractMultiPartComponent<String> {
@Override
public Area[] getBody() {
if (body == null) {
Point firstPoint = controlPoints[0];
Point2D firstPoint = controlPoints[0];
int spacing = (int) SPACING.convertToPixels();
int outerDiameter = (int) OUTER_DIAMETER.convertToPixels();
int innerDiameter = (int) INNER_DIAMETER.convertToPixels();
@@ -272,8 +272,8 @@ public class FuseHolderPanel extends AbstractMultiPartComponent<String> {
else
dy = spacing / 2;
body = new Area[2];
body[0] = new Area(new Ellipse2D.Double(firstPoint.x + dx - outerDiameter / 2, firstPoint.y + dy - outerDiameter / 2, outerDiameter, outerDiameter));
body[1] = new Area(new Ellipse2D.Double(firstPoint.x + dx - innerDiameter / 2, firstPoint.y + dy - innerDiameter / 2, innerDiameter, innerDiameter));
body[0] = new Area(new Ellipse2D.Double(firstPoint.getX() + dx - outerDiameter / 2, firstPoint.getY() + dy - outerDiameter / 2, outerDiameter, outerDiameter));
body[1] = new Area(new Ellipse2D.Double(firstPoint.getX() + dx - innerDiameter / 2, firstPoint.getY() + dy - innerDiameter / 2, innerDiameter, innerDiameter));
}
return body;
}
@@ -29,6 +29,7 @@ import java.awt.Point;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
@@ -79,7 +80,7 @@ public class IECSocket extends AbstractMultiPartComponent<String> {
private static Color BODY_COLOR = Color.decode("#555555");
private static Color BORDER_COLOR = BODY_COLOR.darker();
protected Point[] controlPoints = new Point[] {new Point(0, 0), new Point(0, 0), new Point(0, 0)};
protected Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0), new Point2D.Double(0, 0), new Point2D.Double(0, 0)};
transient protected Area[] body;
protected String name;
protected String value;
@@ -95,12 +96,12 @@ public class IECSocket extends AbstractMultiPartComponent<String> {
@SuppressWarnings("incomplete-switch")
private void updateControlPoints() {
Point firstPoint = controlPoints[0];
Point2D firstPoint = controlPoints[0];
int hSpacing = (int) HORIZONTAL_SPACING.convertToPixels();
int vSpacing = (int) VERTICAL_SPACING.convertToPixels();
controlPoints[1].setLocation(firstPoint.x - hSpacing, firstPoint.y + vSpacing);
controlPoints[2].setLocation(firstPoint.x + hSpacing, firstPoint.y + vSpacing);
controlPoints[1].setLocation(firstPoint.getX() - hSpacing, firstPoint.getY() + vSpacing);
controlPoints[2].setLocation(firstPoint.getX() + hSpacing, firstPoint.getY() + vSpacing);
if (orientation != Orientation.DEFAULT) {
double theta = 0;
@@ -115,7 +116,7 @@ public class IECSocket extends AbstractMultiPartComponent<String> {
theta = Math.PI * 3 / 2;
break;
}
AffineTransform rotation = AffineTransform.getRotateInstance(theta, firstPoint.x, firstPoint.y);
AffineTransform rotation = AffineTransform.getRotateInstance(theta, firstPoint.getX(), firstPoint.getY());
for (int i = 1; i < controlPoints.length; i++) {
rotation.transform(controlPoints[i], controlPoints[i]);
@@ -124,7 +125,7 @@ public class IECSocket extends AbstractMultiPartComponent<String> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@@ -144,7 +145,7 @@ public class IECSocket extends AbstractMultiPartComponent<String> {
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
controlPoints[index].setLocation(point);
// Reset body shape.
body = null;
@@ -235,13 +236,13 @@ public class IECSocket extends AbstractMultiPartComponent<String> {
lugWidth = p;
}
for (Point p : controlPoints) {
for (Point2D p : controlPoints) {
if (outlineMode) {
g2d.setColor(theme.getOutlineColor());
g2d.drawRect(p.x - lugWidth / 2, p.y - lugHeight / 2, lugWidth, lugHeight);
g2d.drawRect((int)(p.getX() - lugWidth / 2), (int)(p.getY() - lugHeight / 2), lugWidth, lugHeight);
} else {
g2d.setColor(METAL_COLOR);
g2d.fillRect(p.x - lugWidth / 2, p.y - lugHeight / 2, lugWidth, lugHeight);
g2d.fillRect((int)(p.getX() - lugWidth / 2), (int)(p.getY() - lugHeight / 2), lugWidth, lugHeight);
}
}
@@ -251,7 +252,7 @@ public class IECSocket extends AbstractMultiPartComponent<String> {
@SuppressWarnings("incomplete-switch")
public Area[] getBody() {
if (body == null) {
Point firstPoint = controlPoints[0];
Point2D firstPoint = controlPoints[0];
int vSpacing = (int) VERTICAL_SPACING.convertToPixels();
double cutoutRadius;
@@ -278,13 +279,13 @@ public class IECSocket extends AbstractMultiPartComponent<String> {
outerRadius = SIMPLE_OUTER_RADIUS.convertToPixels();
Point[] outerPoints = new Point[] {
new Point((int) Math.round(firstPoint.x), (int) Math.round(firstPoint.y + vSpacing / 2 - baseWidth / 2)),
new Point((int) Math.round(firstPoint.x + baseLength / 2), (int) Math.round(firstPoint.y + vSpacing / 2 - baseWidth / 2)),
new Point((int) Math.round(firstPoint.x + length / 2), (int) Math.round(firstPoint.y + vSpacing / 2)),
new Point((int) Math.round(firstPoint.x + baseLength / 2), (int) Math.round(firstPoint.y + vSpacing / 2 + baseWidth / 2)),
new Point((int) Math.round(firstPoint.x - baseLength / 2), (int) Math.round(firstPoint.y + vSpacing / 2 + baseWidth / 2)),
new Point((int) Math.round(firstPoint.x - length / 2), (int) Math.round(firstPoint.y + vSpacing / 2)),
new Point((int) Math.round(firstPoint.x - baseLength / 2), (int) Math.round(firstPoint.y + vSpacing / 2 - baseWidth / 2)),
new Point((int) Math.round(firstPoint.getX()), (int) Math.round(firstPoint.getY() + vSpacing / 2 - baseWidth / 2)),
new Point((int) Math.round(firstPoint.getX() + baseLength / 2), (int) Math.round(firstPoint.getY() + vSpacing / 2 - baseWidth / 2)),
new Point((int) Math.round(firstPoint.getX() + length / 2), (int) Math.round(firstPoint.getY() + vSpacing / 2)),
new Point((int) Math.round(firstPoint.getX() + baseLength / 2), (int) Math.round(firstPoint.getY() + vSpacing / 2 + baseWidth / 2)),
new Point((int) Math.round(firstPoint.getX() - baseLength / 2), (int) Math.round(firstPoint.getY() + vSpacing / 2 + baseWidth / 2)),
new Point((int) Math.round(firstPoint.getX() - length / 2), (int) Math.round(firstPoint.getY() + vSpacing / 2)),
new Point((int) Math.round(firstPoint.getX() - baseLength / 2), (int) Math.round(firstPoint.getY() + vSpacing / 2 - baseWidth / 2)),
};
double[] outerRadiuses = new double[] {
@@ -297,19 +298,19 @@ public class IECSocket extends AbstractMultiPartComponent<String> {
};
body[0] = new Area(new RoundedPolygon(outerPoints, outerRadiuses));
body[0].subtract(new Area(new Ellipse2D.Double(firstPoint.x - holeSpacing / 2 - holeDiameter / 2, firstPoint.y + vSpacing / 2 - holeDiameter / 2, holeDiameter, holeDiameter)));
body[0].subtract(new Area(new Ellipse2D.Double(firstPoint.x + holeSpacing / 2 - holeDiameter / 2, firstPoint.y + vSpacing / 2 - holeDiameter / 2, holeDiameter, holeDiameter)));
body[0].subtract(new Area(new Ellipse2D.Double(firstPoint.getX() - holeSpacing / 2 - holeDiameter / 2, firstPoint.getY() + vSpacing / 2 - holeDiameter / 2, holeDiameter, holeDiameter)));
body[0].subtract(new Area(new Ellipse2D.Double(firstPoint.getX() + holeSpacing / 2 - holeDiameter / 2, firstPoint.getY() + vSpacing / 2 - holeDiameter / 2, holeDiameter, holeDiameter)));
body[1] = new Area(new RoundRectangle2D.Double(firstPoint.x - baseLength / 2, firstPoint.y + vSpacing / 2 - baseWidth / 2, baseLength, baseWidth, baseRadius, baseRadius));
body[1] = new Area(new RoundRectangle2D.Double(firstPoint.getX() - baseLength / 2, firstPoint.getY() + vSpacing / 2 - baseWidth / 2, baseLength, baseWidth, baseRadius, baseRadius));
Point[] cutoutPoints = new Point[] {
new Point(firstPoint.x, (int) (firstPoint.y + vSpacing / 2 - cutoutWidth / 2)),
new Point((int) (firstPoint.x + cutoutLength / 2 - cutoutSlant), (int) (firstPoint.y + vSpacing / 2 - cutoutWidth / 2)),
new Point((int) (firstPoint.x + cutoutLength / 2), (int) (firstPoint.y + vSpacing / 2 - cutoutWidth / 2 + cutoutSlant)),
new Point((int) (firstPoint.x + cutoutLength / 2), (int) (firstPoint.y + vSpacing / 2 + cutoutWidth / 2)),
new Point((int) (firstPoint.x - cutoutLength / 2), (int) (firstPoint.y + vSpacing / 2 + cutoutWidth / 2)),
new Point((int) (firstPoint.x - cutoutLength / 2), (int) (firstPoint.y + vSpacing / 2 - cutoutWidth / 2 + cutoutSlant)),
new Point((int) (firstPoint.x - cutoutLength / 2 + cutoutSlant), (int) (firstPoint.y + vSpacing / 2 - cutoutWidth / 2)),
Point2D[] cutoutPoints = new Point2D[] {
new Point2D.Double(firstPoint.getX(), firstPoint.getY() + vSpacing / 2 - cutoutWidth / 2),
new Point2D.Double(firstPoint.getX() + cutoutLength / 2 - cutoutSlant, (int) (firstPoint.getY() + vSpacing / 2 - cutoutWidth / 2)),
new Point2D.Double(firstPoint.getX() + cutoutLength / 2, firstPoint.getY() + vSpacing / 2 - cutoutWidth / 2 + cutoutSlant),
new Point2D.Double(firstPoint.getX() + cutoutLength / 2, firstPoint.getY() + vSpacing / 2 + cutoutWidth / 2),
new Point2D.Double(firstPoint.getX() - cutoutLength / 2, firstPoint.getY() + vSpacing / 2 + cutoutWidth / 2),
new Point2D.Double(firstPoint.getX() - cutoutLength / 2, firstPoint.getY() + vSpacing / 2 - cutoutWidth / 2 + cutoutSlant),
new Point2D.Double(firstPoint.getX() - cutoutLength / 2 + cutoutSlant, firstPoint.getY() + vSpacing / 2 - cutoutWidth / 2),
};
double[] cutoutRadiuses = new double[] {
@@ -331,7 +332,7 @@ public class IECSocket extends AbstractMultiPartComponent<String> {
theta = Math.PI * 3 / 2;
break;
}
AffineTransform rotation = AffineTransform.getRotateInstance(theta, firstPoint.x, firstPoint.y);
AffineTransform rotation = AffineTransform.getRotateInstance(theta, firstPoint.getX(), firstPoint.getY());
for (Area a : body)
if (a != null)
a.transform(rotation);
@@ -21,35 +21,35 @@
*/
package org.diylc.components.electromechanical;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.geom.Area;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.geom.Area;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
import org.diylc.appframework.miscutils.ConfigurationManager;
import org.diylc.common.Display;
import org.diylc.common.IPlugInPort;
import org.diylc.common.ObjectCache;
import org.diylc.common.Orientation;
import org.diylc.components.AbstractTransparentComponent;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
import org.diylc.core.Project;
import org.diylc.core.Theme;
import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.measures.Size;
import org.diylc.core.measures.SizeUnit;
import org.diylc.core.measures.Voltage;
import org.diylc.core.measures.VoltageUnit;
import org.diylc.appframework.miscutils.ConfigurationManager;
import org.diylc.common.Display;
import org.diylc.common.IPlugInPort;
import org.diylc.common.ObjectCache;
import org.diylc.common.Orientation;
import org.diylc.components.AbstractTransparentComponent;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
import org.diylc.core.Project;
import org.diylc.core.Theme;
import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.measures.Size;
import org.diylc.core.measures.SizeUnit;
import org.diylc.core.measures.Voltage;
import org.diylc.core.measures.VoltageUnit;
import org.diylc.utils.Constants;
@ComponentDescriptor(name = "Mini Relay", author = "Branislav Stojkovic", category = "Electro-Mechanical",
@@ -85,7 +85,7 @@ public class MiniRelay extends AbstractTransparentComponent<String> {
private String value = "";
private Orientation orientation = Orientation.DEFAULT;
private Point[] controlPoints = new Point[] {new Point(0, 0)};
private Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0)};
protected Display display = Display.NAME;
private RelayType type = RelayType.DPDT;
private RelaySize size = RelaySize.Miniature;
@@ -136,7 +136,7 @@ public class MiniRelay extends AbstractTransparentComponent<String> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@@ -151,13 +151,13 @@ public class MiniRelay extends AbstractTransparentComponent<String> {
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
controlPoints[index].setLocation(point);
body = null;
}
private void updateControlPoints() {
Point firstPoint = controlPoints[0];
Point2D firstPoint = controlPoints[0];
int pinCount = 0;
switch (type) {
case DPDT:
@@ -169,7 +169,7 @@ public class MiniRelay extends AbstractTransparentComponent<String> {
default:
throw new RuntimeException("Unexpected type: " + type);
}
controlPoints = new Point[pinCount];
controlPoints = new Point2D[pinCount];
controlPoints[0] = firstPoint;
int pinSpacing =
size == RelaySize.Miniature ? (int) MINI_PIN_SPACING.convertToPixels() : (int) ULTRA_PIN_SPACING
@@ -218,18 +218,18 @@ public class MiniRelay extends AbstractTransparentComponent<String> {
default:
throw new RuntimeException("Unexpected orientation: " + orientation);
}
controlPoints[i] = new Point(firstPoint.x + dx1, firstPoint.y + dy1);
controlPoints[i + pinCount / 2] = new Point(firstPoint.x + dx2, firstPoint.y + dy2);
controlPoints[i] = new Point2D.Double(firstPoint.getX() + dx1, firstPoint.getY() + dy1);
controlPoints[i + pinCount / 2] = new Point2D.Double(firstPoint.getX() + dx2, firstPoint.getY() + dy2);
}
}
public Area[] getBody() {
if (body == null) {
body = new Area[2];
int x = controlPoints[0].x;
int y = controlPoints[0].y;
int centerX = (controlPoints[0].x + controlPoints[controlPoints.length - 1].x) / 2;
int centerY = (controlPoints[0].y + controlPoints[controlPoints.length - 1].y) / 2;
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
double centerX = (controlPoints[0].getX() + controlPoints[controlPoints.length - 1].getX()) / 2;
double centerY = (controlPoints[0].getY() + controlPoints[controlPoints.length - 1].getY()) / 2;
int bodyMargin = getClosestOdd(BODY_MARGIN.convertToPixels());
int width = 0;
int height = 0;
@@ -308,13 +308,13 @@ public class MiniRelay extends AbstractTransparentComponent<String> {
Theme theme = (Theme) ConfigurationManager.getInstance().readObject(IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME);
int pinSize = (int) PIN_SIZE.convertToPixels() / 2 * 2;
for (Point point : controlPoints) {
for (Point2D point : controlPoints) {
if (!outlineMode) {
g2d.setColor(PIN_COLOR);
g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
g2d.fillOval((int)(point.getX() - pinSize / 2), (int)(point.getY() - pinSize / 2), pinSize, pinSize);
}
g2d.setColor(outlineMode ? theme.getOutlineColor() : PIN_BORDER_COLOR);
g2d.drawOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
g2d.drawOval((int)(point.getX() - pinSize / 2), (int)(point.getY() - pinSize / 2), pinSize, pinSize);
}
Color finalBorderColor;
@@ -367,9 +367,9 @@ public class MiniRelay extends AbstractTransparentComponent<String> {
int textWidth = (int) (rect.getWidth());
// Center text horizontally and vertically
Rectangle bounds = mainArea.getBounds();
int x = bounds.x + (bounds.width - textWidth) / 2;
int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
g2d.drawString(label, x, y);
double x = bounds.getX() + (bounds.width - textWidth) / 2;
double y = bounds.getY() + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
g2d.drawString(label, (int)x, (int)y);
}
@Override
@@ -434,21 +434,21 @@ public class MiniRelay extends AbstractTransparentComponent<String> {
@Override
public Rectangle2D getCachingBounds() {
int minX = Integer.MAX_VALUE;
int maxX = Integer.MIN_VALUE;
int minY = Integer.MAX_VALUE;
int maxY = Integer.MIN_VALUE;
int margin = 50;
double minX = Integer.MAX_VALUE;
double maxX = Integer.MIN_VALUE;
double minY = Integer.MAX_VALUE;
double maxY = Integer.MIN_VALUE;
double margin = 50;
for (int i = 0; i < getControlPointCount(); i++) {
Point p = getControlPoint(i);
if (p.x < minX)
minX = p.x;
if (p.x > maxX)
maxX = p.x;
if (p.y < minY)
minY = p.y;
if (p.y > maxY)
maxY = p.y;
Point2D p = getControlPoint(i);
if (p.getX() < minX)
minX = p.getX();
if (p.getX() > maxX)
maxX = p.getX();
if (p.getY() < minY)
minY = p.getY();
if (p.getY() > maxY)
maxY = p.getY();
}
return new Rectangle2D.Double(minX - margin, minY - margin, maxX - minX + 2 * margin, maxY - minY + 2 * margin);
@@ -25,10 +25,10 @@ import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
@@ -68,7 +68,7 @@ public class MiniToggleSwitch extends AbstractTransparentComponent<ToggleSwitchT
private static Color BORDER_COLOR = BODY_COLOR.darker();
private static Color CIRCLE_COLOR = Color.decode("#FFFFAA");
protected Point[] controlPoints = new Point[] {new Point(0, 0)};
protected Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0)};
transient protected Shape body;
protected ToggleSwitchType switchType = ToggleSwitchType.DPDT;
private OrientationHV orientation = OrientationHV.VERTICAL;
@@ -83,81 +83,85 @@ public class MiniToggleSwitch extends AbstractTransparentComponent<ToggleSwitchT
}
private void updateControlPoints() {
Point firstPoint = controlPoints[0];
Point2D firstPoint = controlPoints[0];
int spacing = (int) getSpacing().convertToPixels();
switch (switchType) {
case SPST:
controlPoints = new Point[] {firstPoint, new Point(firstPoint.x, firstPoint.y + spacing)};
controlPoints = new Point2D[] {firstPoint, new Point2D.Double(firstPoint.getX(), firstPoint.getY() + spacing)};
break;
case SPDT:
case SPDT_off:
controlPoints =
new Point[] {firstPoint, new Point(firstPoint.x, firstPoint.y + spacing),
new Point(firstPoint.x, firstPoint.y + 2 * spacing)};
new Point2D[] {firstPoint, new Point2D.Double(firstPoint.getX(), firstPoint.getY() + spacing),
new Point2D.Double(firstPoint.getX(), firstPoint.getY() + 2 * spacing)};
break;
case DPDT:
case DPDT_off:
controlPoints =
new Point[] {firstPoint, new Point(firstPoint.x, firstPoint.y + spacing),
new Point(firstPoint.x, firstPoint.y + 2 * spacing), new Point(firstPoint.x + spacing, firstPoint.y),
new Point(firstPoint.x + spacing, firstPoint.y + spacing),
new Point(firstPoint.x + spacing, firstPoint.y + 2 * spacing)};
new Point2D[] {firstPoint, new Point2D.Double(firstPoint.getX(), firstPoint.getY() + spacing),
new Point2D.Double(firstPoint.getX(), firstPoint.getY() + 2 * spacing),
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY()),
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY() + spacing),
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY() + 2 * spacing)};
break;
case _DP3T_mustang:
controlPoints =
new Point[] {firstPoint,
new Point(firstPoint.x, firstPoint.y + spacing),
new Point(firstPoint.x, firstPoint.y + 2 * spacing),
new Point(firstPoint.x, firstPoint.y + 3 * spacing),
new Point(firstPoint.x + spacing, firstPoint.y),
new Point(firstPoint.x + spacing, firstPoint.y + spacing),
new Point(firstPoint.x + spacing, firstPoint.y + 2 * spacing),
new Point(firstPoint.x + spacing, firstPoint.y + 3 * spacing)};
new Point2D[] {firstPoint,
new Point2D.Double(firstPoint.getX(), firstPoint.getY() + spacing),
new Point2D.Double(firstPoint.getX(), firstPoint.getY() + 2 * spacing),
new Point2D.Double(firstPoint.getX(), firstPoint.getY() + 3 * spacing),
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY()),
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY() + spacing),
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY() + 2 * spacing),
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY() + 3 * spacing)};
break;
case _3PDT:
case _3PDT_off:
controlPoints =
new Point[] {firstPoint, new Point(firstPoint.x, firstPoint.y + spacing),
new Point(firstPoint.x, firstPoint.y + 2 * spacing), new Point(firstPoint.x + spacing, firstPoint.y),
new Point(firstPoint.x + spacing, firstPoint.y + spacing),
new Point(firstPoint.x + spacing, firstPoint.y + 2 * spacing),
new Point(firstPoint.x + 2 * spacing, firstPoint.y),
new Point(firstPoint.x + 2 * spacing, firstPoint.y + spacing),
new Point(firstPoint.x + 2 * spacing, firstPoint.y + 2 * spacing)};
new Point2D[] {firstPoint, new Point2D.Double(firstPoint.getX(), firstPoint.getY() + spacing),
new Point2D.Double(firstPoint.getX(), firstPoint.getY() + 2 * spacing),
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY()),
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY() + spacing),
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY() + 2 * spacing),
new Point2D.Double(firstPoint.getX() + 2 * spacing, firstPoint.getY()),
new Point2D.Double(firstPoint.getX() + 2 * spacing, firstPoint.getY() + spacing),
new Point2D.Double(firstPoint.getX() + 2 * spacing, firstPoint.getY() + 2 * spacing)};
break;
case _4PDT:
case _4PDT_off:
controlPoints =
new Point[] {firstPoint, new Point(firstPoint.x, firstPoint.y + spacing),
new Point(firstPoint.x, firstPoint.y + 2 * spacing), new Point(firstPoint.x + spacing, firstPoint.y),
new Point(firstPoint.x + spacing, firstPoint.y + spacing),
new Point(firstPoint.x + spacing, firstPoint.y + 2 * spacing),
new Point(firstPoint.x + 2 * spacing, firstPoint.y),
new Point(firstPoint.x + 2 * spacing, firstPoint.y + spacing),
new Point(firstPoint.x + 2 * spacing, firstPoint.y + 2 * spacing),
new Point(firstPoint.x + 3 * spacing, firstPoint.y),
new Point(firstPoint.x + 3 * spacing, firstPoint.y + spacing),
new Point(firstPoint.x + 3 * spacing, firstPoint.y + 2 * spacing)};
new Point2D[] {firstPoint, new Point2D.Double(firstPoint.getX(), firstPoint.getY() + spacing),
new Point2D.Double(firstPoint.getX(), firstPoint.getY() + 2 * spacing),
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY()),
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY() + spacing),
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY() + 2 * spacing),
new Point2D.Double(firstPoint.getX() + 2 * spacing, firstPoint.getY()),
new Point2D.Double(firstPoint.getX() + 2 * spacing, firstPoint.getY() + spacing),
new Point2D.Double(firstPoint.getX() + 2 * spacing, firstPoint.getY() + 2 * spacing),
new Point2D.Double(firstPoint.getX() + 3 * spacing, firstPoint.getY()),
new Point2D.Double(firstPoint.getX() + 3 * spacing, firstPoint.getY() + spacing),
new Point2D.Double(firstPoint.getX() + 3 * spacing, firstPoint.getY() + 2 * spacing)};
break;
case _5PDT:
case _5PDT_off:
controlPoints =
new Point[] {firstPoint, new Point(firstPoint.x, firstPoint.y + spacing),
new Point(firstPoint.x, firstPoint.y + 2 * spacing), new Point(firstPoint.x + spacing, firstPoint.y),
new Point(firstPoint.x + spacing, firstPoint.y + spacing),
new Point(firstPoint.x + spacing, firstPoint.y + 2 * spacing),
new Point(firstPoint.x + 2 * spacing, firstPoint.y),
new Point(firstPoint.x + 2 * spacing, firstPoint.y + spacing),
new Point(firstPoint.x + 2 * spacing, firstPoint.y + 2 * spacing),
new Point(firstPoint.x + 3 * spacing, firstPoint.y),
new Point(firstPoint.x + 3 * spacing, firstPoint.y + spacing),
new Point(firstPoint.x + 3 * spacing, firstPoint.y + 2 * spacing),
new Point(firstPoint.x + 4 * spacing, firstPoint.y),
new Point(firstPoint.x + 4 * spacing, firstPoint.y + spacing),
new Point(firstPoint.x + 4 * spacing, firstPoint.y + 2 * spacing)};
new Point2D[] {firstPoint, new Point2D.Double(firstPoint.getX(), firstPoint.getY() + spacing),
new Point2D.Double(firstPoint.getX(), firstPoint.getY() + 2 * spacing),
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY()),
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY() + spacing),
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY() + 2 * spacing),
new Point2D.Double(firstPoint.getX() + 2 * spacing, firstPoint.getY()),
new Point2D.Double(firstPoint.getX() + 2 * spacing, firstPoint.getY() + spacing),
new Point2D.Double(firstPoint.getX() + 2 * spacing, firstPoint.getY() + 2 * spacing),
new Point2D.Double(firstPoint.getX() + 3 * spacing, firstPoint.getY()),
new Point2D.Double(firstPoint.getX() + 3 * spacing, firstPoint.getY() + spacing),
new Point2D.Double(firstPoint.getX() + 3 * spacing, firstPoint.getY() + 2 * spacing),
new Point2D.Double(firstPoint.getX() + 4 * spacing, firstPoint.getY()),
new Point2D.Double(firstPoint.getX() + 4 * spacing, firstPoint.getY() + spacing),
new Point2D.Double(firstPoint.getX() + 4 * spacing, firstPoint.getY() + 2 * spacing)};
break;
}
AffineTransform xform = AffineTransform.getRotateInstance(-Math.PI / 2, firstPoint.x, firstPoint.y);
AffineTransform xform = AffineTransform.getRotateInstance(-Math.PI / 2, firstPoint.getX(), firstPoint.getY());
if (getOrientation() == OrientationHV.HORIZONTAL) {
for (int i = 1; i < controlPoints.length; i++) {
xform.transform(controlPoints[i], controlPoints[i]);
@@ -166,7 +170,7 @@ public class MiniToggleSwitch extends AbstractTransparentComponent<ToggleSwitchT
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@@ -186,7 +190,7 @@ public class MiniToggleSwitch extends AbstractTransparentComponent<ToggleSwitchT
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
controlPoints[index].setLocation(point);
// Reset body shape.
body = null;
@@ -285,68 +289,68 @@ public class MiniToggleSwitch extends AbstractTransparentComponent<ToggleSwitchT
int circleDiameter = getClosestOdd((int) CIRCLE_SIZE.convertToPixels());
int lugWidth = getClosestOdd((int) LUG_WIDTH.convertToPixels());
int lugHeight = getClosestOdd((int) LUG_THICKNESS.convertToPixels());
for (Point p : controlPoints) {
for (Point2D p : controlPoints) {
if (outlineMode) {
g2d.setColor(theme.getOutlineColor());
g2d.drawRect(p.x - lugWidth / 2, p.y - lugHeight / 2, lugWidth, lugHeight);
g2d.drawRect((int)(p.getX() - lugWidth / 2), (int)(p.getY() - lugHeight / 2), lugWidth, lugHeight);
} else {
g2d.setColor(CIRCLE_COLOR);
g2d.fillOval(p.x - circleDiameter / 2, p.y - circleDiameter / 2, circleDiameter, circleDiameter);
g2d.fillOval((int)(p.getX() - circleDiameter / 2), (int)(p.getY() - circleDiameter / 2), circleDiameter, circleDiameter);
g2d.setColor(METAL_COLOR);
g2d.fillRect(p.x - lugWidth / 2, p.y - lugHeight / 2, lugWidth, lugHeight);
g2d.fillRect((int)(p.getX() - lugWidth / 2), (int)(p.getY() - lugHeight / 2), lugWidth, lugHeight);
}
}
}
public Shape getBody() {
if (body == null) {
Point firstPoint = controlPoints[0];
Point2D firstPoint = controlPoints[0];
int margin = (int) MARGIN.convertToPixels();
int spacing = (int) getSpacing().convertToPixels();
switch (switchType) {
case SPST:
body =
new RoundRectangle2D.Double(firstPoint.x - margin, firstPoint.y - margin, 2 * margin, 2 * margin
new RoundRectangle2D.Double(firstPoint.getX() - margin, firstPoint.getY() - margin, 2 * margin, 2 * margin
+ spacing, margin, margin);
break;
case SPDT:
case SPDT_off:
body =
new RoundRectangle2D.Double(firstPoint.x - margin, firstPoint.y - margin, 2 * margin, 2 * margin + 2
new RoundRectangle2D.Double(firstPoint.getX() - margin, firstPoint.getY() - margin, 2 * margin, 2 * margin + 2
* spacing, margin, margin);
break;
case DPDT:
case DPDT_off:
body =
new RoundRectangle2D.Double(firstPoint.x - margin, firstPoint.y - margin, 2 * margin + spacing, 2
new RoundRectangle2D.Double(firstPoint.getX() - margin, firstPoint.getY() - margin, 2 * margin + spacing, 2
* margin + 2 * spacing, margin, margin);
break;
case _DP3T_mustang:
body =
new RoundRectangle2D.Double(firstPoint.x - margin, firstPoint.y - margin, 2 * margin + spacing, 2
new RoundRectangle2D.Double(firstPoint.getX() - margin, firstPoint.getY() - margin, 2 * margin + spacing, 2
* margin + 3 * spacing, margin, margin);
break;
case _3PDT:
case _3PDT_off:
body =
new RoundRectangle2D.Double(firstPoint.x - margin, firstPoint.y - margin, 2 * margin + 2 * spacing, 2
new RoundRectangle2D.Double(firstPoint.getX() - margin, firstPoint.getY() - margin, 2 * margin + 2 * spacing, 2
* margin + 2 * spacing, margin, margin);
break;
case _4PDT:
case _4PDT_off:
body =
new RoundRectangle2D.Double(firstPoint.x - margin, firstPoint.y - margin, 2 * margin + 3 * spacing, 2
new RoundRectangle2D.Double(firstPoint.getX() - margin, firstPoint.getY() - margin, 2 * margin + 3 * spacing, 2
* margin + 2 * spacing, margin, margin);
break;
case _5PDT:
case _5PDT_off:
body =
new RoundRectangle2D.Double(firstPoint.x - margin, firstPoint.y - margin, 2 * margin + 4 * spacing, 2
new RoundRectangle2D.Double(firstPoint.getX() - margin, firstPoint.getY() - margin, 2 * margin + 4 * spacing, 2
* margin + 2 * spacing, margin, margin);
break;
}
if (getOrientation() == OrientationHV.HORIZONTAL) {
AffineTransform xform = AffineTransform.getRotateInstance(-Math.PI / 2, firstPoint.x, firstPoint.y);
AffineTransform xform = AffineTransform.getRotateInstance(-Math.PI / 2, firstPoint.getX(), firstPoint.getY());
body = new Area(body);
((Area) body).transform(xform);
}
@@ -30,6 +30,7 @@ import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
@@ -77,7 +78,7 @@ public class OpenJack1_4 extends AbstractMultiPartComponent<String> {
private static Size HOLE_TO_EDGE = new Size(0.063d, SizeUnit.in);
private String value = "";
private Point[] controlPoints = new Point[] {new Point(0, 0), new Point(0, 0), new Point(0, 0)};
private Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0), new Point2D.Double(0, 0), new Point2D.Double(0, 0)};
transient Area[] body;
@Deprecated
private Orientation orientation = Orientation.DEFAULT;
@@ -161,27 +162,27 @@ public class OpenJack1_4 extends AbstractMultiPartComponent<String> {
g2d.setFont(project.getFont().deriveFont(project.getFont().getSize2D() * 0.8f));
int springLength = (int) SPRING_LENGTH.convertToPixels();
int holeToEdge = (int) HOLE_TO_EDGE.convertToPixels();
int centerY = controlPoints[0].y + springLength - holeToEdge;
Point tipLabel = new Point(controlPoints[0].x, (int) (controlPoints[0].y + holeToEdge * 1.25));
AffineTransform ringTransform = AffineTransform.getRotateInstance(getType() == OpenJackType.SWITCHED ? SWITCH_THETA : RING_THETA, controlPoints[0].x, centerY);
AffineTransform sleeveTransform = AffineTransform.getRotateInstance(getType() == OpenJackType.SWITCHED ? SLEEVE_SWITCHED_THETA : SLEEVE_THETA, controlPoints[0].x, centerY);
double centerY = controlPoints[0].getY() + springLength - holeToEdge;
Point2D tipLabel = new Point2D.Double(controlPoints[0].getX(), (int) (controlPoints[0].getY() + holeToEdge * 1.25));
AffineTransform ringTransform = AffineTransform.getRotateInstance(getType() == OpenJackType.SWITCHED ? SWITCH_THETA : RING_THETA, controlPoints[0].getX(), centerY);
AffineTransform sleeveTransform = AffineTransform.getRotateInstance(getType() == OpenJackType.SWITCHED ? SLEEVE_SWITCHED_THETA : SLEEVE_THETA, controlPoints[0].getX(), centerY);
Point ringOrSwitchLabel = new Point(0, 0);
Point sleeveLabel = new Point(0, 0);
ringTransform.transform(tipLabel, ringOrSwitchLabel);
sleeveTransform.transform(tipLabel, sleeveLabel);
if (getTheta() != 0) {
AffineTransform rotation = AffineTransform.getRotateInstance(getTheta(), controlPoints[0].x, controlPoints[0].y);
AffineTransform rotation = AffineTransform.getRotateInstance(getTheta(), controlPoints[0].getX(), controlPoints[0].getY());
rotation.transform(tipLabel, tipLabel);
rotation.transform(ringOrSwitchLabel, ringOrSwitchLabel);
rotation.transform(sleeveLabel, sleeveLabel);
}
StringUtils.drawCenteredText(g2d, "T", tipLabel.x, tipLabel.y, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
StringUtils.drawCenteredText(g2d, "S", sleeveLabel.x, sleeveLabel.y, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
StringUtils.drawCenteredText(g2d, "T", tipLabel.getX(), tipLabel.getY(), HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
StringUtils.drawCenteredText(g2d, "S", sleeveLabel.getX(), sleeveLabel.getY(), HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
if (getType() == OpenJackType.STEREO)
StringUtils.drawCenteredText(g2d, "R", ringOrSwitchLabel.x, ringOrSwitchLabel.y, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
StringUtils.drawCenteredText(g2d, "R", ringOrSwitchLabel.getX(), ringOrSwitchLabel.getY(), HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
if (getType() == OpenJackType.SWITCHED)
StringUtils.drawCenteredText(g2d, "Sw", ringOrSwitchLabel.x, ringOrSwitchLabel.y, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
StringUtils.drawCenteredText(g2d, "Sw", ringOrSwitchLabel.getX(), ringOrSwitchLabel.getY(), HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
}
drawSelectionOutline(g2d, componentState, outlineMode, project, drawingObserver);
@@ -191,8 +192,8 @@ public class OpenJack1_4 extends AbstractMultiPartComponent<String> {
if (body == null) {
body = new Area[4];
int x = controlPoints[0].x;
int y = controlPoints[0].y;
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
int outerDiameter = getClosestOdd(OUTER_DIAMETER.convertToPixels());
int innerDiameter = getClosestOdd(INNER_DIAMETER.convertToPixels());
int ringDiameter = getClosestOdd(RING_DIAMETER.convertToPixels());
@@ -201,7 +202,7 @@ public class OpenJack1_4 extends AbstractMultiPartComponent<String> {
int holeDiameter = getClosestOdd(HOLE_DIAMETER.convertToPixels());
int holeToEdge = (int) HOLE_TO_EDGE.convertToPixels();
int centerY = y + springLength - holeToEdge;
double centerY = y + springLength - holeToEdge;
Area wafer =
new Area(new Ellipse2D.Double(x - outerDiameter / 2, centerY - outerDiameter / 2, outerDiameter,
@@ -264,13 +265,13 @@ public class OpenJack1_4 extends AbstractMultiPartComponent<String> {
}
private void updateControlPoints() {
int x = controlPoints[0].x;
int y = controlPoints[0].y;
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
int springLength = (int) SPRING_LENGTH.convertToPixels();
int holeToEdge = (int) HOLE_TO_EDGE.convertToPixels();
int centerY = y + springLength - holeToEdge;
double centerY = y + springLength - holeToEdge;
AffineTransform.getRotateInstance(getType() == OpenJackType.SWITCHED ? SLEEVE_SWITCHED_THETA : SLEEVE_THETA, x, centerY).transform(controlPoints[0], controlPoints[1]);
AffineTransform.getRotateInstance(getType() == OpenJackType.SWITCHED ? SWITCH_THETA : RING_THETA, x, centerY).transform(controlPoints[0], controlPoints[2]);
@@ -278,7 +279,7 @@ public class OpenJack1_4 extends AbstractMultiPartComponent<String> {
// Rotate if needed
if (getTheta() != 0) {
AffineTransform rotation = AffineTransform.getRotateInstance(getTheta(), x, y);
for (Point point : controlPoints) {
for (Point2D point : controlPoints) {
rotation.transform(point, point);
}
}
@@ -328,12 +329,12 @@ public class OpenJack1_4 extends AbstractMultiPartComponent<String> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
this.controlPoints[index].setLocation(point);
// Invalidate the body
body = null;
@@ -25,12 +25,12 @@ import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Path2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
@@ -76,7 +76,7 @@ public class PilotLampHolder extends AbstractMultiPartComponent<String> {
private static Size HOLE_SPACING = new Size(0.1d, SizeUnit.in);
private String value = "";
private Point[] controlPoints = new Point[] { new Point(0, 0), new Point(0, 0), new Point(0, 0), new Point(0, 0) };
private Point2D[] controlPoints = new Point2D[] { new Point2D.Double(0, 0), new Point2D.Double(0, 0), new Point2D.Double(0, 0), new Point2D.Double(0, 0) };
transient Area[] body;
@Deprecated
private Orientation orientation = Orientation.DEFAULT;
@@ -162,8 +162,8 @@ public class PilotLampHolder extends AbstractMultiPartComponent<String> {
if (body == null) {
body = new Area[6];
int x = controlPoints[0].x;
int y = controlPoints[0].y;
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
int threadOuterDiameter = getClosestOdd(THREAD_OUTER_DIAMETER.convertToPixels());
int threadThickness = getClosestOdd(THREAD_THICKNESS.convertToPixels());
int nutDiameter = getClosestOdd(NUT_DIAMETER.convertToPixels());
@@ -175,7 +175,7 @@ public class PilotLampHolder extends AbstractMultiPartComponent<String> {
int holeDiameter = getClosestOdd(HOLE_DIAMETER.convertToPixels());
int holeToEdge = (int) HOLE_TO_EDGE.convertToPixels();
int centerY = y + springLength - holeToEdge;
double centerY = y + springLength - holeToEdge;
Area wafer =
new Area(new Ellipse2D.Double(x - waferDiameter / 2, centerY - waferDiameter / 2, waferDiameter,
@@ -244,34 +244,34 @@ public class PilotLampHolder extends AbstractMultiPartComponent<String> {
}
for (int i = 1; i <= 2; i++)
for (Point p : controlPoints)
body[i].subtract(new Area(new Ellipse2D.Double(p.x - holeDiameter / 2, p.y - holeDiameter / 2, holeDiameter, holeDiameter)));
for (Point2D p : controlPoints)
body[i].subtract(new Area(new Ellipse2D.Double(p.getX() - holeDiameter / 2, p.getY() - holeDiameter / 2, holeDiameter, holeDiameter)));
}
return body;
}
private void updateControlPoints() {
int x = controlPoints[0].x;
int y = controlPoints[0].y;
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
int springLength = (int) SPRING_LENGTH.convertToPixels();
int holeToEdge = (int) HOLE_TO_EDGE.convertToPixels();
int holeSpacing = (int) HOLE_SPACING.convertToPixels();
int centerY = y + springLength - holeToEdge;
double centerY = y + springLength - holeToEdge;
AffineTransform rotation = AffineTransform.getRotateInstance(Math.PI * 0.295, x, centerY);
rotation.transform(controlPoints[0], controlPoints[1]);
controlPoints[2].setLocation(controlPoints[0].x, controlPoints[0].y + holeSpacing);
controlPoints[2].setLocation(controlPoints[0].getX(), controlPoints[0].getY() + holeSpacing);
rotation.transform(controlPoints[2], controlPoints[3]);
// Rotate if needed
if (getTheta() != 0) {
rotation = AffineTransform.getRotateInstance(getTheta(), x, y);
for (Point point : controlPoints) {
for (Point2D point : controlPoints) {
rotation.transform(point, point);
}
}
@@ -365,12 +365,12 @@ public class PilotLampHolder extends AbstractMultiPartComponent<String> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
this.controlPoints[index].setLocation(point);
// Invalidate the body
body = null;
@@ -29,6 +29,7 @@ import java.awt.Point;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.diylc.appframework.miscutils.ConfigurationManager;
@@ -65,7 +66,7 @@ public class PinHeader extends AbstractTransparentComponent<Void> {
private Orientation orientation = Orientation.DEFAULT;
private Point[] controlPoints = new Point[] {new Point(0, 0)};
private Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0)};
private int rowCount = 2;
private int columnCount = 5;
private Size spacing = PIN_SPACING;
@@ -99,7 +100,7 @@ public class PinHeader extends AbstractTransparentComponent<Void> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@@ -114,26 +115,26 @@ public class PinHeader extends AbstractTransparentComponent<Void> {
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
controlPoints[index].setLocation(point);
body = null;
}
private void updateControlPoints() {
Point firstPoint = controlPoints[0];
Point2D firstPoint = controlPoints[0];
int pinCount = rowCount * columnCount;
controlPoints = new Point[pinCount];
controlPoints = new Point2D[pinCount];
controlPoints[0] = firstPoint;
double pinSpacing = spacing.convertToPixels();
for (int i = 0; i < columnCount; i++)
for (int j = 0; j < rowCount; j++)
controlPoints[i + j * columnCount] = new Point((int)Math.round(firstPoint.x + j * pinSpacing), (int)Math.round(firstPoint.y + i * pinSpacing));
controlPoints[i + j * columnCount] = new Point((int)Math.round(firstPoint.getX() + j * pinSpacing), (int)Math.round(firstPoint.getY() + i * pinSpacing));
// Apply rotation if necessary
double angle = getAngle();
if (angle != 0) {
AffineTransform rotation = AffineTransform.getRotateInstance(angle, controlPoints[0].x, controlPoints[0].y);
AffineTransform rotation = AffineTransform.getRotateInstance(angle, controlPoints[0].getX(), controlPoints[0].getY());
for (int i = 1; i < controlPoints.length; i++) {
rotation.transform(controlPoints[i], controlPoints[i]);
}
@@ -163,11 +164,11 @@ public class PinHeader extends AbstractTransparentComponent<Void> {
public Area[] getBody() {
if (body == null) {
body = new Area[2];
int centerX = (controlPoints[0].x + controlPoints[controlPoints.length - 1].x) / 2;
int centerY = (controlPoints[0].y + controlPoints[controlPoints.length - 1].y) / 2;
double centerX = (controlPoints[0].getX() + controlPoints[controlPoints.length - 1].getX()) / 2;
double centerY = (controlPoints[0].getY() + controlPoints[controlPoints.length - 1].getY()) / 2;
double pinSpacing = spacing.convertToPixels();
double width = Math.abs((controlPoints[0].x - controlPoints[controlPoints.length - 1].x)) + pinSpacing;
double height = Math.abs((controlPoints[0].y - controlPoints[controlPoints.length - 1].y)) + pinSpacing;
double width = Math.abs((controlPoints[0].getX() - controlPoints[controlPoints.length - 1].getX())) + pinSpacing;
double height = Math.abs((controlPoints[0].getY() - controlPoints[controlPoints.length - 1].getY())) + pinSpacing;
if (shrouded) {
if (orientation == Orientation.DEFAULT || orientation == Orientation._180) {
height += 2 * pinSpacing;
@@ -236,13 +237,13 @@ public class PinHeader extends AbstractTransparentComponent<Void> {
Theme theme = (Theme) ConfigurationManager.getInstance().readObject(IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME);
int pinSize = (int) PIN_SIZE.convertToPixels() / 2 * 2;
for (Point point : controlPoints) {
for (Point2D point : controlPoints) {
if (!outlineMode) {
g2d.setColor(PIN_COLOR);
g2d.fillRect(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
g2d.fillRect((int)(point.getX() - pinSize / 2), (int)(point.getY() - pinSize / 2), pinSize, pinSize);
}
g2d.setColor(outlineMode ? theme.getOutlineColor() : PIN_BORDER_COLOR);
g2d.drawRect(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
g2d.drawRect((int)(point.getX() - pinSize / 2), (int)(point.getY() - pinSize / 2), pinSize, pinSize);
}
Color finalBorderColor;
@@ -358,21 +359,21 @@ public class PinHeader extends AbstractTransparentComponent<Void> {
@Override
public Rectangle2D getCachingBounds() {
int minX = Integer.MAX_VALUE;
int maxX = Integer.MIN_VALUE;
int minY = Integer.MAX_VALUE;
int maxY = Integer.MIN_VALUE;
double minX = Integer.MAX_VALUE;
double maxX = Integer.MIN_VALUE;
double minY = Integer.MAX_VALUE;
double maxY = Integer.MIN_VALUE;
int margin = 50;
for (int i = 0; i < getControlPointCount(); i++) {
Point p = getControlPoint(i);
if (p.x < minX)
minX = p.x;
if (p.x > maxX)
maxX = p.x;
if (p.y < minY)
minY = p.y;
if (p.y > maxY)
maxY = p.y;
Point2D p = getControlPoint(i);
if (p.getX() < minX)
minX = p.getX();
if (p.getX() > maxX)
maxX = p.getX();
if (p.getY() < minY)
minY = p.getY();
if (p.getY() > maxY)
maxY = p.getY();
}
return new Rectangle2D.Double(minX - margin, minY - margin, maxX - minX + 2 * margin, maxY - minY + 2 * margin);
@@ -25,11 +25,10 @@ import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Shape;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.diylc.appframework.miscutils.ConfigurationManager;
@@ -67,7 +66,7 @@ public class PlasticDCJack extends AbstractMultiPartComponent<String> {
private static Color BORDER_COLOR = Color.black;
private static Color MARKING_COLOR = Color.lightGray;
private Point[] controlPoints = new Point[] {new Point(0, 0), new Point(0, 0), new Point(0, 0)};
private Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0), new Point2D.Double(0, 0), new Point2D.Double(0, 0)};
private String value = "";
private DCPolarity polarity = DCPolarity.CENTER_NEGATIVE;
transient private Area[] body;
@@ -80,12 +79,12 @@ public class PlasticDCJack extends AbstractMultiPartComponent<String> {
// invalidate body shape
body = null;
int x = controlPoints[0].x;
int y = controlPoints[0].y;
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
int spacing = (int) SPACING.convertToPixels();
controlPoints[1] = new Point(x + spacing, y + spacing);
controlPoints[2] = new Point(x - spacing, y + spacing * 2);
controlPoints[1] = new Point2D.Double(x + spacing, y + spacing);
controlPoints[2] = new Point2D.Double(x - spacing, y + spacing * 2);
}
@Override
@@ -93,36 +92,36 @@ public class PlasticDCJack extends AbstractMultiPartComponent<String> {
if (body == null) {
body = new Area[4];
int x = controlPoints[0].x;
int y = controlPoints[0].y;
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
int spacing = (int) SPACING.convertToPixels();
int diameter = getClosestOdd(DIAMETER.convertToPixels());
body[0] = new Area(new Ellipse2D.Double(x - diameter / 2, y + spacing - diameter / 2, diameter, diameter));
int rectWidth = (int) (diameter / Math.sqrt(2)) - 2;
body[1] = new Area(new Rectangle(x - rectWidth / 2, y + spacing - rectWidth / 2, rectWidth, rectWidth));
body[1] = new Area(new Rectangle2D.Double(x - rectWidth / 2, y + spacing - rectWidth / 2, rectWidth, rectWidth));
int lugWidth = getClosestOdd(LUG_WIDTH.convertToPixels());
int lugThickness = getClosestOdd(LUG_THICKNESS.convertToPixels());
Point groundPoint = controlPoints[controlPoints.length - 1];
Point2D groundPoint = controlPoints[controlPoints.length - 1];
Area groundLug =
new Area(new Ellipse2D.Double(groundPoint.x + spacing - lugWidth / 2, groundPoint.y - lugWidth / 2, lugWidth,
new Area(new Ellipse2D.Double(groundPoint.getX() + spacing - lugWidth / 2, groundPoint.getY() - lugWidth / 2, lugWidth,
lugWidth));
groundLug.add(new Area(new Rectangle(groundPoint.x, groundPoint.y - lugWidth / 2, spacing, lugWidth)));
groundLug.subtract(new Area(new Ellipse2D.Double(groundPoint.x + spacing - lugWidth / 6, groundPoint.y - lugWidth
groundLug.add(new Area(new Rectangle2D.Double(groundPoint.getX(), groundPoint.getY() - lugWidth / 2, spacing, lugWidth)));
groundLug.subtract(new Area(new Ellipse2D.Double(groundPoint.getX() + spacing - lugWidth / 6, groundPoint.getY() - lugWidth
/ 6, lugWidth / 3, lugWidth / 3)));
body[2] = groundLug;
Area lugArea = new Area();
for (int i = 0; i < controlPoints.length; i++) {
Point point = controlPoints[i];
Point2D point = controlPoints[i];
if (i == getControlPointCount() - 1) {
lugArea.add(new Area(
new Rectangle(point.x - lugThickness / 2, point.y - lugWidth / 2, lugThickness, lugWidth)));
new Rectangle2D.Double(point.getX() - lugThickness / 2, point.getY() - lugWidth / 2, lugThickness, lugWidth)));
} else {
lugArea.add(new Area(
new Rectangle(point.x - lugWidth / 2, point.y - lugThickness / 2, lugWidth, lugThickness)));
new Rectangle2D.Double(point.getX() - lugWidth / 2, point.getY() - lugThickness / 2, lugWidth, lugThickness)));
}
}
body[3] = lugArea;
@@ -184,10 +183,10 @@ public class PlasticDCJack extends AbstractMultiPartComponent<String> {
int spacing = (int) SPACING.convertToPixels();
g2d.setColor(MARKING_COLOR);
g2d.setFont(project.getFont().deriveFont(12f));
StringUtils.drawCenteredText(g2d, getPolarity() == DCPolarity.CENTER_NEGATIVE ? "+" : "-", controlPoints[0].x,
controlPoints[0].y - spacing * 7 / 16, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
StringUtils.drawCenteredText(g2d, getPolarity() == DCPolarity.CENTER_NEGATIVE ? "_" : "+", controlPoints[2].x,
controlPoints[2].y - spacing * 3 / 4, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
StringUtils.drawCenteredText(g2d, getPolarity() == DCPolarity.CENTER_NEGATIVE ? "+" : "-", controlPoints[0].getX(),
controlPoints[0].getY() - spacing * 7 / 16, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
StringUtils.drawCenteredText(g2d, getPolarity() == DCPolarity.CENTER_NEGATIVE ? "_" : "+", controlPoints[2].getX(),
controlPoints[2].getY() - spacing * 3 / 4, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
}
drawSelectionOutline(g2d, componentState, outlineMode, project, drawingObserver);
@@ -222,12 +221,12 @@ public class PlasticDCJack extends AbstractMultiPartComponent<String> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
controlPoints[index].setLocation(point);
this.body = null;
}
@@ -25,7 +25,6 @@ import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
@@ -71,7 +70,7 @@ public class RCAJack extends AbstractMultiPartComponent<String> {
private static Size HOLE_TO_EDGE = new Size(0.063d, SizeUnit.in);
private String value = "";
private Point[] controlPoints = new Point[] {new Point(0, 0), new Point(0, 0) };
private Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0), new Point2D.Double(0, 0) };
transient Area[] body;
private Orientation orientation = Orientation.DEFAULT;
@@ -147,10 +146,10 @@ public class RCAJack extends AbstractMultiPartComponent<String> {
if (body == null) {
body = new Area[4];
int x0 = controlPoints[0].x;
int y0 = controlPoints[0].y;
int x1 = controlPoints[1].x;
int y1 = controlPoints[1].y;
double x0 = controlPoints[0].getX();
double y0 = controlPoints[0].getY();
double x1 = controlPoints[1].getX();
double y1 = controlPoints[1].getY();
int bodyDiameter = getClosestOdd(BODY_DIAMETER.convertToPixels());
int waferDiameter = getClosestOdd(WAFER_DIAMETER.convertToPixels());
int springWidth = (int) SPRING_WIDTH.convertToPixels();
@@ -202,13 +201,13 @@ public class RCAJack extends AbstractMultiPartComponent<String> {
@SuppressWarnings("incomplete-switch")
private void updateControlPoints() {
int x = controlPoints[0].x;
int y = controlPoints[0].y;
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
int springLength = (int) SPRING_LENGTH.convertToPixels();
int holeToEdge = (int) HOLE_TO_EDGE.convertToPixels();
int centerY = y + springLength - holeToEdge;
double centerY = y + springLength - holeToEdge;
controlPoints[1].setLocation(x, centerY);
@@ -284,12 +283,12 @@ public class RCAJack extends AbstractMultiPartComponent<String> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
this.controlPoints[index].setLocation(point);
// Invalidate the body
body = null;
@@ -22,11 +22,11 @@ import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
@@ -73,8 +73,8 @@ public class RotarySelectorSwitch extends AbstractMultiPartComponent<String> {
private static Size HOLE_DIAMETER = new Size(2.5d, SizeUnit.mm);
private String value = "";
private Point[] controlPoints = new Point[] {new Point(0, 0), new Point(0, 0), new Point(0, 0),
new Point(0, 0), new Point(0, 0)};
private Point2D[] controlPoints = 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)};
transient Area[] body;
private Orientation orientation = Orientation.DEFAULT;
private boolean showLabels = true;
@@ -154,8 +154,8 @@ public class RotarySelectorSwitch extends AbstractMultiPartComponent<String> {
g2d.setFont(project.getFont().deriveFont(project.getFont().getSize2D() * 0.8f));
for (int i = 2; i < body.length; i++) {
Rectangle2D bounds = body[i].getBounds2D();
int x = (int) ((bounds.getCenterX() + controlPoints[i - 2].x) / 2);
int y = (int) ((bounds.getCenterY() + controlPoints[i - 2].y) / 2);
double x = (int) ((bounds.getCenterX() + controlPoints[i - 2].getX()) / 2);
double y = (int) ((bounds.getCenterY() + controlPoints[i - 2].getY()) / 2);
StringUtils.drawCenteredText(g2d, i == 2 ? "C" : String.valueOf(i - 2), x, y,
HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
}
@@ -168,8 +168,8 @@ public class RotarySelectorSwitch extends AbstractMultiPartComponent<String> {
if (body == null) {
body = new Area[3 + getPositionCount().getCount()];
int x = controlPoints[0].x;
int y = controlPoints[0].y;
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
int outerDiameter = getClosestOdd(OUTER_DIAMETER.convertToPixels());
int innerDiameter = getClosestOdd(INNER_DIAMETER.convertToPixels());
int springLength = (int) TERMINAL_LENGTH.convertToPixels();
@@ -177,7 +177,7 @@ public class RotarySelectorSwitch extends AbstractMultiPartComponent<String> {
int holeDiameter = getClosestOdd(HOLE_DIAMETER.convertToPixels());
int holeDistance = (int) HOLE_DISTANCE.convertToPixels();
int centerY = y - holeDistance;
double centerY = y - holeDistance;
Area main = new Area(new Ellipse2D.Double(x - outerDiameter / 2, centerY - outerDiameter / 2,
outerDiameter, outerDiameter));
@@ -218,12 +218,12 @@ public class RotarySelectorSwitch extends AbstractMultiPartComponent<String> {
}
private void updateControlPoints() {
int x = controlPoints[0].x;
int y = controlPoints[0].y;
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
int holeDistance = (int) HOLE_DISTANCE.convertToPixels();
int centerY = y - holeDistance;
double centerY = y - holeDistance;
for (int i = 1; i < controlPoints.length; i++) {
double theta = -i * Math.PI / 4;
@@ -236,7 +236,7 @@ public class RotarySelectorSwitch extends AbstractMultiPartComponent<String> {
// Rotate if needed
if (theta != 0) {
AffineTransform rotation = AffineTransform.getRotateInstance(theta, x, y);
for (Point point : controlPoints) {
for (Point2D point : controlPoints) {
rotation.transform(point, point);
}
}
@@ -292,12 +292,12 @@ public class RotarySelectorSwitch extends AbstractMultiPartComponent<String> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
this.controlPoints[index].setLocation(point);
// Invalidate the body
body = null;
@@ -20,11 +20,11 @@ package org.diylc.components.guitar;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.diylc.appframework.miscutils.ConfigurationManager;
@@ -56,8 +56,8 @@ public abstract class AbstractGuitarPickup extends AbstractTransparentComponent<
protected Orientation orientation = Orientation.DEFAULT;
protected transient Shape[] body;
protected Point controlPoint = new Point(0, 0);
protected Point[] controlPoints = new Point[] {new Point(0, 0), new Point(0, 0), new Point(0, 0), new Point(0, 0)};
protected Point2D controlPoint = new Point2D.Double(0, 0);
protected Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0), new Point2D.Double(0, 0), new Point2D.Double(0, 0), new Point2D.Double(0, 0)};
protected Polarity polarity = Polarity.North;
@@ -68,7 +68,7 @@ public abstract class AbstractGuitarPickup extends AbstractTransparentComponent<
}
protected void drawlTerminalLabels(Graphics2D g2d, Color color, Project project) {
Point[] points = getControlPoints();
Point2D[] points = getControlPoints();
g2d.setColor(color);
g2d.setFont(project.getFont().deriveFont(TERMINAL_FONT_SIZE * 1f));
@@ -93,8 +93,8 @@ public abstract class AbstractGuitarPickup extends AbstractTransparentComponent<
break;
}
StringUtils.drawCenteredText(g2d, "N", (points[0].x + points[1].x) / 2 + dx, (points[0].y + points[1].y) / 2 + dy, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
StringUtils.drawCenteredText(g2d, "S", (points[2].x + points[3].x) / 2 + dx, (points[2].y + points[3].y) / 2 + dy, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
StringUtils.drawCenteredText(g2d, "N", (points[0].getX() + points[1].getX()) / 2 + dx, (points[0].getY() + points[1].getY()) / 2 + dy, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
StringUtils.drawCenteredText(g2d, "S", (points[2].getX() + points[3].getX()) / 2 + dx, (points[2].getY() + points[3].getY()) / 2 + dy, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
}
protected void drawMainLabel(Graphics2D g2d, Project project, boolean outlineMode, ComponentState componentState) {
@@ -115,7 +115,7 @@ public abstract class AbstractGuitarPickup extends AbstractTransparentComponent<
Rectangle bounds = getBody()[0].getBounds();
AffineTransform originalTx = g2d.getTransform();
g2d.translate(bounds.x + bounds.width / 2, bounds.y + bounds.height / 2);
g2d.translate(bounds.getX() + bounds.width / 2, bounds.getY() + bounds.height / 2);
if (orientation == Orientation._90)
g2d.rotate(Math.PI / 2);
else if (orientation == Orientation._270){
@@ -159,11 +159,11 @@ public abstract class AbstractGuitarPickup extends AbstractTransparentComponent<
updateControlPoints();
}
protected Point[] getControlPoints() {
protected Point2D[] getControlPoints() {
if (controlPoints == null) {
controlPoints =
new Point[] {controlPoint, new Point(controlPoint.x, controlPoint.y),
new Point(controlPoint.x, controlPoint.y), new Point(controlPoint.x, controlPoint.y)};
new Point2D[] {controlPoint, new Point2D.Double(controlPoint.getX(), controlPoint.getY()),
new Point2D.Double(controlPoint.getX(), controlPoint.getY()), new Point2D.Double(controlPoint.getX(), controlPoint.getY())};
updateControlPoints();
}
return controlPoints;
@@ -181,12 +181,12 @@ public abstract class AbstractGuitarPickup extends AbstractTransparentComponent<
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return getControlPoints()[index];
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
getControlPoints()[index].setLocation(point);
// Invalidate the body
body = null;
@@ -225,7 +225,7 @@ public abstract class AbstractGuitarPickup extends AbstractTransparentComponent<
@SuppressWarnings("incomplete-switch")
protected void updateControlPoints() {
Point[] points = getControlPoints();
Point2D[] points = getControlPoints();
int pointSpacing = (int) POINT_SPACING.convertToPixels();
int dx = getControlPointDirection() == OrientationHV.HORIZONTAL ? 1 : 0;
int dy = getControlPointDirection() == OrientationHV.HORIZONTAL ? 0 : 1;
@@ -245,11 +245,11 @@ public abstract class AbstractGuitarPickup extends AbstractTransparentComponent<
break;
}
}
points[1].setLocation(points[0].x + dx * pointSpacing, points[0].y + dy * pointSpacing);
points[1].setLocation(points[0].getX() + dx * pointSpacing, points[0].getY() + dy * pointSpacing);
points[2]
.setLocation(points[0].x + 2 * dx * pointSpacing, points[0].y + 2 * dy * pointSpacing);
.setLocation(points[0].getX() + 2 * dx * pointSpacing, points[0].getY() + 2 * dy * pointSpacing);
points[3]
.setLocation(points[0].x + 3 * dx * pointSpacing, points[0].y + 3 * dy * pointSpacing);
.setLocation(points[0].getX() + 3 * dx * pointSpacing, points[0].getY() + 3 * dy * pointSpacing);
}
@Override
@@ -19,7 +19,7 @@ package org.diylc.components.guitar;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.Point2D;
import org.diylc.awt.StringUtils;
import org.diylc.common.HorizontalAlignment;
@@ -35,7 +35,7 @@ public abstract class AbstractSingleOrHumbuckerPickup extends AbstractGuitarPick
@Override
protected void drawlTerminalLabels(Graphics2D g2d, Color color, Project project) {
Point[] points = getControlPoints();
Point2D[] points = getControlPoints();
g2d.setColor(color);
g2d.setFont(project.getFont().deriveFont(TERMINAL_FONT_SIZE * 1f));
@@ -61,11 +61,11 @@ public abstract class AbstractSingleOrHumbuckerPickup extends AbstractGuitarPick
}
if (getPolarity() == Polarity.North || getPolarity() == Polarity.South) {
StringUtils.drawCenteredText(g2d, getPolarity().name().substring(0, 1), (points[1].x + points[2].x) / 2 + dx, (points[1].y + points[2].y) / 2 + dy, HorizontalAlignment.CENTER,
StringUtils.drawCenteredText(g2d, getPolarity().name().substring(0, 1), (points[1].getX() + points[2].getX()) / 2 + dx, (points[1].getY() + points[2].getY()) / 2 + dy, HorizontalAlignment.CENTER,
VerticalAlignment.CENTER);
} else {
StringUtils.drawCenteredText(g2d, "N", (points[0].x + points[1].x) / 2 + dx, (points[0].y + points[1].y) / 2 + dy, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
StringUtils.drawCenteredText(g2d, "S", (points[2].x + points[3].x) / 2 + dx, (points[2].y + points[3].y) / 2 + dy, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
StringUtils.drawCenteredText(g2d, "N", (points[0].getX() + points[1].getX()) / 2 + dx, (points[0].getY() + points[1].getY()) / 2 + dy, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
StringUtils.drawCenteredText(g2d, "S", (points[2].getX() + points[3].getX()) / 2 + dx, (points[2].getY() + points[3].getY()) / 2 + dy, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
}
}
@@ -21,13 +21,13 @@ import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Shape;
import java.awt.Stroke;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Path2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
@@ -187,9 +187,9 @@ public class HumbuckerPickup extends AbstractGuitarPickup {
if (body == null) {
body = new Shape[7];
Point[] points = getControlPoints();
int x = points[0].x;
int y = points[0].y;
Point2D[] points = getControlPoints();
double x = points[0].getX();
double y = points[0].getY();
int width = (int) getType().getWidth().convertToPixels();
int length = (int) getType().getLength().convertToPixels();
int lipWidth = (int) LIP_WIDTH.convertToPixels();
@@ -25,11 +25,11 @@ import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
import java.awt.geom.RoundRectangle2D;
import org.diylc.appframework.miscutils.ConfigurationManager;
@@ -144,9 +144,9 @@ public class JazzBassPickup extends AbstractSingleOrHumbuckerPickup {
if (body == null) {
body = new Shape[4];
Point[] points = getControlPoints();
int x = points[0].x;
int y = points[0].y;
Point2D[] points = getControlPoints();
double x = points[0].getX();
double y = points[0].getY();
int width = (int) WIDTH.convertToPixels();
int length = (int) LENGTH.convertToPixels();
int edgeRadius = (int) EDGE_RADIUS.convertToPixels();
@@ -21,33 +21,33 @@
*/
package org.diylc.components.guitar;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.GeneralPath;
import java.awt.geom.Rectangle2D;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.GeneralPath;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.diylc.appframework.miscutils.ConfigurationManager;
import org.diylc.common.IPlugInPort;
import org.diylc.common.ObjectCache;
import org.diylc.common.Orientation;
import org.diylc.components.AbstractTransparentComponent;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
import org.diylc.appframework.miscutils.ConfigurationManager;
import org.diylc.common.IPlugInPort;
import org.diylc.common.ObjectCache;
import org.diylc.common.Orientation;
import org.diylc.components.AbstractTransparentComponent;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
import org.diylc.core.ISwitch;
import org.diylc.core.Project;
import org.diylc.core.Theme;
import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.measures.Size;
import org.diylc.core.measures.SizeUnit;
import org.diylc.core.Project;
import org.diylc.core.Theme;
import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.measures.Size;
import org.diylc.core.measures.SizeUnit;
import org.diylc.utils.Constants;
@ComponentDescriptor(name = "LP Toggle Switch", category = "Guitar", author = "Branislav Stojkovic",
@@ -66,7 +66,7 @@ public class LPSwitch extends AbstractTransparentComponent<String> implements IS
private static Size TERMINAL_SPACING = new Size(0.2d, SizeUnit.in);
private String value = "";
private Point[] controlPoints = new Point[] {new Point(0, 0), new Point(0, 0), new Point(0, 0), new Point(0, 0)};
private Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0), new Point2D.Double(0, 0), new Point2D.Double(0, 0), new Point2D.Double(0, 0)};
transient Shape[] body;
private Orientation orientation = Orientation.DEFAULT;
@@ -135,8 +135,8 @@ public class LPSwitch extends AbstractTransparentComponent<String> implements IS
if (body == null) {
body = new Shape[3];
int x = controlPoints[0].x;
int y = controlPoints[0].y;
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
int baseLength = (int) BASE_LENGTH.convertToPixels();
int length = (int) LENGTH.convertToPixels();
int waferThickness = getClosestOdd(WAFER_THICKNESS.convertToPixels());
@@ -145,7 +145,7 @@ public class LPSwitch extends AbstractTransparentComponent<String> implements IS
new Rectangle2D.Double(x - waferThickness / 2, y, waferThickness - 1, baseLength + (length - baseLength) / 2);
body[0] = new Area(ground);
int bodyY = y + (length - baseLength) / 2;
double bodyY = y + (length - baseLength) / 2;
Area waferArea = new Area();//new Area(new Rectangle2D.Double(x - waferThickness * 3 / 2, bodyY, waferThickness, baseLength));
waferArea.add(new Area(new Rectangle2D.Double(x + waferThickness / 2, bodyY, waferThickness *3, baseLength)));
@@ -215,8 +215,8 @@ public class LPSwitch extends AbstractTransparentComponent<String> implements IS
@SuppressWarnings("incomplete-switch")
private void updateControlPoints() {
int x = controlPoints[0].x;
int y = controlPoints[0].y;
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
int terminalSpacing = (int) TERMINAL_SPACING.convertToPixels();
int length = (int) LENGTH.convertToPixels();
@@ -239,7 +239,7 @@ public class LPSwitch extends AbstractTransparentComponent<String> implements IS
break;
}
AffineTransform rotation = AffineTransform.getRotateInstance(theta, x, y);
for (Point point : controlPoints) {
for (Point2D point : controlPoints) {
rotation.transform(point, point);
}
}
@@ -290,12 +290,12 @@ public class LPSwitch extends AbstractTransparentComponent<String> implements IS
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
this.controlPoints[index].setLocation(point);
// Invalidate the body
body = null;
@@ -25,11 +25,11 @@ import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
@@ -77,7 +77,7 @@ public class LeverSwitch extends AbstractTransparentComponent<String> implements
private static Size TERMINAL_SPACING = new Size(0.1d, SizeUnit.in);
private String value = "";
private Point[] controlPoints = new Point[] {new Point(0, 0)};
private Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0)};
transient Shape[] body;
private Orientation orientation = Orientation.DEFAULT;
private LeverSwitchType type = LeverSwitchType.DP3T;
@@ -147,7 +147,7 @@ public class LeverSwitch extends AbstractTransparentComponent<String> implements
// g2d.setColor(Color.black);
// for(int i = 0; i < getControlPointCount(); i++) {
// g2d.drawString(i + "", controlPoints[i].x, controlPoints[i].y);
// g2d.drawString(i + "", controlPoints[i].getX(), controlPoints[i].getY());
// }
}
@@ -156,8 +156,8 @@ public class LeverSwitch extends AbstractTransparentComponent<String> implements
if (body == null) {
body = new Shape[4];
int x = controlPoints[0].x;
int y = controlPoints[0].y;
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
int baseWidth = (int) BASE_WIDTH.convertToPixels();
int baseLength = (int) BASE_LENGTH.convertToPixels();
int holeSize = getClosestOdd(HOLE_SIZE.convertToPixels());
@@ -177,8 +177,8 @@ public class LeverSwitch extends AbstractTransparentComponent<String> implements
yOffset = 12;
}
int baseX = x - terminalLength / 2 - waferSpacing;
int baseY = y - (baseLength - terminalSpacing * yOffset) / 2;
double baseX = x - terminalLength / 2 - waferSpacing;
double baseY = y - (baseLength - terminalSpacing * yOffset) / 2;
Area baseArea = new Area(new Rectangle2D.Double(baseX, baseY, baseWidth, baseLength));
baseArea.subtract(new Area(new Ellipse2D.Double(baseX + baseWidth / 2 - holeSize / 2, baseY
+ (baseLength - holeSpacing) / 2 - holeSize / 2, holeSize, holeSize)));
@@ -217,15 +217,15 @@ public class LeverSwitch extends AbstractTransparentComponent<String> implements
Area terminalArea = new Area();
Area commonTerminalArea = new Area();
for (int i = 0; i < controlPoints.length; i++) {
Point point = controlPoints[i];
Point2D point = controlPoints[i];
Area terminal =
new Area(new RoundRectangle2D.Double(point.x - terminalLength / 2, point.y - terminalWidth / 2,
new Area(new RoundRectangle2D.Double(point.getX() - terminalLength / 2, point.getY() - terminalWidth / 2,
terminalLength, terminalWidth, terminalWidth / 2, terminalWidth / 2));
terminal.subtract(new Area(new RoundRectangle2D.Double(point.x - terminalLength / 4, point.y - terminalWidth
terminal.subtract(new Area(new RoundRectangle2D.Double(point.getX() - terminalLength / 4, point.getY() - terminalWidth
/ 4, terminalLength / 2, terminalWidth / 2, terminalWidth / 2, terminalWidth / 2)));
// Rotate the terminal if needed
if (theta != 0) {
AffineTransform rotation = AffineTransform.getRotateInstance(theta, point.x, point.y);
AffineTransform rotation = AffineTransform.getRotateInstance(theta, point.getX(), point.getY());
terminal.transform(rotation);
}
terminalArea.add(terminal);
@@ -242,7 +242,7 @@ public class LeverSwitch extends AbstractTransparentComponent<String> implements
// Rotate if needed
if (theta != 0) {
AffineTransform rotation = AffineTransform.getRotateInstance(theta, controlPoints[0].x, controlPoints[0].y);
AffineTransform rotation = AffineTransform.getRotateInstance(theta, controlPoints[0].getX(), controlPoints[0].getY());
// Skip the last two because terminals are already rotated
for (int i = 0; i < body.length - 2; i++) {
Shape shape = body[i];
@@ -256,8 +256,8 @@ public class LeverSwitch extends AbstractTransparentComponent<String> implements
@SuppressWarnings("incomplete-switch")
private void updateControlPoints() {
int x = controlPoints[0].x;
int y = controlPoints[0].y;
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
int waferSpacing = (int) WAFER_SPACING.convertToPixels();
int terminalSpacing = (int) TERMINAL_SPACING.convertToPixels();
int terminalLength = (int) TERMINAL_LENGTH.convertToPixels();
@@ -265,28 +265,28 @@ public class LeverSwitch extends AbstractTransparentComponent<String> implements
switch (type) {
case DP3T:
case DP3T_5pos:
controlPoints = new Point[8];
controlPoints = new Point2D[8];
for (int i = 0; i < 8; i++) {
controlPoints[i] = new Point(x + (i % 2 == 1 ? terminalLength : 0), y + i * terminalSpacing);
controlPoints[i] = new Point2D.Double(x + (i % 2 == 1 ? terminalLength : 0), y + i * terminalSpacing);
}
break;
case DP4T:
controlPoints = new Point[10];
controlPoints = new Point2D[10];
for (int i = 0; i < 10; i++) {
controlPoints[i] = new Point(x + (i % 2 == 1 ? terminalLength : 0), y + i * terminalSpacing);
controlPoints[i] = new Point2D.Double(x + (i % 2 == 1 ? terminalLength : 0), y + i * terminalSpacing);
}
break;
case DP5T:
controlPoints = new Point[12];
controlPoints = new Point2D[12];
for (int i = 0; i < 12; i++) {
controlPoints[i] = new Point(x, y + i * terminalSpacing + (i >= 6 ? terminalSpacing : 0));
controlPoints[i] = new Point2D.Double(x, y + i * terminalSpacing + (i >= 6 ? terminalSpacing : 0));
}
break;
case _4P5T:
controlPoints = new Point[24];
controlPoints = new Point2D[24];
for (int i = 0; i < 12; i++) {
controlPoints[i] = new Point(x, y + i * terminalSpacing + (i >= 6 ? terminalSpacing : 0));
controlPoints[i + 12] = new Point(x + waferSpacing, y + i * terminalSpacing + (i >= 6 ? terminalSpacing : 0));
controlPoints[i] = new Point2D.Double(x, y + i * terminalSpacing + (i >= 6 ? terminalSpacing : 0));
controlPoints[i + 12] = new Point2D.Double(x + waferSpacing, y + i * terminalSpacing + (i >= 6 ? terminalSpacing : 0));
}
break;
}
@@ -306,7 +306,7 @@ public class LeverSwitch extends AbstractTransparentComponent<String> implements
break;
}
AffineTransform rotation = AffineTransform.getRotateInstance(theta, x, y);
for (Point point : controlPoints) {
for (Point2D point : controlPoints) {
rotation.transform(point, point);
}
}
@@ -360,12 +360,12 @@ public class LeverSwitch extends AbstractTransparentComponent<String> implements
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
this.controlPoints[index].setLocation(point);
// Invalidate the body
body = null;
@@ -25,13 +25,13 @@ import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Polygon;
import java.awt.Rectangle;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
import java.awt.geom.RoundRectangle2D;
import org.diylc.appframework.miscutils.ConfigurationManager;
@@ -195,9 +195,9 @@ public class P90Pickup extends AbstractSingleOrHumbuckerPickup {
if (body == null) {
body = new Shape[4];
Point[] points = getControlPoints();
int x = points[0].x;
int y = points[0].y;
Point2D[] points = getControlPoints();
double x = points[0].getX();
double y = points[0].getY();
int width = (int) getType().getWidth().convertToPixels();
int length = (int) getType().getLength().convertToPixels();
int edgeRadius = (int) getType().getEdgeRadius().convertToPixels();
@@ -25,11 +25,11 @@ import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
import java.awt.geom.RoundRectangle2D;
import org.diylc.appframework.miscutils.ConfigurationManager;
@@ -142,9 +142,9 @@ public class PBassPickup extends AbstractSingleOrHumbuckerPickup {
if (body == null) {
body = new Shape[4];
Point[] points = getControlPoints();
int x = points[0].x;
int y = points[0].y;
Point2D[] points = getControlPoints();
double x = points[0].getX();
double y = points[0].getY();
int width = (int) WIDTH.convertToPixels();
int length = (int) LENGTH.convertToPixels();
int edgeRadius = (int) EDGE_RADIUS.convertToPixels();
@@ -25,11 +25,11 @@ import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
@@ -186,9 +186,9 @@ public class SingleCoilPickup extends AbstractSingleOrHumbuckerPickup {
if (body == null) {
body = new Shape[5];
Point[] points = getControlPoints();
int x = (points[0].x + points[3].x) / 2;
int y = (points[0].y + points[3].y) / 2;;
Point2D[] points = getControlPoints();
double x = (points[0].getX() + points[3].getX()) / 2;
double y = (points[0].getY() + points[3].getY()) / 2;;
int width = (int) WIDTH.convertToPixels();
int length = (int) LENGTH.convertToPixels();
int stratInnerLength = (int) STRAT_INNER_LENGTH.convertToPixels();
@@ -327,9 +327,9 @@ public class SingleCoilPickup extends AbstractSingleOrHumbuckerPickup {
body[1] = new Area();
double lugHole = getClosestOdd(lugDiameter * 0.4);
for (int i = getPolarity() == Polarity.Humbucking ? 0 : 1; i < (getPolarity() == Polarity.Humbucking ? 4 : 3); i++) {
Point p = points[i];
((Area)body[1]).add(new Area(new Ellipse2D.Double(p.x - lugDiameter / 2, p.y - lugDiameter / 2, lugDiameter, lugDiameter)));
((Area)body[1]).subtract(new Area(new Ellipse2D.Double(p.x - lugHole / 2, p.y - lugHole / 2, lugHole, lugHole)));
Point2D p = points[i];
((Area)body[1]).add(new Area(new Ellipse2D.Double(p.getX() - lugDiameter / 2, p.getY() - lugDiameter / 2, lugDiameter, lugDiameter)));
((Area)body[1]).subtract(new Area(new Ellipse2D.Double(p.getX() - lugHole / 2, p.getY() - lugHole / 2, lugHole, lugHole)));
}
}
return body;
@@ -21,27 +21,27 @@
*/
package org.diylc.components.misc;
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.Rectangle2D;
import java.util.Iterator;
import java.util.List;
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.util.Iterator;
import java.util.List;
import org.diylc.components.AbstractComponent;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
import org.diylc.core.Project;
import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.BomPolicy;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.measures.Size;
import org.diylc.core.measures.SizeUnit;
import org.diylc.utils.BomEntry;
import org.diylc.components.AbstractComponent;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
import org.diylc.core.Project;
import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.BomPolicy;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.measures.Size;
import org.diylc.core.measures.SizeUnit;
import org.diylc.utils.BomEntry;
import org.diylc.utils.BomMaker;
@ComponentDescriptor(name = "Bill of Materials", author = "Branislav Stojkovic", category = "Misc", description = "",
@@ -57,7 +57,7 @@ public class BOM extends AbstractComponent<Void> {
private static final long serialVersionUID = 1L;
private Size size = DEFAULT_SIZE;
private Point point = new Point(0, 0);
private Point2D point = new Point2D.Double(0, 0);
private Color color = COLOR;
@Override
@@ -116,7 +116,7 @@ public class BOM extends AbstractComponent<Void> {
int columnWidth = (int) size.convertToPixels() / columnCount;
int entriesPerColumn = (int) Math.ceil(1.d * bom.size() / columnCount);
if (entriesPerColumn == 0) {
g2d.drawString(DEFAULT_TEXT, point.x, point.y);
g2d.drawString(DEFAULT_TEXT, (int)point.getX(), (int)point.getY());
return;
}
for (int i = 0; i < bom.size(); i++) {
@@ -129,8 +129,8 @@ public class BOM extends AbstractComponent<Void> {
}
int columnIndex = i / entriesPerColumn;
int rowIndex = i % entriesPerColumn;
int x = point.x + columnIndex * columnWidth;
int y = point.y + rowIndex * maxHeight;
int x = (int)(point.getX() + columnIndex * columnWidth);
int y = (int)(point.getY() + rowIndex * maxHeight);
g2d.drawString(entry.getName(), x, y);
x += maxNameWidth + SPACING.convertToPixels();
g2d.drawString(valueStr, x, y);
@@ -176,7 +176,7 @@ public class BOM extends AbstractComponent<Void> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return point;
}
@@ -191,7 +191,7 @@ public class BOM extends AbstractComponent<Void> {
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
this.point.setLocation(point);
}
@@ -23,8 +23,8 @@ package org.diylc.components.misc;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Polygon;
import java.awt.geom.Point2D;
import org.diylc.common.ObjectCache;
import org.diylc.common.Orientation;
@@ -50,7 +50,7 @@ public class GroundSymbol extends AbstractComponent<Void> {
public static Color COLOR = Color.black;
public static Size SIZE = new Size(0.15d, SizeUnit.in);
private Point point = new Point(0, 0);
private Point2D point = new Point2D.Double(0, 0);
private Color color = COLOR;
private Size size = SIZE;
private GroundSymbolType type = GroundSymbolType.DEFAULT;
@@ -60,35 +60,35 @@ public class GroundSymbol extends AbstractComponent<Void> {
@Override
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
IDrawingObserver drawingObserver) {
int sizePx = (int) size.convertToPixels();
double sizePx = size.convertToPixels();
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
g2d.setColor(color);
int x = point.x;
int y = point.y;
double x = point.getX();
double y = point.getY();
switch (getOrientation()) {
case _90:
g2d.rotate(Math.PI / 2, point.x, point.y);
g2d.rotate(Math.PI / 2, point.getX(), point.getY());
break;
case _180:
g2d.rotate(Math.PI, point.x, point.y);
g2d.rotate(Math.PI, point.getX(), point.getY());
break;
case _270:
g2d.rotate(Math.PI * 3 / 2, point.x, point.y);
g2d.rotate(Math.PI * 3 / 2, point.getX(), point.getY());
break;
}
g2d.drawLine(x, y, x, y + sizePx / 6);
g2d.drawLine((int)x, (int)y, (int)x, (int)(y + sizePx / 6));
if (type == GroundSymbolType.DEFAULT) {
int delta = sizePx / 7;
double delta = sizePx / 7;
for (int i = 0; i < 5; i++) {
g2d.drawLine(x - sizePx / 2 + delta * i, y + sizePx / 6 * (i + 1), x + sizePx / 2 - delta * i, y + sizePx / 6
* (i + 1));
g2d.drawLine((int)(x - sizePx / 2 + delta * i), (int)(y + sizePx / 6 * (i + 1)), (int)(x + sizePx / 2 - delta * i), (int)(y + sizePx / 6
* (i + 1)));
}
} else {
Polygon poly =
new Polygon(new int[] {x - sizePx / 2, x + sizePx / 2, x}, new int[] {y + sizePx / 6, y + sizePx / 6,
y + sizePx}, 3);
new Polygon(new int[] {(int)(x - sizePx / 2), (int)(x + sizePx / 2), (int)x}, new int[] {(int)(y + sizePx / 6), (int)(y + sizePx / 6),
(int)(y + sizePx)}, 3);
g2d.draw(poly);
}
}
@@ -126,7 +126,7 @@ public class GroundSymbol extends AbstractComponent<Void> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return point;
}
@@ -159,7 +159,7 @@ public class GroundSymbol extends AbstractComponent<Void> {
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
this.point.setLocation(point);
}
//
@@ -20,8 +20,8 @@ package org.diylc.components.misc;
import java.awt.AlphaComposite;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Shape;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
@@ -47,7 +47,6 @@ import org.diylc.core.annotations.PercentEditor;
import com.thoughtworks.xstream.annotations.XStreamConverter;
@ComponentDescriptor(name = "Image", author = "Branislav Stojkovic", category = "Misc",
description = "User defined image", instanceNamePrefix = "Img", zOrder = IDIYComponent.COMPONENT,
flexibleZOrder = true, bomPolicy = BomPolicy.NEVER_SHOW)
@@ -57,6 +56,9 @@ public class Image extends AbstractTransparentComponent<Void> {
public static String DEFAULT_TEXT = "Double click to edit text";
private static ImageIcon ICON;
private static byte DEFAULT_SCALE = 25;
private Point2D point = new Point2D.Double(0, 0);
private Point2D secondPoint = null;
static {
String name = "image.png";
@@ -69,10 +71,7 @@ public class Image extends AbstractTransparentComponent<Void> {
@Override
public String getControlPointNodeName(int index) {
return null;
}
private Point point = new Point(0, 0);
private Point secondPoint = null;
}
@XStreamConverter(IconImageConverter.class)
@Deprecated
@@ -99,9 +98,9 @@ public class Image extends AbstractTransparentComponent<Void> {
if (getSizingMode() == ImageSizingMode.Scale) {
scaleX = scaleY = 1d * getScale() / DEFAULT_SCALE;
} else {
Point secondPoint = getControlPoint(1);
scaleX = 1d * Math.abs(point.x - secondPoint.x) / imageIcon.getIconWidth();
scaleY = 1d * Math.abs(point.y - secondPoint.y) / imageIcon.getIconHeight();
Point2D secondPoint = getControlPoint(1);
scaleX = 1d * Math.abs(point.getX() - secondPoint.getX()) / imageIcon.getIconWidth();
scaleY = 1d * Math.abs(point.getY() - secondPoint.getY()) / imageIcon.getIconHeight();
}
Shape clip = g2d.getClip().getBounds();
@@ -114,16 +113,16 @@ public class Image extends AbstractTransparentComponent<Void> {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
}
int x;
int y;
double x;
double y;
if (getSizingMode() == ImageSizingMode.Scale)
{
x = point.x;
y = point.y;
x = point.getX();
y = point.getY();
} else {
Point secondPoint = getControlPoint(1);
x = Math.min(point.x, secondPoint.x);
y = Math.min(point.y, secondPoint.y);
Point2D secondPoint = getControlPoint(1);
x = Math.min(point.getX(), secondPoint.getX());
y = Math.min(point.getY(), secondPoint.getY());
}
g2d.scale(scaleX, scaleY);
@@ -133,13 +132,13 @@ public class Image extends AbstractTransparentComponent<Void> {
g2d.scale(1 / scaleX, 1 / scaleY);
g2d.setColor(SELECTION_COLOR);
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1f));
g2d.drawRect(x, y, (int) (imageIcon.getIconWidth() * scaleX), (int) (imageIcon.getIconHeight() * scaleY));
g2d.drawRect((int)x, (int)y, (int) (imageIcon.getIconWidth() * scaleX), (int) (imageIcon.getIconHeight() * scaleY));
}
}
@Override
public void drawIcon(Graphics2D g2d, int width, int height) {
g2d.drawImage(ICON.getImage(), point.x, point.y, null);
g2d.drawImage(ICON.getImage(), (int)point.getX(), (int)point.getY(), null);
}
@Override
@@ -148,12 +147,12 @@ public class Image extends AbstractTransparentComponent<Void> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
if (index == 0)
return point;
if (secondPoint == null) {
ImageIcon imageIcon = getImage();
secondPoint = new Point(point.x + imageIcon.getIconWidth(), point.y + imageIcon.getIconHeight());
secondPoint = new Point2D.Double(point.getX() + imageIcon.getIconWidth(), point.getY() + imageIcon.getIconHeight());
}
return secondPoint;
}
@@ -169,14 +168,14 @@ public class Image extends AbstractTransparentComponent<Void> {
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
if (index == 0) {
this.point.setLocation(point);
this.point.setLocation(point.getX(), point.getY());
} else {
if (secondPoint == null)
secondPoint = new Point(point);
secondPoint = new Point2D.Double(point.getX(), point.getY());
else
secondPoint.setLocation(point);
secondPoint.setLocation(point.getX(), point.getY());
}
}
@@ -208,7 +207,7 @@ public class Image extends AbstractTransparentComponent<Void> {
this.image = null;
if (getSizingMode() == ImageSizingMode.TwoPoints) {
ImageIcon imageIcon = getImage();
setControlPoint(new Point(point.x + imageIcon.getIconWidth(), point.y + imageIcon.getIconHeight()), 1);
setControlPoint(new Point2D.Double(point.getX() + imageIcon.getIconWidth(), point.getY() + imageIcon.getIconHeight()), 1);
}
}
@@ -21,25 +21,25 @@
*/
package org.diylc.components.misc;
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.Rectangle2D;
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.diylc.common.HorizontalAlignment;
import org.diylc.common.Orientation;
import org.diylc.common.VerticalAlignment;
import org.diylc.components.AbstractComponent;
import org.diylc.common.HorizontalAlignment;
import org.diylc.common.Orientation;
import org.diylc.common.VerticalAlignment;
import org.diylc.components.AbstractComponent;
import org.diylc.components.transform.TextTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
import org.diylc.core.Project;
import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.BomPolicy;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
import org.diylc.core.Project;
import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.BomPolicy;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
@ComponentDescriptor(name = "Label", author = "Branislav Stojkovic", category = "Misc",
@@ -51,7 +51,7 @@ public class Label extends AbstractComponent<String> {
private static final long serialVersionUID = 1L;
private Point point = new Point(0, 0);
private Point2D point = new Point2D.Double(0, 0);
private String text = DEFAULT_TEXT;
private Font font = LABEL_FONT;
private Color color = LABEL_COLOR;
@@ -74,30 +74,30 @@ public class Label extends AbstractComponent<String> {
int textHeight = (int) rect.getHeight();
int textWidth = (int) rect.getWidth();
int x = point.x;
int y = point.y;
double x = point.getX();
double y = point.getY();
switch (getVerticalAlignment()) {
case CENTER:
y = point.y - textHeight / 2 + fontMetrics.getAscent();
y = point.getY() - textHeight / 2 + fontMetrics.getAscent();
break;
case TOP:
y = point.y - textHeight + fontMetrics.getAscent();
y = point.getY() - textHeight + fontMetrics.getAscent();
break;
case BOTTOM:
y = point.y + fontMetrics.getAscent();
y = point.getY() + fontMetrics.getAscent();
break;
default:
throw new RuntimeException("Unexpected alignment: " + getVerticalAlignment());
}
switch (getHorizontalAlignment()) {
case CENTER:
x = point.x - textWidth / 2;
x = point.getX() - textWidth / 2;
break;
case LEFT:
x = point.x;
x = point.getX();
break;
case RIGHT:
x = point.x - textWidth;
x = point.getX() - textWidth;
break;
default:
throw new RuntimeException("Unexpected alignment: " + getHorizontalAlignment());
@@ -105,16 +105,16 @@ public class Label extends AbstractComponent<String> {
switch (getOrientation()) {
case _90:
g2d.rotate(Math.PI / 2, point.x, point.y);
g2d.rotate(Math.PI / 2, point.getX(), point.getY());
break;
case _180:
g2d.rotate(Math.PI, point.x, point.y);
g2d.rotate(Math.PI, point.getX(), point.getY());
break;
case _270:
g2d.rotate(Math.PI * 3 / 2, point.x, point.y);
g2d.rotate(Math.PI * 3 / 2, point.getX(), point.getY());
break;
}
g2d.drawString(text, x, y);
g2d.drawString(text, (int)x, (int)y);
}
@Override
@@ -216,7 +216,7 @@ public class Label extends AbstractComponent<String> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return point;
}
@@ -231,7 +231,7 @@ public class Label extends AbstractComponent<String> {
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
this.point.setLocation(point);
}
@@ -22,18 +22,14 @@ import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Shape;
import java.awt.geom.Point2D;
import org.diylc.common.ObjectCache;
import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.boards.AbstractBoard;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
import org.diylc.core.Project;
import org.diylc.core.annotations.BomPolicy;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
//@ComponentDescriptor(name = "Loadline", category = "Misc", author = "Branislav Stojkovic",
@@ -66,11 +62,11 @@ public class Loadline extends AbstractBoard {
@Override
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode,
Project project, IDrawingObserver drawingObserver) {
Point finalSecondPoint = getFinalSecondPoint();
Point2D finalSecondPoint = getFinalSecondPoint();
Shape clip = g2d.getClip();
if (checkPointsClipped(clip) && !clip.contains(firstPoint.x, finalSecondPoint.y)
&& !clip.contains(finalSecondPoint.x, firstPoint.y)) {
if (checkPointsClipped(clip) && !clip.contains(firstPoint.getX(), finalSecondPoint.getY())
&& !clip.contains(finalSecondPoint.getX(), firstPoint.getY())) {
return;
}
@@ -83,8 +79,8 @@ public class Loadline extends AbstractBoard {
}
g2d.setColor(boardColor);
g2d.fillRect(firstPoint.x, firstPoint.y, finalSecondPoint.x - firstPoint.x,
finalSecondPoint.y - firstPoint.y);
g2d.fillRect((int)firstPoint.getX(), (int)firstPoint.getY(), (int)(finalSecondPoint.getX() - firstPoint.getX()),
(int)(finalSecondPoint.getY() - firstPoint.getY()));
g2d.setComposite(oldComposite);
}
@@ -96,8 +92,8 @@ public class Loadline extends AbstractBoard {
? SELECTION_COLOR
: borderColor);
g2d.drawRect(firstPoint.x, firstPoint.y, finalSecondPoint.x - firstPoint.x,
finalSecondPoint.y - firstPoint.y);
g2d.drawRect((int)firstPoint.getX(), (int)firstPoint.getY(), (int)(finalSecondPoint.getX() - firstPoint.getX()),
(int)(finalSecondPoint.getY() - firstPoint.getY()));
}
@@ -3,7 +3,7 @@ package org.diylc.components.misc;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.Point2D;
import org.diylc.awt.StringUtils;
import org.diylc.common.HorizontalAlignment;
@@ -34,10 +34,10 @@ public class LoadlineCurve extends CurvedTrace {
g2d.setColor(Color.black);
Font oldFont = g2d.getFont();
g2d.setFont(project.getFont().deriveFont(12f).deriveFont(Font.BOLD));
Point lastPoint = getControlPoint(getControlPointCount() - 1);
Point2D lastPoint = getControlPoint(getControlPointCount() - 1);
int spacing = (int) LABEL_SPACING.convertToPixels();
int x = lastPoint.x + spacing;
int y = lastPoint.y - spacing;
double x = lastPoint.getX() + spacing;
double y = lastPoint.getY() - spacing;
StringUtils.drawCenteredText(g2d, getVoltage().toString(), x, y, HorizontalAlignment.LEFT, VerticalAlignment.TOP);
g2d.setFont(oldFont);
}
@@ -21,27 +21,27 @@
*/
package org.diylc.components.misc;
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.diylc.common.HorizontalAlignment;
import org.diylc.common.Orientation;
import org.diylc.common.HorizontalAlignment;
import org.diylc.common.Orientation;
import org.diylc.common.PCBLayer;
import org.diylc.common.VerticalAlignment;
import org.diylc.components.AbstractComponent;
import org.diylc.common.VerticalAlignment;
import org.diylc.components.AbstractComponent;
import org.diylc.components.transform.TextTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
import org.diylc.core.Project;
import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.BomPolicy;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
import org.diylc.core.Project;
import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.BomPolicy;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
@ComponentDescriptor(name = "PCB Text", author = "Branislav Stojkovic", category = "Misc",
@@ -55,7 +55,7 @@ public class PCBText extends AbstractComponent<Void> {
private static final long serialVersionUID = 1L;
private Point point = new Point(0, 0);
private Point2D point = new Point2D.Double(0, 0);
private String text = DEFAULT_TEXT;
private Font font = DEFAULT_FONT;
private Color color = LABEL_COLOR;
@@ -77,30 +77,30 @@ public class PCBText extends AbstractComponent<Void> {
int textHeight = (int) rect.getHeight();
int textWidth = (int) rect.getWidth();
int x = point.x;
int y = point.y;
double x = point.getX();
double y = point.getY();
switch (getVerticalAlignment()) {
case CENTER:
y = point.y - textHeight / 2 + fontMetrics.getAscent();
y = point.getY() - textHeight / 2 + fontMetrics.getAscent();
break;
case TOP:
y = point.y - textHeight + fontMetrics.getAscent();
y = point.getY() - textHeight + fontMetrics.getAscent();
break;
case BOTTOM:
y = point.y + fontMetrics.getAscent();
y = point.getY() + fontMetrics.getAscent();
break;
default:
throw new RuntimeException("Unexpected alignment: " + getVerticalAlignment());
}
switch (getHorizontalAlignment()) {
case CENTER:
x = point.x - textWidth / 2;
x = point.getX() - textWidth / 2;
break;
case LEFT:
x = point.x;
x = point.getX();
break;
case RIGHT:
x = point.x - textWidth;
x = point.getX() - textWidth;
break;
default:
throw new RuntimeException("Unexpected alignment: " + getHorizontalAlignment());
@@ -108,13 +108,13 @@ public class PCBText extends AbstractComponent<Void> {
switch (getOrientation()) {
case _90:
g2d.rotate(Math.PI / 2, point.x, point.y);
g2d.rotate(Math.PI / 2, point.getX(), point.getY());
break;
case _180:
g2d.rotate(Math.PI, point.x, point.y);
g2d.rotate(Math.PI, point.getX(), point.getY());
break;
case _270:
g2d.rotate(Math.PI * 3 / 2, point.x, point.y);
g2d.rotate(Math.PI * 3 / 2, point.getX(), point.getY());
break;
}
@@ -125,7 +125,7 @@ public class PCBText extends AbstractComponent<Void> {
tx.translate(-2 * x - textWidth, 0);
g2d.transform(tx);
g2d.drawString(text, x, y);
g2d.drawString(text, (int)x, (int)y);
g2d.setTransform(oldTx);
}
@@ -231,7 +231,7 @@ public class PCBText extends AbstractComponent<Void> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return point;
}
@@ -246,7 +246,7 @@ public class PCBText extends AbstractComponent<Void> {
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
this.point.setLocation(point);
}
@@ -25,7 +25,7 @@ import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.diylc.awt.StringUtils;
@@ -54,10 +54,10 @@ public class WrapLabel extends AbstractComponent<String> {
public static Size DEFAULT_WIDTH = new Size(1.5d, SizeUnit.in);
public static Size DEFAULT_HEIGHT = new Size(0.5d, SizeUnit.in);
protected Point[] controlPoints = new Point[] {new Point(0, 0),
new Point((int) DEFAULT_WIDTH.convertToPixels(), (int) DEFAULT_HEIGHT.convertToPixels())};
protected Point firstPoint = new Point();
protected Point secondPoint = new Point();
protected Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0),
new Point2D.Double((int) DEFAULT_WIDTH.convertToPixels(), (int) DEFAULT_HEIGHT.convertToPixels())};
protected Point2D firstPoint = new Point2D.Double();
protected Point2D secondPoint = new Point2D.Double();
private Font font = LABEL_FONT;
private Color color = LABEL_COLOR;
@@ -86,17 +86,17 @@ public class WrapLabel extends AbstractComponent<String> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
controlPoints[index].setLocation(point);
firstPoint.setLocation(Math.min(controlPoints[0].x, controlPoints[1].x),
Math.min(controlPoints[0].y, controlPoints[1].y));
secondPoint.setLocation(Math.max(controlPoints[0].x, controlPoints[1].x),
Math.max(controlPoints[0].y, controlPoints[1].y));
firstPoint.setLocation(Math.min(controlPoints[0].getX(), controlPoints[1].getX()),
Math.min(controlPoints[0].getY(), controlPoints[1].getY()));
secondPoint.setLocation(Math.max(controlPoints[0].getX(), controlPoints[1].getX()),
Math.max(controlPoints[0].getY(), controlPoints[1].getY()));
}
@Override
@@ -178,11 +178,11 @@ public class WrapLabel extends AbstractComponent<String> {
g2d.setColor(componentState == ComponentState.SELECTED ? LABEL_COLOR_SELECTED : color);
g2d.setFont(font);
int x = firstPoint.x;
int y = firstPoint.y;
int maxWidth = secondPoint.x - firstPoint.x;
double x = firstPoint.getX();
double y = firstPoint.getY();
double maxWidth = secondPoint.getX() - firstPoint.getX();
StringUtils.drawWrappedText(value, g2d, x, y, maxWidth, horizontalAlignment);
StringUtils.drawWrappedText(value, g2d, (int)x, (int)y, (int)maxWidth, horizontalAlignment);
}
@Override
@@ -21,7 +21,7 @@
*/
package org.diylc.components.passive;
import java.awt.Point;
import java.awt.geom.Point2D;
import org.diylc.common.Orientation;
import org.diylc.components.AbstractTransparentComponent;
@@ -34,7 +34,7 @@ public abstract class AbstractPotentiometer extends AbstractTransparentComponent
private static final long serialVersionUID = 1L;
protected Point[] controlPoints;
protected Point2D[] controlPoints;
protected Resistance resistance = null;
protected Orientation orientation = Orientation.DEFAULT;
@@ -46,12 +46,12 @@ public abstract class AbstractPotentiometer extends AbstractTransparentComponent
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
controlPoints[index].setLocation(point);
}
@@ -26,10 +26,10 @@ import java.awt.Color;
import java.awt.Composite;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
@@ -82,7 +82,7 @@ public class AudioTransformer extends AbstractMultiPartComponent<String> {
private Size coreWidth = new Size(0.6, SizeUnit.in);
private Size coilWidth = new Size(0.5, SizeUnit.in);
private Size coilLength = new Size(0.6, SizeUnit.in);
private Point[] controlPoints = new Point[] {new Point(0, 0)};
private Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0)};
protected Display display = Display.BOTH;
private Color coreColor = CORE_COLOR;
private Color coreBorderColor = CORE_BORDER_COLOR;
@@ -163,7 +163,7 @@ public class AudioTransformer extends AbstractMultiPartComponent<String> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@@ -178,24 +178,24 @@ public class AudioTransformer extends AbstractMultiPartComponent<String> {
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
controlPoints[index].setLocation(point);
body = null;
}
private void updateControlPoints() {
Point firstPoint = controlPoints[0];
Point2D firstPoint = controlPoints[0];
int pinCount = 4 + (primaryCT ? 1 : 0) + (secondaryCT ? 1 : 0);
controlPoints = new Point[pinCount];
controlPoints = new Point2D[pinCount];
controlPoints[0] = firstPoint;
double leadSpacing = this.leadSpacing.convertToPixels();
double windingSpacing = this.windingSpacing.convertToPixels();
// Update control points.
for (int i = 1; i < 2 + (primaryCT ? 1 : 0); i++)
controlPoints[i] = new Point(firstPoint.x, (int) (firstPoint.y + i * leadSpacing * (primaryCT ? 1 : 2)));
controlPoints[i] = new Point2D.Double(firstPoint.getX(), firstPoint.getY() + i * leadSpacing * (primaryCT ? 1 : 2));
for (int i = 0; i < 2 + (secondaryCT ? 1 : 0); i++)
controlPoints[2 + (primaryCT ? 1 : 0) + i] = new Point((int) (firstPoint.x + windingSpacing), (int) (firstPoint.y + i * leadSpacing * (secondaryCT ? 1 : 2)));
controlPoints[2 + (primaryCT ? 1 : 0) + i] = new Point2D.Double(firstPoint.getX() + windingSpacing, firstPoint.getY() + i * leadSpacing * (secondaryCT ? 1 : 2));
AffineTransform tx = getTx();
@@ -212,8 +212,8 @@ public class AudioTransformer extends AbstractMultiPartComponent<String> {
body = new Area[2];
double leadSpacing = this.leadSpacing.convertToPixels();
double windingSpacing = this.windingSpacing.convertToPixels();
int centerX = (int) (controlPoints[0].x + windingSpacing / 2);
int centerY = (int) (controlPoints[0].y + leadSpacing);
double centerX = (int) (controlPoints[0].getX() + windingSpacing / 2);
double centerY = (int) (controlPoints[0].getY() + leadSpacing);
int coreWidth = getClosestOdd(this.coreWidth.convertToPixels());
int coreThickness = getClosestOdd(this.coreThickness.convertToPixels());
int coilWidth = getClosestOdd(this.coilWidth.convertToPixels());
@@ -235,8 +235,8 @@ public class AudioTransformer extends AbstractMultiPartComponent<String> {
@SuppressWarnings("incomplete-switch")
private AffineTransform getTx() {
double x = controlPoints[0].x;
double y = controlPoints[0].y;
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
if (orientation == Orientation.DEFAULT)
return null;
@@ -269,11 +269,11 @@ public class AudioTransformer extends AbstractMultiPartComponent<String> {
if (!outlineMode) {
int pinSize = (int) PIN_SIZE.convertToPixels() / 2 * 2;
for (Point point : controlPoints) {
for (Point2D point : controlPoints) {
g2d.setColor(PIN_COLOR);
g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
g2d.fillOval((int)(point.getX() - pinSize / 2), (int)(point.getY() - pinSize / 2), pinSize, pinSize);
g2d.setColor(PIN_BORDER_COLOR);
g2d.drawOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
g2d.drawOval((int)(point.getX() - pinSize / 2), (int)(point.getY() - pinSize / 2), pinSize, pinSize);
}
}
Composite oldComposite = g2d.getComposite();
@@ -312,15 +312,15 @@ public class AudioTransformer extends AbstractMultiPartComponent<String> {
g2d.setFont(project.getFont());
// Draw winding designations
Point wPoint = new Point((int) (controlPoints[0].x + project.getFontSize()), (int) (controlPoints[0].y + leadSpacing.convertToPixels()));
Point2D wPoint = new Point2D.Double((int) (controlPoints[0].getX() + project.getFontSize()), (int) (controlPoints[0].getY() + leadSpacing.convertToPixels()));
AffineTransform tx = getTx();
if (tx != null)
tx.transform(wPoint, wPoint);
StringUtils.drawCenteredText(g2d, "P", wPoint.x, wPoint.y, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
wPoint = new Point((int) (controlPoints[0].x + windingSpacing.convertToPixels() - project.getFontSize()), (int) (controlPoints[0].y + leadSpacing.convertToPixels()));
StringUtils.drawCenteredText(g2d, "P", wPoint.getX(), wPoint.getY(), HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
wPoint = new Point2D.Double((int) (controlPoints[0].getX() + windingSpacing.convertToPixels() - project.getFontSize()), (int) (controlPoints[0].getY() + leadSpacing.convertToPixels()));
if (tx != null)
tx.transform(wPoint, wPoint);
StringUtils.drawCenteredText(g2d, "S", wPoint.x, wPoint.y, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
StringUtils.drawCenteredText(g2d, "S", wPoint.getX(), wPoint.getY(), HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
// Draw label.
Color finalLabelColor;
@@ -356,14 +356,14 @@ public class AudioTransformer extends AbstractMultiPartComponent<String> {
int textWidth = (int) (rect.getWidth());
// Center text horizontally and vertically
Rectangle bounds = coreArea.getBounds();
int x = bounds.x + (bounds.width - textWidth) / 2;
int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
double x = bounds.getX() + (bounds.width - textWidth) / 2;
double y = bounds.getY() + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
AffineTransform oldTransform = g2d.getTransform();
if (getOrientation() == Orientation.DEFAULT || getOrientation() == Orientation._180) {
int centerX = bounds.x + bounds.width / 2;
int centerY = bounds.y + bounds.height / 2;
double centerX = bounds.getX() + bounds.width / 2;
double centerY = bounds.getY() + bounds.height / 2;
g2d.rotate(-Math.PI / 2, centerX, centerY);
}
@@ -374,7 +374,7 @@ public class AudioTransformer extends AbstractMultiPartComponent<String> {
g2d.translate(0, textHeight / 2);
}
g2d.drawString(l, x, y);
g2d.drawString(l, (int)x, (int)y);
g2d.setTransform(oldTransform);
}
@@ -25,10 +25,10 @@ import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.text.DecimalFormat;
import java.text.Format;
@@ -79,7 +79,7 @@ public class MultiSectionCapacitor extends AbstractTransparentComponent<Capacita
private org.diylc.core.measures.Voltage voltage = null;
private Orientation orientation = Orientation.DEFAULT;
private Point[] controlPoints = new Point[] {new Point(0, 0), new Point(0, 0), new Point(0, 0)};
private Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0), new Point2D.Double(0, 0), new Point2D.Double(0, 0)};
transient private Area[] body;
private Color bodyColor = BODY_COLOR;
private Color baseColor = BASE_COLOR;
@@ -169,7 +169,7 @@ public class MultiSectionCapacitor extends AbstractTransparentComponent<Capacita
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@@ -184,7 +184,7 @@ public class MultiSectionCapacitor extends AbstractTransparentComponent<Capacita
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
controlPoints[index].setLocation(point);
body = null;
}
@@ -195,17 +195,17 @@ public class MultiSectionCapacitor extends AbstractTransparentComponent<Capacita
int newCount = value.length + 1;
if (newCount != controlPoints.length) {
// need new control points
Point[] newPoints = new Point[newCount];
Point2D[] newPoints = new Point2D[newCount];
newPoints[0] = controlPoints[0];
for (int i = 1; i < newCount; i++) {
newPoints[i] = new Point(0, 0);
newPoints[i] = new Point2D.Double(0, 0);
}
controlPoints = newPoints;
}
// Update control points.
int x = controlPoints[0].x;
int y = controlPoints[0].y;
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
if (newCount == 2) {
switch (orientation) {
@@ -286,8 +286,8 @@ public class MultiSectionCapacitor extends AbstractTransparentComponent<Capacita
if (body == null) {
double centerX;
double centerY;
int x = controlPoints[0].x;
int y = controlPoints[0].y;
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
int pinSpacing = (int) (getDiameter().convertToPixels() * RELATIVE_DIAMETERS[value == null || value.length == 1 ? 0 : 1]);
if (controlPoints.length == 2 || controlPoints.length == 3) {
switch (orientation) {
@@ -380,13 +380,13 @@ public class MultiSectionCapacitor extends AbstractTransparentComponent<Capacita
g2d.draw(area[1]);
}
for (Point point : controlPoints) {
for (Point2D point : controlPoints) {
if (!outlineMode) {
g2d.setColor(pinColor);
g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
g2d.fillOval((int)(point.getX() - pinSize / 2), (int)(point.getY() - pinSize / 2), pinSize, pinSize);
}
g2d.setColor(outlineMode ? theme.getOutlineColor() : pinColor.darker());
g2d.drawOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
g2d.drawOval((int)(point.getX() - pinSize / 2), (int)(point.getY() - pinSize / 2), pinSize, pinSize);
}
// Draw label.
@@ -416,18 +416,18 @@ public class MultiSectionCapacitor extends AbstractTransparentComponent<Capacita
Rectangle bounds = area[0].getBounds();
StringUtils.drawCenteredText(g2d, label, bounds.x + bounds.width / 2, bounds.y + bounds.height / 2, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
StringUtils.drawCenteredText(g2d, label, bounds.getX() + bounds.width / 2, bounds.getY() + bounds.height / 2, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
// draw polarity markers
g2d.setColor(pinColor.darker());
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(2f));
double markerSize = pinSize * 0.7;
for (int i = 0; i < controlPoints.length; i++) {
int x = controlPoints[i].x;
int y = controlPoints[i].y;
g2d.drawLine((int)(x - markerSize / 2), y, (int)(x + markerSize / 2), y);
double x = controlPoints[i].getX();
double y = controlPoints[i].getY();
g2d.drawLine((int)(x - markerSize / 2), (int)y, (int)(x + markerSize / 2), (int)y);
if (i > 0)
g2d.drawLine(x, (int)(y - markerSize / 2), x, (int)(y + markerSize / 2));
g2d.drawLine((int)x, (int)(y - markerSize / 2), (int)x, (int)(y + markerSize / 2));
}
}
@@ -30,6 +30,7 @@ import java.awt.Point;
import java.awt.Polygon;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
@@ -93,20 +94,20 @@ public class PotentiometerPanel extends AbstractPotentiometer {
int spacing = (int) this.spacing.convertToPixels();
switch (orientation) {
case DEFAULT:
controlPoints[1].setLocation(controlPoints[0].x + spacing, controlPoints[0].y);
controlPoints[2].setLocation(controlPoints[0].x + 2 * spacing, controlPoints[0].y);
controlPoints[1].setLocation(controlPoints[0].getX() + spacing, controlPoints[0].getY());
controlPoints[2].setLocation(controlPoints[0].getX() + 2 * spacing, controlPoints[0].getY());
break;
case _90:
controlPoints[1].setLocation(controlPoints[0].x, controlPoints[0].y + spacing);
controlPoints[2].setLocation(controlPoints[0].x, controlPoints[0].y + 2 * spacing);
controlPoints[1].setLocation(controlPoints[0].getX(), controlPoints[0].getY() + spacing);
controlPoints[2].setLocation(controlPoints[0].getX(), controlPoints[0].getY() + 2 * spacing);
break;
case _180:
controlPoints[1].setLocation(controlPoints[0].x - spacing, controlPoints[0].y);
controlPoints[2].setLocation(controlPoints[0].x - 2 * spacing, controlPoints[0].y);
controlPoints[1].setLocation(controlPoints[0].getX() - spacing, controlPoints[0].getY());
controlPoints[2].setLocation(controlPoints[0].getX() - 2 * spacing, controlPoints[0].getY());
break;
case _270:
controlPoints[1].setLocation(controlPoints[0].x, controlPoints[0].y - spacing);
controlPoints[2].setLocation(controlPoints[0].x, controlPoints[0].y - 2 * spacing);
controlPoints[1].setLocation(controlPoints[0].getX(), controlPoints[0].getY() - spacing);
controlPoints[2].setLocation(controlPoints[0].getX(), controlPoints[0].getY() - 2 * spacing);
break;
default:
break;
@@ -124,66 +125,66 @@ public class PotentiometerPanel extends AbstractPotentiometer {
// Add lugs.
int pinWidth = (int) PIN_SIZE.convertToPixels();
int centerX = 0;
int centerY = 0;
double centerX = 0;
double centerY = 0;
double waferWidth = 2.5 * spacing;
double waferHeight = spacing;
switch (orientation) {
case DEFAULT:
centerX = controlPoints[0].x + spacing;
centerY = controlPoints[0].y - spacing / 2 - diameter / 2;
centerX = controlPoints[0].getX() + spacing;
centerY = controlPoints[0].getY() - spacing / 2 - diameter / 2;
body[9] =
new Area(new RoundRectangle2D.Double(centerX - waferWidth / 2, controlPoints[0].y - waferHeight - spacing
new Area(new RoundRectangle2D.Double(centerX - waferWidth / 2, controlPoints[0].getY() - waferHeight - spacing
/ 2, waferWidth, waferHeight, spacing / 4, spacing / 4));
for (int i = 0; i < 3; i++) {
body[i] =
new Area(new Rectangle2D.Double(controlPoints[i].x - pinWidth / 2, controlPoints[i].y
new Area(new Rectangle2D.Double(controlPoints[i].getX() - pinWidth / 2, controlPoints[i].getY()
- (spacing + diameter) / 2, pinWidth, (spacing + diameter) / 2));
}
break;
case _90:
centerX = controlPoints[0].x + spacing / 2 + diameter / 2;
centerY = controlPoints[0].y + spacing;
centerX = controlPoints[0].getX() + spacing / 2 + diameter / 2;
centerY = controlPoints[0].getY() + spacing;
body[9] =
new Area(new RoundRectangle2D.Double(controlPoints[0].x + spacing / 2, centerY - waferWidth / 2,
new Area(new RoundRectangle2D.Double(controlPoints[0].getX() + spacing / 2, centerY - waferWidth / 2,
waferHeight, waferWidth, spacing / 4, spacing / 4));
for (int i = 0; i < 3; i++) {
body[i] =
new Area(new Rectangle2D.Double(controlPoints[i].x, controlPoints[i].y - pinWidth / 2,
new Area(new Rectangle2D.Double(controlPoints[i].getX(), controlPoints[i].getY() - pinWidth / 2,
(spacing + diameter) / 2, pinWidth));
}
break;
case _180:
centerX = controlPoints[0].x - spacing;
centerY = controlPoints[0].y + spacing / 2 + diameter / 2;
centerX = controlPoints[0].getX() - spacing;
centerY = controlPoints[0].getY() + spacing / 2 + diameter / 2;
body[9] =
new Area(new RoundRectangle2D.Double(centerX - waferWidth / 2, controlPoints[0].y + spacing / 2,
new Area(new RoundRectangle2D.Double(centerX - waferWidth / 2, controlPoints[0].getY() + spacing / 2,
waferWidth, waferHeight, spacing / 4, spacing / 4));
for (int i = 0; i < 3; i++) {
body[i] =
new Area(new Rectangle2D.Double(controlPoints[i].x - pinWidth / 2, controlPoints[i].y, pinWidth,
new Area(new Rectangle2D.Double(controlPoints[i].getX() - pinWidth / 2, controlPoints[i].getY(), pinWidth,
(spacing + diameter) / 2));
}
break;
case _270:
centerX = controlPoints[0].x - spacing / 2 - diameter / 2;
centerY = controlPoints[0].y - spacing;
centerX = controlPoints[0].getX() - spacing / 2 - diameter / 2;
centerY = controlPoints[0].getY() - spacing;
body[9] =
new Area(new RoundRectangle2D.Double(controlPoints[0].x - waferHeight - spacing / 2, centerY - waferWidth
new Area(new RoundRectangle2D.Double(controlPoints[0].getX() - waferHeight - spacing / 2, centerY - waferWidth
/ 2, waferHeight, waferWidth, spacing / 4, spacing / 4));
for (int i = 0; i < 3; i++) {
body[i] =
new Area(new Rectangle2D.Double(controlPoints[i].x - (spacing + diameter) / 2, controlPoints[i].y
new Area(new Rectangle2D.Double(controlPoints[i].getX() - (spacing + diameter) / 2, controlPoints[i].getY()
- pinWidth / 2, (spacing + diameter) / 2, pinWidth));
}
break;
@@ -205,7 +206,7 @@ public class PotentiometerPanel extends AbstractPotentiometer {
for (int i = 0; i < 3; i++) {
Area area =
new Area(new Ellipse2D.Double(controlPoints[i].x - lugDiameter / 2, controlPoints[i].y - lugDiameter / 2,
new Area(new Ellipse2D.Double(controlPoints[i].getX() - lugDiameter / 2, controlPoints[i].getY() - lugDiameter / 2,
lugDiameter, lugDiameter));
body[4 + i] = area;
}
@@ -217,7 +218,7 @@ public class PotentiometerPanel extends AbstractPotentiometer {
}
// Make holes in the lugs.
for (int i = 0; i < 3; i++) {
body[4 + i].subtract(new Area(new Ellipse2D.Double(controlPoints[i].x - holeDiameter / 2, controlPoints[i].y
body[4 + i].subtract(new Area(new Ellipse2D.Double(controlPoints[i].getX() - holeDiameter / 2, controlPoints[i].getY()
- holeDiameter / 2, holeDiameter, holeDiameter)));
}
}
@@ -241,7 +242,7 @@ public class PotentiometerPanel extends AbstractPotentiometer {
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
super.setControlPoint(point, index);
body = null;
}
@@ -24,10 +24,10 @@ package org.diylc.components.passive;
import java.awt.Color;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Polygon;
import java.awt.Shape;
import java.awt.geom.GeneralPath;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.diylc.components.Abstract3LegSymbol;
@@ -51,9 +51,9 @@ public class PotentiometerSymbol extends Abstract3LegSymbol {
public Shape[] getBody() {
Shape[] body = new Shape[3];
Point[] controlPoints = getControlPoints();
int x = controlPoints[0].x;
int y = controlPoints[0].y;
Point2D[] controlPoints = getControlPoints();
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
int pinSpacing = (int) PIN_SPACING.convertToPixels();
GeneralPath polyline = new GeneralPath();
@@ -92,8 +92,8 @@ public class PotentiometerSymbol extends Abstract3LegSymbol {
}
@Override
protected int getLabelX(Rectangle2D shapeRect, Rectangle2D textRect, FontMetrics fontMetrics, boolean outlineMode) {
int x = super.getLabelX(shapeRect, textRect, fontMetrics, outlineMode);
protected double getLabelX(Rectangle2D shapeRect, Rectangle2D textRect, FontMetrics fontMetrics, boolean outlineMode) {
double x = super.getLabelX(shapeRect, textRect, fontMetrics, outlineMode);
if (getFlip() == SymbolFlipping.X)
return x - (int) (PIN_SPACING.convertToPixels() / 2);
return x + (int) PIN_SPACING.convertToPixels();
@@ -23,9 +23,9 @@ package org.diylc.components.passive;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Shape;
import java.awt.geom.GeneralPath;
import java.awt.geom.Point2D;
import org.diylc.appframework.miscutils.ConfigurationManager;
import org.diylc.common.IPlugInPort;
@@ -60,7 +60,7 @@ public class TransformerCoil extends AbstractComponent<org.diylc.core.measures.V
public static Color COLOR = Color.blue;
public static Color LEAD_COLOR = Color.black;
private Point[] controlPoints = new Point[] {new Point(0, 0), new Point(0, 0)};
private Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0), new Point2D.Double(0, 0)};
private Orientation orientation = Orientation.DEFAULT;
private org.diylc.core.measures.Voltage voltage = null;
private Color color = COLOR;
@@ -96,9 +96,9 @@ public class TransformerCoil extends AbstractComponent<org.diylc.core.measures.V
break;
}
Point refPoint = this.controlPoints[0];
Point2D refPoint = this.controlPoints[0];
for (int i = 1; i < controlPoints.length; i++) {
this.controlPoints[i].setLocation(refPoint.x + i * fx * spacing, refPoint.y + i * fy * spacing);
this.controlPoints[i].setLocation(refPoint.getX() + i * fx * spacing, refPoint.getY() + i * fy * spacing);
}
}
@@ -130,12 +130,12 @@ public class TransformerCoil extends AbstractComponent<org.diylc.core.measures.V
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return this.controlPoints[index];
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
this.controlPoints[index].setLocation(point);
this.body = null;
}
@@ -248,11 +248,11 @@ public class TransformerCoil extends AbstractComponent<org.diylc.core.measures.V
double offset = OFFSET.convertToPixels();
int i = 0;
leads.moveTo(this.controlPoints[i].x, this.controlPoints[i].y);
leads.moveTo(this.controlPoints[i].getX(), this.controlPoints[i].getY());
leads
.lineTo(this.controlPoints[i].x + fx * (spacing + offset), this.controlPoints[i].y + fy * (spacing + offset));
leads.moveTo(this.controlPoints[i + 1].x, this.controlPoints[i + 1].y);
leads.lineTo(this.controlPoints[i + 1].x + fx * (spacing + offset), this.controlPoints[i + 1].y + fy
.lineTo(this.controlPoints[i].getX() + fx * (spacing + offset), this.controlPoints[i].getY() + fy * (spacing + offset));
leads.moveTo(this.controlPoints[i + 1].getX(), this.controlPoints[i + 1].getY());
leads.lineTo(this.controlPoints[i + 1].getX() + fx * (spacing + offset), this.controlPoints[i + 1].getY() + fy
* (spacing + offset));
double dx = this.controlPoints[i + 1].getX() - this.controlPoints[i].getX();
@@ -262,7 +262,7 @@ public class TransformerCoil extends AbstractComponent<org.diylc.core.measures.V
double x1 = this.controlPoints[i].getX() + fx * (spacing + d + offset);
double y1 = this.controlPoints[i].getY() + fy * (spacing + d + offset);
double x2 = this.controlPoints[i + 1].getX() + fx * (spacing + d + offset);
double y2 = this.controlPoints[i + 1].y + fy * (spacing + d + offset);
double y2 = this.controlPoints[i + 1].getY() + fy * (spacing + d + offset);
double dxa = x2 - x1;
double dya = y2 - y1;
@@ -23,8 +23,8 @@ package org.diylc.components.passive;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.GeneralPath;
import java.awt.geom.Point2D;
import org.diylc.appframework.miscutils.ConfigurationManager;
import org.diylc.common.IPlugInPort;
@@ -54,7 +54,7 @@ public class TransformerCore extends AbstractComponent<Void> {
public static Size SPACING = new Size(0.025d, SizeUnit.in);
public static Color COLOR = Color.blue;
private Point[] controlPoints = new Point[] {new Point(0, 0), new Point(0, 0)};
private Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0), new Point2D.Double(0, 0)};
protected Color color = COLOR;
@@ -68,12 +68,12 @@ public class TransformerCore extends AbstractComponent<Void> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return this.controlPoints[index];
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
this.controlPoints[index].setLocation(point);
}
@@ -115,7 +115,7 @@ public class TransformerCore extends AbstractComponent<Void> {
}
double theta =
Math.atan2(this.controlPoints[1].y - this.controlPoints[0].y, this.controlPoints[1].x - this.controlPoints[0].x)
Math.atan2(this.controlPoints[1].getY() - this.controlPoints[0].getY(), this.controlPoints[1].getX() - this.controlPoints[0].getX())
+ Math.PI / 2;
double spacing = SPACING.convertToPixels();
// System.out.println(theta);
@@ -124,9 +124,9 @@ public class TransformerCore extends AbstractComponent<Void> {
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
g2d.translate(spacing * Math.cos(theta) / 2, spacing * Math.sin(theta) / 2);
g2d.drawLine(this.controlPoints[0].x, this.controlPoints[0].y, this.controlPoints[1].x, this.controlPoints[1].y);
g2d.drawLine((int)this.controlPoints[0].getX(), (int)this.controlPoints[0].getY(), (int)this.controlPoints[1].getX(), (int)this.controlPoints[1].getY());
g2d.translate(-spacing * Math.cos(theta), -spacing * Math.sin(theta));
g2d.drawLine(this.controlPoints[0].x, this.controlPoints[0].y, this.controlPoints[1].x, this.controlPoints[1].y);
g2d.drawLine((int)this.controlPoints[0].getX(), (int)this.controlPoints[0].getY(), (int)this.controlPoints[1].getX(), (int)this.controlPoints[1].getY());
}
@Override
@@ -27,6 +27,7 @@ import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
@@ -283,8 +284,8 @@ public class TrimmerPotentiometer extends AbstractPotentiometer {
default:
break;
}
controlPoints[1].setLocation(controlPoints[0].x + dx1, controlPoints[0].y + dy1);
controlPoints[2].setLocation(controlPoints[0].x + dx2, controlPoints[0].y + dy2);
controlPoints[1].setLocation(controlPoints[0].getX() + dx1, controlPoints[0].getY() + dy1);
controlPoints[2].setLocation(controlPoints[0].getX() + dx2, controlPoints[0].getY() + dy2);
}
public Shape[] getBody() {
@@ -293,12 +294,12 @@ public class TrimmerPotentiometer extends AbstractPotentiometer {
// Calculate the center point as center of the minimum bounding
// rectangle.
int centerX =
(Math.max(Math.max(controlPoints[0].x, controlPoints[1].x), controlPoints[2].x) + Math.min(
Math.min(controlPoints[0].x, controlPoints[1].x), controlPoints[2].x)) / 2;
int centerY =
(Math.max(Math.max(controlPoints[0].y, controlPoints[1].y), controlPoints[2].y) + Math.min(
Math.min(controlPoints[0].y, controlPoints[1].y), controlPoints[2].y)) / 2;
double centerX =
(Math.max(Math.max(controlPoints[0].getX(), controlPoints[1].getX()), controlPoints[2].getX()) + Math.min(
Math.min(controlPoints[0].getX(), controlPoints[1].getX()), controlPoints[2].getX())) / 2;
double centerY =
(Math.max(Math.max(controlPoints[0].getY(), controlPoints[1].getY()), controlPoints[2].getY()) + Math.min(
Math.min(controlPoints[0].getY(), controlPoints[1].getY()), controlPoints[2].getY())) / 2;
// Calculate body dimensions based on the selected type.
int length = 0;
@@ -350,7 +351,7 @@ public class TrimmerPotentiometer extends AbstractPotentiometer {
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
super.setControlPoint(point, index);
body = null;
}
@@ -404,13 +405,13 @@ public class TrimmerPotentiometer extends AbstractPotentiometer {
// Draw pins.
int pinSize = getClosestOdd(PIN_SIZE.convertToPixels());
for (Point point : controlPoints) {
for (Point2D point : controlPoints) {
if (!outlineMode) {
g2d.setColor(PIN_COLOR);
g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
g2d.fillOval((int)(point.getX() - pinSize / 2), (int)(point.getY() - pinSize / 2), pinSize, pinSize);
}
g2d.setColor(outlineMode ? theme.getOutlineColor() : PIN_BORDER_COLOR);
g2d.drawOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
g2d.drawOval((int)(point.getX() - pinSize / 2), (int)(point.getY() - pinSize / 2), pinSize, pinSize);
}
// Draw label.
@@ -26,6 +26,7 @@ import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.Area;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.diylc.awt.StringUtils;
@@ -157,7 +158,7 @@ public abstract class AbstractTransistorPackage extends AbstractTransparentCompo
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
controlPoints[index].setLocation(point);
body = null;
}
@@ -21,20 +21,20 @@
*/
package org.diylc.components.semiconductors;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Polygon;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.GeneralPath;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.GeneralPath;
import java.awt.geom.Point2D;
import org.diylc.common.ObjectCache;
import org.diylc.common.ObjectCache;
import org.diylc.components.Abstract3LegSymbol;
import org.diylc.components.transform.ThreeLegTransformer;
import org.diylc.core.IDIYComponent;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.IDIYComponent;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.annotations.KeywordPolicy;
@ComponentDescriptor(name = "BJT", author = "Branislav Stojkovic", category = "Schematic Symbols",
@@ -48,9 +48,9 @@ public class BJTSymbol extends Abstract3LegSymbol {
public Shape[] getBody() {
Shape[] body = new Shape[3];
Point[] controlPoints = getControlPoints();
int x = controlPoints[0].x;
int y = controlPoints[0].y;
Point2D[] controlPoints = getControlPoints();
int x = (int) controlPoints[0].getX();
int y = (int) controlPoints[0].getY();
int pinSpacing = (int) PIN_SPACING.convertToPixels();
GeneralPath polyline = new GeneralPath();
@@ -26,11 +26,11 @@ import java.awt.Color;
import java.awt.Composite;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
@@ -103,7 +103,7 @@ public class BridgeRectifier extends AbstractTransparentComponent<String> {
private String value = "";
private Orientation orientation = Orientation.DEFAULT;
private Point[] controlPoints = new Point[] { new Point(0, 0), new Point(0, 0), new Point(0, 0), new Point(0, 0) };
private Point2D[] controlPoints = new Point2D[] { new Point2D.Double(0, 0), new Point2D.Double(0, 0), new Point2D.Double(0, 0), new Point2D.Double(0, 0) };
private String[] pointLabels = new String[] { "+", "~", "~", "-" };
protected Display display = Display.BOTH;
private Color bodyColor = BODY_COLOR;
@@ -160,7 +160,7 @@ public class BridgeRectifier extends AbstractTransparentComponent<String> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@@ -175,14 +175,14 @@ public class BridgeRectifier extends AbstractTransparentComponent<String> {
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
controlPoints[index].setLocation(point);
body = null;
}
@SuppressWarnings("incomplete-switch")
private void updateControlPoints() {
Point firstPoint = controlPoints[0];
Point2D firstPoint = controlPoints[0];
int hSpacing;
int vSpacing;
@@ -191,40 +191,40 @@ public class BridgeRectifier extends AbstractTransparentComponent<String> {
case MiniDIP1:
hSpacing = (int) MINI_HORIZONTAL_SPACING.convertToPixels();
vSpacing = (int) MINI_VERTICAL_SPACING.convertToPixels();
controlPoints[1].setLocation(firstPoint.x + hSpacing, firstPoint.y);
controlPoints[2].setLocation(firstPoint.x + hSpacing, firstPoint.y + vSpacing);
controlPoints[3].setLocation(firstPoint.x, firstPoint.y + vSpacing);
controlPoints[1].setLocation(firstPoint.getX() + hSpacing, firstPoint.getY());
controlPoints[2].setLocation(firstPoint.getX() + hSpacing, firstPoint.getY() + vSpacing);
controlPoints[3].setLocation(firstPoint.getX(), firstPoint.getY() + vSpacing);
break;
case MiniDIP2:
hSpacing = (int) MINI_HORIZONTAL_SPACING.convertToPixels();
vSpacing = (int) MINI_VERTICAL_SPACING.convertToPixels();
controlPoints[1].setLocation(firstPoint.x + hSpacing, firstPoint.y);
controlPoints[2].setLocation(firstPoint.x, firstPoint.y + vSpacing);
controlPoints[3].setLocation(firstPoint.x + hSpacing, firstPoint.y + vSpacing);
controlPoints[1].setLocation(firstPoint.getX() + hSpacing, firstPoint.getY());
controlPoints[2].setLocation(firstPoint.getX(), firstPoint.getY() + vSpacing);
controlPoints[3].setLocation(firstPoint.getX() + hSpacing, firstPoint.getY() + vSpacing);
break;
case MiniRound1:
hSpacing = vSpacing = (int) MINI_ROUND_SPACING.convertToPixels();
controlPoints[1].setLocation(firstPoint.x + hSpacing, firstPoint.y);
controlPoints[2].setLocation(firstPoint.x + hSpacing, firstPoint.y + vSpacing);
controlPoints[3].setLocation(firstPoint.x, firstPoint.y + vSpacing);
controlPoints[1].setLocation(firstPoint.getX() + hSpacing, firstPoint.getY());
controlPoints[2].setLocation(firstPoint.getX() + hSpacing, firstPoint.getY() + vSpacing);
controlPoints[3].setLocation(firstPoint.getX(), firstPoint.getY() + vSpacing);
break;
case MiniRound2:
hSpacing = vSpacing = (int) MINI_ROUND_SPACING.convertToPixels();
controlPoints[1].setLocation(firstPoint.x + hSpacing, firstPoint.y);
controlPoints[2].setLocation(firstPoint.x, firstPoint.y + vSpacing);
controlPoints[3].setLocation(firstPoint.x + hSpacing, firstPoint.y + vSpacing);
controlPoints[1].setLocation(firstPoint.getX() + hSpacing, firstPoint.getY());
controlPoints[2].setLocation(firstPoint.getX(), firstPoint.getY() + vSpacing);
controlPoints[3].setLocation(firstPoint.getX() + hSpacing, firstPoint.getY() + vSpacing);
break;
case InLine:
vSpacing = (int) INLINE_SPACING.convertToPixels();
controlPoints[1].setLocation(firstPoint.x, firstPoint.y + vSpacing);
controlPoints[2].setLocation(firstPoint.x, firstPoint.y + 2 * vSpacing);
controlPoints[3].setLocation(firstPoint.x, firstPoint.y + 3 * vSpacing);
controlPoints[1].setLocation(firstPoint.getX(), firstPoint.getY() + vSpacing);
controlPoints[2].setLocation(firstPoint.getX(), firstPoint.getY() + 2 * vSpacing);
controlPoints[3].setLocation(firstPoint.getX(), firstPoint.getY() + 3 * vSpacing);
break;
case SquareBR3:
hSpacing = vSpacing = (int) BR3_SPACING.convertToPixels();
controlPoints[1].setLocation(firstPoint.x + hSpacing, firstPoint.y);
controlPoints[2].setLocation(firstPoint.x, firstPoint.y + vSpacing);
controlPoints[3].setLocation(firstPoint.x + hSpacing, firstPoint.y + vSpacing);
controlPoints[1].setLocation(firstPoint.getX() + hSpacing, firstPoint.getY());
controlPoints[2].setLocation(firstPoint.getX(), firstPoint.getY() + vSpacing);
controlPoints[3].setLocation(firstPoint.getX() + hSpacing, firstPoint.getY() + vSpacing);
break;
}
@@ -241,7 +241,7 @@ public class BridgeRectifier extends AbstractTransparentComponent<String> {
theta = Math.PI * 3 / 2;
break;
}
AffineTransform rotation = AffineTransform.getRotateInstance(theta, firstPoint.x, firstPoint.y);
AffineTransform rotation = AffineTransform.getRotateInstance(theta, firstPoint.getX(), firstPoint.getY());
for (int i = 1; i < controlPoints.length; i++) {
rotation.transform(controlPoints[i], controlPoints[i]);
@@ -254,8 +254,8 @@ public class BridgeRectifier extends AbstractTransparentComponent<String> {
if (body == null) {
body = new Area[2];
int centerX = (controlPoints[0].x + controlPoints[1].x + controlPoints[2].x + controlPoints[3].x) / 4;
int centerY = (controlPoints[0].y + controlPoints[1].y + controlPoints[2].y + controlPoints[3].y) / 4;
double centerX = (controlPoints[0].getX() + controlPoints[1].getX() + controlPoints[2].getX() + controlPoints[3].getX()) / 4;
double centerY = (controlPoints[0].getY() + controlPoints[1].getY() + controlPoints[2].getY() + controlPoints[3].getY()) / 4;
int width = 0;
int length = 0;
@@ -307,13 +307,13 @@ public class BridgeRectifier extends AbstractTransparentComponent<String> {
// path.lineTo(centerX - width / 2, centerY - width / 2 + margin);
// path.closePath();
RoundedPolygon poly = new RoundedPolygon(new Point[] {
new Point(centerX, centerY - width / 2),
new Point(centerX + width / 2, centerY - width / 2),
new Point(centerX + width / 2, centerY + width / 2),
new Point(centerX - width / 2, centerY + width / 2),
new Point(centerX - width / 2, (int) (centerY - width / 2 + margin)),
new Point((int) (centerX - width / 2 + margin), centerY - width / 2),
RoundedPolygon poly = new RoundedPolygon(new Point2D[] {
new Point2D.Double(centerX, centerY - width / 2),
new Point2D.Double(centerX + width / 2, centerY - width / 2),
new Point2D.Double(centerX + width / 2, centerY + width / 2),
new Point2D.Double(centerX - width / 2, centerY + width / 2),
new Point2D.Double(centerX - width / 2, (int) (centerY - width / 2 + margin)),
new Point2D.Double((int) (centerX - width / 2 + margin), centerY - width / 2),
}, new double[] { EDGE_RADIUS, EDGE_RADIUS, EDGE_RADIUS, EDGE_RADIUS / 2 , EDGE_RADIUS / 2});
@@ -358,17 +358,17 @@ public class BridgeRectifier extends AbstractTransparentComponent<String> {
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1f));
if (!outlineMode) {
for (Point point : controlPoints) {
for (Point2D point : controlPoints) {
g2d.setColor(PIN_COLOR);
if (pinShape == PinShape.Round)
g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
g2d.fillOval((int)(point.getX() - pinSize / 2), (int)(point.getY() - pinSize / 2), pinSize, pinSize);
else
g2d.fillRect(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
g2d.fillRect((int)(point.getX() - pinSize / 2), (int)(point.getY() - pinSize / 2), pinSize, pinSize);
g2d.setColor(PIN_BORDER_COLOR);
if (pinShape == PinShape.Round)
g2d.drawOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
g2d.drawOval((int)(point.getX() - pinSize / 2), (int)(point.getY() - pinSize / 2), pinSize, pinSize);
else
g2d.drawRect(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
g2d.drawRect((int)(point.getX() - pinSize / 2), (int)(point.getY() - pinSize / 2), pinSize, pinSize);
}
}
@@ -443,14 +443,14 @@ public class BridgeRectifier extends AbstractTransparentComponent<String> {
int textWidth = (int) (rect.getWidth());
// Center text horizontally and vertically
Rectangle bounds = mainArea.getBounds();
int x = bounds.x + (bounds.width - textWidth) / 2;
int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
double x = bounds.getX() + (bounds.width - textWidth) / 2;
double y = bounds.getY() + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
AffineTransform oldTransform = g2d.getTransform();
if (getLabelOriantation() == LabelOriantation.Directional && (getOrientation() == Orientation.DEFAULT || getOrientation() == Orientation._180)) {
int centerX = bounds.x + bounds.width / 2;
int centerY = bounds.y + bounds.height / 2;
double centerX = bounds.getX() + bounds.width / 2;
double centerY = bounds.getY() + bounds.height / 2;
g2d.rotate(-Math.PI / 2, centerX, centerY);
}
@@ -464,7 +464,7 @@ public class BridgeRectifier extends AbstractTransparentComponent<String> {
if (rectifierType == RectifierType.SquareBR3)
y -= BR3_HOLE_SIZE.convertToPixels();
g2d.drawString(l, x, y);
g2d.drawString(l, (int)x, (int)y);
g2d.setTransform(oldTransform);
}
@@ -474,7 +474,7 @@ public class BridgeRectifier extends AbstractTransparentComponent<String> {
g2d.setFont(project.getFont().deriveFont((float) (project.getFont().getSize2D() * 0.8)));
g2d.setColor(finalLabelColor);
for (int i = 0; i <controlPoints.length; i++) {
Point point = controlPoints[i];
Point2D point = controlPoints[i];
int dx = 0;
int dy = 0;
@@ -563,7 +563,7 @@ public class BridgeRectifier extends AbstractTransparentComponent<String> {
break;
}
StringUtils.drawCenteredText(g2d, pointLabels[i], point.x + dx, point.y + dy, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
StringUtils.drawCenteredText(g2d, pointLabels[i], point.getX() + dx, point.getY() + dy, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
}
}
@@ -26,11 +26,11 @@ import java.awt.Color;
import java.awt.Composite;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
@@ -79,7 +79,7 @@ public class DIL_IC extends AbstractTransparentComponent<String> {
private PinCount pinCount = PinCount._8;
private Size pinSpacing = new Size(0.1d, SizeUnit.in);
private Size rowSpacing = new Size(0.3d, SizeUnit.in);
private Point[] controlPoints = new Point[] {new Point(0, 0)};
private Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0)};
protected Display display = Display.BOTH;
private Color bodyColor = BODY_COLOR;
private Color borderColor = BORDER_COLOR;
@@ -178,7 +178,7 @@ public class DIL_IC extends AbstractTransparentComponent<String> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@@ -193,14 +193,14 @@ public class DIL_IC extends AbstractTransparentComponent<String> {
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
controlPoints[index].setLocation(point);
body = null;
}
private void updateControlPoints() {
Point firstPoint = controlPoints[0];
controlPoints = new Point[pinCount.getValue()];
Point2D firstPoint = controlPoints[0];
controlPoints = new Point2D[pinCount.getValue()];
controlPoints[0] = firstPoint;
double pinSpacing = this.pinSpacing.convertToPixels();
double rowSpacing = this.rowSpacing.convertToPixels();
@@ -238,16 +238,16 @@ public class DIL_IC extends AbstractTransparentComponent<String> {
default:
throw new RuntimeException("Unexpected orientation: " + orientation);
}
controlPoints[i] = new Point((int) (firstPoint.x + dx1), (int) (firstPoint.y + dy1));
controlPoints[i + pinCount.getValue() / 2] = new Point((int) (firstPoint.x + dx2), (int) (firstPoint.y + dy2));
controlPoints[i] = new Point2D.Double((int) (firstPoint.getX() + dx1), (int) (firstPoint.getY() + dy1));
controlPoints[i + pinCount.getValue() / 2] = new Point2D.Double((int) (firstPoint.getX() + dx2), (int) (firstPoint.getY() + dy2));
}
}
public Area[] getBody() {
if (body == null) {
body = new Area[2];
double x = controlPoints[0].x;
double y = controlPoints[0].y;
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
double width;
double height;
double pinSize = PIN_SIZE.convertToPixels();
@@ -314,11 +314,11 @@ public class DIL_IC extends AbstractTransparentComponent<String> {
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1f));
if (!outlineMode) {
int pinSize = (int) PIN_SIZE.convertToPixels() / 2 * 2;
for (Point point : controlPoints) {
for (Point2D point : controlPoints) {
g2d.setColor(PIN_COLOR);
g2d.fillRect(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
g2d.fillRect((int)(point.getX() - pinSize / 2), (int)(point.getY() - pinSize / 2), pinSize, pinSize);
g2d.setColor(PIN_BORDER_COLOR);
g2d.drawRect(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
g2d.drawRect((int)(point.getX() - pinSize / 2), (int)(point.getY() - pinSize / 2), pinSize, pinSize);
}
}
Composite oldComposite = g2d.getComposite();
@@ -392,14 +392,14 @@ public class DIL_IC extends AbstractTransparentComponent<String> {
int textWidth = (int) (rect.getWidth());
// Center text horizontally and vertically
Rectangle bounds = mainArea.getBounds();
int x = bounds.x + (bounds.width - textWidth) / 2;
int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
double x = bounds.getX() + (bounds.width - textWidth) / 2;
double y = bounds.getY() + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
AffineTransform oldTransform = g2d.getTransform();
if (getOrientation() == Orientation.DEFAULT || getOrientation() == Orientation._180) {
int centerX = bounds.x + bounds.width / 2;
int centerY = bounds.y + bounds.height / 2;
double centerX = bounds.getX() + bounds.width / 2;
double centerY = bounds.getY() + bounds.height / 2;
g2d.rotate(-Math.PI / 2, centerX, centerY);
}
@@ -410,7 +410,7 @@ public class DIL_IC extends AbstractTransparentComponent<String> {
g2d.translate(0, textHeight / 2);
}
g2d.drawString(l, x, y);
g2d.drawString(l, (int)x, (int)y);
g2d.setTransform(oldTransform);
}
@@ -421,14 +421,14 @@ public class DIL_IC extends AbstractTransparentComponent<String> {
int j = 0;
int k = 0;
int pinSize = (int) PIN_SIZE.convertToPixels();
for (Point point : controlPoints) {
for (Point2D point : controlPoints) {
pinNo++;
// determine points relative to rotation
int textX1 = point.x - 2 * pinSize;
int textY1 = point.y + pinSize / 2;
int textX2 = point.x + pinSize;
int textY2 = point.y + pinSize / 2;
int textX1 = (int) (point.getX() - 2 * pinSize);
int textY1 = (int) (point.getY() + pinSize / 2);
int textX2 = (int) (point.getX() + pinSize);
int textY2 = (int) (point.getY() + pinSize / 2);
if (orientation == Orientation._90) {
textX2 = textX2 - pinSize - pinSize / 2;
textY2 = textY2 + pinSize;
@@ -560,21 +560,21 @@ public class DIL_IC extends AbstractTransparentComponent<String> {
@Override
public Rectangle2D getCachingBounds() {
int minX = Integer.MAX_VALUE;
int maxX = Integer.MIN_VALUE;
int minY = Integer.MAX_VALUE;
int maxY = Integer.MIN_VALUE;
double minX = Integer.MAX_VALUE;
double maxX = Integer.MIN_VALUE;
double minY = Integer.MAX_VALUE;
double maxY = Integer.MIN_VALUE;
int margin = 50;
for (int i = 0; i < getControlPointCount(); i++) {
Point p = getControlPoint(i);
if (p.x < minX)
minX = p.x;
if (p.x > maxX)
maxX = p.x;
if (p.y < minY)
minY = p.y;
if (p.y > maxY)
maxY = p.y;
Point2D p = getControlPoint(i);
if (p.getX() < minX)
minX = p.getX();
if (p.getX() > maxX)
maxX = p.getX();
if (p.getY() < minY)
minY = p.getY();
if (p.getY() > maxY)
maxY = p.getY();
}
return new Rectangle2D.Double(minX - margin, minY - margin, maxX - minX + 2 * margin, maxY - minY + 2 * margin);
@@ -25,11 +25,11 @@ import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Polygon;
import java.awt.Shape;
import java.awt.geom.Area;
import java.awt.geom.GeneralPath;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.diylc.appframework.miscutils.ConfigurationManager;
@@ -66,8 +66,8 @@ public class ICSymbol extends AbstractTransparentComponent<String> {
protected ICPointCount icPointCount = ICPointCount._5;
protected String value = "";
protected Point[] controlPoints = new Point[] {new Point(0, 0), new Point(0, 0), 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), new Point2D.Double(0, 0),
new Point2D.Double(0, 0)};
protected Color bodyColor = BODY_COLOR;
protected Color borderColor = BORDER_COLOR;
protected Display display = Display.NAME;
@@ -126,7 +126,7 @@ public class ICSymbol extends AbstractTransparentComponent<String> {
: LABEL_COLOR;
}
g2d.setColor(finalLabelColor);
int x = (controlPoints[0].x + controlPoints[2].x) / 2;
double x = (controlPoints[0].getX() + controlPoints[2].getX()) / 2;
String label = "";
label = display == Display.VALUE ? getValue() : getName();
if (display == Display.NONE) {
@@ -135,12 +135,12 @@ public class ICSymbol extends AbstractTransparentComponent<String> {
if (display == Display.BOTH) {
label = getName() + " " + (getValue() == null ? "" : getValue().toString());
}
StringUtils.drawCenteredText(g2d, label, x, controlPoints[0].y + pinSpacing, HorizontalAlignment.CENTER,
StringUtils.drawCenteredText(g2d, label, x, controlPoints[0].getY() + pinSpacing, HorizontalAlignment.CENTER,
VerticalAlignment.CENTER);
// Draw +/- markers
StringUtils.drawCenteredText(g2d, getFlip() ? "+" : "-", controlPoints[0].x + pinSpacing, controlPoints[0].y, HorizontalAlignment.CENTER,
StringUtils.drawCenteredText(g2d, getFlip() ? "+" : "-", controlPoints[0].getX() + pinSpacing, controlPoints[0].getY(), HorizontalAlignment.CENTER,
VerticalAlignment.CENTER);
StringUtils.drawCenteredText(g2d, getFlip() ? "-" : "+", controlPoints[1].x + pinSpacing, controlPoints[1].y, HorizontalAlignment.CENTER,
StringUtils.drawCenteredText(g2d, getFlip() ? "-" : "+", controlPoints[1].getX() + pinSpacing, controlPoints[1].getY(), HorizontalAlignment.CENTER,
VerticalAlignment.CENTER);
}
@@ -165,7 +165,7 @@ public class ICSymbol extends AbstractTransparentComponent<String> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@@ -177,45 +177,38 @@ public class ICSymbol extends AbstractTransparentComponent<String> {
private void updateControlPoints() {
int pinSpacing = (int) PIN_SPACING.convertToPixels();
// Update control points.
int x = controlPoints[0].x;
int y = controlPoints[0].y;
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
controlPoints[1].x = x;
controlPoints[1].y = y + pinSpacing * 2;
controlPoints[2].x = x + pinSpacing * 6;
controlPoints[2].y = y + pinSpacing;
controlPoints[3].x = x + pinSpacing * 3;
controlPoints[3].y = y - pinSpacing;
controlPoints[4].x = x + pinSpacing * 3;
controlPoints[4].y = y + pinSpacing * 3;
controlPoints[1].setLocation(x, y + pinSpacing * 2);
controlPoints[2].setLocation(x + pinSpacing * 6, y + pinSpacing);
controlPoints[3].setLocation(x + pinSpacing * 3, y - pinSpacing);
controlPoints[4].setLocation(x + pinSpacing * 3, y + pinSpacing * 3);
}
public Shape[] getBody() {
if (body == null) {
body = new Shape[2];
int pinSpacing = (int) PIN_SPACING.convertToPixels();
int x = controlPoints[0].x;
int y = controlPoints[0].y;
int x = (int) controlPoints[0].getX();
int y = (int) controlPoints[0].getY();
Shape triangle =
new Polygon(new int[] {x + pinSpacing / 2, x + pinSpacing * 11 / 2, x + pinSpacing / 2}, new int[] {
y - pinSpacing * 3 / 2, y + pinSpacing, y + pinSpacing * 7 / 2}, 3);
body[0] = triangle;
GeneralPath polyline = new GeneralPath();
polyline.moveTo(controlPoints[0].x, controlPoints[0].y);
polyline.lineTo(controlPoints[0].x + pinSpacing / 2, controlPoints[0].y);
polyline.moveTo(controlPoints[1].x, controlPoints[1].y);
polyline.lineTo(controlPoints[1].x + pinSpacing / 2, controlPoints[1].y);
polyline.moveTo(controlPoints[2].x, controlPoints[2].y);
polyline.lineTo(controlPoints[2].x - pinSpacing / 2, controlPoints[2].y);
polyline.moveTo(controlPoints[0].getX(), controlPoints[0].getY());
polyline.lineTo(controlPoints[0].getX() + pinSpacing / 2, controlPoints[0].getY());
polyline.moveTo(controlPoints[1].getX(), controlPoints[1].getY());
polyline.lineTo(controlPoints[1].getX() + pinSpacing / 2, controlPoints[1].getY());
polyline.moveTo(controlPoints[2].getX(), controlPoints[2].getY());
polyline.lineTo(controlPoints[2].getX() - pinSpacing / 2, controlPoints[2].getY());
if (icPointCount == ICPointCount._5) {
polyline.moveTo(controlPoints[3].x, controlPoints[3].y);
polyline.lineTo(controlPoints[3].x, controlPoints[3].y + pinSpacing * 3 / 4);
polyline.moveTo(controlPoints[4].x, controlPoints[4].y);
polyline.lineTo(controlPoints[4].x, controlPoints[4].y - pinSpacing * 3 / 4);
polyline.moveTo(controlPoints[3].getX(), controlPoints[3].getY());
polyline.lineTo(controlPoints[3].getX(), controlPoints[3].getY() + pinSpacing * 3 / 4);
polyline.moveTo(controlPoints[4].getX(), controlPoints[4].getY());
polyline.lineTo(controlPoints[4].getX(), controlPoints[4].getY() - pinSpacing * 3 / 4);
}
body[1] = polyline;
}
@@ -244,7 +237,7 @@ public class ICSymbol extends AbstractTransparentComponent<String> {
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
controlPoints[index].setLocation(point);
body = null;
}
@@ -21,18 +21,18 @@
*/
package org.diylc.components.semiconductors;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Polygon;
import java.awt.Shape;
import java.awt.geom.GeneralPath;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.Shape;
import java.awt.geom.GeneralPath;
import java.awt.geom.Point2D;
import org.diylc.common.ObjectCache;
import org.diylc.common.ObjectCache;
import org.diylc.components.Abstract3LegSymbol;
import org.diylc.components.transform.ThreeLegTransformer;
import org.diylc.core.IDIYComponent;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.IDIYComponent;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.annotations.KeywordPolicy;
@ComponentDescriptor(name = "JFET", author = "Branislav Stojkovic", category = "Schematic Symbols",
@@ -46,9 +46,9 @@ public class JFETSymbol extends Abstract3LegSymbol {
public Shape[] getBody() {
Shape[] body = new Shape[3];
Point[] controlPoints = getControlPoints();
int x = controlPoints[0].x;
int y = controlPoints[0].y;
Point2D[] controlPoints = getControlPoints();
int x = (int) controlPoints[0].getX();
int y = (int) controlPoints[0].getY();
int pinSpacing = (int) PIN_SPACING.convertToPixels();
GeneralPath polyline = new GeneralPath();
@@ -21,13 +21,13 @@ import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Polygon;
import java.awt.Shape;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.GeneralPath;
import java.awt.geom.Path2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.diylc.appframework.miscutils.ConfigurationManager;
@@ -64,7 +64,7 @@ public class LogicGateSymbol extends AbstractTransparentComponent<String> {
protected GateType gateType = GateType.Not;
protected String value = "";
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)};
protected Color bodyColor = BODY_COLOR;
protected Color borderColor = BORDER_COLOR;
protected Display display = Display.NONE;
@@ -124,7 +124,7 @@ public class LogicGateSymbol extends AbstractTransparentComponent<String> {
: LABEL_COLOR;
}
g2d.setColor(finalLabelColor);
int x = (controlPoints[0].x + controlPoints[getControlPointCount() == 2 ? 1 : 2].x) / 2;
int x = (int) ((controlPoints[0].getX() + controlPoints[getControlPointCount() == 2 ? 1 : 2].getX()) / 2);
String label = "";
label = display == Display.VALUE ? getValue() : getName();
if (display == Display.NONE) {
@@ -133,7 +133,7 @@ public class LogicGateSymbol extends AbstractTransparentComponent<String> {
if (display == Display.BOTH) {
label = getName() + " " + (getValue() == null ? "" : getValue().toString());
}
StringUtils.drawCenteredText(g2d, label, x, controlPoints[0].y + (getControlPointCount() == 2 ? 0 : pinSpacing), HorizontalAlignment.CENTER,
StringUtils.drawCenteredText(g2d, label, x, controlPoints[0].getY() + (getControlPointCount() == 2 ? 0 : pinSpacing), HorizontalAlignment.CENTER,
VerticalAlignment.CENTER);
}
@@ -155,7 +155,7 @@ public class LogicGateSymbol extends AbstractTransparentComponent<String> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@@ -167,18 +167,14 @@ public class LogicGateSymbol extends AbstractTransparentComponent<String> {
private void updateControlPoints() {
int pinSpacing = (int) PIN_SPACING.convertToPixels();
// Update control points.
int x = controlPoints[0].x;
int y = controlPoints[0].y;
int x = (int) controlPoints[0].getX();
int y = (int) controlPoints[0].getY();
if (getControlPointCount() == 2) {
controlPoints[1].x = x + pinSpacing * 6;
controlPoints[1].y = y;
controlPoints[1].setLocation(x + pinSpacing * 6, y);
} else {
controlPoints[1].x = x;
controlPoints[1].y = y + pinSpacing * 2;
controlPoints[2].x = x + pinSpacing * 6;
controlPoints[2].y = y + pinSpacing;
controlPoints[1].setLocation(x, y + pinSpacing * 2);
controlPoints[2].setLocation(x + pinSpacing * 6, y + pinSpacing);
}
}
@@ -186,8 +182,8 @@ public class LogicGateSymbol extends AbstractTransparentComponent<String> {
if (body == null) {
body = new Shape[3];
int pinSpacing = (int) PIN_SPACING.convertToPixels();
int x = controlPoints[0].x;
int y = controlPoints[0].y;
int x = (int) controlPoints[0].getX();
int y = (int) controlPoints[0].getY();
Area main = null;
@@ -224,23 +220,23 @@ public class LogicGateSymbol extends AbstractTransparentComponent<String> {
GeneralPath connections = new GeneralPath();
if (getControlPointCount() == 2) {
connections.moveTo(controlPoints[0].x, controlPoints[0].y);
connections.lineTo(controlPoints[0].x + pinSpacing * 3 / 2, controlPoints[0].y);
connections.moveTo(controlPoints[1].x, controlPoints[1].y);
connections.moveTo(controlPoints[0].getX(), controlPoints[0].getY());
connections.lineTo(controlPoints[0].getX() + pinSpacing * 3 / 2, controlPoints[0].getY());
connections.moveTo(controlPoints[1].getX(), controlPoints[1].getY());
if (getGateType().getNeedsCircle())
connections.lineTo(controlPoints[1].x - pinSpacing, controlPoints[1].y);
connections.lineTo(controlPoints[1].getX() - pinSpacing, controlPoints[1].getY());
else
connections.lineTo(controlPoints[1].x - pinSpacing * 3 / 2, controlPoints[1].y);
connections.lineTo(controlPoints[1].getX() - pinSpacing * 3 / 2, controlPoints[1].getY());
} else {
connections.moveTo(controlPoints[0].x, controlPoints[0].y);
connections.lineTo(controlPoints[0].x + pinSpacing * 3 / 2, controlPoints[0].y);
connections.moveTo(controlPoints[1].x, controlPoints[1].y);
connections.lineTo(controlPoints[1].x + pinSpacing * 3 / 2, controlPoints[1].y);
connections.moveTo(controlPoints[2].x, controlPoints[2].y);
connections.moveTo(controlPoints[0].getX(), controlPoints[0].getY());
connections.lineTo(controlPoints[0].getX() + pinSpacing * 3 / 2, controlPoints[0].getY());
connections.moveTo(controlPoints[1].getX(), controlPoints[1].getY());
connections.lineTo(controlPoints[1].getX() + pinSpacing * 3 / 2, controlPoints[1].getY());
connections.moveTo(controlPoints[2].getX(), controlPoints[2].getY());
if (getGateType().getNeedsCircle())
connections.lineTo(controlPoints[2].x - pinSpacing, controlPoints[2].y);
connections.lineTo(controlPoints[2].getX() - pinSpacing, controlPoints[2].getY());
else
connections.lineTo(controlPoints[2].x - pinSpacing * 3 / 2, controlPoints[2].y);
connections.lineTo(controlPoints[2].getX() - pinSpacing * 3 / 2, controlPoints[2].getY());
}
body[1] = connections;
@@ -276,7 +272,7 @@ public class LogicGateSymbol extends AbstractTransparentComponent<String> {
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
controlPoints[index].setLocation(point);
body = null;
}
@@ -21,18 +21,18 @@
*/
package org.diylc.components.semiconductors;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Polygon;
import java.awt.Shape;
import java.awt.geom.GeneralPath;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.Shape;
import java.awt.geom.GeneralPath;
import java.awt.geom.Point2D;
import org.diylc.common.ObjectCache;
import org.diylc.common.ObjectCache;
import org.diylc.components.Abstract3LegSymbol;
import org.diylc.components.transform.ThreeLegTransformer;
import org.diylc.core.IDIYComponent;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.IDIYComponent;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.annotations.KeywordPolicy;
@ComponentDescriptor(name = "MOSFET", author = "Branislav Stojkovic", category = "Schematic Symbols",
@@ -46,9 +46,9 @@ public class MOSFETSymbol extends Abstract3LegSymbol {
public Shape[] getBody() {
Shape[] body = new Shape[3];
Point[] controlPoints = getControlPoints();
int x = controlPoints[0].x;
int y = controlPoints[0].y;
Point2D[] controlPoints = getControlPoints();
int x = (int) controlPoints[0].getX();
int y = (int) controlPoints[0].getY();
int pinSpacing = (int) PIN_SPACING.convertToPixels();
GeneralPath polyline = new GeneralPath();
@@ -26,10 +26,10 @@ import java.awt.Color;
import java.awt.Composite;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
@@ -77,7 +77,7 @@ public class SIL_IC extends AbstractTransparentComponent<String> {
private Orientation orientation = Orientation.DEFAULT;
private PinCount pinCount = PinCount._8;
private Size pinSpacing = new Size(0.1d, SizeUnit.in);
private Point[] controlPoints = new Point[] {new Point(0, 0)};
private Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0)};
protected Display display = Display.NAME;
private Color bodyColor = BODY_COLOR;
private Color borderColor = BORDER_COLOR;
@@ -169,7 +169,7 @@ public class SIL_IC extends AbstractTransparentComponent<String> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@@ -184,14 +184,14 @@ public class SIL_IC extends AbstractTransparentComponent<String> {
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
controlPoints[index].setLocation(point);
body = null;
}
private void updateControlPoints() {
Point firstPoint = controlPoints[0];
controlPoints = new Point[pinCount.getValue()];
Point2D firstPoint = controlPoints[0];
controlPoints = new Point2D.Double[pinCount.getValue()];
controlPoints[0] = firstPoint;
double pinSpacing = this.pinSpacing.convertToPixels();
// Update control points.
@@ -218,15 +218,15 @@ public class SIL_IC extends AbstractTransparentComponent<String> {
default:
throw new RuntimeException("Unexpected orientation: " + orientation);
}
controlPoints[i] = new Point((int) (firstPoint.x + dx1), (int) (firstPoint.y + dy1));
controlPoints[i] = new Point2D.Double((int) (firstPoint.getX() + dx1), (int) (firstPoint.getY() + dy1));
}
}
public Area[] getBody() {
if (body == null) {
body = new Area[2];
int x = controlPoints[0].x;
int y = controlPoints[0].y;
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
int thickness = getClosestOdd(THICKNESS.convertToPixels());
double width;
double height;
@@ -293,11 +293,11 @@ public class SIL_IC extends AbstractTransparentComponent<String> {
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1f));
if (!outlineMode) {
int pinSize = (int) PIN_SIZE.convertToPixels() / 2 * 2;
for (Point point : controlPoints) {
for (Point2D point : controlPoints) {
g2d.setColor(PIN_COLOR);
g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
g2d.fillOval((int)(point.getX() - pinSize / 2), (int)(point.getY() - pinSize / 2), pinSize, pinSize);
g2d.setColor(PIN_BORDER_COLOR);
g2d.drawOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
g2d.drawOval((int)(point.getX() - pinSize / 2), (int)(point.getY() - pinSize / 2), pinSize, pinSize);
}
}
@@ -363,8 +363,8 @@ public class SIL_IC extends AbstractTransparentComponent<String> {
int textWidth = (int) (rect.getWidth());
// Center text horizontally and vertically
Rectangle bounds = mainArea.getBounds();
int x = bounds.x + (bounds.width - textWidth) / 2;
int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
int x = (int) (bounds.getX() + (bounds.width - textWidth) / 2);
int y = (int) (bounds.getY() + (bounds.height - textHeight) / 2 + fontMetrics.getAscent());
g2d.drawString(label, x, y);
}
@@ -434,21 +434,21 @@ public class SIL_IC extends AbstractTransparentComponent<String> {
@Override
public Rectangle2D getCachingBounds() {
int minX = Integer.MAX_VALUE;
int maxX = Integer.MIN_VALUE;
int minY = Integer.MAX_VALUE;
int maxY = Integer.MIN_VALUE;
double minX = Integer.MAX_VALUE;
double maxX = Integer.MIN_VALUE;
double minY = Integer.MAX_VALUE;
double maxY = Integer.MIN_VALUE;
int margin = 50;
for (int i = 0; i < getControlPointCount(); i++) {
Point p = getControlPoint(i);
if (p.x < minX)
minX = p.x;
if (p.x > maxX)
maxX = p.x;
if (p.y < minY)
minY = p.y;
if (p.y > maxY)
maxY = p.y;
Point2D p = getControlPoint(i);
if (p.getX() < minX)
minX = p.getX();
if (p.getX() > maxX)
maxX = p.getX();
if (p.getY() < minY)
minY = p.getY();
if (p.getY() > maxY)
maxY = p.getY();
}
return new Rectangle2D.Double(minX - margin, minY - margin, maxX - minX + 2 * margin, maxY - minY + 2 * margin);
@@ -26,7 +26,6 @@ import java.awt.Color;
import java.awt.Composite;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
@@ -79,7 +78,7 @@ public class TransistorTO3 extends AbstractTransparentComponent<String> {
private String value = "";
private Orientation orientation = Orientation.DEFAULT;
private Point[] controlPoints = new Point[] {new Point(0, 0), new Point(0, 0)};
private Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0), new Point2D.Double(0, 0)};
transient private Area[] body;
private Color bodyColor = BODY_COLOR;
private Color borderColor = BORDER_COLOR;
@@ -119,7 +118,7 @@ public class TransistorTO3 extends AbstractTransparentComponent<String> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@@ -134,7 +133,7 @@ public class TransistorTO3 extends AbstractTransparentComponent<String> {
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
controlPoints[index].setLocation(point);
body = null;
}
@@ -142,8 +141,8 @@ public class TransistorTO3 extends AbstractTransparentComponent<String> {
private void updateControlPoints() {
int pinSpacing = (int) PIN_SPACING.convertToPixels();
// Update control points.
int x = controlPoints[0].x;
int y = controlPoints[0].y;
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
switch (orientation) {
case DEFAULT:
controlPoints[1].setLocation(x, y + pinSpacing);
@@ -166,8 +165,8 @@ public class TransistorTO3 extends AbstractTransparentComponent<String> {
if (body == null) {
body = new Area[2];
int pinOffset = (int) PIN_OFFSET.convertToPixels();
int x = (controlPoints[0].x + controlPoints[1].x) / 2;
int y = (controlPoints[0].y + controlPoints[1].y) / 2;
double x = (controlPoints[0].getX() + controlPoints[1].getX()) / 2;
double y = (controlPoints[0].getY() + controlPoints[1].getY()) / 2;
switch (orientation) {
case DEFAULT:
@@ -235,13 +234,13 @@ public class TransistorTO3 extends AbstractTransparentComponent<String> {
Theme theme = (Theme) ConfigurationManager.getInstance().readObject(IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME);
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1f));
for (Point point : controlPoints) {
for (Point2D point : controlPoints) {
if (!outlineMode) {
g2d.setColor(PIN_COLOR);
g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
g2d.fillOval((int)(point.getX() - pinSize / 2), (int)(point.getY() - pinSize / 2), pinSize, pinSize);
}
g2d.setColor(outlineMode ? theme.getOutlineColor() : PIN_BORDER_COLOR);
g2d.drawOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
g2d.drawOval((int)(point.getX() - pinSize / 2), (int)(point.getY() - pinSize / 2), pinSize, pinSize);
}
Area mainArea = getBody()[0];
@@ -296,8 +295,8 @@ public class TransistorTO3 extends AbstractTransparentComponent<String> {
int textWidth = (int) (rect.getWidth());
// Center text horizontally and vertically
Rectangle bounds = mainArea.getBounds();
int x = bounds.x + (bounds.width - textWidth) / 2;
int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
int x = (int) (bounds.getX() + (bounds.width - textWidth) / 2);
int y = (int) (bounds.getY() + (bounds.height - textHeight) / 2 + fontMetrics.getAscent());
g2d.drawString(label, x, y);
}
@@ -21,14 +21,15 @@
*/
package org.diylc.components.shapes;
import java.awt.Color;
import java.awt.Point;
import java.awt.Color;
import java.awt.Point;
import java.awt.geom.Point2D;
import org.diylc.components.AbstractTransparentComponent;
import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.components.AbstractTransparentComponent;
import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.annotations.PositiveMeasureValidator;
import org.diylc.core.measures.Size;
import org.diylc.core.measures.Size;
import org.diylc.core.measures.SizeUnit;
public abstract class AbstractShape extends AbstractTransparentComponent<Void> {
@@ -41,10 +42,10 @@ public abstract class AbstractShape extends AbstractTransparentComponent<Void> {
public static Size DEFAULT_HEIGHT = new Size(0.4d, SizeUnit.in);
protected String value = "";
protected Point[] controlPoints = new Point[] {new Point(0, 0),
new Point((int) DEFAULT_WIDTH.convertToPixels(), (int) DEFAULT_HEIGHT.convertToPixels())};
protected Point firstPoint = new Point();
protected Point secondPoint = new Point();
protected Point2D[] controlPoints = new Point2D[] {new Point(0, 0),
new Point2D.Double(DEFAULT_WIDTH.convertToPixels(), DEFAULT_HEIGHT.convertToPixels())};
protected Point2D firstPoint = new Point();
protected Point2D secondPoint = new Point();
protected Color color = COLOR;
protected Color borderColor = BORDER_COLOR;
@@ -83,7 +84,7 @@ public abstract class AbstractShape extends AbstractTransparentComponent<Void> {
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@@ -98,12 +99,12 @@ public abstract class AbstractShape extends AbstractTransparentComponent<Void> {
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
controlPoints[index].setLocation(point);
firstPoint.setLocation(Math.min(controlPoints[0].x, controlPoints[1].x),
Math.min(controlPoints[0].y, controlPoints[1].y));
secondPoint.setLocation(Math.max(controlPoints[0].x, controlPoints[1].x),
Math.max(controlPoints[0].y, controlPoints[1].y));
firstPoint.setLocation(Math.min(controlPoints[0].getX(), controlPoints[1].getX()),
Math.min(controlPoints[0].getY(), controlPoints[1].getY()));
secondPoint.setLocation(Math.max(controlPoints[0].getX(), controlPoints[1].getX()),
Math.max(controlPoints[0].getY(), controlPoints[1].getY()));
}
@Override
@@ -54,7 +54,7 @@ public class Ellipse extends AbstractShape {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
}
g2d.setColor(color);
g2d.fillOval(firstPoint.x, firstPoint.y, secondPoint.x - firstPoint.x, secondPoint.y - firstPoint.y);
g2d.fillOval((int)firstPoint.getX(), (int)firstPoint.getY(), (int)(secondPoint.getX() - firstPoint.getX()), (int)(secondPoint.getY() - firstPoint.getY()));
g2d.setComposite(oldComposite);
// Do not track any changes that follow because the whole oval has been
@@ -62,7 +62,7 @@ public class Ellipse extends AbstractShape {
drawingObserver.stopTracking();
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
: borderColor);
g2d.drawOval(firstPoint.x, firstPoint.y, secondPoint.x - firstPoint.x, secondPoint.y - firstPoint.y);
g2d.drawOval((int)firstPoint.getX(), (int)firstPoint.getY(), (int)(secondPoint.getX() - firstPoint.getX()), (int)(secondPoint.getY() - firstPoint.getY()));
}
@Override
@@ -21,21 +21,22 @@
*/
package org.diylc.components.shapes;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.util.Arrays;
import org.diylc.common.ObjectCache;
import org.diylc.common.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
import org.diylc.core.Project;
import org.diylc.core.annotations.BomPolicy;
import org.diylc.core.annotations.ComponentDescriptor;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.Point2D;
import java.util.Arrays;
import org.diylc.common.ObjectCache;
import org.diylc.common.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
import org.diylc.core.Project;
import org.diylc.core.annotations.BomPolicy;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
@ComponentDescriptor(name = "Polygon", author = "Branislav Stojkovic", category = "Shapes",
@@ -64,8 +65,8 @@ public class Polygon extends AbstractShape {
int[] xPoints = new int[controlPoints.length];
int[] yPoints = new int[controlPoints.length];
for (int i = 0; i < controlPoints.length; i++) {
xPoints[i] = controlPoints[i].x;
yPoints[i] = controlPoints[i].y;
xPoints[i] = (int)controlPoints[i].getX();
yPoints[i] = (int)controlPoints[i].getY();
}
Composite oldComposite = g2d.getComposite();
@@ -100,8 +101,8 @@ public class Polygon extends AbstractShape {
this.controlPoints[newPointCount - 1] = this.controlPoints[oldPointCount - 1];
for (int i = oldPointCount - 1; i < newPointCount - 1; i++) {
this.controlPoints[i] =
new Point((this.controlPoints[i - 1].x + this.controlPoints[newPointCount - 1].x) / 2,
(this.controlPoints[i - 1].y + this.controlPoints[newPointCount - 1].y) / 2);
new Point2D.Double((this.controlPoints[i - 1].getX() + this.controlPoints[newPointCount - 1].getX()) / 2,
(this.controlPoints[i - 1].getY() + this.controlPoints[newPointCount - 1].getY()) / 2);
}
}
this.pointCount = pointCount;
@@ -62,7 +62,7 @@ public class Rectangle extends AbstractShape {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
}
g2d.setColor(color);
g2d.fillRoundRect(firstPoint.x, firstPoint.y, secondPoint.x - firstPoint.x, secondPoint.y - firstPoint.y, radius,
g2d.fillRoundRect((int)firstPoint.getX(), (int)firstPoint.getY(), (int)(secondPoint.getX() - firstPoint.getX()), (int)(secondPoint.getY() - firstPoint.getY()), radius,
radius);
g2d.setComposite(oldComposite);
@@ -71,7 +71,7 @@ public class Rectangle extends AbstractShape {
drawingObserver.stopTracking();
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
: borderColor);
g2d.drawRoundRect(firstPoint.x, firstPoint.y, secondPoint.x - firstPoint.x, secondPoint.y - firstPoint.y, radius,
g2d.drawRoundRect((int)firstPoint.getX(), (int)firstPoint.getY(), (int)(secondPoint.getX() - firstPoint.getX()), (int)(secondPoint.getY() - firstPoint.getY()), radius,
radius);
}
@@ -26,12 +26,12 @@ import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Polygon;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.Stroke;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.text.DecimalFormat;
@@ -111,13 +111,15 @@ public class TapeMeasure extends AbstractLeadedComponent<String> {
g2d.setStroke(stroke);
g2d.setColor(componentState == ComponentState.SELECTED ? SELECTION_COLOR : color);
Point startPoint = new Point(getControlPoint(0));
Point endPoint = new Point(getControlPoint(1));
Point2D first = getControlPoint(0);
Point2D second = getControlPoint(1);
Point2D startPoint = new Point2D.Double(first.getX(), first.getY());
Point2D endPoint = new Point2D.Double(second.getX(), second.getY());
if (arrowStart) {
arrowTx.setToIdentity();
double angle = Math.atan2(getControlPoint(1).y - getControlPoint(0).y, getControlPoint(1).x - getControlPoint(0).x);
arrowTx.translate(getControlPoint(0).x, getControlPoint(0).y);
double angle = Math.atan2(getControlPoint(1).getY() - getControlPoint(0).getY(), getControlPoint(1).getX() - getControlPoint(0).getX());
arrowTx.translate(getControlPoint(0).getX(), getControlPoint(0).getY());
arrowTx.rotate((angle + Math.PI / 2d));
AffineTransform oldTx = g2d.getTransform();
g2d.transform(arrowTx);
@@ -125,13 +127,13 @@ public class TapeMeasure extends AbstractLeadedComponent<String> {
g2d.setTransform(oldTx);
// make the line slightly shorter so line end doesn't overlap with the arrow
double distance = distance(startPoint, endPoint);
double distance = startPoint.distance(endPoint);
interpolate(startPoint, endPoint, getArrowSize().convertToPixels() * 0.9 / distance, startPoint);
}
if (arrowEnd) {
arrowTx.setToIdentity();
double angle = Math.atan2(getControlPoint(1).y - getControlPoint(0).y, getControlPoint(1).x - getControlPoint(0).x);
arrowTx.translate(getControlPoint(1).x, getControlPoint(1).y);
double angle = Math.atan2(getControlPoint(1).getY() - getControlPoint(0).getY(), getControlPoint(1).getX() - getControlPoint(0).getX());
arrowTx.translate(getControlPoint(1).getX(), getControlPoint(1).getY());
arrowTx.rotate((angle - Math.PI / 2d));
AffineTransform oldTx = g2d.getTransform();
g2d.transform(arrowTx);
@@ -139,11 +141,11 @@ public class TapeMeasure extends AbstractLeadedComponent<String> {
g2d.setTransform(oldTx);
// make the line slightly shorter so line end doesn't overlap with the arrow
double distance = distance(startPoint, endPoint);
double distance = startPoint.distance(endPoint);
interpolate(endPoint, startPoint, getArrowSize().convertToPixels() * 0.9 / distance, endPoint);
}
double theta = Math.atan2(getPoints()[1].y - getPoints()[0].y, getPoints()[1].x - getPoints()[0].x);
double theta = Math.atan2(getPoints()[1].getY() - getPoints()[0].getY(), getPoints()[1].getX() - getPoints()[0].getX());
String text = getValue();
Font font = Project.DEFAULT_FONT;
@@ -157,33 +159,30 @@ public class TapeMeasure extends AbstractLeadedComponent<String> {
System.out.println(strWidth + " " + legLength);
// draw legs around the enter text
g2d.drawLine(startPoint.x, startPoint.y,
(int)Math.round(startPoint.x + Math.cos(theta) * legLength),
(int)Math.round(startPoint.y + Math.sin(theta) * legLength));
g2d.drawLine((int)startPoint.getX(), (int)startPoint.getY(),
(int)Math.round(startPoint.getX() + Math.cos(theta) * legLength),
(int)Math.round(startPoint.getY() + Math.sin(theta) * legLength));
g2d.drawLine(endPoint.x, endPoint.y,
(int)Math.round(endPoint.x - Math.cos(theta) * legLength),
(int)Math.round(endPoint.y - Math.sin(theta) * legLength));
g2d.drawLine((int)endPoint.getX(), (int)endPoint.getY(),
(int)Math.round(endPoint.getX() - Math.cos(theta) * legLength),
(int)Math.round(endPoint.getY() - Math.sin(theta) * legLength));
// Adjust label angle if needed to make sure that it's readable.
if ((theta >= Math.PI / 2 && theta <= Math.PI) || (theta < -Math.PI / 2 && theta > -Math.PI)) {
theta += Math.PI;
}
g2d.translate((getPoints()[0].x + getPoints()[1].x) / 2, (getPoints()[0].y + getPoints()[1].y) / 2);
g2d.translate((getPoints()[0].getX() + getPoints()[1].getX()) / 2, (getPoints()[0].getY() + getPoints()[1].getY()) / 2);
g2d.rotate(theta);
g2d.setFont(font);
g2d.drawString(text, x, y);
}
private void interpolate(Point p1, Point p2, double t, Point p) {
p.setLocation((int)Math.round(p1.x * (1-t) + p2.x * t), (int)Math.round(p1.y * (1-t) + p2.y * t));
private void interpolate(Point2D p1, Point2D p2, double t, Point2D p) {
p.setLocation((int)Math.round(p1.getX() * (1-t) + p2.getX() * t), (int)Math.round(p1.getY() * (1-t) + p2.getY() * t));
}
private double distance(Point p1, Point p2) {
return Math.sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y));
}
@Override
public Color getLeadColorForPainting(ComponentState componentState) {
@@ -294,8 +293,8 @@ public class TapeMeasure extends AbstractLeadedComponent<String> {
@Override
public String getValue() {
Point a = getControlPoint(0);
Point b = getControlPoint(1);
Point2D a = getControlPoint(0);
Point2D b = getControlPoint(1);
double d = a.distance(b);
double convertedD = SizeUnit.px.getFactor() / getUnit().getFactor() * d;
String format = "#";
@@ -21,31 +21,31 @@
*/
package org.diylc.components.smd;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.geom.Area;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.geom.Area;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
import org.diylc.appframework.miscutils.ConfigurationManager;
import org.diylc.common.Display;
import org.diylc.common.IPlugInPort;
import org.diylc.common.ObjectCache;
import org.diylc.common.Orientation;
import org.diylc.components.AbstractTransparentComponent;
import org.diylc.core.ComponentState;
import org.diylc.core.IDrawingObserver;
import org.diylc.core.Project;
import org.diylc.core.Theme;
import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.measures.Size;
import org.diylc.core.measures.SizeUnit;
import org.diylc.appframework.miscutils.ConfigurationManager;
import org.diylc.common.Display;
import org.diylc.common.IPlugInPort;
import org.diylc.common.ObjectCache;
import org.diylc.common.Orientation;
import org.diylc.components.AbstractTransparentComponent;
import org.diylc.core.ComponentState;
import org.diylc.core.IDrawingObserver;
import org.diylc.core.Project;
import org.diylc.core.Theme;
import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.measures.Size;
import org.diylc.core.measures.SizeUnit;
import org.diylc.utils.Constants;
public abstract class PassiveSMDComponent<T> extends AbstractTransparentComponent<T> {
@@ -62,7 +62,7 @@ public abstract class PassiveSMDComponent<T> extends AbstractTransparentComponen
private Orientation orientation = Orientation.DEFAULT;
private SMDSize size = SMDSize._1206;
private Point[] controlPoints = new Point[] {new Point(0, 0), new Point(0, 0)};
private Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0), new Point2D.Double(0, 0)};
protected Display display = Display.NAME;
protected Color bodyColor;
protected Color borderColor;
@@ -116,7 +116,7 @@ public abstract class PassiveSMDComponent<T> extends AbstractTransparentComponen
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@@ -131,21 +131,21 @@ public abstract class PassiveSMDComponent<T> extends AbstractTransparentComponen
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
controlPoints[index].setLocation(point);
body = null;
}
private void updateControlPoints() {
Point firstPoint = controlPoints[0];
Point2D firstPoint = controlPoints[0];
controlPoints[0] = firstPoint;
int pinSize = (int) PIN_SIZE.convertToPixels();
int smdLength = (int) getSize().getLength().convertToPixels();
int pinSpacing = smdLength - pinSize;
double pinSize = PIN_SIZE.convertToPixels();
double smdLength = getSize().getLength().convertToPixels();
double pinSpacing = smdLength - pinSize;
// Update control points.
int dx1;
int dy1;
double dx1;
double dy1;
switch (orientation) {
case DEFAULT:
dx1 = 0;
@@ -166,45 +166,45 @@ public abstract class PassiveSMDComponent<T> extends AbstractTransparentComponen
default:
throw new RuntimeException("Unexpected orientation: " + orientation);
}
controlPoints[1] = new Point(firstPoint.x + dx1, firstPoint.y + dy1);
controlPoints[1] = new Point2D.Double(firstPoint.getX() + dx1, firstPoint.getY() + dy1);
}
public Area[] getBody() {
if (body == null) {
body = new Area[2];
int x = controlPoints[0].x;
int y = controlPoints[0].y;
int smdWidth = (int) getSize().getWidth().convertToPixels();
int smdLength = (int) getSize().getLength().convertToPixels();
int pinSize = (int) PIN_SIZE.convertToPixels();
int width;
int height;
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
double smdWidth = getSize().getWidth().convertToPixels();
double smdLength = getSize().getLength().convertToPixels();
double pinSize = PIN_SIZE.convertToPixels();
double width;
double height;
// create main body
switch (orientation) {
case DEFAULT:
width = smdWidth;
height = smdLength;
x = controlPoints[0].x - smdWidth / 2;
y = controlPoints[0].y - pinSize / 2;
x = controlPoints[0].getX() - smdWidth / 2;
y = controlPoints[0].getY() - pinSize / 2;
break;
case _90:
width = smdLength;
height = smdWidth;
x = controlPoints[1].x - pinSize / 2;
y = controlPoints[1].y - smdWidth / 2;
x = controlPoints[1].getX() - pinSize / 2;
y = controlPoints[1].getY() - smdWidth / 2;
break;
case _180:
width = smdWidth;
height = smdLength;
x = controlPoints[1].x - smdWidth / 2;
y = controlPoints[1].y - pinSize / 2;
x = controlPoints[1].getX() - smdWidth / 2;
y = controlPoints[1].getY() - pinSize / 2;
break;
case _270:
width = smdLength;
height = smdWidth;
x = controlPoints[0].x - pinSize / 2;
y = controlPoints[0].y - smdWidth / 2;
x = controlPoints[0].getX() - pinSize / 2;
y = controlPoints[0].getY() - smdWidth / 2;
break;
default:
throw new RuntimeException("Unexpected orientation: " + orientation);
@@ -21,12 +21,13 @@
*/
package org.diylc.components.transform;
import java.awt.Point;
import java.awt.geom.AffineTransform;
import org.diylc.common.IComponentTransformer;
import org.diylc.common.Orientation;
import org.diylc.components.electromechanical.BatterySnap9V;
import java.awt.Point;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import org.diylc.common.IComponentTransformer;
import org.diylc.common.Orientation;
import org.diylc.components.electromechanical.BatterySnap9V;
import org.diylc.core.IDIYComponent;
public class BatterySnapTransformer implements IComponentTransformer {
@@ -47,11 +48,11 @@ public class BatterySnapTransformer implements IComponentTransformer {
}
@Override
public void rotate(IDIYComponent<?> component, Point center, int direction) {
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.x, center.y);
for (int index = 0; index < component.getControlPointCount(); index++) {
Point p = new Point(component.getControlPoint(index));
rotate.transform(p, p);
public void rotate(IDIYComponent<?> component, Point2D center, int direction) {
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.getX(), center.getY());
for (int index = 0; index < component.getControlPointCount(); index++) {
Point2D p = new Point2D.Double();
rotate.transform(component.getControlPoint(index), p);
component.setControlPoint(p, index);
}
@@ -68,12 +69,12 @@ public class BatterySnapTransformer implements IComponentTransformer {
}
@Override
public void mirror(IDIYComponent<?> component, Point center, int direction) {
public void mirror(IDIYComponent<?> component, Point2D center, int direction) {
BatterySnap9V snap = (BatterySnap9V) component;
if (direction == IComponentTransformer.HORIZONTAL) {
int dx = 2 * (center.x - snap.getControlPoint(0).x);
int dy = 0;
double dx = 2 * (center.getX() - snap.getControlPoint(0).getX());
double dy = 0;
Orientation o = snap.getOrientation();
switch (o) {
case DEFAULT:
@@ -90,13 +91,13 @@ public class BatterySnapTransformer implements IComponentTransformer {
for (int i = 0; i < snap.getControlPointCount(); i++) {
Point p = snap.getControlPoint(i);
snap.setControlPoint(new Point(p.x + dx, p.y + dy), i);
snap.setControlPoint(new Point2D.Double(p.getX() + dx, p.getY() + dy), i);
}
snap.setOrientation(o);
} else {
int dx = 0;
int dy = 2 * (center.y - snap.getControlPoint(1).y);
double dx = 0;
double dy = 2 * (center.getY() - snap.getControlPoint(1).getY());
Orientation o = snap.getOrientation();
switch (o) {
case DEFAULT:
@@ -113,7 +114,7 @@ public class BatterySnapTransformer implements IComponentTransformer {
for (int i = 0; i < snap.getControlPointCount(); i++) {
Point p = snap.getControlPoint(i);
snap.setControlPoint(new Point(p.x + dx, p.y + dy), i);
snap.setControlPoint(new Point2D.Double(p.getX() + dx, p.getY() + dy), i);
}
snap.setOrientation(o);
@@ -21,12 +21,12 @@
*/
package org.diylc.components.transform;
import java.awt.Point;
import java.awt.geom.AffineTransform;
import org.diylc.common.IComponentTransformer;
import org.diylc.common.Orientation;
import org.diylc.components.electromechanical.CliffJack1_4;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import org.diylc.common.IComponentTransformer;
import org.diylc.common.Orientation;
import org.diylc.components.electromechanical.CliffJack1_4;
import org.diylc.core.IDIYComponent;
public class CliffJackTransformer implements IComponentTransformer {
@@ -47,11 +47,11 @@ public class CliffJackTransformer implements IComponentTransformer {
}
@Override
public void rotate(IDIYComponent<?> component, Point center, int direction) {
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.x, center.y);
for (int index = 0; index < component.getControlPointCount(); index++) {
Point p = new Point(component.getControlPoint(index));
rotate.transform(p, p);
public void rotate(IDIYComponent<?> component, Point2D center, int direction) {
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.getX(), center.getY());
for (int index = 0; index < component.getControlPointCount(); index++) {
Point2D p = new Point2D.Double();
rotate.transform(component.getControlPoint(index), p);
component.setControlPoint(p, index);
}
@@ -68,64 +68,64 @@ public class CliffJackTransformer implements IComponentTransformer {
}
@Override
public void mirror(IDIYComponent<?> component, Point center, int direction) {
public void mirror(IDIYComponent<?> component, Point2D center, int direction) {
CliffJack1_4 ic = (CliffJack1_4) component;
if (direction == IComponentTransformer.HORIZONTAL) {
int dx = 2 * (center.x - ic.getControlPoint(1).x);
int dy = 0;
double dx = 2 * (center.getX() - ic.getControlPoint(1).getX());
double dy = 0;
Orientation o = ic.getOrientation();
switch (o) {
case DEFAULT:
dy += (ic.getControlPoint(0).y - ic.getControlPoint(ic.getControlPointCount() - 1).y);
dy += (ic.getControlPoint(0).getY() - ic.getControlPoint(ic.getControlPointCount() - 1).getY());
o = Orientation._180;
break;
case _90:
// dy += ic.getControlPoint(0).y - ic.getControlPoint(ic.getControlPointCount() - 1).y;
// dy += ic.getControlPoint(0).getY() - ic.getControlPoint(ic.getControlPointCount() - 1).getY();
break;
case _180:
dy += (ic.getControlPoint(0).y - ic.getControlPoint(ic.getControlPointCount() - 1).y);
dy += (ic.getControlPoint(0).getY() - ic.getControlPoint(ic.getControlPointCount() - 1).getY());
o = Orientation.DEFAULT;
break;
case _270:
// dy += ic.getControlPoint(0).y - ic.getControlPoint(ic.getControlPointCount() - 1).y;
// dy += ic.getControlPoint(0).getY() - ic.getControlPoint(ic.getControlPointCount() - 1).getY();
break;
}
for (int i = 0; i < ic.getControlPointCount(); i++) {
Point p = ic.getControlPoint(i);
ic.setControlPoint(new Point(p.x + dx, p.y + dy), i);
Point2D p = ic.getControlPoint(i);
ic.setControlPoint(new Point2D.Double(p.getX() + dx, p.getY() + dy), i);
}
ic.setOrientation(o);
} else {
int dx = 0;
int dy = 2 * (center.y - ic.getControlPoint(1).y);
double dx = 0;
double dy = 2 * (center.getY() - ic.getControlPoint(1).getY());
Orientation o = ic.getOrientation();
switch (o) {
case DEFAULT:
// dx += ic.getControlPoint(0).x - ic.getControlPoint(ic.getControlPointCount() - 1).x;
// dx += ic.getControlPoint(0).getX() - ic.getControlPoint(ic.getControlPointCount() - 1).getX();
break;
case _90:
o = Orientation._270;
// dx -= 2 * (ic.getControlPoint(0).x - ic.getControlPoint(1).x);
// dy -= ic.getControlPoint(0).y - ic.getControlPoint(ic.getControlPointCount() - 1).y;
// dx -= 2 * (ic.getControlPoint(0).getX() - ic.getControlPoint(1).getX());
// dy -= ic.getControlPoint(0).getY() - ic.getControlPoint(ic.getControlPointCount() - 1).getY();
break;
case _180:
// dx += ic.getControlPoint(0).x - ic.getControlPoint(ic.getControlPointCount() - 1).x;
// dx += ic.getControlPoint(0).getX() - ic.getControlPoint(ic.getControlPointCount() - 1).getX();
break;
case _270:
// dx -= 2 * (ic.getControlPoint(0).x - ic.getControlPoint(1).x);
// dy -= ic.getControlPoint(0).y - ic.getControlPoint(ic.getControlPointCount() - 1).y;
// dx -= 2 * (ic.getControlPoint(0).getX() - ic.getControlPoint(1).getX());
// dy -= ic.getControlPoint(0).getY() - ic.getControlPoint(ic.getControlPointCount() - 1).getY();
o = Orientation._90;
break;
}
for (int i = 0; i < ic.getControlPointCount(); i++) {
Point p = ic.getControlPoint(i);
ic.setControlPoint(new Point(p.x + dx, p.y + dy), i);
Point2D p = ic.getControlPoint(i);
ic.setControlPoint(new Point2D.Double(p.getX() + dx, p.getY() + dy), i);
}
ic.setOrientation(o);
@@ -21,12 +21,12 @@
*/
package org.diylc.components.transform;
import java.awt.Point;
import java.awt.geom.AffineTransform;
import org.diylc.common.IComponentTransformer;
import org.diylc.common.Orientation;
import org.diylc.components.electromechanical.ClosedJack1_4;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import org.diylc.common.IComponentTransformer;
import org.diylc.common.Orientation;
import org.diylc.components.electromechanical.ClosedJack1_4;
import org.diylc.core.IDIYComponent;
public class ClosedJackTransformer implements IComponentTransformer {
@@ -47,11 +47,11 @@ public class ClosedJackTransformer implements IComponentTransformer {
}
@Override
public void rotate(IDIYComponent<?> component, Point center, int direction) {
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.x, center.y);
for (int index = 0; index < component.getControlPointCount(); index++) {
Point p = new Point(component.getControlPoint(index));
rotate.transform(p, p);
public void rotate(IDIYComponent<?> component, Point2D center, int direction) {
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.getX(), center.getY());
for (int index = 0; index < component.getControlPointCount(); index++) {
Point2D p = new Point2D.Double();
rotate.transform(component.getControlPoint(index), p);
component.setControlPoint(p, index);
}
@@ -68,12 +68,12 @@ public class ClosedJackTransformer implements IComponentTransformer {
}
@Override
public void mirror(IDIYComponent<?> component, Point center, int direction) {
public void mirror(IDIYComponent<?> component, Point2D center, int direction) {
ClosedJack1_4 jack = (ClosedJack1_4) component;
if (direction == IComponentTransformer.HORIZONTAL) {
int dx = 2 * (center.x - jack.getControlPoint(0).x);
int dy = 0;
double dx = 2 * (center.getX() - jack.getControlPoint(0).getX());
double dy = 0;
Orientation o = jack.getOrientation();
switch (o) {
@@ -90,14 +90,14 @@ public class ClosedJackTransformer implements IComponentTransformer {
}
for (int i = 0; i < jack.getControlPointCount(); i++) {
Point p = jack.getControlPoint(i);
jack.setControlPoint(new Point(p.x + dx, p.y + dy), i);
Point2D p = jack.getControlPoint(i);
jack.setControlPoint(new Point2D.Double(p.getX() + dx, p.getY() + dy), i);
}
jack.setOrientation(o);
} else {
int dx = 0;
int dy = 2 * (center.y - jack.getControlPoint(0).y);
double dx = 0;
double dy = 2 * (center.getY() - jack.getControlPoint(0).getY());
Orientation o = jack.getOrientation();
switch (o) {
@@ -114,8 +114,8 @@ public class ClosedJackTransformer implements IComponentTransformer {
}
for (int i = 0; i < jack.getControlPointCount(); i++) {
Point p = jack.getControlPoint(i);
jack.setControlPoint(new Point(p.x + dx, p.y + dy), i);
Point2D p = jack.getControlPoint(i);
jack.setControlPoint(new Point2D.Double(p.getX() + dx, p.getY() + dy), i);
}
jack.setOrientation(o);
@@ -21,12 +21,12 @@
*/
package org.diylc.components.transform;
import java.awt.Point;
import java.awt.geom.AffineTransform;
import org.diylc.common.IComponentTransformer;
import org.diylc.common.Orientation;
import org.diylc.components.semiconductors.DIL_IC;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import org.diylc.common.IComponentTransformer;
import org.diylc.common.Orientation;
import org.diylc.components.semiconductors.DIL_IC;
import org.diylc.core.IDIYComponent;
public class DIL_ICTransformer implements IComponentTransformer {
@@ -47,11 +47,11 @@ public class DIL_ICTransformer implements IComponentTransformer {
}
@Override
public void rotate(IDIYComponent<?> component, Point center, int direction) {
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.x, center.y);
for (int index = 0; index < component.getControlPointCount(); index++) {
Point p = new Point(component.getControlPoint(index));
rotate.transform(p, p);
public void rotate(IDIYComponent<?> component, Point2D center, int direction) {
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.getX(), center.getY());
for (int index = 0; index < component.getControlPointCount(); index++) {
Point2D p = new Point2D.Double();
rotate.transform(component.getControlPoint(index), p);
component.setControlPoint(p, index);
}
@@ -68,64 +68,64 @@ public class DIL_ICTransformer implements IComponentTransformer {
}
@Override
public void mirror(IDIYComponent<?> component, Point center, int direction) {
public void mirror(IDIYComponent<?> component, Point2D center, int direction) {
DIL_IC ic = (DIL_IC) component;
if (direction == IComponentTransformer.HORIZONTAL) {
int dx = 2 * (center.x - ic.getControlPoint(1).x);
int dy = 0;
double dx = 2 * (center.getX() - ic.getControlPoint(1).getX());
double dy = 0;
Orientation o = ic.getOrientation();
switch (o) {
case DEFAULT:
dx += ic.getControlPoint(0).x - ic.getControlPoint(ic.getControlPointCount() - 1).x;
dx += ic.getControlPoint(0).getX() - ic.getControlPoint(ic.getControlPointCount() - 1).getX();
break;
case _90:
o = Orientation._270;
dx -= 2 * (ic.getControlPoint(0).x - ic.getControlPoint(1).x);
dy -= ic.getControlPoint(0).y - ic.getControlPoint(ic.getControlPointCount() - 1).y;
dx -= 2 * (ic.getControlPoint(0).getX() - ic.getControlPoint(1).getX());
dy -= ic.getControlPoint(0).getY() - ic.getControlPoint(ic.getControlPointCount() - 1).getY();
break;
case _180:
dx += ic.getControlPoint(0).x - ic.getControlPoint(ic.getControlPointCount() - 1).x;
dx += ic.getControlPoint(0).getX() - ic.getControlPoint(ic.getControlPointCount() - 1).getX();
break;
case _270:
dx -= 2 * (ic.getControlPoint(0).x - ic.getControlPoint(1).x);
dy -= ic.getControlPoint(0).y - ic.getControlPoint(ic.getControlPointCount() - 1).y;
dx -= 2 * (ic.getControlPoint(0).getX() - ic.getControlPoint(1).getX());
dy -= ic.getControlPoint(0).getY() - ic.getControlPoint(ic.getControlPointCount() - 1).getY();
o = Orientation._90;
break;
}
for (int i = 0; i < ic.getControlPointCount(); i++) {
Point p = ic.getControlPoint(i);
ic.setControlPoint(new Point(p.x + dx, p.y + dy), i);
Point2D p = ic.getControlPoint(i);
ic.setControlPoint(new Point2D.Double(p.getX() + dx, p.getY() + dy), i);
}
ic.setOrientation(o);
} else {
int dx = 0;
int dy = 2 * (center.y - ic.getControlPoint(1).y);
double dx = 0;
double dy = 2 * (center.getY() - ic.getControlPoint(1).getY());
Orientation o = ic.getOrientation();
switch (o) {
case DEFAULT:
dx -= ic.getControlPoint(0).x - ic.getControlPoint(ic.getControlPointCount() - 1).x;
dy -= 2 * (ic.getControlPoint(0).y - ic.getControlPoint(1).y);
dx -= ic.getControlPoint(0).getX() - ic.getControlPoint(ic.getControlPointCount() - 1).getX();
dy -= 2 * (ic.getControlPoint(0).getY() - ic.getControlPoint(1).getY());
o = Orientation._180;
break;
case _90:
dy += ic.getControlPoint(0).y - ic.getControlPoint(ic.getControlPointCount() - 1).y;
dy += ic.getControlPoint(0).getY() - ic.getControlPoint(ic.getControlPointCount() - 1).getY();
break;
case _180:
dx -= ic.getControlPoint(0).x - ic.getControlPoint(ic.getControlPointCount() - 1).x;
dy -= 2 * (ic.getControlPoint(0).y - ic.getControlPoint(1).y);
dx -= ic.getControlPoint(0).getX() - ic.getControlPoint(ic.getControlPointCount() - 1).getX();
dy -= 2 * (ic.getControlPoint(0).getY() - ic.getControlPoint(1).getY());
o = Orientation.DEFAULT;
break;
case _270:
dy += ic.getControlPoint(0).y - ic.getControlPoint(ic.getControlPointCount() - 1).y;
dy += ic.getControlPoint(0).getY() - ic.getControlPoint(ic.getControlPointCount() - 1).getY();
break;
}
for (int i = 0; i < ic.getControlPointCount(); i++) {
Point p = ic.getControlPoint(i);
ic.setControlPoint(new Point(p.x + dx, p.y + dy), i);
Point2D p = ic.getControlPoint(i);
ic.setControlPoint(new Point2D.Double(p.getX() + dx, p.getY() + dy), i);
}
ic.setOrientation(o);
@@ -21,12 +21,12 @@
*/
package org.diylc.components.transform;
import java.awt.Point;
import java.awt.geom.AffineTransform;
import org.diylc.common.IComponentTransformer;
import org.diylc.common.Orientation;
import org.diylc.components.passive.PotentiometerPanel;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import org.diylc.common.IComponentTransformer;
import org.diylc.common.Orientation;
import org.diylc.components.passive.PotentiometerPanel;
import org.diylc.core.IDIYComponent;
public class PotentiometerTransformer implements IComponentTransformer {
@@ -47,11 +47,11 @@ public class PotentiometerTransformer implements IComponentTransformer {
}
@Override
public void rotate(IDIYComponent<?> component, Point center, int direction) {
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.x, center.y);
for (int index = 0; index < component.getControlPointCount(); index++) {
Point p = new Point(component.getControlPoint(index));
rotate.transform(p, p);
public void rotate(IDIYComponent<?> component, Point2D center, int direction) {
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.getX(), center.getY());
for (int index = 0; index < component.getControlPointCount(); index++) {
Point2D p = new Point2D.Double();
rotate.transform(component.getControlPoint(index), p);
component.setControlPoint(p, index);
}
@@ -69,10 +69,10 @@ public class PotentiometerTransformer implements IComponentTransformer {
@SuppressWarnings("incomplete-switch")
@Override
public void mirror(IDIYComponent<?> component, Point center, int direction) {
public void mirror(IDIYComponent<?> component, Point2D center, int direction) {
PotentiometerPanel potentiometer = (PotentiometerPanel) component;
int dx = center.x - potentiometer.getControlPoint(1).x;
int dy = center.y - potentiometer.getControlPoint(1).y;
double dx = center.getX() - potentiometer.getControlPoint(1).getX();
double dy = center.getY() - potentiometer.getControlPoint(1).getY();
if (direction == IComponentTransformer.HORIZONTAL) {
Orientation o = potentiometer.getOrientation();
switch (o) {
@@ -84,10 +84,10 @@ public class PotentiometerTransformer implements IComponentTransformer {
}
for (int i = 0; i < potentiometer.getControlPointCount(); i++) {
Point p = potentiometer.getControlPoint(i);
Point2D p = potentiometer.getControlPoint(i);
potentiometer
.setControlPoint(
new Point(p.x + 2 * dx, p.y + (potentiometer.getControlPoint(2).y - potentiometer.getControlPoint(0).y)),
new Point2D.Double(p.getX() + 2 * dx, p.getY() + (potentiometer.getControlPoint(2).getY() - potentiometer.getControlPoint(0).getY())),
i);
}
@@ -103,10 +103,10 @@ public class PotentiometerTransformer implements IComponentTransformer {
}
for (int i = 0; i < potentiometer.getControlPointCount(); i++) {
Point p = potentiometer.getControlPoint(i);
Point2D p = potentiometer.getControlPoint(i);
potentiometer
.setControlPoint(new Point(p.x + (potentiometer.getControlPoint(2).x - potentiometer.getControlPoint(0).x),
p.y + 2 * dy), i);
.setControlPoint(new Point2D.Double(p.getX() + (potentiometer.getControlPoint(2).getX() - potentiometer.getControlPoint(0).getX()),
p.getY() + 2 * dy), i);
}
potentiometer.setOrientation(o);
@@ -21,12 +21,12 @@
*/
package org.diylc.components.transform;
import java.awt.Point;
import java.awt.geom.AffineTransform;
import org.diylc.common.IComponentTransformer;
import org.diylc.common.Orientation;
import org.diylc.components.semiconductors.SIL_IC;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import org.diylc.common.IComponentTransformer;
import org.diylc.common.Orientation;
import org.diylc.components.semiconductors.SIL_IC;
import org.diylc.core.IDIYComponent;
public class SIL_ICTransformer implements IComponentTransformer {
@@ -47,11 +47,11 @@ public class SIL_ICTransformer implements IComponentTransformer {
}
@Override
public void rotate(IDIYComponent<?> component, Point center, int direction) {
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.x, center.y);
for (int index = 0; index < component.getControlPointCount(); index++) {
Point p = new Point(component.getControlPoint(index));
rotate.transform(p, p);
public void rotate(IDIYComponent<?> component, Point2D center, int direction) {
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.getX(), center.getY());
for (int index = 0; index < component.getControlPointCount(); index++) {
Point2D p = new Point2D.Double();
rotate.transform(component.getControlPoint(index), p);
component.setControlPoint(p, index);
}
@@ -69,10 +69,10 @@ public class SIL_ICTransformer implements IComponentTransformer {
@SuppressWarnings("incomplete-switch")
@Override
public void mirror(IDIYComponent<?> component, Point center, int direction) {
public void mirror(IDIYComponent<?> component, Point2D center, int direction) {
SIL_IC ic = (SIL_IC) component;
int dx = center.x - ic.getControlPoint(0).x;
int dy = center.y - ic.getControlPoint(0).y;
double dx = center.getX() - ic.getControlPoint(0).getX();
double dy = center.getY() - ic.getControlPoint(0).getY();
if (direction == IComponentTransformer.HORIZONTAL) {
Orientation o = ic.getOrientation();
switch (o) {
@@ -84,8 +84,8 @@ public class SIL_ICTransformer implements IComponentTransformer {
}
for (int i = 0; i < ic.getControlPointCount(); i++) {
Point p = ic.getControlPoint(i);
ic.setControlPoint(new Point(p.x + 2 * dx, p.y), i);
Point2D p = ic.getControlPoint(i);
ic.setControlPoint(new Point2D.Double(p.getX() + 2 * dx, p.getY()), i);
}
ic.setOrientation(o);
@@ -100,8 +100,8 @@ public class SIL_ICTransformer implements IComponentTransformer {
}
for (int i = 0; i < ic.getControlPointCount(); i++) {
Point p = ic.getControlPoint(i);
ic.setControlPoint(new Point(p.x, p.y + 2 * dy), i);
Point2D p = ic.getControlPoint(i);
ic.setControlPoint(new Point2D.Double(p.getX(), p.getY() + 2 * dy), i);
}
ic.setOrientation(o);
@@ -21,12 +21,13 @@
*/
package org.diylc.components.transform;
import java.awt.Point;
import java.awt.geom.AffineTransform;
import org.diylc.common.IComponentTransformer;
import org.diylc.common.Orientation;
import org.diylc.components.semiconductors.TransistorTO1;
import java.awt.Point;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import org.diylc.common.IComponentTransformer;
import org.diylc.common.Orientation;
import org.diylc.components.semiconductors.TransistorTO1;
import org.diylc.core.IDIYComponent;
public class TO1Transformer implements IComponentTransformer {
@@ -47,11 +48,11 @@ public class TO1Transformer implements IComponentTransformer {
}
@Override
public void rotate(IDIYComponent<?> component, Point center, int direction) {
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.x, center.y);
public void rotate(IDIYComponent<?> component, Point2D center, int direction) {
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.getX(), center.getY());
for (int index = 0; index < component.getControlPointCount(); index++) {
Point p = new Point(component.getControlPoint(index));
rotate.transform(p, p);
Point2D p = new Point2D.Double();
rotate.transform(component.getControlPoint(index), p);
component.setControlPoint(p, index);
}
@@ -68,10 +69,10 @@ public class TO1Transformer implements IComponentTransformer {
}
@Override
public void mirror(IDIYComponent<?> component, Point center, int direction) {
public void mirror(IDIYComponent<?> component, Point2D center, int direction) {
TransistorTO1 transistor = (TransistorTO1) component;
int dx = center.x - transistor.getControlPoint(0).x;
int dy = center.y - transistor.getControlPoint(0).y;
double dx = center.getX() - transistor.getControlPoint(0).getX();
double dy = center.getY() - transistor.getControlPoint(0).getY();
if (direction == IComponentTransformer.HORIZONTAL) {
Orientation o = transistor.getOrientation();
switch (o) {
@@ -79,20 +80,20 @@ public class TO1Transformer implements IComponentTransformer {
o = Orientation._180;
break;
case _90:
dx -= (transistor.getControlPoint(1).x - transistor.getControlPoint(0).x);
dx -= (transistor.getControlPoint(1).getX() - transistor.getControlPoint(0).getX());
break;
case _180:
o = Orientation.DEFAULT;
break;
case _270:
dx -= (transistor.getControlPoint(1).x - transistor.getControlPoint(0).x);
dx -= (transistor.getControlPoint(1).getX() - transistor.getControlPoint(0).getX());
break;
}
for (int i = 0; i < transistor.getControlPointCount(); i++) {
Point p = transistor.getControlPoint(i);
transistor.setControlPoint(
new Point(p.x + 2 * dx, p.y + (transistor.getControlPoint(2).y - transistor.getControlPoint(0).y)), i);
new Point2D.Double(p.getX() + 2 * dx, p.getY() + (transistor.getControlPoint(2).getY() - transistor.getControlPoint(0).getY())), i);
}
transistor.setOrientation(o);
@@ -100,13 +101,13 @@ public class TO1Transformer implements IComponentTransformer {
Orientation o = transistor.getOrientation();
switch (o) {
case DEFAULT:
dy -= (transistor.getControlPoint(1).y - transistor.getControlPoint(0).y);
dy -= (transistor.getControlPoint(1).getY() - transistor.getControlPoint(0).getY());
break;
case _90:
o = Orientation._270;
break;
case _180:
dy -= (transistor.getControlPoint(1).y - transistor.getControlPoint(0).y);
dy -= (transistor.getControlPoint(1).getY() - transistor.getControlPoint(0).getY());
break;
case _270:
o = Orientation._90;
@@ -115,8 +116,8 @@ public class TO1Transformer implements IComponentTransformer {
for (int i = 0; i < transistor.getControlPointCount(); i++) {
Point p = transistor.getControlPoint(i);
transistor.setControlPoint(new Point(p.x + (transistor.getControlPoint(2).x - transistor.getControlPoint(0).x),
p.y + 2 * dy), i);
transistor.setControlPoint(new Point2D.Double(p.getX() + (transistor.getControlPoint(2).getX() - transistor.getControlPoint(0).getX()),
p.getY() + 2 * dy), i);
}
transistor.setOrientation(o);
@@ -21,12 +21,13 @@
*/
package org.diylc.components.transform;
import java.awt.Point;
import java.awt.geom.AffineTransform;
import org.diylc.common.IComponentTransformer;
import org.diylc.common.Orientation;
import org.diylc.components.semiconductors.TransistorTO220;
import java.awt.Point;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import org.diylc.common.IComponentTransformer;
import org.diylc.common.Orientation;
import org.diylc.components.semiconductors.TransistorTO220;
import org.diylc.core.IDIYComponent;
public class TO220Transformer implements IComponentTransformer {
@@ -47,11 +48,11 @@ public class TO220Transformer implements IComponentTransformer {
}
@Override
public void rotate(IDIYComponent<?> component, Point center, int direction) {
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.x, center.y);
public void rotate(IDIYComponent<?> component, Point2D center, int direction) {
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.getX(), center.getY());
for (int index = 0; index < component.getControlPointCount(); index++) {
Point p = new Point(component.getControlPoint(index));
rotate.transform(p, p);
Point2D p = new Point2D.Double();
rotate.transform(component.getControlPoint(index), p);
component.setControlPoint(p, index);
}
@@ -68,59 +69,59 @@ public class TO220Transformer implements IComponentTransformer {
}
@Override
public void mirror(IDIYComponent<?> component, Point center, int direction) {
public void mirror(IDIYComponent<?> component, Point2D center, int direction) {
TransistorTO220 transistor = (TransistorTO220) component;
if (direction == IComponentTransformer.HORIZONTAL) {
int dx = 2 * (center.x - transistor.getControlPoint(0).x);
int dy = 0;
double dx = 2 * (center.getX() - transistor.getControlPoint(0).getX());
double dy = 0;
Orientation o = transistor.getOrientation();
switch (o) {
case DEFAULT:
o = Orientation._180;
dy -= (transistor.getControlPoint(0).y - transistor.getControlPoint(2).y);
dy -= (transistor.getControlPoint(0).getY() - transistor.getControlPoint(2).getY());
break;
case _90:
dx += (transistor.getControlPoint(0).x - transistor.getControlPoint(2).x);
dx += (transistor.getControlPoint(0).getX() - transistor.getControlPoint(2).getX());
break;
case _180:
o = Orientation.DEFAULT;
dy -= (transistor.getControlPoint(0).y - transistor.getControlPoint(2).y);
dy -= (transistor.getControlPoint(0).getY() - transistor.getControlPoint(2).getY());
break;
case _270:
dx += (transistor.getControlPoint(0).x - transistor.getControlPoint(2).x);
dx += (transistor.getControlPoint(0).getX() - transistor.getControlPoint(2).getX());
break;
}
for (int i = 0; i < transistor.getControlPointCount(); i++) {
Point p = transistor.getControlPoint(i);
transistor.setControlPoint(new Point(p.x + dx, p.y + dy), i);
transistor.setControlPoint(new Point2D.Double(p.getX() + dx, p.getY() + dy), i);
}
transistor.setOrientation(o);
} else {
int dx = 0;
int dy = 2 * (center.y - transistor.getControlPoint(0).y);
double dx = 0;
double dy = 2 * (center.getY() - transistor.getControlPoint(0).getY());
Orientation o = transistor.getOrientation();
switch (o) {
case DEFAULT:
dy += (transistor.getControlPoint(0).y - transistor.getControlPoint(2).y);
dy += (transistor.getControlPoint(0).getY() - transistor.getControlPoint(2).getY());
break;
case _90:
dx -= (transistor.getControlPoint(0).x - transistor.getControlPoint(2).x);
dx -= (transistor.getControlPoint(0).getX() - transistor.getControlPoint(2).getX());
o = Orientation._270;
break;
case _180:
dy += (transistor.getControlPoint(0).y - transistor.getControlPoint(2).y);
dy += (transistor.getControlPoint(0).getY() - transistor.getControlPoint(2).getY());
break;
case _270:
dx -= (transistor.getControlPoint(0).x - transistor.getControlPoint(2).x);
dx -= (transistor.getControlPoint(0).getX() - transistor.getControlPoint(2).getX());
o = Orientation._90;
break;
}
for (int i = 0; i < transistor.getControlPointCount(); i++) {
Point p = transistor.getControlPoint(i);
transistor.setControlPoint(new Point(p.x + dx, p.y + dy), i);
transistor.setControlPoint(new Point2D.Double(p.getX() + dx, p.getY() + dy), i);
}
transistor.setOrientation(o);
@@ -21,12 +21,13 @@
*/
package org.diylc.components.transform;
import java.awt.Point;
import java.awt.geom.AffineTransform;
import org.diylc.common.IComponentTransformer;
import org.diylc.common.Orientation;
import org.diylc.components.semiconductors.TransistorTO92;
import java.awt.Point;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import org.diylc.common.IComponentTransformer;
import org.diylc.common.Orientation;
import org.diylc.components.semiconductors.TransistorTO92;
import org.diylc.core.IDIYComponent;
public class TO92Transformer implements IComponentTransformer {
@@ -47,11 +48,11 @@ public class TO92Transformer implements IComponentTransformer {
}
@Override
public void rotate(IDIYComponent<?> component, Point center, int direction) {
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.x, center.y);
public void rotate(IDIYComponent<?> component, Point2D center, int direction) {
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.getX(), center.getY());
for (int index = 0; index < component.getControlPointCount(); index++) {
Point p = new Point(component.getControlPoint(index));
rotate.transform(p, p);
Point2D p = new Point2D.Double();
rotate.transform(component.getControlPoint(index), p);
component.setControlPoint(p, index);
}
@@ -69,10 +70,10 @@ public class TO92Transformer implements IComponentTransformer {
@SuppressWarnings("incomplete-switch")
@Override
public void mirror(IDIYComponent<?> component, Point center, int direction) {
public void mirror(IDIYComponent<?> component, Point2D center, int direction) {
TransistorTO92 transistor = (TransistorTO92) component;
int dx = center.x - transistor.getControlPoint(1).x;
int dy = center.y - transistor.getControlPoint(1).y;
double dx = center.getX() - transistor.getControlPoint(1).getX();
double dy = center.getY() - transistor.getControlPoint(1).getY();
if (direction == IComponentTransformer.HORIZONTAL) {
Orientation o = transistor.getOrientation();
switch (o) {
@@ -86,7 +87,7 @@ public class TO92Transformer implements IComponentTransformer {
for (int i = 0; i < transistor.getControlPointCount(); i++) {
Point p = transistor.getControlPoint(i);
transistor.setControlPoint(
new Point(p.x + 2 * dx, p.y + (transistor.getControlPoint(2).y - transistor.getControlPoint(0).y)), i);
new Point2D.Double(p.getX() + 2 * dx, p.getY() + (transistor.getControlPoint(2).getY() - transistor.getControlPoint(0).getY())), i);
}
transistor.setOrientation(o);
@@ -102,8 +103,8 @@ public class TO92Transformer implements IComponentTransformer {
for (int i = 0; i < transistor.getControlPointCount(); i++) {
Point p = transistor.getControlPoint(i);
transistor.setControlPoint(new Point(p.x + (transistor.getControlPoint(2).x - transistor.getControlPoint(0).x),
p.y + 2 * dy), i);
transistor.setControlPoint(new Point2D.Double(p.getX() + (transistor.getControlPoint(2).getX() - transistor.getControlPoint(0).getX()),
p.getY() + 2 * dy), i);
}
transistor.setOrientation(o);
@@ -21,12 +21,13 @@
*/
package org.diylc.components.transform;
import java.awt.Point;
import java.awt.geom.AffineTransform;
import org.diylc.common.IComponentTransformer;
import org.diylc.common.Orientation;
import org.diylc.components.boards.TerminalStrip;
import java.awt.Point;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import org.diylc.common.IComponentTransformer;
import org.diylc.common.Orientation;
import org.diylc.components.boards.TerminalStrip;
import org.diylc.core.IDIYComponent;
public class TerminalStripTransformer implements IComponentTransformer {
@@ -47,11 +48,11 @@ public class TerminalStripTransformer implements IComponentTransformer {
}
@Override
public void rotate(IDIYComponent<?> component, Point center, int direction) {
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.x, center.y);
for (int index = 0; index < component.getControlPointCount(); index++) {
Point p = new Point(component.getControlPoint(index));
rotate.transform(p, p);
public void rotate(IDIYComponent<?> component, Point2D center, int direction) {
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.getX(), center.getY());
for (int index = 0; index < component.getControlPointCount(); index++) {
Point2D p = new Point2D.Double();
rotate.transform(component.getControlPoint(index), p);
component.setControlPoint(p, index);
}
@@ -68,64 +69,64 @@ public class TerminalStripTransformer implements IComponentTransformer {
}
@Override
public void mirror(IDIYComponent<?> component, Point center, int direction) {
public void mirror(IDIYComponent<?> component, Point2D center, int direction) {
TerminalStrip strip = (TerminalStrip) component;
if (direction == IComponentTransformer.HORIZONTAL) {
int dx = 2 * (center.x - strip.getControlPoint(1).x);
int dy = 0;
double dx = 2 * (center.getX() - strip.getControlPoint(1).getX());
double dy = 0;
Orientation o = strip.getOrientation();
switch (o) {
case DEFAULT:
dx += strip.getControlPoint(0).x - strip.getControlPoint(strip.getControlPointCount() - 1).x;
dx += strip.getControlPoint(0).getX() - strip.getControlPoint(strip.getControlPointCount() - 1).getX();
break;
case _90:
o = Orientation._270;
dx -= 2 * (strip.getControlPoint(0).x - strip.getControlPoint(1).x);
dy -= strip.getControlPoint(0).y - strip.getControlPoint(strip.getControlPointCount() - 1).y;
dx -= 2 * (strip.getControlPoint(0).getX() - strip.getControlPoint(1).getX());
dy -= strip.getControlPoint(0).getY() - strip.getControlPoint(strip.getControlPointCount() - 1).getY();
break;
case _180:
dx += strip.getControlPoint(0).x - strip.getControlPoint(strip.getControlPointCount() - 1).x;
dx += strip.getControlPoint(0).getX() - strip.getControlPoint(strip.getControlPointCount() - 1).getX();
break;
case _270:
dx -= 2 * (strip.getControlPoint(0).x - strip.getControlPoint(1).x);
dy -= strip.getControlPoint(0).y - strip.getControlPoint(strip.getControlPointCount() - 1).y;
dx -= 2 * (strip.getControlPoint(0).getX() - strip.getControlPoint(1).getX());
dy -= strip.getControlPoint(0).getY() - strip.getControlPoint(strip.getControlPointCount() - 1).getY();
o = Orientation._90;
break;
}
for (int i = 0; i < strip.getControlPointCount(); i++) {
Point p = strip.getControlPoint(i);
strip.setControlPoint(new Point(p.x + dx, p.y + dy), i);
strip.setControlPoint(new Point2D.Double(p.getX() + dx, p.getY() + dy), i);
}
strip.setOrientation(o);
} else {
int dx = 0;
int dy = 2 * (center.y - strip.getControlPoint(1).y);
double dx = 0;
double dy = 2 * (center.getY() - strip.getControlPoint(1).getY());
Orientation o = strip.getOrientation();
switch (o) {
case DEFAULT:
dx -= strip.getControlPoint(0).x - strip.getControlPoint(strip.getControlPointCount() - 1).x;
dy -= 2 * (strip.getControlPoint(0).y - strip.getControlPoint(1).y);
dx -= strip.getControlPoint(0).getX() - strip.getControlPoint(strip.getControlPointCount() - 1).getX();
dy -= 2 * (strip.getControlPoint(0).getY() - strip.getControlPoint(1).getY());
o = Orientation._180;
break;
case _90:
dy += strip.getControlPoint(0).y - strip.getControlPoint(strip.getControlPointCount() - 1).y;
dy += strip.getControlPoint(0).getY() - strip.getControlPoint(strip.getControlPointCount() - 1).getY();
break;
case _180:
dx -= strip.getControlPoint(0).x - strip.getControlPoint(strip.getControlPointCount() - 1).x;
dy -= 2 * (strip.getControlPoint(0).y - strip.getControlPoint(1).y);
dx -= strip.getControlPoint(0).getX() - strip.getControlPoint(strip.getControlPointCount() - 1).getX();
dy -= 2 * (strip.getControlPoint(0).getY() - strip.getControlPoint(1).getY());
o = Orientation.DEFAULT;
break;
case _270:
dy += strip.getControlPoint(0).y - strip.getControlPoint(strip.getControlPointCount() - 1).y;
dy += strip.getControlPoint(0).getY() - strip.getControlPoint(strip.getControlPointCount() - 1).getY();
break;
}
for (int i = 0; i < strip.getControlPointCount(); i++) {
Point p = strip.getControlPoint(i);
strip.setControlPoint(new Point(p.x + dx, p.y + dy), i);
strip.setControlPoint(new Point2D.Double(p.getX() + dx, p.getY() + dy), i);
}
strip.setOrientation(o);
@@ -17,8 +17,8 @@
*/
package org.diylc.components.transform;
import java.awt.Point;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import org.diylc.common.IComponentTransformer;
import org.diylc.common.Orientation;
@@ -44,11 +44,11 @@ public class TextTransformer implements IComponentTransformer {
}
@Override
public void rotate(IDIYComponent<?> component, Point center, int direction) {
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.x, center.y);
public void rotate(IDIYComponent<?> component, Point2D center, int direction) {
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.getX(), center.getY());
for (int index = 0; index < component.getControlPointCount(); index++) {
Point p = new Point(component.getControlPoint(index));
rotate.transform(p, p);
Point2D p = new Point2D.Double();
rotate.transform(component.getControlPoint(index), p);
component.setControlPoint(p, index);
}
@@ -78,7 +78,7 @@ public class TextTransformer implements IComponentTransformer {
}
@Override
public void mirror(IDIYComponent<?> component, Point center, int direction) {
public void mirror(IDIYComponent<?> component, Point2D center, int direction) {
throw new RuntimeException("Unexpected call to mirror() in LabelTransformer");
}
}
@@ -21,8 +21,8 @@
*/
package org.diylc.components.transform;
import java.awt.Point;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import org.diylc.common.IComponentTransformer;
import org.diylc.common.Orientation;
@@ -48,11 +48,11 @@ public class ThreeLegTransformer implements IComponentTransformer {
}
@Override
public void rotate(IDIYComponent<?> component, Point center, int direction) {
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.x, center.y);
public void rotate(IDIYComponent<?> component, Point2D center, int direction) {
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.getX(), center.getY());
for (int index = 0; index < component.getControlPointCount(); index++) {
Point p = new Point(component.getControlPoint(index));
rotate.transform(p, p);
Point2D p = new Point2D.Double();
rotate.transform(component.getControlPoint(index), p);
component.setControlPoint(p, index);
}
@@ -69,7 +69,7 @@ public class ThreeLegTransformer implements IComponentTransformer {
}
@Override
public void mirror(IDIYComponent<?> component, Point center, int direction) {
public void mirror(IDIYComponent<?> component, Point2D center, int direction) {
Abstract3LegSymbol a3l = (Abstract3LegSymbol) component;
Orientation o = a3l.getOrientation();
@@ -21,13 +21,13 @@
*/
package org.diylc.components.transform;
import java.awt.Point;
import java.awt.geom.AffineTransform;
import org.diylc.common.IComponentTransformer;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import org.diylc.common.IComponentTransformer;
import org.diylc.common.Orientation;
import org.diylc.components.semiconductors.SymbolFlipping;
import org.diylc.components.tube.AbstractTubeSymbol;
import org.diylc.components.tube.AbstractTubeSymbol;
import org.diylc.core.IDIYComponent;
public class TubeSymbolTransformer implements IComponentTransformer {
@@ -48,11 +48,11 @@ public class TubeSymbolTransformer implements IComponentTransformer {
}
@Override
public void rotate(IDIYComponent<?> component, Point center, int direction) {
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.x, center.y);
public void rotate(IDIYComponent<?> component, Point2D center, int direction) {
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.getX(), center.getY());
for (int index = 0; index < component.getControlPointCount(); index++) {
Point p = new Point(component.getControlPoint(index));
rotate.transform(p, p);
Point2D p = new Point2D.Double();
rotate.transform(component.getControlPoint(index), p);
component.setControlPoint(p, index);
}
@@ -69,7 +69,7 @@ public class TubeSymbolTransformer implements IComponentTransformer {
}
@Override
public void mirror(IDIYComponent<?> component, Point center, int direction) {
public void mirror(IDIYComponent<?> component, Point2D center, int direction) {
AbstractTubeSymbol tube = (AbstractTubeSymbol) component;
Orientation o = tube.getOrientation();
@@ -23,10 +23,10 @@ package org.diylc.components.tube;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import org.diylc.appframework.miscutils.ConfigurationManager;
import org.diylc.awt.StringUtils;
@@ -62,7 +62,7 @@ public abstract class AbstractTubeSymbol extends AbstractComponent<String> {
protected boolean showHeaters;
protected Orientation orientation = Orientation.DEFAULT;
protected SymbolFlipping flip = SymbolFlipping.NONE;
protected Point[] controlPoints;
protected Point2D[] controlPoints;
@Override
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
@@ -122,12 +122,12 @@ public abstract class AbstractTubeSymbol extends AbstractComponent<String> {
if (display == Display.BOTH) {
label = getName() + " " + (getValue() == null ? "" : getValue().toString());
}
StringUtils.drawCenteredText(g2d, label, rect.x + rect.width, rect.y + rect.height, HorizontalAlignment.RIGHT,
StringUtils.drawCenteredText(g2d, label, rect.getX() + rect.width, rect.getY() + rect.height, HorizontalAlignment.RIGHT,
VerticalAlignment.BOTTOM);
}
@Override
public Point getControlPoint(int index) {
public Point2D getControlPoint(int index) {
return controlPoints[index];
}
@@ -137,7 +137,7 @@ public abstract class AbstractTubeSymbol extends AbstractComponent<String> {
}
@Override
public void setControlPoint(Point point, int index) {
public void setControlPoint(Point2D point, int index) {
controlPoints[index].setLocation(point);
if (index == controlPoints.length - 1)
@@ -225,8 +225,8 @@ public abstract class AbstractTubeSymbol extends AbstractComponent<String> {
Shape[] newBody = initializeBody();
// int pinSpacing = (int) PIN_SPACING.convertToPixels();
int centerX = this.controlPoints[0].x;// + pinSpacing * 3;
int centerY = this.controlPoints[0].y;
double centerX = this.controlPoints[0].getX();// + pinSpacing * 3;
double centerY = this.controlPoints[0].getY();
if (getFlip() == SymbolFlipping.X) {
AffineTransform tx = AffineTransform.getScaleInstance(-1, 1);
@@ -247,10 +247,9 @@ public abstract class AbstractTubeSymbol extends AbstractComponent<String> {
}
if (getOrientation() != Orientation.DEFAULT) {
Point first = this.controlPoints[0];
Point2D first = this.controlPoints[0];
double angle = Double.parseDouble(getOrientation().name().replace("_", ""));
AffineTransform rotate = AffineTransform.getRotateInstance(Math.toRadians(angle), first.x, first.y);
AffineTransform rotate = AffineTransform.getRotateInstance(Math.toRadians(angle), first.getX(), first.getY());
if (newBody != null) {
for (int i = 0; i < newBody.length; i++) {
newBody[i] = rotate.createTransformedShape(newBody[i]);
@@ -264,15 +263,15 @@ public abstract class AbstractTubeSymbol extends AbstractComponent<String> {
return this.body;
}
protected abstract Point[] initializeControlPoints(Point first);
protected abstract Point2D[] initializeControlPoints(Point2D first);
protected void updateControlPoints() {
Point[] newPoints = initializeControlPoints(this.controlPoints[0]);
Point2D[] newPoints = initializeControlPoints(this.controlPoints[0]);
this.controlPoints = newPoints;
// int pinSpacing = (int) PIN_SPACING.convertToPixels();
int centerX = this.controlPoints[0].x;// + pinSpacing * 3;
int centerY = this.controlPoints[0].y;
double centerX = this.controlPoints[0].getX();// + pinSpacing * 3;
double centerY = this.controlPoints[0].getY();
if (getFlip() == SymbolFlipping.X) {
AffineTransform tx = AffineTransform.getScaleInstance(-1, 1);
@@ -291,9 +290,9 @@ public abstract class AbstractTubeSymbol extends AbstractComponent<String> {
if (getOrientation() == Orientation.DEFAULT)
return;
Point first = this.controlPoints[0];
Point2D first = this.controlPoints[0];
double angle = Double.parseDouble(getOrientation().name().replace("_", ""));
AffineTransform rotate = AffineTransform.getRotateInstance(Math.toRadians(angle), first.x, first.y);
AffineTransform rotate = AffineTransform.getRotateInstance(Math.toRadians(angle), first.getX(), first.getY());
for (int i = 1; i < this.controlPoints.length; i++) {
rotate.transform(this.controlPoints[i], this.controlPoints[i]);
}
@@ -21,20 +21,20 @@
*/
package org.diylc.components.tube;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Shape;
import java.awt.geom.Ellipse2D;
import java.awt.geom.GeneralPath;
import org.diylc.common.ObjectCache;
import org.diylc.components.transform.TubeSymbolTransformer;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IPropertyValidator;
import org.diylc.core.ValidationException;
import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.Ellipse2D;
import java.awt.geom.GeneralPath;
import java.awt.geom.Point2D;
import org.diylc.common.ObjectCache;
import org.diylc.components.transform.TubeSymbolTransformer;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IPropertyValidator;
import org.diylc.core.ValidationException;
import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.annotations.KeywordPolicy;
@ComponentDescriptor(name = "Diode Tube", author = "Branislav Stojkovic", category = "Schematic Symbols",
@@ -49,18 +49,18 @@ public class DiodeSymbol extends AbstractTubeSymbol {
public DiodeSymbol() {
super();
this.controlPoints =
new Point[] {new Point(0, 0), new Point(0, 0), new Point(0, 0), new Point(0, 0), new Point(0, 0)};
new 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)};
updateControlPoints();
}
public Shape[] initializeBody() {
if (body == null) {
Point[] controlPoints = initializeControlPoints(this.controlPoints[0]);
Point2D[] controlPoints = initializeControlPoints(this.controlPoints[0]);
body = new Shape[3];
int x = controlPoints[0].x;
int y = controlPoints[0].y;
int pinSpacing = (int) PIN_SPACING.convertToPixels();
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
double pinSpacing = PIN_SPACING.convertToPixels();
// electrodes
GeneralPath polyline = new GeneralPath();
@@ -71,9 +71,9 @@ public class DiodeSymbol extends AbstractTubeSymbol {
// cathode
if (directlyHeated) {
polyline.moveTo(controlPoints[2].x, controlPoints[2].y - pinSpacing);
polyline.lineTo(controlPoints[2].x + pinSpacing, controlPoints[2].y - pinSpacing * 2);
polyline.lineTo(controlPoints[4].x, controlPoints[4].y - pinSpacing);
polyline.moveTo(controlPoints[2].getX(), controlPoints[2].getY() - pinSpacing);
polyline.lineTo(controlPoints[2].getX() + pinSpacing, controlPoints[2].getY() - pinSpacing * 2);
polyline.lineTo(controlPoints[4].getX(), controlPoints[4].getY() - pinSpacing);
} else {
polyline.moveTo(x + pinSpacing * 2, y + pinSpacing);
polyline.lineTo(x + pinSpacing * 4, y + pinSpacing);
@@ -85,28 +85,28 @@ public class DiodeSymbol extends AbstractTubeSymbol {
polyline = new GeneralPath();
// plate
polyline.moveTo(controlPoints[1].x, controlPoints[1].y);
polyline.moveTo(controlPoints[1].getX(), controlPoints[1].getY());
polyline.lineTo(x + pinSpacing * 3, y - pinSpacing);
// cathode
if (directlyHeated) {
polyline.moveTo(controlPoints[2].x, controlPoints[2].y);
polyline.lineTo(controlPoints[2].x, controlPoints[2].y - pinSpacing);
polyline.moveTo(controlPoints[2].getX(), controlPoints[2].getY());
polyline.lineTo(controlPoints[2].getX(), controlPoints[2].getY() - pinSpacing);
polyline.moveTo(controlPoints[4].x, controlPoints[4].y);
polyline.lineTo(controlPoints[4].x, controlPoints[4].y - pinSpacing);
polyline.moveTo(controlPoints[4].getX(), controlPoints[4].getY());
polyline.lineTo(controlPoints[4].getX(), controlPoints[4].getY() - pinSpacing);
} else {
polyline.moveTo(controlPoints[2].x, controlPoints[2].y);
polyline.moveTo(controlPoints[2].getX(), controlPoints[2].getY());
polyline.lineTo(x + pinSpacing * 2, y + pinSpacing);
if (showHeaters) {
polyline.moveTo(controlPoints[3].x, controlPoints[3].y);
polyline.lineTo(controlPoints[3].x, controlPoints[3].y - pinSpacing);
polyline.lineTo(controlPoints[3].x + pinSpacing / 2, controlPoints[3].y - 3 * pinSpacing / 2);
polyline.moveTo(controlPoints[3].getX(), controlPoints[3].getY());
polyline.lineTo(controlPoints[3].getX(), controlPoints[3].getY() - pinSpacing);
polyline.lineTo(controlPoints[3].getX() + pinSpacing / 2, controlPoints[3].getY() - 3 * pinSpacing / 2);
polyline.moveTo(controlPoints[4].x, controlPoints[4].y);
polyline.lineTo(controlPoints[4].x, controlPoints[4].y - pinSpacing);
polyline.lineTo(controlPoints[4].x - pinSpacing / 2, controlPoints[4].y - 3 * pinSpacing / 2);
polyline.moveTo(controlPoints[4].getX(), controlPoints[4].getY());
polyline.lineTo(controlPoints[4].getX(), controlPoints[4].getY() - pinSpacing);
polyline.lineTo(controlPoints[4].getX() - pinSpacing / 2, controlPoints[4].getY() - 3 * pinSpacing / 2);
}
}
@@ -134,25 +134,18 @@ public class DiodeSymbol extends AbstractTubeSymbol {
}
@Override
protected Point[] initializeControlPoints(Point first) {
protected Point2D[] initializeControlPoints(Point2D first) {
int pinSpacing = (int) PIN_SPACING.convertToPixels();
// Update control points.
int x = first.x;
int y = first.y;
double x = first.getX();
double y = first.getY();
Point[] newPoints = new Point[] {first, new Point(0, 0), new Point(0, 0), new Point(0, 0), new Point(0, 0)};
newPoints[1].x = x + pinSpacing * 3;
newPoints[1].y = y - pinSpacing * 3;
newPoints[2].x = x + pinSpacing * 2;
newPoints[2].y = y + pinSpacing * 3;
newPoints[3].x = x + pinSpacing * 3;
newPoints[3].y = y + pinSpacing * 3;
newPoints[4].x = x + pinSpacing * 4;
newPoints[4].y = y + pinSpacing * 3;
Point2D[] newPoints = new Point2D[] {
first,
new Point2D.Double(x + pinSpacing * 3, y - pinSpacing * 3),
new Point2D.Double(x + pinSpacing * 2, y + pinSpacing * 3),
new Point2D.Double(x + pinSpacing * 3, y + pinSpacing * 3),
new Point2D.Double(x + pinSpacing * 4, y + pinSpacing * 3)};
return newPoints;
}
@@ -21,20 +21,21 @@
*/
package org.diylc.components.tube;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Shape;
import java.awt.geom.Ellipse2D;
import java.awt.geom.GeneralPath;
import org.diylc.common.ObjectCache;
import org.diylc.components.transform.TubeSymbolTransformer;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IPropertyValidator;
import org.diylc.core.ValidationException;
import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Shape;
import java.awt.geom.Ellipse2D;
import java.awt.geom.GeneralPath;
import java.awt.geom.Point2D;
import org.diylc.common.ObjectCache;
import org.diylc.components.transform.TubeSymbolTransformer;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IPropertyValidator;
import org.diylc.core.ValidationException;
import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.annotations.KeywordPolicy;
@ComponentDescriptor(name = "Duo-Diode", author = "Branislav Stojkovic", category = "Schematic Symbols",
@@ -55,12 +56,12 @@ public class DuoDiodeSymbol extends AbstractTubeSymbol {
public Shape[] initializeBody() {
if (body == null) {
Point[] controlPoints = initializeControlPoints(this.controlPoints[0]);
Point2D[] controlPoints = initializeControlPoints(this.controlPoints[0]);
body = new Shape[3];
int x = controlPoints[0].x;
int y = controlPoints[0].y;
int pinSpacing = (int) PIN_SPACING.convertToPixels();
double x = controlPoints[0].getX();
double y = controlPoints[0].getY();
double pinSpacing = PIN_SPACING.convertToPixels();
// electrodes
GeneralPath polyline = new GeneralPath();
@@ -73,9 +74,9 @@ public class DuoDiodeSymbol extends AbstractTubeSymbol {
// cathode
if (directlyHeated) {
polyline.moveTo(controlPoints[2].x, controlPoints[2].y - pinSpacing);
polyline.lineTo(controlPoints[2].x + pinSpacing, controlPoints[2].y - pinSpacing * 2);
polyline.lineTo(controlPoints[4].x, controlPoints[4].y - pinSpacing);
polyline.moveTo(controlPoints[2].getX(), controlPoints[2].getY() - pinSpacing);
polyline.lineTo(controlPoints[2].getX() + pinSpacing, controlPoints[2].getY() - pinSpacing * 2);
polyline.lineTo(controlPoints[4].getX(), controlPoints[4].getY() - pinSpacing);
} else {
polyline.moveTo(x + pinSpacing * 2, y + pinSpacing);
polyline.lineTo(x + pinSpacing * 4, y + pinSpacing);
@@ -87,31 +88,31 @@ public class DuoDiodeSymbol extends AbstractTubeSymbol {
polyline = new GeneralPath();
// plate
polyline.moveTo(controlPoints[1].x, controlPoints[1].y);
polyline.lineTo(controlPoints[1].x, y - pinSpacing);
polyline.moveTo(controlPoints[1].getX(), controlPoints[1].getY());
polyline.lineTo(controlPoints[1].getX(), y - pinSpacing);
polyline.moveTo(controlPoints[5].x, controlPoints[5].y);
polyline.lineTo(controlPoints[5].x, y - pinSpacing);
polyline.moveTo(controlPoints[5].getX(), controlPoints[5].getY());
polyline.lineTo(controlPoints[5].getX(), y - pinSpacing);
// cathode
if (directlyHeated) {
polyline.moveTo(controlPoints[2].x, controlPoints[2].y);
polyline.lineTo(controlPoints[2].x, controlPoints[2].y - pinSpacing);
polyline.moveTo(controlPoints[2].getX(), controlPoints[2].getY());
polyline.lineTo(controlPoints[2].getX(), controlPoints[2].getY() - pinSpacing);
polyline.moveTo(controlPoints[4].x, controlPoints[4].y);
polyline.lineTo(controlPoints[4].x, controlPoints[4].y - pinSpacing);
polyline.moveTo(controlPoints[4].getX(), controlPoints[4].getY());
polyline.lineTo(controlPoints[4].getX(), controlPoints[4].getY() - pinSpacing);
} else {
polyline.moveTo(controlPoints[2].x, controlPoints[2].y);
polyline.moveTo(controlPoints[2].getX(), controlPoints[2].getY());
polyline.lineTo(x + pinSpacing * 2, y + pinSpacing);
if (showHeaters) {
polyline.moveTo(controlPoints[3].x, controlPoints[3].y);
polyline.lineTo(controlPoints[3].x, controlPoints[3].y - pinSpacing);
polyline.lineTo(controlPoints[3].x + pinSpacing / 2, controlPoints[3].y - 3 * pinSpacing / 2);
polyline.moveTo(controlPoints[3].getX(), controlPoints[3].getY());
polyline.lineTo(controlPoints[3].getX(), controlPoints[3].getY() - pinSpacing);
polyline.lineTo(controlPoints[3].getX() + pinSpacing / 2, controlPoints[3].getY() - 3 * pinSpacing / 2);
polyline.moveTo(controlPoints[4].x, controlPoints[4].y);
polyline.lineTo(controlPoints[4].x, controlPoints[4].y - pinSpacing);
polyline.lineTo(controlPoints[4].x - pinSpacing / 2, controlPoints[4].y - 3 * pinSpacing / 2);
polyline.moveTo(controlPoints[4].getX(), controlPoints[4].getY());
polyline.lineTo(controlPoints[4].getX(), controlPoints[4].getY() - pinSpacing);
polyline.lineTo(controlPoints[4].getX() - pinSpacing / 2, controlPoints[4].getY() - 3 * pinSpacing / 2);
}
}
@@ -142,28 +143,19 @@ public class DuoDiodeSymbol extends AbstractTubeSymbol {
}
@Override
protected Point[] initializeControlPoints(Point first) {
protected Point2D[] initializeControlPoints(Point2D first) {
int pinSpacing = (int) PIN_SPACING.convertToPixels();
// Update control points.
int x = first.x;
int y = first.y;
double x = first.getX();
double y = first.getY();
Point[] newPoints = new Point[] {first, new Point(0, 0), new Point(0, 0), new Point(0, 0), new Point(0, 0), new Point(0, 0)};
newPoints[1].x = x + pinSpacing * 2;
newPoints[1].y = y - pinSpacing * 3;
newPoints[2].x = x + pinSpacing * 2;
newPoints[2].y = y + pinSpacing * 3;
newPoints[3].x = x + pinSpacing * 3;
newPoints[3].y = y + pinSpacing * 3;
newPoints[4].x = x + pinSpacing * 4;
newPoints[4].y = y + pinSpacing * 3;
newPoints[5].x = x + pinSpacing * 4;
newPoints[5].y = y - pinSpacing * 3;
Point2D[] newPoints = new Point2D[] {
first,
new Point2D.Double(x + pinSpacing * 2, y - pinSpacing * 3),
new Point2D.Double(x + pinSpacing * 2, y + pinSpacing * 3),
new Point2D.Double(x + pinSpacing * 3, y + pinSpacing * 3),
new Point2D.Double(x + pinSpacing * 4, y + pinSpacing * 3),
new Point2D.Double(x + pinSpacing * 4, y - pinSpacing * 3)};
return newPoints;
}

Some files were not shown because too many files have changed in this diff Show More