mirror of
https://github.com/bancika/diy-layout-creator
synced 2026-11-11 17:52:07 +10:00
Big update - replace Point with Point2D in most places to increase
accuracy
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
+15
-15
@@ -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);
|
||||
|
||||
+68
-64
@@ -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;
|
||||
|
||||
+14
-14
@@ -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;
|
||||
|
||||
+14
-14
@@ -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
|
||||
|
||||
+5
-5
@@ -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.
|
||||
|
||||
+2
-1
@@ -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);
|
||||
|
||||
+19
-18
@@ -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);
|
||||
|
||||
+19
-19
@@ -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);
|
||||
|
||||
+31
-30
@@ -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
Reference in New Issue
Block a user