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:
@@ -21,7 +21,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.diylc.common;
|
package org.diylc.common;
|
||||||
|
|
||||||
import java.awt.Point;
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
import org.diylc.core.IDIYComponent;
|
import org.diylc.core.IDIYComponent;
|
||||||
|
|
||||||
@@ -43,11 +43,11 @@ public class DefaultTransformer implements IComponentTransformer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void rotate(IDIYComponent<?> component, Point center, int direction) {
|
public void rotate(IDIYComponent<?> component, Point2D center, int direction) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mirror(IDIYComponent<?> component, Point center, int direction) {
|
public void mirror(IDIYComponent<?> component, Point2D center, int direction) {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.diylc.common;
|
package org.diylc.common;
|
||||||
|
|
||||||
import java.awt.Point;
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
import org.diylc.core.IDIYComponent;
|
import org.diylc.core.IDIYComponent;
|
||||||
|
|
||||||
@@ -39,7 +39,7 @@ public interface IComponentTransformer {
|
|||||||
|
|
||||||
boolean mirroringChangesCircuit();
|
boolean mirroringChangesCircuit();
|
||||||
|
|
||||||
void rotate(IDIYComponent<?> component, Point center, int direction);
|
void rotate(IDIYComponent<?> component, Point2D center, int direction);
|
||||||
|
|
||||||
void mirror(IDIYComponent<?> component, Point center, int direction);
|
void mirror(IDIYComponent<?> component, Point2D center, int direction);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.diylc.common;
|
package org.diylc.common;
|
||||||
|
|
||||||
import java.awt.Point;
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -55,7 +55,7 @@ public interface ISelectionProcessor {
|
|||||||
* @param includeLocked
|
* @param includeLocked
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<IDIYComponent<?>> findComponentsAt(Point point, boolean includeLocked);
|
List<IDIYComponent<?>> findComponentsAt(Point2D point, boolean includeLocked);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Expands the current selection to include surrounding components. Options are controlled with
|
* Expands the current selection to include surrounding components. Options are controlled with
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ package org.diylc.common;
|
|||||||
|
|
||||||
import java.awt.Point;
|
import java.awt.Point;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
import org.diylc.core.IDIYComponent;
|
import org.diylc.core.IDIYComponent;
|
||||||
|
|
||||||
@@ -44,23 +45,23 @@ public class SimpleComponentTransformer implements IComponentTransformer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void rotate(IDIYComponent<?> component, Point center, int direction) {
|
public void rotate(IDIYComponent<?> component, Point2D center, int direction) {
|
||||||
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.x, center.y);
|
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.getX(), center.getY());
|
||||||
for (int index = 0; index < component.getControlPointCount(); index++) {
|
for (int index = 0; index < component.getControlPointCount(); index++) {
|
||||||
Point p = new Point(component.getControlPoint(index));
|
Point2D p = new Point2D.Double();
|
||||||
rotate.transform(p, p);
|
rotate.transform(component.getControlPoint(index), p);
|
||||||
component.setControlPoint(p, index);
|
component.setControlPoint(p, index);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mirror(IDIYComponent<?> component, Point center, int direction) {
|
public void mirror(IDIYComponent<?> component, Point2D center, int direction) {
|
||||||
for (int i = 0; i < component.getControlPointCount(); i++) {
|
for (int i = 0; i < component.getControlPointCount(); i++) {
|
||||||
Point p = component.getControlPoint(i);
|
Point2D p = component.getControlPoint(i);
|
||||||
if (direction == IComponentTransformer.HORIZONTAL) {
|
if (direction == IComponentTransformer.HORIZONTAL) {
|
||||||
component.setControlPoint(new Point(p.x - 2 * (p.x - center.x), p.y), i);
|
component.setControlPoint(new Point2D.Double(p.getX() - 2 * (p.getX() - center.getX()), p.getY()), i);
|
||||||
} else {
|
} else {
|
||||||
component.setControlPoint(new Point(p.x, p.y - 2 * (p.y - center.y)), i);
|
component.setControlPoint(new Point.Double(p.getX(), p.getY() - 2 * (p.getY() - center.getY())), i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,8 +23,8 @@ package org.diylc.components;
|
|||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Font;
|
import java.awt.Font;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.lang.reflect.Array;
|
import java.lang.reflect.Array;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
@@ -117,23 +117,23 @@ public abstract class AbstractComponent<T> implements IDIYComponent<T> {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int minX = Integer.MAX_VALUE;
|
double minX = Integer.MAX_VALUE;
|
||||||
int minY = Integer.MAX_VALUE;
|
double minY = Integer.MAX_VALUE;
|
||||||
int maxX = Integer.MIN_VALUE;
|
double maxX = Integer.MIN_VALUE;
|
||||||
int maxY = Integer.MIN_VALUE;
|
double maxY = Integer.MIN_VALUE;
|
||||||
for (int i = 0; i < getControlPointCount(); i++) {
|
for (int i = 0; i < getControlPointCount(); i++) {
|
||||||
Point p = getControlPoint(i);
|
Point2D p = getControlPoint(i);
|
||||||
if (minX > p.x) {
|
if (minX > p.getX()) {
|
||||||
minX = p.x;
|
minX = p.getX();
|
||||||
}
|
}
|
||||||
if (maxX < p.x) {
|
if (maxX < p.getX()) {
|
||||||
maxX = p.x;
|
maxX = p.getX();
|
||||||
}
|
}
|
||||||
if (minY > p.y) {
|
if (minY > p.getY()) {
|
||||||
minY = p.y;
|
minY = p.getY();
|
||||||
}
|
}
|
||||||
if (maxY < p.y) {
|
if (maxY < p.getY()) {
|
||||||
maxY = p.y;
|
maxY = p.getY();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Rectangle2D rect = new Rectangle2D.Double(minX, minY, maxX - minX, maxY - minY);
|
Rectangle2D rect = new Rectangle2D.Double(minX, minY, maxX - minX, maxY - minY);
|
||||||
@@ -160,18 +160,19 @@ public abstract class AbstractComponent<T> implements IDIYComponent<T> {
|
|||||||
// Deep copy point arrays.
|
// Deep copy point arrays.
|
||||||
// TODO: something nicer
|
// TODO: something nicer
|
||||||
if (value != null && value.getClass().isArray()
|
if (value != null && value.getClass().isArray()
|
||||||
&& value.getClass().getComponentType().isAssignableFrom(Point.class)) {
|
&& value.getClass().getComponentType().isAssignableFrom(Point2D.class)) {
|
||||||
Object newArray = Array.newInstance(value.getClass().getComponentType(), Array.getLength(value));
|
Object newArray = Array.newInstance(value.getClass().getComponentType(), Array.getLength(value));
|
||||||
for (int i = 0; i < Array.getLength(value); i++) {
|
for (int i = 0; i < Array.getLength(value); i++) {
|
||||||
Point p = (Point) Array.get(value, i);
|
Point2D p = (Point2D) Array.get(value, i);
|
||||||
Array.set(newArray, i, new Point(p));
|
Array.set(newArray, i, new Point2D.Double(p.getX(), p.getY()));
|
||||||
}
|
}
|
||||||
value = newArray;
|
value = newArray;
|
||||||
}
|
}
|
||||||
// Deep copy points.
|
// Deep copy points.
|
||||||
// TODO: something nicer
|
// TODO: something nicer
|
||||||
if (value != null && value instanceof Point) {
|
if (value != null && value instanceof Point2D) {
|
||||||
value = new Point((Point) value);
|
Point2D p = (Point2D) value;
|
||||||
|
value = new Point2D.Double(p.getX(), p.getY());
|
||||||
}
|
}
|
||||||
|
|
||||||
field.set(newInstance, value);
|
field.set(newInstance, value);
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ import java.awt.AlphaComposite;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.geom.CubicCurve2D;
|
import java.awt.geom.CubicCurve2D;
|
||||||
import java.awt.geom.Path2D;
|
import java.awt.geom.Path2D;
|
||||||
import java.awt.geom.Point2D;
|
import java.awt.geom.Point2D;
|
||||||
@@ -53,12 +52,12 @@ public abstract class AbstractCurvedComponent<T> extends AbstractTransparentComp
|
|||||||
public static Size DEFAULT_SIZE = new Size(1d, SizeUnit.in);
|
public static Size DEFAULT_SIZE = new Size(1d, SizeUnit.in);
|
||||||
|
|
||||||
// for backward compatibility
|
// for backward compatibility
|
||||||
protected Point[] controlPoints = null;
|
protected Point2D[] controlPoints = null;
|
||||||
|
|
||||||
protected Point[] controlPoints2 = new Point[] {new Point(0, 0),
|
protected Point2D[] controlPoints2 = new Point2D[] {new Point2D.Double(0, 0),
|
||||||
new Point((int) (DEFAULT_SIZE.convertToPixels() / 2), 0),
|
new Point2D.Double(DEFAULT_SIZE.convertToPixels() / 2, 0),
|
||||||
new Point((int) (DEFAULT_SIZE.convertToPixels() / 2), (int) (DEFAULT_SIZE.convertToPixels())),
|
new Point2D.Double(DEFAULT_SIZE.convertToPixels() / 2, DEFAULT_SIZE.convertToPixels()),
|
||||||
new Point((int) DEFAULT_SIZE.convertToPixels(), (int) DEFAULT_SIZE.convertToPixels())};
|
new Point2D.Double(DEFAULT_SIZE.convertToPixels(), DEFAULT_SIZE.convertToPixels())};
|
||||||
|
|
||||||
protected Color color = getDefaultColor();
|
protected Color color = getDefaultColor();
|
||||||
protected PointCount pointCount = PointCount.FOUR;
|
protected PointCount pointCount = PointCount.FOUR;
|
||||||
@@ -102,7 +101,7 @@ public abstract class AbstractCurvedComponent<T> extends AbstractTransparentComp
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Point[] p = getControlPoints();
|
Point2D[] p = getControlPoints();
|
||||||
|
|
||||||
// smoothen the curve if needed
|
// smoothen the curve if needed
|
||||||
if (getSmooth() && lastUpdatePointIndex >= 0) {
|
if (getSmooth() && lastUpdatePointIndex >= 0) {
|
||||||
@@ -127,25 +126,25 @@ public abstract class AbstractCurvedComponent<T> extends AbstractTransparentComp
|
|||||||
g2d.setStroke(Constants.DASHED_STROKE);
|
g2d.setStroke(Constants.DASHED_STROKE);
|
||||||
g2d.setColor(GUIDELINE_COLOR);
|
g2d.setColor(GUIDELINE_COLOR);
|
||||||
for (int i = 0; i < p.length - 1; i++) {
|
for (int i = 0; i < p.length - 1; i++) {
|
||||||
g2d.drawLine(p[i].x, p[i].y, p[i + 1].x, p[i + 1].y);
|
g2d.drawLine((int)p[i].getX(), (int)p[i].getY(), (int)p[i + 1].getX(), (int)p[i + 1].getY());
|
||||||
}
|
}
|
||||||
drawingObserver.startTracking();
|
drawingObserver.startTracking();
|
||||||
}
|
}
|
||||||
|
|
||||||
Path2D path = new Path2D.Double();
|
Path2D path = new Path2D.Double();
|
||||||
path.moveTo(p[0].x, p[0].y);
|
path.moveTo(p[0].getX(), p[0].getY());
|
||||||
if (getPointCount() == PointCount.TWO) {
|
if (getPointCount() == PointCount.TWO) {
|
||||||
path.lineTo(p[1].x, p[1].y);
|
path.lineTo(p[1].getX(), p[1].getY());
|
||||||
} else if (getPointCount() == PointCount.THREE) {
|
} else if (getPointCount() == PointCount.THREE) {
|
||||||
path.curveTo(p[1].x, p[1].y, p[1].x, p[1].y, p[2].x, p[2].y);
|
path.curveTo(p[1].getX(), p[1].getY(), p[1].getX(), p[1].getY(), p[2].getX(), p[2].getY());
|
||||||
} else if (getPointCount() == PointCount.FOUR) {
|
} else if (getPointCount() == PointCount.FOUR) {
|
||||||
path.curveTo(p[1].x, p[1].y, p[2].x, p[2].y, p[3].x, p[3].y);
|
path.curveTo(p[1].getX(), p[1].getY(), p[2].getX(), p[2].getY(), p[3].getX(), p[3].getY());
|
||||||
} else if (getPointCount() == PointCount.FIVE) {
|
} else if (getPointCount() == PointCount.FIVE) {
|
||||||
path.quadTo(p[1].x, p[1].y, p[2].x, p[2].y);
|
path.quadTo(p[1].getX(), p[1].getY(), p[2].getX(), p[2].getY());
|
||||||
path.quadTo(p[3].x, p[3].y, p[4].x, p[4].y);
|
path.quadTo(p[3].getX(), p[3].getY(), p[4].getX(), p[4].getY());
|
||||||
} else if (getPointCount() == PointCount.SEVEN) {
|
} else if (getPointCount() == PointCount.SEVEN) {
|
||||||
path.curveTo(p[1].x, p[1].y, p[2].x, p[2].y, p[3].x, p[3].y);
|
path.curveTo(p[1].getX(), p[1].getY(), p[2].getX(), p[2].getY(), p[3].getX(), p[3].getY());
|
||||||
path.curveTo(p[4].x, p[4].y, p[5].x, p[5].y, p[6].x, p[6].y);
|
path.curveTo(p[4].getX(), p[4].getY(), p[5].getX(), p[5].getY(), p[6].getX(), p[6].getY());
|
||||||
}
|
}
|
||||||
|
|
||||||
Composite oldComposite = g2d.getComposite();
|
Composite oldComposite = g2d.getComposite();
|
||||||
@@ -166,23 +165,23 @@ public abstract class AbstractCurvedComponent<T> extends AbstractTransparentComp
|
|||||||
return pointCount;
|
return pointCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Point[] getControlPoints() {
|
protected Point2D[] getControlPoints() {
|
||||||
if (this.controlPoints != null) {
|
if (this.controlPoints != null) {
|
||||||
// ensure backward compatibility by copying points from the old structure to the new one
|
// ensure backward compatibility by copying points from the old structure to the new one
|
||||||
switch (getPointCount()) {
|
switch (getPointCount()) {
|
||||||
case TWO:
|
case TWO:
|
||||||
this.controlPoints2 = new Point[2];
|
this.controlPoints2 = new Point2D[2];
|
||||||
this.controlPoints2[0] = this.controlPoints[0];
|
this.controlPoints2[0] = this.controlPoints[0];
|
||||||
this.controlPoints2[1] = this.controlPoints[3];
|
this.controlPoints2[1] = this.controlPoints[3];
|
||||||
break;
|
break;
|
||||||
case THREE:
|
case THREE:
|
||||||
this.controlPoints2 = new Point[3];
|
this.controlPoints2 = new Point2D[3];
|
||||||
this.controlPoints2[0] = this.controlPoints[0];
|
this.controlPoints2[0] = this.controlPoints[0];
|
||||||
this.controlPoints2[1] = this.controlPoints[1];
|
this.controlPoints2[1] = this.controlPoints[1];
|
||||||
this.controlPoints2[2] = this.controlPoints[3];
|
this.controlPoints2[2] = this.controlPoints[3];
|
||||||
break;
|
break;
|
||||||
case FOUR:
|
case FOUR:
|
||||||
this.controlPoints2 = new Point[4];
|
this.controlPoints2 = new Point2D[4];
|
||||||
this.controlPoints2[0] = this.controlPoints[0];
|
this.controlPoints2[0] = this.controlPoints[0];
|
||||||
this.controlPoints2[1] = this.controlPoints[1];
|
this.controlPoints2[1] = this.controlPoints[1];
|
||||||
this.controlPoints2[2] = this.controlPoints[2];
|
this.controlPoints2[2] = this.controlPoints[2];
|
||||||
@@ -198,42 +197,42 @@ public abstract class AbstractCurvedComponent<T> extends AbstractTransparentComp
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setPointCount(PointCount pointCount) {
|
public void setPointCount(PointCount pointCount) {
|
||||||
Point[] p = getControlPoints();
|
Point2D[] p = getControlPoints();
|
||||||
Point[] newPoints = new Point[pointCount.count];
|
Point2D[] newPoints = new Point2D[pointCount.count];
|
||||||
newPoints[0] = p[0];
|
newPoints[0] = p[0];
|
||||||
newPoints[pointCount.count - 1] = p[p.length - 1];
|
newPoints[pointCount.count - 1] = p[p.length - 1];
|
||||||
|
|
||||||
if (pointCount == PointCount.THREE) {
|
if (pointCount == PointCount.THREE) {
|
||||||
newPoints[1] =
|
newPoints[1] =
|
||||||
new Point((newPoints[pointCount.count - 1].x + newPoints[0].x) / 2,
|
new Point2D.Double((newPoints[pointCount.count - 1].getX() + newPoints[0].getX()) / 2,
|
||||||
(newPoints[pointCount.count - 1].y + newPoints[0].y) / 2);
|
(newPoints[pointCount.count - 1].getY() + newPoints[0].getY()) / 2);
|
||||||
} else if (pointCount == PointCount.FOUR) {
|
} else if (pointCount == PointCount.FOUR) {
|
||||||
newPoints[1] =
|
newPoints[1] =
|
||||||
new Point((newPoints[pointCount.count - 1].x + newPoints[0].x) / 2,
|
new Point2D.Double((newPoints[pointCount.count - 1].getX() + newPoints[0].getX()) / 2,
|
||||||
(newPoints[pointCount.count - 1].y + newPoints[0].y) / 2);
|
(newPoints[pointCount.count - 1].getY() + newPoints[0].getY()) / 2);
|
||||||
newPoints[2] =
|
newPoints[2] =
|
||||||
new Point((newPoints[pointCount.count - 1].x + newPoints[0].x) / 2,
|
new Point2D.Double((newPoints[pointCount.count - 1].getX() + newPoints[0].getX()) / 2,
|
||||||
(newPoints[pointCount.count - 1].y + newPoints[0].y) / 2);
|
(newPoints[pointCount.count - 1].getY() + newPoints[0].getY()) / 2);
|
||||||
} else if (pointCount == PointCount.FIVE) {
|
} else if (pointCount == PointCount.FIVE) {
|
||||||
newPoints[2] =
|
newPoints[2] =
|
||||||
new Point((newPoints[pointCount.count - 1].x + newPoints[0].x) / 2,
|
new Point2D.Double((newPoints[pointCount.count - 1].getX() + newPoints[0].getX()) / 2,
|
||||||
(newPoints[pointCount.count - 1].y + newPoints[0].y) / 2);
|
(newPoints[pointCount.count - 1].getY() + newPoints[0].getY()) / 2);
|
||||||
newPoints[1] = new Point((newPoints[2].x + newPoints[0].x) / 2, (newPoints[2].y + newPoints[0].y) / 2);
|
newPoints[1] = new Point2D.Double((newPoints[2].getX() + newPoints[0].getX()) / 2, (newPoints[2].getY() + newPoints[0].getY()) / 2);
|
||||||
newPoints[3] =
|
newPoints[3] =
|
||||||
new Point((newPoints[pointCount.count - 1].x + newPoints[2].x) / 2,
|
new Point2D.Double((newPoints[pointCount.count - 1].getX() + newPoints[2].getX()) / 2,
|
||||||
(newPoints[pointCount.count - 1].y + newPoints[2].y) / 2);
|
(newPoints[pointCount.count - 1].getY() + newPoints[2].getY()) / 2);
|
||||||
} else if (pointCount == PointCount.SEVEN) {
|
} else if (pointCount == PointCount.SEVEN) {
|
||||||
newPoints[3] =
|
newPoints[3] =
|
||||||
new Point((newPoints[pointCount.count - 1].x + newPoints[0].x) / 2,
|
new Point2D.Double((newPoints[pointCount.count - 1].getX() + newPoints[0].getX()) / 2,
|
||||||
(newPoints[pointCount.count - 1].y + newPoints[0].y) / 2);
|
(newPoints[pointCount.count - 1].getY() + newPoints[0].getY()) / 2);
|
||||||
newPoints[2] = new Point((newPoints[3].x + newPoints[0].x) / 2, (newPoints[3].y + newPoints[0].y) / 2);
|
newPoints[2] = new Point2D.Double((newPoints[3].getX() + newPoints[0].getX()) / 2, (newPoints[3].getY() + newPoints[0].getY()) / 2);
|
||||||
newPoints[1] = new Point((newPoints[3].x + newPoints[0].x) / 2, (newPoints[3].y + newPoints[0].y) / 2);
|
newPoints[1] = new Point2D.Double((newPoints[3].getX() + newPoints[0].getX()) / 2, (newPoints[3].getY() + newPoints[0].getY()) / 2);
|
||||||
newPoints[4] =
|
newPoints[4] =
|
||||||
new Point((newPoints[pointCount.count - 1].x + newPoints[3].x) / 2,
|
new Point2D.Double((newPoints[pointCount.count - 1].getX() + newPoints[3].getX()) / 2,
|
||||||
(newPoints[pointCount.count - 1].y + newPoints[3].y) / 2);
|
(newPoints[pointCount.count - 1].getY() + newPoints[3].getY()) / 2);
|
||||||
newPoints[5] =
|
newPoints[5] =
|
||||||
new Point((newPoints[pointCount.count - 1].x + newPoints[3].x) / 2,
|
new Point2D.Double((newPoints[pointCount.count - 1].getX() + newPoints[3].getX()) / 2,
|
||||||
(newPoints[pointCount.count - 1].y + newPoints[3].y) / 2);
|
(newPoints[pointCount.count - 1].getY() + newPoints[3].getY()) / 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.controlPoints2 = newPoints;
|
this.controlPoints2 = newPoints;
|
||||||
@@ -261,13 +260,13 @@ public abstract class AbstractCurvedComponent<T> extends AbstractTransparentComp
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return getControlPoints()[index];
|
return getControlPoints()[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
Point[] p = getControlPoints();
|
Point2D[] p = getControlPoints();
|
||||||
p[index].setLocation(point);
|
p[index].setLocation(point);
|
||||||
this.lastUpdatePointIndex = index;
|
this.lastUpdatePointIndex = index;
|
||||||
// if (getSmooth()) {
|
// if (getSmooth()) {
|
||||||
@@ -286,8 +285,8 @@ public abstract class AbstractCurvedComponent<T> extends AbstractTransparentComp
|
|||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
private Point findThirdPoint(Point p0, Point p) {
|
private Point2D findThirdPoint(Point2D p0, Point2D p) {
|
||||||
return new Point(2 * p0.x - p.x, 2 * p0.y - p.y);
|
return new Point2D.Double(2 * p0.getX() - p.getX(), 2 * p0.getY() - p.getY());
|
||||||
}
|
}
|
||||||
|
|
||||||
@EditableProperty(name = "Color")
|
@EditableProperty(name = "Color")
|
||||||
@@ -335,7 +334,7 @@ public abstract class AbstractCurvedComponent<T> extends AbstractTransparentComp
|
|||||||
public Size getLength() {
|
public Size getLength() {
|
||||||
double d = 0;
|
double d = 0;
|
||||||
try {
|
try {
|
||||||
Point[] p = getControlPoints();
|
Point2D[] p = getControlPoints();
|
||||||
if (getPointCount() == PointCount.TWO) {
|
if (getPointCount() == PointCount.TWO) {
|
||||||
d = p[0].distance(p[1]);
|
d = p[0].distance(p[1]);
|
||||||
} else if (getPointCount() == PointCount.THREE) {
|
} else if (getPointCount() == PointCount.THREE) {
|
||||||
@@ -364,21 +363,21 @@ public abstract class AbstractCurvedComponent<T> extends AbstractTransparentComp
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Rectangle2D getCachingBounds() {
|
public Rectangle2D getCachingBounds() {
|
||||||
int minX = Integer.MAX_VALUE;
|
double minX = Integer.MAX_VALUE;
|
||||||
int maxX = Integer.MIN_VALUE;
|
double maxX = Integer.MIN_VALUE;
|
||||||
int minY = Integer.MAX_VALUE;
|
double minY = Integer.MAX_VALUE;
|
||||||
int maxY = Integer.MIN_VALUE;
|
double maxY = Integer.MIN_VALUE;
|
||||||
int margin = 50; // hard coded, replace with something meaningful
|
double margin = 50; // hard coded, replace with something meaningful
|
||||||
for (int i = 0; i < getControlPointCount(); i++) {
|
for (int i = 0; i < getControlPointCount(); i++) {
|
||||||
Point p = getControlPoint(i);
|
Point2D p = getControlPoint(i);
|
||||||
if (p.x < minX)
|
if (p.getX() < minX)
|
||||||
minX = p.x;
|
minX = p.getX();
|
||||||
if (p.x > maxX)
|
if (p.getX() > maxX)
|
||||||
maxX = p.x;
|
maxX = p.getX();
|
||||||
if (p.y < minY)
|
if (p.getY() < minY)
|
||||||
minY = p.y;
|
minY = p.getY();
|
||||||
if (p.y > maxY)
|
if (p.getY() > maxY)
|
||||||
maxY = p.y;
|
maxY = p.getY();
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Rectangle2D.Double(minX - margin, minY - margin, maxX - minX + 2 * margin, maxY - minY + 2 * margin);
|
return new Rectangle2D.Double(minX - margin, minY - margin, maxX - minX + 2 * margin, maxY - minY + 2 * margin);
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.diylc.components.transform;
|
package org.diylc.components.transform;
|
||||||
|
|
||||||
import java.awt.Point;
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
import org.diylc.common.IComponentTransformer;
|
import org.diylc.common.IComponentTransformer;
|
||||||
import org.diylc.core.IDIYComponent;
|
import org.diylc.core.IDIYComponent;
|
||||||
@@ -44,11 +44,11 @@ public class DefaultTransformer implements IComponentTransformer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void rotate(IDIYComponent<?> component, Point center, int direction) {
|
public void rotate(IDIYComponent<?> component, Point2D center, int direction) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mirror(IDIYComponent<?> component, Point center, int direction) {
|
public void mirror(IDIYComponent<?> component, Point2D center, int direction) {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,8 +21,8 @@
|
|||||||
*/
|
*/
|
||||||
package org.diylc.components.transform;
|
package org.diylc.components.transform;
|
||||||
|
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
import org.diylc.common.IComponentTransformer;
|
import org.diylc.common.IComponentTransformer;
|
||||||
import org.diylc.core.IDIYComponent;
|
import org.diylc.core.IDIYComponent;
|
||||||
@@ -45,23 +45,23 @@ public class LeadedComponentTransformer implements IComponentTransformer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void rotate(IDIYComponent<?> component, Point center, int direction) {
|
public void rotate(IDIYComponent<?> component, Point2D center, int direction) {
|
||||||
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.x, center.y);
|
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.getX(), center.getY());
|
||||||
for (int index = 0; index < component.getControlPointCount(); index++) {
|
for (int index = 0; index < component.getControlPointCount(); index++) {
|
||||||
Point p = new Point(component.getControlPoint(index));
|
Point2D p = new Point2D.Double();
|
||||||
rotate.transform(p, p);
|
rotate.transform(component.getControlPoint(index), p);
|
||||||
component.setControlPoint(p, index);
|
component.setControlPoint(p, index);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mirror(IDIYComponent<?> component, Point center, int direction) {
|
public void mirror(IDIYComponent<?> component, Point2D center, int direction) {
|
||||||
for (int i = 0; i < component.getControlPointCount(); i++) {
|
for (int i = 0; i < component.getControlPointCount(); i++) {
|
||||||
Point p = component.getControlPoint(i);
|
Point2D p = component.getControlPoint(i);
|
||||||
if (direction == IComponentTransformer.HORIZONTAL) {
|
if (direction == IComponentTransformer.HORIZONTAL) {
|
||||||
component.setControlPoint(new Point(p.x - 2 * (p.x - center.x), p.y), i);
|
component.setControlPoint(new Point2D.Double(p.getX() - 2 * (p.getX() - center.getX()), p.getY()), i);
|
||||||
} else {
|
} else {
|
||||||
component.setControlPoint(new Point(p.x, p.y - 2 * (p.y - center.y)), i);
|
component.setControlPoint(new Point2D.Double(p.getX(), p.getY() - 2 * (p.getY() - center.getY())), i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
package org.diylc.core;
|
package org.diylc.core;
|
||||||
|
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
@@ -89,7 +89,7 @@ public interface IDIYComponent<T> extends Serializable, Cloneable {
|
|||||||
* @param index
|
* @param index
|
||||||
* @return control point at the specified index.
|
* @return control point at the specified index.
|
||||||
*/
|
*/
|
||||||
Point getControlPoint(int index);
|
Point2D getControlPoint(int index);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates the control point at the specified index.
|
* Updates the control point at the specified index.
|
||||||
@@ -97,7 +97,7 @@ public interface IDIYComponent<T> extends Serializable, Cloneable {
|
|||||||
* @param point
|
* @param point
|
||||||
* @param index
|
* @param index
|
||||||
*/
|
*/
|
||||||
void setControlPoint(Point point, int index);
|
void setControlPoint(Point2D point, int index);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param index
|
* @param index
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.diylc.core;
|
package org.diylc.core;
|
||||||
|
|
||||||
import java.awt.Point;
|
import java.awt.geom.Point2D;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@@ -29,7 +29,7 @@ public class Template {
|
|||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
private Map<String, Object> values;
|
private Map<String, Object> values;
|
||||||
private List<Point> points;
|
private List<Point2D> points;
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
@Deprecated
|
@Deprecated
|
||||||
private boolean defaultFlag;
|
private boolean defaultFlag;
|
||||||
@@ -37,7 +37,7 @@ public class Template {
|
|||||||
public Template() {
|
public Template() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Template(String name, Map<String, Object> values, List<Point> points) {
|
public Template(String name, Map<String, Object> values, List<Point2D> points) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.values = values;
|
this.values = values;
|
||||||
this.points = points;
|
this.points = points;
|
||||||
@@ -59,11 +59,11 @@ public class Template {
|
|||||||
this.values = values;
|
this.values = values;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Point> getPoints() {
|
public List<Point2D> getPoints() {
|
||||||
return points;
|
return points;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPoints(List<Point> points) {
|
public void setPoints(List<Point2D> points) {
|
||||||
this.points = points;
|
this.points = points;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.diylc.presenter;
|
package org.diylc.presenter;
|
||||||
|
|
||||||
import java.awt.Point;
|
import java.awt.geom.Point2D;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@@ -37,18 +37,18 @@ public class CalcUtils {
|
|||||||
* @param x
|
* @param x
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static int roundToGrid(double x, Size gridSpacing) {
|
public static double roundToGrid(double x, Size gridSpacing) {
|
||||||
double grid = gridSpacing.convertToPixels();
|
double grid = gridSpacing.convertToPixels();
|
||||||
return (int) Math.round((Math.round(1f * x / grid) * grid));
|
return (Math.round(1f * x / grid) * grid);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void snapPointToGrid(Point point, Size gridSpacing) {
|
public static void snapPointToGrid(Point2D point, Size gridSpacing) {
|
||||||
int x = roundToGrid(point.x, gridSpacing);
|
double x = roundToGrid(point.getX(), gridSpacing);
|
||||||
int y = roundToGrid(point.y, gridSpacing);
|
double y = roundToGrid(point.getY(), gridSpacing);
|
||||||
point.setLocation(x, y);
|
point.setLocation(x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void snapPointToObjects(Point point, Size gridSpacing, IDIYComponent<?> component, List<IDIYComponent<?>> components) {
|
public static void snapPointToObjects(Point2D point, Size gridSpacing, IDIYComponent<?> component, List<IDIYComponent<?>> components) {
|
||||||
for (IDIYComponent<?> c : components) {
|
for (IDIYComponent<?> c : components) {
|
||||||
if (c == component)
|
if (c == component)
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -18,8 +18,8 @@
|
|||||||
package org.diylc.presenter;
|
package org.diylc.presenter;
|
||||||
|
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -93,7 +93,7 @@ public class DrawingCache {
|
|||||||
|
|
||||||
if (type != null && type.getEnableCache()) {
|
if (type != null && type.getEnableCache()) {
|
||||||
// if we need to apply caching
|
// if we need to apply caching
|
||||||
Point firstPoint = component.getControlPoint(0);
|
Point2D firstPoint = component.getControlPoint(0);
|
||||||
|
|
||||||
CacheValue value = renderAndCache(component, g2d, componentState, outlineMode, project, zoom);
|
CacheValue value = renderAndCache(component, g2d, componentState, outlineMode, project, zoom);
|
||||||
|
|
||||||
@@ -107,8 +107,8 @@ public class DrawingCache {
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
// draw cached image
|
// draw cached image
|
||||||
g2d.getCanvasGraphics().drawImage(value.getImage(), (int) ((firstPoint.x - value.getDx()) * zoom),
|
g2d.getCanvasGraphics().drawImage(value.getImage(), (int) ((firstPoint.getX() - value.getDx()) * zoom),
|
||||||
(int) ((firstPoint.y - value.getDy())* zoom), null);
|
(int) ((firstPoint.getY() - value.getDy())* zoom), null);
|
||||||
} finally {
|
} finally {
|
||||||
if (Math.abs(1.0 - zoom) > 1e-4) {
|
if (Math.abs(1.0 - zoom) > 1e-4) {
|
||||||
g2d.getCanvasGraphics().scale(zoom, zoom);
|
g2d.getCanvasGraphics().scale(zoom, zoom);
|
||||||
@@ -157,7 +157,7 @@ public class DrawingCache {
|
|||||||
private CacheValue renderAndCache(IDIYComponent<?> component, G2DWrapper g2d, ComponentState componentState,
|
private CacheValue renderAndCache(IDIYComponent<?> component, G2DWrapper g2d, ComponentState componentState,
|
||||||
boolean outlineMode, Project project, double zoom) {
|
boolean outlineMode, Project project, double zoom) {
|
||||||
// if we need to apply caching
|
// if we need to apply caching
|
||||||
Point firstPoint = component.getControlPoint(0);
|
Point2D firstPoint = component.getControlPoint(0);
|
||||||
|
|
||||||
// cache hit!
|
// cache hit!
|
||||||
CacheValue value = null;
|
CacheValue value = null;
|
||||||
@@ -172,8 +172,8 @@ public class DrawingCache {
|
|||||||
int width = (int)Math.round(rect.getWidth() * zoom);
|
int width = (int)Math.round(rect.getWidth() * zoom);
|
||||||
int height = (int)Math.round(rect.getHeight() * zoom);
|
int height = (int)Math.round(rect.getHeight() * zoom);
|
||||||
// calculate the position of the first point relative to the caching bounds
|
// calculate the position of the first point relative to the caching bounds
|
||||||
int dx = (int) (firstPoint.x - rect.getX());
|
int dx = (int) (firstPoint.getX() - rect.getX());
|
||||||
int dy = (int) (firstPoint.y - rect.getY());
|
int dy = (int) (firstPoint.getY() - rect.getY());
|
||||||
|
|
||||||
// create image
|
// create image
|
||||||
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
|
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
|
||||||
@@ -191,7 +191,7 @@ public class DrawingCache {
|
|||||||
cg2d.scale(zoom, zoom);
|
cg2d.scale(zoom, zoom);
|
||||||
}
|
}
|
||||||
// translate to make the top-left corner of the component match (0, 0)
|
// translate to make the top-left corner of the component match (0, 0)
|
||||||
cg2d.translate(-firstPoint.x + dx, -firstPoint.y + dy);
|
cg2d.translate(-firstPoint.getX() + dx, -firstPoint.getY() + dy);
|
||||||
|
|
||||||
// wrap the graphics so we can track
|
// wrap the graphics so we can track
|
||||||
G2DWrapper wrapper = new G2DWrapper(cg2d, zoom);
|
G2DWrapper wrapper = new G2DWrapper(cg2d, zoom);
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ import java.awt.RenderingHints;
|
|||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Line2D;
|
import java.awt.geom.Line2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@@ -155,7 +156,7 @@ public class DrawingManager {
|
|||||||
*/
|
*/
|
||||||
public List<IDIYComponent<?>> drawProject(Graphics2D g2d, Project project, Set<DrawOption> drawOptions,
|
public List<IDIYComponent<?>> drawProject(Graphics2D g2d, Project project, Set<DrawOption> drawOptions,
|
||||||
IComponentFilter filter, Rectangle selectionRect, Collection<IDIYComponent<?>> selectedComponents,
|
IComponentFilter filter, Rectangle selectionRect, Collection<IDIYComponent<?>> selectedComponents,
|
||||||
Set<IDIYComponent<?>> lockedComponents, Set<IDIYComponent<?>> groupedComponents, List<Point> controlPointSlot,
|
Set<IDIYComponent<?>> lockedComponents, Set<IDIYComponent<?>> groupedComponents, List<Point2D> controlPointSlot,
|
||||||
List<IDIYComponent<?>> componentSlot, boolean dragInProgress, Double externalZoom, Rectangle2D visibleRect) {
|
List<IDIYComponent<?>> componentSlot, boolean dragInProgress, Double externalZoom, Rectangle2D visibleRect) {
|
||||||
long totalStartTime = System.nanoTime();
|
long totalStartTime = System.nanoTime();
|
||||||
failedComponents.clear();
|
failedComponents.clear();
|
||||||
@@ -370,9 +371,9 @@ public class DrawingManager {
|
|||||||
.contains(component) && !selectedComponents.contains(component) && component
|
.contains(component) && !selectedComponents.contains(component) && component
|
||||||
.getControlPointVisibilityPolicy(i) == VisibilityPolicy.ALWAYS))) {
|
.getControlPointVisibilityPolicy(i) == VisibilityPolicy.ALWAYS))) {
|
||||||
g2dWrapper.setColor(CONTROL_POINT_COLOR);
|
g2dWrapper.setColor(CONTROL_POINT_COLOR);
|
||||||
Point controlPoint = component.getControlPoint(i);
|
Point2D controlPoint = component.getControlPoint(i);
|
||||||
int pointSize = CONTROL_POINT_SIZE - 2;
|
int pointSize = CONTROL_POINT_SIZE - 2;
|
||||||
g2dWrapper.fillOval(controlPoint.x - pointSize / 2, controlPoint.y - pointSize / 2, pointSize, pointSize);
|
g2dWrapper.fillOval((int)(controlPoint.getX() - pointSize / 2), (int)(controlPoint.getY() - pointSize / 2), pointSize, pointSize);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -384,14 +385,14 @@ public class DrawingManager {
|
|||||||
&& (component.getControlPointVisibilityPolicy(i) == VisibilityPolicy.WHEN_SELECTED || component
|
&& (component.getControlPointVisibilityPolicy(i) == VisibilityPolicy.WHEN_SELECTED || component
|
||||||
.getControlPointVisibilityPolicy(i) == VisibilityPolicy.ALWAYS)) {
|
.getControlPointVisibilityPolicy(i) == VisibilityPolicy.ALWAYS)) {
|
||||||
|
|
||||||
Point controlPoint = component.getControlPoint(i);
|
Point2D controlPoint = component.getControlPoint(i);
|
||||||
int pointSize = CONTROL_POINT_SIZE;
|
int pointSize = CONTROL_POINT_SIZE;
|
||||||
|
|
||||||
g2dWrapper.setColor(SELECTED_CONTROL_POINT_COLOR.darker());
|
g2dWrapper.setColor(SELECTED_CONTROL_POINT_COLOR.darker());
|
||||||
g2dWrapper.fillOval(controlPoint.x - pointSize / 2, controlPoint.y - pointSize / 2, pointSize, pointSize);
|
g2dWrapper.fillOval((int)(controlPoint.getX() - pointSize / 2), (int)(controlPoint.getY() - pointSize / 2), pointSize, pointSize);
|
||||||
g2dWrapper.setColor(SELECTED_CONTROL_POINT_COLOR);
|
g2dWrapper.setColor(SELECTED_CONTROL_POINT_COLOR);
|
||||||
g2dWrapper.fillOval(controlPoint.x - CONTROL_POINT_SIZE / 2 + 1, controlPoint.y - CONTROL_POINT_SIZE / 2
|
g2dWrapper.fillOval((int)(controlPoint.getX() - CONTROL_POINT_SIZE / 2 + 1), (int)(controlPoint.getY() - CONTROL_POINT_SIZE / 2
|
||||||
+ 1, CONTROL_POINT_SIZE - 2, CONTROL_POINT_SIZE - 2);
|
+ 1), CONTROL_POINT_SIZE - 2, CONTROL_POINT_SIZE - 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -417,13 +418,13 @@ public class DrawingManager {
|
|||||||
|
|
||||||
// Draw control points of the component in the slot.
|
// Draw control points of the component in the slot.
|
||||||
if (controlPointSlot != null) {
|
if (controlPointSlot != null) {
|
||||||
for (Point point : controlPointSlot) {
|
for (Point2D point : controlPointSlot) {
|
||||||
if (point != null) {
|
if (point != null) {
|
||||||
g2dWrapper.setColor(SELECTED_CONTROL_POINT_COLOR.darker());
|
g2dWrapper.setColor(SELECTED_CONTROL_POINT_COLOR.darker());
|
||||||
g2dWrapper.fillOval(point.x - CONTROL_POINT_SIZE / 2, point.y - CONTROL_POINT_SIZE / 2, CONTROL_POINT_SIZE,
|
g2dWrapper.fillOval((int)(point.getX() - CONTROL_POINT_SIZE / 2), (int)(point.getY() - CONTROL_POINT_SIZE / 2), CONTROL_POINT_SIZE,
|
||||||
CONTROL_POINT_SIZE);
|
CONTROL_POINT_SIZE);
|
||||||
g2dWrapper.setColor(SELECTED_CONTROL_POINT_COLOR);
|
g2dWrapper.setColor(SELECTED_CONTROL_POINT_COLOR);
|
||||||
g2dWrapper.fillOval(point.x - CONTROL_POINT_SIZE / 2 + 1, point.y - CONTROL_POINT_SIZE / 2 + 1,
|
g2dWrapper.fillOval((int)(point.getX() - CONTROL_POINT_SIZE / 2 + 1), (int)(point.getY() - CONTROL_POINT_SIZE / 2 + 1),
|
||||||
CONTROL_POINT_SIZE - 2, CONTROL_POINT_SIZE - 2);
|
CONTROL_POINT_SIZE - 2, CONTROL_POINT_SIZE - 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -539,7 +540,7 @@ public class DrawingManager {
|
|||||||
continuityAreaCache = null;
|
continuityAreaCache = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<IDIYComponent<?>> findComponentsAt(Point point, Project project) {
|
public List<IDIYComponent<?>> findComponentsAt(Point2D point, Project project) {
|
||||||
List<IDIYComponent<?>> components = new ArrayList<IDIYComponent<?>>();
|
List<IDIYComponent<?>> components = new ArrayList<IDIYComponent<?>>();
|
||||||
for (int i = 0; i < project.getComponents().size(); i++) {
|
for (int i = 0; i < project.getComponents().size(); i++) {
|
||||||
ComponentArea area = componentAreaMap.get(project.getComponents().get(i));
|
ComponentArea area = componentAreaMap.get(project.getComponents().get(i));
|
||||||
@@ -588,7 +589,7 @@ public class DrawingManager {
|
|||||||
messageDispatcher.dispatchMessage(EventType.REPAINT);
|
messageDispatcher.dispatchMessage(EventType.REPAINT);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void findContinuityAreaAtPoint(Project project, Point p) {
|
public void findContinuityAreaAtPoint(Project project, Point2D p) {
|
||||||
if (continuityAreaCache == null)
|
if (continuityAreaCache == null)
|
||||||
continuityAreaCache = getContinuityAreas(project);
|
continuityAreaCache = getContinuityAreas(project);
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.diylc.presenter;
|
package org.diylc.presenter;
|
||||||
|
|
||||||
import java.awt.Point;
|
import java.awt.geom.Point2D;
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@@ -60,8 +60,8 @@ public class InstantiationManager {
|
|||||||
private ComponentType componentTypeSlot;
|
private ComponentType componentTypeSlot;
|
||||||
private Template template;
|
private Template template;
|
||||||
private List<IDIYComponent<?>> componentSlot;
|
private List<IDIYComponent<?>> componentSlot;
|
||||||
private Point firstControlPoint;
|
private Point2D firstControlPoint;
|
||||||
private Point potentialControlPoint;
|
private Point2D potentialControlPoint;
|
||||||
|
|
||||||
public static final ComponentType clipboardType = new ComponentType("Clipboard contents",
|
public static final ComponentType clipboardType = new ComponentType("Clipboard contents",
|
||||||
"Components from the clipboard", CreationMethod.SINGLE_CLICK, "Multi", "", "", null, null, 0, false, null,
|
"Components from the clipboard", CreationMethod.SINGLE_CLICK, "Multi", "", "", null, null, 0, false, null,
|
||||||
@@ -84,15 +84,15 @@ public class InstantiationManager {
|
|||||||
return componentSlot;
|
return componentSlot;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Point getFirstControlPoint() {
|
public Point2D getFirstControlPoint() {
|
||||||
return firstControlPoint;
|
return firstControlPoint;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Point getPotentialControlPoint() {
|
public Point2D getPotentialControlPoint() {
|
||||||
return potentialControlPoint;
|
return potentialControlPoint;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPotentialControlPoint(Point potentialControlPoint) {
|
public void setPotentialControlPoint(Point2D potentialControlPoint) {
|
||||||
this.potentialControlPoint = potentialControlPoint;
|
this.potentialControlPoint = potentialControlPoint;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,10 +105,10 @@ public class InstantiationManager {
|
|||||||
} else {
|
} else {
|
||||||
switch (componentTypeSlot.getCreationMethod()) {
|
switch (componentTypeSlot.getCreationMethod()) {
|
||||||
case POINT_BY_POINT:
|
case POINT_BY_POINT:
|
||||||
this.componentSlot = forceInstatiate ? instantiateComponent(componentTypeSlot, template, new Point(0, 0), currentProject) : null;
|
this.componentSlot = forceInstatiate ? instantiateComponent(componentTypeSlot, template, new Point2D.Double(0, 0), currentProject) : null;
|
||||||
break;
|
break;
|
||||||
case SINGLE_CLICK:
|
case SINGLE_CLICK:
|
||||||
this.componentSlot = instantiateComponent(componentTypeSlot, template, new Point(0, 0), currentProject);
|
this.componentSlot = instantiateComponent(componentTypeSlot, template, new Point2D.Double(0, 0), currentProject);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -116,7 +116,7 @@ public class InstantiationManager {
|
|||||||
this.potentialControlPoint = null;
|
this.potentialControlPoint = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void instatiatePointByPoint(Point scaledPoint, Project currentProject) throws Exception {
|
public void instatiatePointByPoint(Point2D scaledPoint, Project currentProject) throws Exception {
|
||||||
firstControlPoint = scaledPoint;
|
firstControlPoint = scaledPoint;
|
||||||
componentSlot = instantiateComponent(componentTypeSlot, template, firstControlPoint, currentProject);
|
componentSlot = instantiateComponent(componentTypeSlot, template, firstControlPoint, currentProject);
|
||||||
|
|
||||||
@@ -132,7 +132,7 @@ public class InstantiationManager {
|
|||||||
* @param scaledPoint
|
* @param scaledPoint
|
||||||
* @return true, if any change is made
|
* @return true, if any change is made
|
||||||
*/
|
*/
|
||||||
public boolean updatePointByPoint(Point scaledPoint) {
|
public boolean updatePointByPoint(Point2D scaledPoint) {
|
||||||
boolean changeMade = !scaledPoint.equals(potentialControlPoint);
|
boolean changeMade = !scaledPoint.equals(potentialControlPoint);
|
||||||
potentialControlPoint = scaledPoint;
|
potentialControlPoint = scaledPoint;
|
||||||
if (componentSlot != null && !componentSlot.isEmpty()) {
|
if (componentSlot != null && !componentSlot.isEmpty()) {
|
||||||
@@ -142,14 +142,14 @@ public class InstantiationManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public void pasteComponents(Collection<IDIYComponent<?>> components, Point scaledPoint, boolean snapToGrid,
|
public void pasteComponents(Collection<IDIYComponent<?>> components, Point2D scaledPoint, boolean snapToGrid,
|
||||||
Size gridSpacing, boolean autoGroup, Project currentProject, boolean assignNewNames) {
|
Size gridSpacing, boolean autoGroup, Project currentProject, boolean assignNewNames) {
|
||||||
// Adjust location of components so they are centered under the mouse
|
// Adjust location of components so they are centered under the mouse
|
||||||
// cursor
|
// cursor
|
||||||
int minX = Integer.MAX_VALUE;
|
double minX = Integer.MAX_VALUE;
|
||||||
int maxX = Integer.MIN_VALUE;
|
double maxX = Integer.MIN_VALUE;
|
||||||
int minY = Integer.MAX_VALUE;
|
double minY = Integer.MAX_VALUE;
|
||||||
int maxY = Integer.MIN_VALUE;
|
double maxY = Integer.MIN_VALUE;
|
||||||
|
|
||||||
Set<String> existingNames = new HashSet<String>();
|
Set<String> existingNames = new HashSet<String>();
|
||||||
for (IDIYComponent<?> c : currentProject.getComponents())
|
for (IDIYComponent<?> c : currentProject.getComponents())
|
||||||
@@ -169,32 +169,32 @@ public class InstantiationManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < component.getControlPointCount(); i++) {
|
for (int i = 0; i < component.getControlPointCount(); i++) {
|
||||||
Point p = component.getControlPoint(i);
|
Point2D p = component.getControlPoint(i);
|
||||||
if (p.x > maxX) {
|
if (p.getX() > maxX) {
|
||||||
maxX = p.x;
|
maxX = p.getX();
|
||||||
}
|
}
|
||||||
if (p.x < minX) {
|
if (p.getX() < minX) {
|
||||||
minX = p.x;
|
minX = p.getX();
|
||||||
}
|
}
|
||||||
if (p.y > maxY) {
|
if (p.getY() > maxY) {
|
||||||
maxY = p.y;
|
maxY = p.getY();
|
||||||
}
|
}
|
||||||
if (p.y < minY) {
|
if (p.getY() < minY) {
|
||||||
minY = p.y;
|
minY = p.getY();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int x = minX;
|
double x = minX;
|
||||||
int y = minY;
|
double y = minY;
|
||||||
if (snapToGrid) {
|
if (snapToGrid) {
|
||||||
x = CalcUtils.roundToGrid(x, gridSpacing);
|
x = CalcUtils.roundToGrid(x, gridSpacing);
|
||||||
x = CalcUtils.roundToGrid(x, gridSpacing);
|
x = CalcUtils.roundToGrid(x, gridSpacing);
|
||||||
}
|
}
|
||||||
for (IDIYComponent<?> component : components) {
|
for (IDIYComponent<?> component : components) {
|
||||||
for (int i = 0; i < component.getControlPointCount(); i++) {
|
for (int i = 0; i < component.getControlPointCount(); i++) {
|
||||||
Point p = component.getControlPoint(i);
|
Point2D p = component.getControlPoint(i);
|
||||||
p.translate(-x, -y);
|
Point2D newP = new Point2D.Double(p.getX() - x, p.getY() - y);
|
||||||
component.setControlPoint(p, i);
|
component.setControlPoint(newP, i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -206,7 +206,7 @@ public class InstantiationManager {
|
|||||||
this.componentTypeSlot = autoGroup ? blockType : clipboardType;
|
this.componentTypeSlot = autoGroup ? blockType : clipboardType;
|
||||||
|
|
||||||
if (snapToGrid) {
|
if (snapToGrid) {
|
||||||
scaledPoint = new Point(scaledPoint);
|
scaledPoint = new Point2D.Double(scaledPoint.getX(), scaledPoint.getY());
|
||||||
CalcUtils.snapPointToGrid(scaledPoint, gridSpacing);
|
CalcUtils.snapPointToGrid(scaledPoint, gridSpacing);
|
||||||
}
|
}
|
||||||
// Update the location according to mouse location
|
// Update the location according to mouse location
|
||||||
@@ -221,15 +221,15 @@ public class InstantiationManager {
|
|||||||
* @param gridSpacing
|
* @param gridSpacing
|
||||||
* @return true if we need to refresh the canvas
|
* @return true if we need to refresh the canvas
|
||||||
*/
|
*/
|
||||||
public boolean updateSingleClick(Point scaledPoint, boolean snapToGrid, Size gridSpacing) {
|
public boolean updateSingleClick(Point2D scaledPoint, boolean snapToGrid, Size gridSpacing) {
|
||||||
if (potentialControlPoint == null) {
|
if (potentialControlPoint == null) {
|
||||||
potentialControlPoint = new Point(0, 0);
|
potentialControlPoint = new Point2D.Double(0, 0);
|
||||||
}
|
}
|
||||||
if (scaledPoint == null) {
|
if (scaledPoint == null) {
|
||||||
scaledPoint = new Point(0, 0);
|
scaledPoint = new Point2D.Double(0, 0);
|
||||||
}
|
}
|
||||||
int dx = scaledPoint.x - potentialControlPoint.x;
|
double dx = scaledPoint.getX() - potentialControlPoint.getX();
|
||||||
int dy = scaledPoint.y - potentialControlPoint.y;
|
double dy = scaledPoint.getY() - potentialControlPoint.getY();
|
||||||
if (snapToGrid) {
|
if (snapToGrid) {
|
||||||
dx = CalcUtils.roundToGrid(dx, gridSpacing);
|
dx = CalcUtils.roundToGrid(dx, gridSpacing);
|
||||||
dy = CalcUtils.roundToGrid(dy, gridSpacing);
|
dy = CalcUtils.roundToGrid(dy, gridSpacing);
|
||||||
@@ -238,15 +238,15 @@ public class InstantiationManager {
|
|||||||
if (dx == 0 && dy == 0) {
|
if (dx == 0 && dy == 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
potentialControlPoint.translate(dx, dy);
|
potentialControlPoint.setLocation(potentialControlPoint.getX() + dx, potentialControlPoint.getY() + dy);
|
||||||
if (componentSlot == null) {
|
if (componentSlot == null) {
|
||||||
LOG.error("Component slot should not be null!");
|
LOG.error("Component slot should not be null!");
|
||||||
} else {
|
} else {
|
||||||
Point p = new Point();
|
Point2D p = new Point2D.Double();
|
||||||
for (IDIYComponent<?> component : componentSlot) {
|
for (IDIYComponent<?> component : componentSlot) {
|
||||||
for (int i = 0; i < component.getControlPointCount(); i++) {
|
for (int i = 0; i < component.getControlPointCount(); i++) {
|
||||||
p.setLocation(component.getControlPoint(i));
|
Point2D oldP = component.getControlPoint(i);
|
||||||
p.translate(dx, dy);
|
p.setLocation(oldP.getX() + dx, oldP.getY() + dy);
|
||||||
component.setControlPoint(p, i);
|
component.setControlPoint(p, i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -255,7 +255,7 @@ public class InstantiationManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public List<IDIYComponent<?>> instantiateComponent(ComponentType componentType, Template template, Point point,
|
public List<IDIYComponent<?>> instantiateComponent(ComponentType componentType, Template template, Point2D point,
|
||||||
Project currentProject) throws InstantiationException, IllegalAccessException {
|
Project currentProject) throws InstantiationException, IllegalAccessException {
|
||||||
LOG.info("Instatiating component of type: " + componentType.getInstanceClass().getName());
|
LOG.info("Instatiating component of type: " + componentType.getInstanceClass().getName());
|
||||||
|
|
||||||
@@ -267,8 +267,8 @@ public class InstantiationManager {
|
|||||||
// Translate them to the desired location.
|
// Translate them to the desired location.
|
||||||
if (point != null) {
|
if (point != null) {
|
||||||
for (int j = 0; j < component.getControlPointCount(); j++) {
|
for (int j = 0; j < component.getControlPointCount(); j++) {
|
||||||
Point controlPoint = new Point(component.getControlPoint(j));
|
Point2D p = component.getControlPoint(j);
|
||||||
controlPoint.translate(point.x, point.y);
|
Point2D controlPoint = new Point2D.Double(p.getX() + point.getX(), p.getY() + point.getY());
|
||||||
// snapPointToGrid(controlPoint);
|
// snapPointToGrid(controlPoint);
|
||||||
component.setControlPoint(controlPoint, j);
|
component.setControlPoint(controlPoint, j);
|
||||||
}
|
}
|
||||||
@@ -388,8 +388,8 @@ public class InstantiationManager {
|
|||||||
if (template != null && template.getPoints() != null
|
if (template != null && template.getPoints() != null
|
||||||
&& template.getPoints().size() >= component.getControlPointCount()) {
|
&& template.getPoints().size() >= component.getControlPointCount()) {
|
||||||
for (int i = 0; i < component.getControlPointCount(); i++) {
|
for (int i = 0; i < component.getControlPointCount(); i++) {
|
||||||
Point p = new Point(component.getControlPoint(0));
|
Point2D oldP = component.getControlPoint(0);
|
||||||
p.translate(template.getPoints().get(i).x, template.getPoints().get(i).y);
|
Point2D p = new Point2D.Double(oldP.getX() + template.getPoints().get(i).getX(), oldP.getY() + template.getPoints().get(i).getY());
|
||||||
component.setControlPoint(p, i);
|
component.setControlPoint(p, i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -202,10 +202,10 @@ public class Presenter implements IPlugInPort {
|
|||||||
// D&D
|
// D&D
|
||||||
private boolean dragInProgress = false;
|
private boolean dragInProgress = false;
|
||||||
// Previous mouse location, not scaled for zoom factor.
|
// Previous mouse location, not scaled for zoom factor.
|
||||||
private Point previousDragPoint = null;
|
private Point2D previousDragPoint = null;
|
||||||
private Project preDragProject = null;
|
private Project preDragProject = null;
|
||||||
private int dragAction;
|
private int dragAction;
|
||||||
private Point previousScaledPoint;
|
private Point2D previousScaledPoint;
|
||||||
|
|
||||||
private DIYTest test = null;
|
private DIYTest test = null;
|
||||||
|
|
||||||
@@ -246,8 +246,8 @@ public class Presenter implements IPlugInPort {
|
|||||||
// IPlugInPort
|
// IPlugInPort
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Double[] getAvailableZoomLevels() {
|
public java.lang.Double[] getAvailableZoomLevels() {
|
||||||
return new Double[] {0.25d, 0.3333d, 0.5d, 0.6667d, 0.75d, 1d, 1.25d, 1.5d, 2d, 2.5d, 3d};
|
return new java.lang.Double[] {0.25d, 0.3333d, 0.5d, 0.6667d, 0.75d, 1d, 1.25d, 1.5d, 2d, 2.5d, 3d};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -502,7 +502,7 @@ public class Presenter implements IPlugInPort {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void draw(Graphics2D g2d, Set<DrawOption> drawOptions, final IComponentFilter filter, Double externalZoom, Rectangle2D visibleRect) {
|
public void draw(Graphics2D g2d, Set<DrawOption> drawOptions, final IComponentFilter filter, java.lang.Double externalZoom, Rectangle2D visibleRect) {
|
||||||
if (currentProject == null) {
|
if (currentProject == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -566,7 +566,7 @@ public class Presenter implements IPlugInPort {
|
|||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public List<IDIYComponent<?>> findComponentsAtScaled(Point point, boolean includeLocked) {
|
public List<IDIYComponent<?>> findComponentsAtScaled(Point2D point, boolean includeLocked) {
|
||||||
List<IDIYComponent<?>> components = drawingManager.findComponentsAt(point, currentProject);
|
List<IDIYComponent<?>> components = drawingManager.findComponentsAt(point, currentProject);
|
||||||
Iterator<IDIYComponent<?>> iterator = components.iterator();
|
Iterator<IDIYComponent<?>> iterator = components.iterator();
|
||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
@@ -579,8 +579,8 @@ public class Presenter implements IPlugInPort {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<IDIYComponent<?>> findComponentsAt(Point point, boolean includeLocked) {
|
public List<IDIYComponent<?>> findComponentsAt(Point2D point, boolean includeLocked) {
|
||||||
Point scaledPoint = scalePoint(point);
|
Point2D scaledPoint = scalePoint(point);
|
||||||
List<IDIYComponent<?>> components = findComponentsAtScaled(scaledPoint, includeLocked);
|
List<IDIYComponent<?>> components = findComponentsAtScaled(scaledPoint, includeLocked);
|
||||||
return components;
|
return components;
|
||||||
}
|
}
|
||||||
@@ -601,7 +601,7 @@ public class Presenter implements IPlugInPort {
|
|||||||
test.addStep(DIYTest.MOUSE_CLICKED, params);
|
test.addStep(DIYTest.MOUSE_CLICKED, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
Point scaledPoint = scalePoint(point);
|
Point2D scaledPoint = scalePoint(point);
|
||||||
if (clickCount >= 2) {
|
if (clickCount >= 2) {
|
||||||
editSelection();
|
editSelection();
|
||||||
} else {
|
} else {
|
||||||
@@ -728,9 +728,9 @@ public class Presenter implements IPlugInPort {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addPendingComponentsToProject(Point scaledPoint, ComponentType componentTypeSlot, Template template) {
|
private void addPendingComponentsToProject(Point2D scaledPoint, ComponentType componentTypeSlot, Template template) {
|
||||||
List<IDIYComponent<?>> componentSlot = instantiationManager.getComponentSlot();
|
List<IDIYComponent<?>> componentSlot = instantiationManager.getComponentSlot();
|
||||||
Point firstPoint = componentSlot.get(0).getControlPoint(0);
|
Point2D firstPoint = componentSlot.get(0).getControlPoint(0);
|
||||||
// don't allow to create component with the same points
|
// don't allow to create component with the same points
|
||||||
if (scaledPoint == null || scaledPoint.equals(firstPoint))
|
if (scaledPoint == null || scaledPoint.equals(firstPoint))
|
||||||
return;
|
return;
|
||||||
@@ -924,7 +924,7 @@ public class Presenter implements IPlugInPort {
|
|||||||
for (int i = currentProject.getComponents().size() - 1; i >= 0; i--) {
|
for (int i = currentProject.getComponents().size() - 1; i >= 0; i--) {
|
||||||
IDIYComponent<?> component = currentProject.getComponents().get(i);
|
IDIYComponent<?> component = currentProject.getComponents().get(i);
|
||||||
for (int pointIndex = 0; pointIndex < component.getControlPointCount(); pointIndex++) {
|
for (int pointIndex = 0; pointIndex < component.getControlPointCount(); pointIndex++) {
|
||||||
Point controlPoint = component.getControlPoint(pointIndex);
|
Point2D controlPoint = component.getControlPoint(pointIndex);
|
||||||
// Only consider selected components that are not grouped.
|
// Only consider selected components that are not grouped.
|
||||||
if (selectedComponents.contains(component) && component.canPointMoveFreely(pointIndex)
|
if (selectedComponents.contains(component) && component.canPointMoveFreely(pointIndex)
|
||||||
&& findAllGroupedComponents(component).size() == 1) {
|
&& findAllGroupedComponents(component).size() == 1) {
|
||||||
@@ -945,7 +945,7 @@ public class Presenter implements IPlugInPort {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Point2D inPoint =
|
Point2D inPoint =
|
||||||
new Point2D.Double(1.0d * previousScaledPoint.x / Constants.PIXELS_PER_INCH, 1.0d * previousScaledPoint.y
|
new Point2D.Double(1.0d * previousScaledPoint.getX() / Constants.PIXELS_PER_INCH, 1.0d * previousScaledPoint.getY()
|
||||||
/ Constants.PIXELS_PER_INCH);
|
/ Constants.PIXELS_PER_INCH);
|
||||||
Point2D mmPoint =
|
Point2D mmPoint =
|
||||||
new Point2D.Double(inPoint.getX() * SizeUnit.in.getFactor() / SizeUnit.cm.getFactor() * 10d, inPoint.getY()
|
new Point2D.Double(inPoint.getX() * SizeUnit.in.getFactor() / SizeUnit.cm.getFactor() * 10d, inPoint.getY()
|
||||||
@@ -1123,7 +1123,7 @@ public class Presenter implements IPlugInPort {
|
|||||||
this.dragInProgress = true;
|
this.dragInProgress = true;
|
||||||
this.dragAction = dragAction;
|
this.dragAction = dragAction;
|
||||||
this.preDragProject = currentProject.clone();
|
this.preDragProject = currentProject.clone();
|
||||||
Point scaledPoint = scalePoint(point);
|
Point2D scaledPoint = scalePoint(point);
|
||||||
this.previousDragPoint = scaledPoint;
|
this.previousDragPoint = scaledPoint;
|
||||||
List<IDIYComponent<?>> components = forceSelectionRect ? null : findComponentsAtScaled(scaledPoint, false);
|
List<IDIYComponent<?>> components = forceSelectionRect ? null : findComponentsAtScaled(scaledPoint, false);
|
||||||
if (controlPointMap != null && !this.controlPointMap.isEmpty()) {
|
if (controlPointMap != null && !this.controlPointMap.isEmpty()) {
|
||||||
@@ -1207,9 +1207,9 @@ public class Presenter implements IPlugInPort {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
for (Integer j : entry.getValue()) {
|
for (Integer j : entry.getValue()) {
|
||||||
Point firstPoint = component.getControlPoint(i);
|
Point2D firstPoint = component.getControlPoint(i);
|
||||||
if (entry.getKey().isControlPointSticky(j)) {
|
if (entry.getKey().isControlPointSticky(j)) {
|
||||||
Point secondPoint = entry.getKey().getControlPoint(j);
|
Point2D secondPoint = entry.getKey().getControlPoint(j);
|
||||||
// If they are close enough we can consider
|
// If they are close enough we can consider
|
||||||
// them matched.
|
// them matched.
|
||||||
if (firstPoint.distance(secondPoint) < DrawingManager.CONTROL_POINT_SIZE) {
|
if (firstPoint.distance(secondPoint) < DrawingManager.CONTROL_POINT_SIZE) {
|
||||||
@@ -1278,23 +1278,24 @@ public class Presenter implements IPlugInPort {
|
|||||||
if (point == null || configManager.readBoolean(HIGHLIGHT_CONTINUITY_AREA, false)) {
|
if (point == null || configManager.readBoolean(HIGHLIGHT_CONTINUITY_AREA, false)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
Point scaledPoint = scalePoint(point);
|
Point2D scaledPoint = scalePoint(point);
|
||||||
if (controlPointMap != null && !controlPointMap.isEmpty()) {
|
if (controlPointMap != null && !controlPointMap.isEmpty()) {
|
||||||
// We're dragging control point(s).
|
// We're dragging control point(s).
|
||||||
int dx = (scaledPoint.x - previousDragPoint.x);
|
int dx = (int) (scaledPoint.getX() - previousDragPoint.getX());
|
||||||
int dy = (scaledPoint.y - previousDragPoint.y);
|
int dy = (int) (scaledPoint.getY() - previousDragPoint.getY());
|
||||||
|
|
||||||
Point actualD = moveComponents(this.controlPointMap, dx, dy, isSnapToGrid(), isSnapToObjects());
|
Point2D actualD = moveComponents(this.controlPointMap, dx, dy, isSnapToGrid(), isSnapToObjects());
|
||||||
if (actualD == null)
|
if (actualD == null)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
previousDragPoint.translate(actualD.x, actualD.y);
|
previousDragPoint.setLocation(previousDragPoint.getX() + actualD.getX(), previousDragPoint.getY() + actualD.getY());
|
||||||
} else if (selectedComponents.isEmpty() && instantiationManager.getComponentTypeSlot() == null
|
} else if (selectedComponents.isEmpty() && instantiationManager.getComponentTypeSlot() == null
|
||||||
&& previousDragPoint != null) {
|
&& previousDragPoint != null) {
|
||||||
// If there's no selection, the only thing to do is update the
|
// If there's no selection, the only thing to do is update the
|
||||||
// selection rectangle and refresh.
|
// selection rectangle and refresh.
|
||||||
Rectangle oldSelectionRect = selectionRect == null ? null : new Rectangle(selectionRect);
|
Rectangle oldSelectionRect = selectionRect == null ? null : new Rectangle(selectionRect);
|
||||||
this.selectionRect = Utils.createRectangle(scaledPoint, previousDragPoint);
|
this.selectionRect = Utils.createRectangle(new Point((int)scaledPoint.getX(), (int)scaledPoint.getY()),
|
||||||
|
new Point((int)previousDragPoint.getX(), (int)previousDragPoint.getY()));
|
||||||
if (selectionRect.equals(oldSelectionRect)) {
|
if (selectionRect.equals(oldSelectionRect)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -1308,11 +1309,11 @@ public class Presenter implements IPlugInPort {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Point moveComponents(Map<IDIYComponent<?>, Set<Integer>> controlPointMap, int dx, int dy, boolean snapToGrid, boolean snapToObjects) {
|
private Point2D moveComponents(Map<IDIYComponent<?>, Set<Integer>> controlPointMap, int dx, int dy, boolean snapToGrid, boolean snapToObjects) {
|
||||||
// After we make the transfer and snap to grid, calculate actual dx
|
// After we make the transfer and snap to grid, calculate actual dx
|
||||||
// and dy. We'll use them to translate the previous drag point.
|
// and dy. We'll use them to translate the previous drag point.
|
||||||
int actualDx = 0;
|
double actualDx = 0;
|
||||||
int actualDy = 0;
|
double actualDy = 0;
|
||||||
// For each component, do a simulation of the move to see if any of
|
// For each component, do a simulation of the move to see if any of
|
||||||
// them will overlap or go out of bounds.
|
// them will overlap or go out of bounds.
|
||||||
|
|
||||||
@@ -1323,17 +1324,16 @@ public class Presenter implements IPlugInPort {
|
|||||||
if (controlPointMap.size() == 1) {
|
if (controlPointMap.size() == 1) {
|
||||||
Map.Entry<IDIYComponent<?>, Set<Integer>> entry = controlPointMap.entrySet().iterator().next();
|
Map.Entry<IDIYComponent<?>, Set<Integer>> entry = controlPointMap.entrySet().iterator().next();
|
||||||
|
|
||||||
Point firstPoint = entry.getKey().getControlPoint(entry.getValue().toArray(new Integer[] {})[0]);
|
Point2D firstPoint = entry.getKey().getControlPoint(entry.getValue().toArray(new Integer[] {})[0]);
|
||||||
Point testPoint = new Point(firstPoint);
|
Point2D testPoint = new Point2D.Double(firstPoint.getX() + dx, firstPoint.getY() + dy);
|
||||||
testPoint.translate(dx, dy);
|
|
||||||
if (snapToGrid) {
|
if (snapToGrid) {
|
||||||
CalcUtils.snapPointToGrid(testPoint, currentProject.getGridSpacing());
|
CalcUtils.snapPointToGrid(testPoint, currentProject.getGridSpacing());
|
||||||
} else if (snapToObjects) {
|
} else if (snapToObjects) {
|
||||||
CalcUtils.snapPointToObjects(testPoint, currentProject.getGridSpacing(), entry.getKey(), currentProject.getComponents());
|
CalcUtils.snapPointToObjects(testPoint, currentProject.getGridSpacing(), entry.getKey(), currentProject.getComponents());
|
||||||
}
|
}
|
||||||
|
|
||||||
actualDx = testPoint.x - firstPoint.x;
|
actualDx = testPoint.getX() - firstPoint.getX();
|
||||||
actualDy = testPoint.y - firstPoint.y;
|
actualDy = testPoint.getY() - firstPoint.getY();
|
||||||
} else if (snapToGrid) {
|
} else if (snapToGrid) {
|
||||||
actualDx = CalcUtils.roundToGrid(dx, currentProject.getGridSpacing());
|
actualDx = CalcUtils.roundToGrid(dx, currentProject.getGridSpacing());
|
||||||
actualDy = CalcUtils.roundToGrid(dy, currentProject.getGridSpacing());
|
actualDy = CalcUtils.roundToGrid(dy, currentProject.getGridSpacing());
|
||||||
@@ -1350,16 +1350,16 @@ public class Presenter implements IPlugInPort {
|
|||||||
// Validate if moving can be done.
|
// Validate if moving can be done.
|
||||||
for (Map.Entry<IDIYComponent<?>, Set<Integer>> entry : controlPointMap.entrySet()) {
|
for (Map.Entry<IDIYComponent<?>, Set<Integer>> entry : controlPointMap.entrySet()) {
|
||||||
IDIYComponent<?> component = entry.getKey();
|
IDIYComponent<?> component = entry.getKey();
|
||||||
Point[] controlPoints = new Point[component.getControlPointCount()];
|
Point2D[] controlPoints = new Point2D[component.getControlPointCount()];
|
||||||
for (int index = 0; index < component.getControlPointCount(); index++) {
|
for (int index = 0; index < component.getControlPointCount(); index++) {
|
||||||
controlPoints[index] = new Point(component.getControlPoint(index));
|
Point2D p = component.getControlPoint(index);
|
||||||
|
controlPoints[index] = new Point2D.Double(p.getX(), p.getY());
|
||||||
// When the first point is moved, calculate how much it
|
// When the first point is moved, calculate how much it
|
||||||
// actually moved after snapping.
|
// actually moved after snapping.
|
||||||
if (entry.getValue().contains(index)) {
|
if (entry.getValue().contains(index)) {
|
||||||
controlPoints[index].translate(actualDx, actualDy);
|
controlPoints[index].setLocation(controlPoints[index].getX() + actualDx + extraSpace, controlPoints[index].getY() + actualDy + extraSpace);
|
||||||
controlPoints[index].translate((int) extraSpace, (int) extraSpace);
|
if (controlPoints[index].getX() < 0 || controlPoints[index].getY() < 0 || controlPoints[index].getX() > d.width
|
||||||
if (controlPoints[index].x < 0 || controlPoints[index].y < 0 || controlPoints[index].x > d.width
|
|| controlPoints[index].getY() > d.height) {
|
||||||
|| controlPoints[index].y > d.height) {
|
|
||||||
// At least one control point went out of bounds.
|
// At least one control point went out of bounds.
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -1386,8 +1386,8 @@ public class Presenter implements IPlugInPort {
|
|||||||
for (Map.Entry<IDIYComponent<?>, Set<Integer>> entry : controlPointMap.entrySet()) {
|
for (Map.Entry<IDIYComponent<?>, Set<Integer>> entry : controlPointMap.entrySet()) {
|
||||||
IDIYComponent<?> c = entry.getKey();
|
IDIYComponent<?> c = entry.getKey();
|
||||||
for (Integer index : entry.getValue()) {
|
for (Integer index : entry.getValue()) {
|
||||||
Point p = new Point(c.getControlPoint(index));
|
Point2D oldP = c.getControlPoint(index);
|
||||||
p.translate(actualDx, actualDy);
|
Point2D p = new Point2D.Double(oldP.getX() + actualDx, oldP.getY() + actualDy);
|
||||||
c.setControlPoint(p, index);
|
c.setControlPoint(p, index);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1396,7 +1396,7 @@ public class Presenter implements IPlugInPort {
|
|||||||
drawingManager.clearComponentAreaMap();
|
drawingManager.clearComponentAreaMap();
|
||||||
drawingManager.clearContinuityArea();
|
drawingManager.clearContinuityArea();
|
||||||
|
|
||||||
return new Point(actualDx, actualDy);
|
return new Point2D.Double(actualDx, actualDy);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1418,7 +1418,7 @@ public class Presenter implements IPlugInPort {
|
|||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
private void rotateComponents(Collection<IDIYComponent<?>> components, int direction, boolean snapToGrid) {
|
private void rotateComponents(Collection<IDIYComponent<?>> components, int direction, boolean snapToGrid) {
|
||||||
Point center = getCenterOf(components, snapToGrid);
|
Point2D center = getCenterOf(components, snapToGrid);
|
||||||
|
|
||||||
boolean canRotate = true;
|
boolean canRotate = true;
|
||||||
for (IDIYComponent<?> component : selectedComponents) {
|
for (IDIYComponent<?> component : selectedComponents) {
|
||||||
@@ -1527,7 +1527,7 @@ public class Presenter implements IPlugInPort {
|
|||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
private void mirrorComponents(Collection<IDIYComponent<?>> components, int direction, boolean snapToGrid) {
|
private void mirrorComponents(Collection<IDIYComponent<?>> components, int direction, boolean snapToGrid) {
|
||||||
Point center = getCenterOf(components, snapToGrid);
|
Point2D center = getCenterOf(components, snapToGrid);
|
||||||
|
|
||||||
boolean canMirror = true;
|
boolean canMirror = true;
|
||||||
boolean changesCircuit = false;
|
boolean changesCircuit = false;
|
||||||
@@ -1567,38 +1567,38 @@ public class Presenter implements IPlugInPort {
|
|||||||
drawingManager.clearContinuityArea();
|
drawingManager.clearContinuityArea();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Point getCenterOf(Collection<IDIYComponent<?>> components, boolean snapToGrid) {
|
private Point2D getCenterOf(Collection<IDIYComponent<?>> components, boolean snapToGrid) {
|
||||||
// Determine center of rotation
|
// Determine center of rotation
|
||||||
int minX = Integer.MAX_VALUE;
|
double minX = Integer.MAX_VALUE;
|
||||||
int minY = Integer.MAX_VALUE;
|
double minY = Integer.MAX_VALUE;
|
||||||
int maxX = Integer.MIN_VALUE;
|
double maxX = Integer.MIN_VALUE;
|
||||||
int maxY = Integer.MIN_VALUE;
|
double maxY = Integer.MIN_VALUE;
|
||||||
for (IDIYComponent<?> component : components) {
|
for (IDIYComponent<?> component : components) {
|
||||||
for (int i = 0; i < component.getControlPointCount(); i++) {
|
for (int i = 0; i < component.getControlPointCount(); i++) {
|
||||||
Point p = component.getControlPoint(i);
|
Point2D p = component.getControlPoint(i);
|
||||||
if (minX > p.x) {
|
if (minX > p.getX()) {
|
||||||
minX = p.x;
|
minX = p.getX();
|
||||||
}
|
}
|
||||||
if (maxX < p.x) {
|
if (maxX < p.getX()) {
|
||||||
maxX = p.x;
|
maxX = p.getX();
|
||||||
}
|
}
|
||||||
if (minY > p.y) {
|
if (minY > p.getY()) {
|
||||||
minY = p.y;
|
minY = p.getY();
|
||||||
}
|
}
|
||||||
if (maxY < p.y) {
|
if (maxY < p.getY()) {
|
||||||
maxY = p.y;
|
maxY = p.getY();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int centerX = (maxX + minX) / 2;
|
double centerX = (maxX + minX) / 2;
|
||||||
int centerY = (maxY + minY) / 2;
|
double centerY = (maxY + minY) / 2;
|
||||||
|
|
||||||
if (snapToGrid) {
|
if (snapToGrid) {
|
||||||
CalcUtils.roundToGrid(centerX, this.currentProject.getGridSpacing());
|
CalcUtils.roundToGrid(centerX, this.currentProject.getGridSpacing());
|
||||||
CalcUtils.roundToGrid(centerY, this.currentProject.getGridSpacing());
|
CalcUtils.roundToGrid(centerY, this.currentProject.getGridSpacing());
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Point(centerX, centerY);
|
return new Point2D.Double(centerX, centerY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1613,7 +1613,7 @@ public class Presenter implements IPlugInPort {
|
|||||||
test.addStep(DIYTest.DRAG_END, params);
|
test.addStep(DIYTest.DRAG_END, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
Point scaledPoint = scalePoint(point);
|
Point2D scaledPoint = scalePoint(point);
|
||||||
|
|
||||||
if (!dragInProgress && instantiationManager.getComponentSlot() == null) {
|
if (!dragInProgress && instantiationManager.getComponentSlot() == null) {
|
||||||
return;
|
return;
|
||||||
@@ -1623,7 +1623,8 @@ public class Presenter implements IPlugInPort {
|
|||||||
// If there's no selection finalize selectionRect and see which
|
// If there's no selection finalize selectionRect and see which
|
||||||
// components intersect with it.
|
// components intersect with it.
|
||||||
if (scaledPoint != null) {
|
if (scaledPoint != null) {
|
||||||
this.selectionRect = Utils.createRectangle(scaledPoint, previousDragPoint);
|
this.selectionRect = Utils.createRectangle(new Point((int)scaledPoint.getX(), (int)scaledPoint.getY()),
|
||||||
|
new Point((int)previousDragPoint.getX(), (int)previousDragPoint.getY()));;
|
||||||
}
|
}
|
||||||
List<IDIYComponent<?>> newSelection = new ArrayList<IDIYComponent<?>>();
|
List<IDIYComponent<?>> newSelection = new ArrayList<IDIYComponent<?>>();
|
||||||
if (!configManager.readBoolean(HIGHLIGHT_CONTINUITY_AREA, false))
|
if (!configManager.readBoolean(HIGHLIGHT_CONTINUITY_AREA, false))
|
||||||
@@ -1691,8 +1692,8 @@ public class Presenter implements IPlugInPort {
|
|||||||
cloned.setName(instantiationManager.createUniqueName(componentType, currentProject.getComponents()));
|
cloned.setName(instantiationManager.createUniqueName(componentType, currentProject.getComponents()));
|
||||||
newSelection.add(cloned);
|
newSelection.add(cloned);
|
||||||
for (int i = 0; i < component.getControlPointCount(); i++) {
|
for (int i = 0; i < component.getControlPointCount(); i++) {
|
||||||
Point p = component.getControlPoint(i);
|
Point2D p = component.getControlPoint(i);
|
||||||
Point newPoint = new Point(p.x + grid, p.y + grid);
|
Point2D newPoint = new Point2D.Double(p.getX() + grid, p.getY() + grid);
|
||||||
cloned.setControlPoint(newPoint, i);
|
cloned.setControlPoint(newPoint, i);
|
||||||
}
|
}
|
||||||
currentProject.getComponents().add(cloned);
|
currentProject.getComponents().add(cloned);
|
||||||
@@ -2500,16 +2501,17 @@ public class Presenter implements IPlugInPort {
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
List<Point> points = new ArrayList<Point>();
|
List<Point2D> points = new ArrayList<Point2D>();
|
||||||
|
|
||||||
for (int i = 0; i < component.getControlPointCount(); i++) {
|
for (int i = 0; i < component.getControlPointCount(); i++) {
|
||||||
Point p = new Point(component.getControlPoint(i));
|
Point2D oldP = component.getControlPoint(i);
|
||||||
|
Point2D p = new Point2D.Double(oldP.getX(), oldP.getY());
|
||||||
points.add(p);
|
points.add(p);
|
||||||
}
|
}
|
||||||
int x = points.iterator().next().x;
|
double x = points.iterator().next().getX();
|
||||||
int y = points.iterator().next().y;
|
double y = points.iterator().next().getY();
|
||||||
for (Point point : points) {
|
for (Point2D point : points) {
|
||||||
point.translate(-x, -y);
|
point.setLocation(point.getX() + x, point.getY() + y);
|
||||||
}
|
}
|
||||||
|
|
||||||
Template template = new Template(variantName, values, points);
|
Template template = new Template(variantName, values, points);
|
||||||
@@ -2853,14 +2855,14 @@ public class Presenter implements IPlugInPort {
|
|||||||
* @param point
|
* @param point
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private Point scalePoint(Point point) {
|
private Point2D scalePoint(Point2D point) {
|
||||||
Point p =
|
Point2D p =
|
||||||
point == null ? null : new Point((int) (point.x / drawingManager.getZoomLevel()),
|
point == null ? null : new Point2D.Double(point.getX() / drawingManager.getZoomLevel(),
|
||||||
(int) (point.y / drawingManager.getZoomLevel()));
|
point.getY() / drawingManager.getZoomLevel());
|
||||||
|
|
||||||
if (p != null && configManager.readBoolean(EXTRA_SPACE_KEY, true)) {
|
if (p != null && configManager.readBoolean(EXTRA_SPACE_KEY, true)) {
|
||||||
double extraSpace = drawingManager.getExtraSpace(currentProject);
|
double extraSpace = drawingManager.getExtraSpace(currentProject);
|
||||||
p.translate((int) (-extraSpace), (int) (-extraSpace));
|
p.setLocation(p.getX() - extraSpace, p.getY() - extraSpace);
|
||||||
}
|
}
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3166,6 +3166,10 @@
|
|||||||
<releaseDate>2020-09-04 00:00:00.000 CET</releaseDate>
|
<releaseDate>2020-09-04 00:00:00.000 CET</releaseDate>
|
||||||
<name></name>
|
<name></name>
|
||||||
<changes>
|
<changes>
|
||||||
|
<org.diylc.appframework.update.Change>
|
||||||
|
<changeType>IMPROVEMENT</changeType>
|
||||||
|
<description>Improved rendering precision, especially when using metric units</description>
|
||||||
|
</org.diylc.appframework.update.Change>
|
||||||
<org.diylc.appframework.update.Change>
|
<org.diylc.appframework.update.Change>
|
||||||
<changeType>NEW_FEATURE</changeType>
|
<changeType>NEW_FEATURE</changeType>
|
||||||
<description>On MacOS the app registers to open .DIY files</description>
|
<description>On MacOS the app registers to open .DIY files</description>
|
||||||
|
|||||||
@@ -21,7 +21,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.diylc.serialization;
|
package org.diylc.serialization;
|
||||||
|
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Path2D;
|
import java.awt.geom.Path2D;
|
||||||
import java.awt.geom.PathIterator;
|
import java.awt.geom.PathIterator;
|
||||||
@@ -35,7 +34,7 @@ import com.thoughtworks.xstream.io.HierarchicalStreamReader;
|
|||||||
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
|
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Serializes {@link Point} objects by converting coordinates from pixels to inches, thus avoiding
|
* Serializes {@link Area} objects by converting coordinates from pixels to inches, thus avoiding
|
||||||
* the resolution to affect point placement.
|
* the resolution to affect point placement.
|
||||||
*
|
*
|
||||||
* @author Branislav Stojkovic
|
* @author Branislav Stojkovic
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.diylc.serialization;
|
package org.diylc.serialization;
|
||||||
|
|
||||||
import java.awt.Point;
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
import org.diylc.utils.Constants;
|
import org.diylc.utils.Constants;
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ import com.thoughtworks.xstream.io.HierarchicalStreamReader;
|
|||||||
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
|
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Serializes {@link Point} objects by converting coordinates from pixels to inches, thus avoiding
|
* Serializes {@link Point2D} objects by converting coordinates from pixels to inches, thus avoiding
|
||||||
* the resolution to affect point placement.
|
* the resolution to affect point placement.
|
||||||
*
|
*
|
||||||
* @author Branislav Stojkovic
|
* @author Branislav Stojkovic
|
||||||
@@ -41,21 +41,21 @@ public class PointConverter implements Converter {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void marshal(Object object, HierarchicalStreamWriter writer, MarshallingContext context) {
|
public void marshal(Object object, HierarchicalStreamWriter writer, MarshallingContext context) {
|
||||||
Point point = (Point) object;
|
Point2D point = (Point2D) object;
|
||||||
writer.addAttribute("x", Double.toString(1d * point.x / Constants.PIXELS_PER_INCH));
|
writer.addAttribute("x", Double.toString(1d * point.getX() / Constants.PIXELS_PER_INCH));
|
||||||
writer.addAttribute("y", Double.toString(1d * point.y / Constants.PIXELS_PER_INCH));
|
writer.addAttribute("y", Double.toString(1d * point.getY() / Constants.PIXELS_PER_INCH));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
|
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
|
||||||
double x = Double.parseDouble(reader.getAttribute("x"));
|
double x = Double.parseDouble(reader.getAttribute("x"));
|
||||||
double y = Double.parseDouble(reader.getAttribute("y"));
|
double y = Double.parseDouble(reader.getAttribute("y"));
|
||||||
return new Point((int) Math.round(x * Constants.PIXELS_PER_INCH), (int) Math.round(y * Constants.PIXELS_PER_INCH));
|
return new Point2D.Double(x * Constants.PIXELS_PER_INCH, y * Constants.PIXELS_PER_INCH);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("rawtypes")
|
@SuppressWarnings("rawtypes")
|
||||||
@Override
|
@Override
|
||||||
public boolean canConvert(Class clazz) {
|
public boolean canConvert(Class clazz) {
|
||||||
return Point.class.isAssignableFrom(clazz);
|
return Point2D.class.isAssignableFrom(clazz);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ public class ProjectFileManager {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
xStream.autodetectAnnotations(true);
|
xStream.autodetectAnnotations(true);
|
||||||
xStream.alias("point", java.awt.Point.class);
|
xStream.alias("point", java.awt.geom.Point2D.class);
|
||||||
xStream.alias("font", java.awt.Font.class);
|
xStream.alias("font", java.awt.Font.class);
|
||||||
xStream.alias("project", Project.class);
|
xStream.alias("project", Project.class);
|
||||||
xStream.aliasPackage("diylc", "org.diylc.components");
|
xStream.aliasPackage("diylc", "org.diylc.components");
|
||||||
@@ -107,7 +107,7 @@ public class ProjectFileManager {
|
|||||||
xStream.registerConverter(new MeasureConverter());
|
xStream.registerConverter(new MeasureConverter());
|
||||||
xStream.registerConverter(new AreaConverter());
|
xStream.registerConverter(new AreaConverter());
|
||||||
xStream.addImmutableType(Color.class);
|
xStream.addImmutableType(Color.class);
|
||||||
xStream.addImmutableType(java.awt.Point.class);
|
xStream.addImmutableType(java.awt.geom.Point2D.class);
|
||||||
xStream.addImmutableType(org.diylc.core.measures.Voltage.class);
|
xStream.addImmutableType(org.diylc.core.measures.Voltage.class);
|
||||||
xStream.addImmutableType(org.diylc.core.measures.Resistance.class);
|
xStream.addImmutableType(org.diylc.core.measures.Resistance.class);
|
||||||
xStream.addImmutableType(org.diylc.core.measures.Capacitance.class);
|
xStream.addImmutableType(org.diylc.core.measures.Capacitance.class);
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package org.diylc.presenter;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
|
import org.diylc.core.measures.Size;
|
||||||
|
import org.diylc.core.measures.SizeUnit;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class CalcUtilsTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void TestRoundToGrid() {
|
||||||
|
Size spacing = new Size(1d, SizeUnit.mm);
|
||||||
|
int value = 5;
|
||||||
|
double s = spacing.convertToPixels();
|
||||||
|
double targetPrev = (value - 1) * s;
|
||||||
|
double target = value * s;
|
||||||
|
double targetNext = (value + 1) * s;
|
||||||
|
for (int i = -100; i <= 100; i++) {
|
||||||
|
double rounded = CalcUtils.roundToGrid(target + i / 100.0 * s, spacing);
|
||||||
|
double expected = i < -50 ? targetPrev : (i >= 50 ? targetNext : target);
|
||||||
|
assertTrue("Failed at " + i + " rounded = " + rounded + "; expected = " + expected, Math.abs(rounded - expected) < 1e-10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -24,6 +24,7 @@ package org.diylc.testcomponents;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
import java.awt.Point;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
import org.diylc.components.AbstractComponent;
|
import org.diylc.components.AbstractComponent;
|
||||||
import org.diylc.core.ComponentState;
|
import org.diylc.core.ComponentState;
|
||||||
@@ -51,7 +52,7 @@ public class MockDIYComponent extends AbstractComponent<Capacitance> {
|
|||||||
private Resistance r = new Resistance(123d, ResistanceUnit.K);
|
private Resistance r = new Resistance(123d, ResistanceUnit.K);
|
||||||
private Size s = new Size(1d, SizeUnit.cm);
|
private Size s = new Size(1d, SizeUnit.cm);
|
||||||
private Color color = Color.green;
|
private Color color = Color.green;
|
||||||
private Point leftTopCorner = new Point(0, 0);
|
private Point2D leftTopCorner = new Point(0, 0);
|
||||||
private String name = "something";
|
private String name = "something";
|
||||||
|
|
||||||
public MockDIYComponent(String testField, Capacitance c, Resistance r, Size s, Color color, Point leftTopCorner) {
|
public MockDIYComponent(String testField, Capacitance c, Resistance r, Size s, Color color, Point leftTopCorner) {
|
||||||
@@ -98,12 +99,12 @@ public class MockDIYComponent extends AbstractComponent<Capacitance> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return leftTopCorner;
|
return leftTopCorner;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
leftTopCorner.setLocation(point);
|
leftTopCorner.setLocation(point);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -157,7 +158,7 @@ public class MockDIYComponent extends AbstractComponent<Capacitance> {
|
|||||||
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
|
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
|
||||||
IDrawingObserver drawingObserver) {
|
IDrawingObserver drawingObserver) {
|
||||||
g2d.setColor(componentState.equals(ComponentState.SELECTED) ? color : color.darker());
|
g2d.setColor(componentState.equals(ComponentState.SELECTED) ? color : color.darker());
|
||||||
g2d.fillRect(leftTopCorner.x, leftTopCorner.y, 200, 50);
|
g2d.fillRect((int)leftTopCorner.getX(), (int)leftTopCorner.getY(), 200, 50);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Binary file not shown.
@@ -195,7 +195,7 @@ public class StringUtils {
|
|||||||
return strings;
|
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) {
|
VerticalAlignment verticalAlignment) {
|
||||||
String[] parts = text.split("\n");
|
String[] parts = text.split("\n");
|
||||||
if (parts.length > 1) {
|
if (parts.length > 1) {
|
||||||
@@ -214,7 +214,7 @@ public class StringUtils {
|
|||||||
GlyphVector glyphVector = font.createGlyphVector(renderContext, text);
|
GlyphVector glyphVector = font.createGlyphVector(renderContext, text);
|
||||||
Rectangle visualBounds = glyphVector.getVisualBounds().getBounds();
|
Rectangle visualBounds = glyphVector.getVisualBounds().getBounds();
|
||||||
|
|
||||||
int textX = 0;
|
double textX = 0;
|
||||||
switch (horizontalAlignment) {
|
switch (horizontalAlignment) {
|
||||||
case CENTER:
|
case CENTER:
|
||||||
textX = x - stringBounds.width / 2;
|
textX = x - stringBounds.width / 2;
|
||||||
@@ -227,7 +227,7 @@ public class StringUtils {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
int textY = 0;
|
double textY = 0;
|
||||||
switch (verticalAlignment) {
|
switch (verticalAlignment) {
|
||||||
case TOP:
|
case TOP:
|
||||||
textY = y;
|
textY = y;
|
||||||
@@ -240,6 +240,6 @@ public class StringUtils {
|
|||||||
break;
|
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.Color;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Rectangle;
|
import java.awt.Rectangle;
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import org.diylc.appframework.miscutils.ConfigurationManager;
|
import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||||
@@ -57,7 +57,7 @@ public abstract class Abstract3LegSymbol extends AbstractComponent<String> {
|
|||||||
public static Color COLOR = Color.black;
|
public static Color COLOR = Color.black;
|
||||||
|
|
||||||
protected String value = "";
|
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 Color color = COLOR;
|
||||||
protected SymbolFlipping flip = SymbolFlipping.NONE;
|
protected SymbolFlipping flip = SymbolFlipping.NONE;
|
||||||
protected Display display = Display.NAME;
|
protected Display display = Display.NAME;
|
||||||
@@ -71,17 +71,17 @@ public abstract class Abstract3LegSymbol extends AbstractComponent<String> {
|
|||||||
controlPoints[3] = getDefaultLabelPosition(controlPoints);
|
controlPoints[3] = getDefaultLabelPosition(controlPoints);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Point[] getControlPoints() {
|
public Point2D[] getControlPoints() {
|
||||||
if (controlPoints.length == 3) {
|
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;
|
return controlPoints;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Point getDefaultLabelPosition(Point[] oldControlPoints) {
|
protected Point2D getDefaultLabelPosition(Point2D[] oldControlPoints) {
|
||||||
int f = flip == SymbolFlipping.X ? -1 : 1;
|
int f = flip == SymbolFlipping.X ? -1 : 1;
|
||||||
int d = flip == SymbolFlipping.X ? (int) PIN_SPACING.convertToPixels() / 2 : 0;
|
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
|
@Override
|
||||||
@@ -110,16 +110,16 @@ public abstract class Abstract3LegSymbol extends AbstractComponent<String> {
|
|||||||
|
|
||||||
AffineTransform old = g2d.getTransform();
|
AffineTransform old = g2d.getTransform();
|
||||||
|
|
||||||
Point[] controlPoints = getControlPoints();
|
Point2D[] controlPoints = getControlPoints();
|
||||||
|
|
||||||
if (this.flip == SymbolFlipping.Y) {
|
if (this.flip == SymbolFlipping.Y) {
|
||||||
g2d.translate(0, controlPoints[0].y);
|
g2d.translate(0, controlPoints[0].getY());
|
||||||
g2d.scale(1, -1);
|
g2d.scale(1, -1);
|
||||||
g2d.translate(0, -1 * controlPoints[0].y);
|
g2d.translate(0, -1 * controlPoints[0].getY());
|
||||||
} else if (this.flip == SymbolFlipping.X) {
|
} else if (this.flip == SymbolFlipping.X) {
|
||||||
g2d.translate(controlPoints[0].x, 0);
|
g2d.translate(controlPoints[0].getX(), 0);
|
||||||
g2d.scale(-1, 1);
|
g2d.scale(-1, 1);
|
||||||
g2d.translate(-1 * controlPoints[0].x, 0);
|
g2d.translate(-1 * controlPoints[0].getX(), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(2));
|
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());
|
Rectangle shapeRect = body[0].getBounds().union(body[1].getBounds()).union(body[2].getBounds());
|
||||||
|
|
||||||
if (getMoveLabel()) {
|
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);
|
: HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
|
||||||
} else {
|
} else {
|
||||||
StringUtils.drawCenteredText(g2d, label, getLabelX(shapeRect, textRect, fontMetrics, outlineMode),
|
StringUtils.drawCenteredText(g2d, label, getLabelX(shapeRect, textRect, fontMetrics, outlineMode),
|
||||||
@@ -170,7 +170,7 @@ public abstract class Abstract3LegSymbol extends AbstractComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return getControlPoints()[index];
|
return getControlPoints()[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -179,39 +179,36 @@ public abstract class Abstract3LegSymbol extends AbstractComponent<String> {
|
|||||||
return getControlPoints().length;
|
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 f = flip == SymbolFlipping.X ? -1 : 1;
|
||||||
int d = flip == SymbolFlipping.X ? (int) PIN_SPACING.convertToPixels() / 2 : 0;
|
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) {
|
protected double getLabelY(Rectangle2D shapeRect, Rectangle2D textRect, FontMetrics fontMetrics, boolean outlineMode) {
|
||||||
return getControlPoints()[0].y;
|
return getControlPoints()[0].getY();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void updateControlPoints() {
|
protected void updateControlPoints() {
|
||||||
int pinSpacing = (int) PIN_SPACING.convertToPixels();
|
int pinSpacing = (int) PIN_SPACING.convertToPixels();
|
||||||
Point[] controlPoints = getControlPoints();
|
Point2D[] controlPoints = getControlPoints();
|
||||||
|
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
|
|
||||||
// set default point positions
|
// set default point positions
|
||||||
controlPoints[1].x = x + pinSpacing * 2;
|
controlPoints[1].setLocation(x + pinSpacing * 2, y - pinSpacing * 2);
|
||||||
controlPoints[1].y = y - pinSpacing * 2;
|
|
||||||
|
|
||||||
controlPoints[2].x = x + pinSpacing * 2;
|
controlPoints[2].setLocation(x + pinSpacing * 2, y + pinSpacing * 2);
|
||||||
controlPoints[2].y = y + pinSpacing * 2;
|
|
||||||
|
|
||||||
controlPoints[3].x = x + (int) (PIN_SPACING.convertToPixels() * 2);
|
controlPoints[3].setLocation(x + PIN_SPACING.convertToPixels() * 2, y);
|
||||||
controlPoints[3].y = y;
|
|
||||||
|
|
||||||
// apply rotation if needed
|
// apply rotation if needed
|
||||||
if (getOrientation() != Orientation.DEFAULT)
|
if (getOrientation() != Orientation.DEFAULT)
|
||||||
{
|
{
|
||||||
Point first = controlPoints[0];
|
Point2D first = controlPoints[0];
|
||||||
double angle = Double.parseDouble(getOrientation().name().replace("_", ""));
|
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++) {
|
for (int i = 1; i < controlPoints.length; i++) {
|
||||||
rotate.transform(controlPoints[i], controlPoints[i]);
|
rotate.transform(controlPoints[i], controlPoints[i]);
|
||||||
}
|
}
|
||||||
@@ -219,14 +216,14 @@ public abstract class Abstract3LegSymbol extends AbstractComponent<String> {
|
|||||||
|
|
||||||
// flip at the end
|
// flip at the end
|
||||||
if (flip == SymbolFlipping.X) {
|
if (flip == SymbolFlipping.X) {
|
||||||
controlPoints[1].x = controlPoints[0].x - (controlPoints[1].x - controlPoints[0].x);
|
controlPoints[1].setLocation(controlPoints[0].getX() - (controlPoints[1].getX() - controlPoints[0].getX()), controlPoints[1].getY());
|
||||||
controlPoints[2].x = controlPoints[0].x - (controlPoints[2].x - controlPoints[0].x);
|
controlPoints[2].setLocation(controlPoints[0].getX() - (controlPoints[2].getX() - controlPoints[0].getX()), controlPoints[2].getY());
|
||||||
controlPoints[3].x = controlPoints[0].x - (controlPoints[3].x - controlPoints[0].x);
|
controlPoints[3].setLocation(controlPoints[0].getX() - (controlPoints[3].getX() - controlPoints[0].getX()), controlPoints[3].getY());
|
||||||
}
|
}
|
||||||
if (flip == SymbolFlipping.Y) {
|
if (flip == SymbolFlipping.Y) {
|
||||||
controlPoints[1].y = controlPoints[0].y - (controlPoints[1].y - controlPoints[0].y);
|
controlPoints[1].setLocation(controlPoints[1].getX(), controlPoints[0].getY() - (controlPoints[1].getY() - controlPoints[0].getY()));
|
||||||
controlPoints[2].y = controlPoints[0].y - (controlPoints[2].y - controlPoints[0].y);
|
controlPoints[2].setLocation(controlPoints[2].getX(), controlPoints[0].getY() - (controlPoints[2].getY() - controlPoints[0].getY()));
|
||||||
controlPoints[3].y = controlPoints[0].y - (controlPoints[3].y - controlPoints[0].y);
|
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
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
getControlPoints()[index].setLocation(point);
|
getControlPoints()[index].setLocation(point);
|
||||||
|
|
||||||
// make sure we have a new drawing
|
// make sure we have a new drawing
|
||||||
@@ -329,9 +326,9 @@ public abstract class Abstract3LegSymbol extends AbstractComponent<String> {
|
|||||||
if (getOrientation() == Orientation.DEFAULT)
|
if (getOrientation() == Orientation.DEFAULT)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Point first = getControlPoints()[0];
|
Point2D first = getControlPoints()[0];
|
||||||
double angle = Double.parseDouble(getOrientation().name().replace("_", ""));
|
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) {
|
if (body != null) {
|
||||||
for (int i = 0; i < body.length; i++) {
|
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.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
import java.awt.geom.Line2D;
|
import java.awt.geom.Line2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import org.diylc.appframework.miscutils.ConfigurationManager;
|
import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||||
@@ -73,8 +74,8 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
|
|||||||
|
|
||||||
protected Size length;
|
protected Size length;
|
||||||
protected Size width;
|
protected Size width;
|
||||||
protected Point[] points = new Point[] {new Point((int) (-DEFAULT_SIZE.convertToPixels() / 2), 0),
|
protected Point2D[] points = new Point2D[] {new Point2D.Double(-DEFAULT_SIZE.convertToPixels() / 2, 0),
|
||||||
new Point((int) (DEFAULT_SIZE.convertToPixels() / 2), 0), new Point(0, 0)};
|
new Point2D.Double(DEFAULT_SIZE.convertToPixels() / 2, 0), new Point2D.Double(0, 0)};
|
||||||
protected Color bodyColor = Color.white;
|
protected Color bodyColor = Color.white;
|
||||||
protected Color borderColor = Color.black;
|
protected Color borderColor = Color.black;
|
||||||
protected Color labelColor = LABEL_COLOR;
|
protected Color labelColor = LABEL_COLOR;
|
||||||
@@ -85,8 +86,8 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
|
|||||||
protected boolean moveLabel = false;
|
protected boolean moveLabel = false;
|
||||||
|
|
||||||
// parameters for adjusting the label control point
|
// parameters for adjusting the label control point
|
||||||
protected transient Double gamma = null;
|
protected transient java.lang.Double gamma = null;
|
||||||
protected transient Double r = null;
|
protected transient java.lang.Double r = null;
|
||||||
|
|
||||||
private Boolean hideShortLeads = false;
|
private Boolean hideShortLeads = false;
|
||||||
|
|
||||||
@@ -107,10 +108,10 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Point[] getPoints() {
|
protected Point2D[] getPoints() {
|
||||||
// convert old points to new
|
// convert old points to new
|
||||||
if (points.length == 2) {
|
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
|
// to make standing components backward compatible and not show a label until the user switches the display to something else
|
||||||
if (isStanding())
|
if (isStanding())
|
||||||
display = Display.NONE;
|
display = Display.NONE;
|
||||||
@@ -118,10 +119,10 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
|
|||||||
return points;
|
return points;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Point calculateLabelPosition(Point point1, Point point2) {
|
protected Point2D calculateLabelPosition(Point2D point1, Point2D point2) {
|
||||||
double x = (point1.x + point2.x) / 2.0;
|
double x = (point1.getX() + point2.getX()) / 2.0;
|
||||||
double y = (point1.y + point2.y) / 2.0;
|
double y = (point1.getY() + point2.getY()) / 2.0;
|
||||||
return new Point((int) x, (int) y);
|
return new Point2D.Double(x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -129,9 +130,9 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
|
|||||||
IDrawingObserver drawingObserver) {
|
IDrawingObserver drawingObserver) {
|
||||||
if (gamma != null) {
|
if (gamma != null) {
|
||||||
// recalculate center position and theta, then adjust label point accordingly, while preserving alpha and p
|
// 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 x = (getPoints()[1].getX() + getPoints()[0].getX()) / 2.0;
|
||||||
double y = (getPoints()[1].y + getPoints()[0].y) / 2.0;
|
double y = (getPoints()[1].getY() + getPoints()[0].getY()) / 2.0;
|
||||||
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());
|
||||||
double beta = gamma - (Math.PI / 2 - theta);
|
double beta = gamma - (Math.PI / 2 - theta);
|
||||||
getPoints()[2].setLocation(x + Math.cos(beta) * r, y + Math.sin(beta) * r);
|
getPoints()[2].setLocation(x + Math.cos(beta) * r, y + Math.sin(beta) * r);
|
||||||
gamma = null;
|
gamma = null;
|
||||||
@@ -150,15 +151,15 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
|
|||||||
double width;
|
double width;
|
||||||
double length;
|
double length;
|
||||||
Rectangle shapeRect;
|
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()) {
|
if (isStanding()) {
|
||||||
// When ending points are too close draw the component in standing
|
// When ending points are too close draw the component in standing
|
||||||
// mode.
|
// mode.
|
||||||
width = length = getClosestOdd(this.width.convertToPixels());
|
width = length = getClosestOdd(this.width.convertToPixels());
|
||||||
Shape body =
|
Shape body =
|
||||||
new Ellipse2D.Double((getFlipStanding() ? getPoints()[1] : getPoints()[0]).x - width / 2,
|
new Ellipse2D.Double((getFlipStanding() ? getPoints()[1] : getPoints()[0]).getX() - width / 2,
|
||||||
(getFlipStanding() ? getPoints()[1] : getPoints()[0]).y - width / 2, width, width);
|
(getFlipStanding() ? getPoints()[1] : getPoints()[0]).getY() - width / 2, width, width);
|
||||||
shapeRect = body.getBounds();
|
shapeRect = body.getBounds();
|
||||||
Composite oldComposite = g2d.getComposite();
|
Composite oldComposite = g2d.getComposite();
|
||||||
if (alpha < MAX_ALPHA) {
|
if (alpha < MAX_ALPHA) {
|
||||||
@@ -214,14 +215,14 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
|
|||||||
|
|
||||||
Area leadArea = new Area();
|
Area leadArea = new Area();
|
||||||
|
|
||||||
int endX = (int) (getPoints()[0].x + Math.cos(theta) * leadLength);
|
int endX = (int) (getPoints()[0].getX() + Math.cos(theta) * leadLength);
|
||||||
int endY = (int) (getPoints()[0].y + Math.sin(theta) * leadLength);
|
int endY = (int) (getPoints()[0].getY() + Math.sin(theta) * leadLength);
|
||||||
Line2D line = new Line2D.Double(getPoints()[0].x, getPoints()[0].y, endX, endY);
|
Line2D line = new Line2D.Double(getPoints()[0].getX(), getPoints()[0].getY(), endX, endY);
|
||||||
leadArea.add(new Area(leadStroke.createStrokedShape(line)));
|
leadArea.add(new Area(leadStroke.createStrokedShape(line)));
|
||||||
|
|
||||||
endX = (int) (getPoints()[1].x + Math.cos(theta - Math.PI) * leadLength);
|
endX = (int) (getPoints()[1].getX() + Math.cos(theta - Math.PI) * leadLength);
|
||||||
endY = (int) (getPoints()[1].y + Math.sin(theta - Math.PI) * leadLength);
|
endY = (int) (getPoints()[1].getY() + Math.sin(theta - Math.PI) * leadLength);
|
||||||
line = new Line2D.Double(getPoints()[1].x, getPoints()[1].y, endX, endY);
|
line = new Line2D.Double(getPoints()[1].getX(), getPoints()[1].getY(), endX, endY);
|
||||||
leadArea.add(new Area(leadStroke.createStrokedShape(line)));
|
leadArea.add(new Area(leadStroke.createStrokedShape(line)));
|
||||||
|
|
||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1f));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1f));
|
||||||
@@ -247,7 +248,7 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
|
|||||||
width = getWidth().convertToPixels();
|
width = getWidth().convertToPixels();
|
||||||
length = getLength().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);
|
g2d.rotate(theta, length / 2, width / 2);
|
||||||
// Draw body.
|
// Draw body.
|
||||||
Composite oldComposite = g2d.getComposite();
|
Composite oldComposite = g2d.getComposite();
|
||||||
@@ -317,7 +318,7 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
|
|||||||
// Draw label.
|
// Draw label.
|
||||||
g2d.setFont(project.getFont());
|
g2d.setFont(project.getFont());
|
||||||
if (useShapeRectAsPosition()) {
|
if (useShapeRectAsPosition()) {
|
||||||
g2d.translate(shapeRect.x, shapeRect.y);
|
g2d.translate(shapeRect.getX(), shapeRect.getY());
|
||||||
}
|
}
|
||||||
Color finalLabelColor;
|
Color finalLabelColor;
|
||||||
if (outlineMode) {
|
if (outlineMode) {
|
||||||
@@ -356,7 +357,7 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
|
|||||||
|
|
||||||
if (getMoveLabel()) {
|
if (getMoveLabel()) {
|
||||||
g2d.setTransform(oldTransform);
|
g2d.setTransform(oldTransform);
|
||||||
g2d.translate(getPoints()[2].x, getPoints()[2].y);
|
g2d.translate(getPoints()[2].getX(), getPoints()[2].getY());
|
||||||
if (getLabelOriantation() != LabelOriantation.Horizontal) {
|
if (getLabelOriantation() != LabelOriantation.Horizontal) {
|
||||||
g2d.rotate(theta);
|
g2d.rotate(theta);
|
||||||
}
|
}
|
||||||
@@ -365,8 +366,8 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
|
|||||||
} else {
|
} else {
|
||||||
if (isStanding() || getLabelOriantation() == LabelOriantation.Horizontal) {
|
if (isStanding() || getLabelOriantation() == LabelOriantation.Horizontal) {
|
||||||
g2d.setTransform(oldTransform);
|
g2d.setTransform(oldTransform);
|
||||||
double x = (getPoints()[0].x + getPoints()[1].x - length) / 2.0;
|
double x = (getPoints()[0].getX() + getPoints()[1].getX() - length) / 2.0;
|
||||||
double y = (getPoints()[0].y + getPoints()[1].y - width) / 2.0;
|
double y = (getPoints()[0].getY() + getPoints()[1].getY() - width) / 2.0;
|
||||||
g2d.drawString(label, (int) (x + (length - textRect.getWidth()) / 2 + offset),
|
g2d.drawString(label, (int) (x + (length - textRect.getWidth()) / 2 + offset),
|
||||||
(int)(y + calculateLabelYOffset(shapeRect, textRect, fontMetrics)));
|
(int)(y + calculateLabelYOffset(shapeRect, textRect, fontMetrics)));
|
||||||
} else {
|
} else {
|
||||||
@@ -377,7 +378,7 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
|
|||||||
}
|
}
|
||||||
// if (getLabelOriantation() == LabelOriantation.Horizontal) {
|
// 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),
|
// g2d.drawString(label, (int) (x + (length - textRect.getWidth()) / 2 + offset),
|
||||||
// (int)(y + calculateLabelYCoordinate(shapeRect, textRect, fontMetrics)));
|
// (int)(y + calculateLabelYCoordinate(shapeRect, textRect, fontMetrics)));
|
||||||
// } else {
|
// } else {
|
||||||
@@ -392,13 +393,13 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void drawLeads(Graphics2D g2d, double theta, double leadLength) {
|
private void drawLeads(Graphics2D g2d, double theta, double leadLength) {
|
||||||
double endX = getPoints()[0].x + Math.cos(theta) * leadLength;
|
double endX = getPoints()[0].getX() + Math.cos(theta) * leadLength;
|
||||||
double endY = getPoints()[0].y + Math.sin(theta) * leadLength;
|
double endY = getPoints()[0].getY() + Math.sin(theta) * leadLength;
|
||||||
g2d.draw(new Line2D.Double(getPoints()[0].x, getPoints()[0].y, endX, endY));
|
g2d.draw(new Line2D.Double(getPoints()[0].getX(), getPoints()[0].getY(), endX, endY));
|
||||||
|
|
||||||
endX = getPoints()[1].x + Math.cos(theta - Math.PI) * leadLength;
|
endX = getPoints()[1].getX() + Math.cos(theta - Math.PI) * leadLength;
|
||||||
endY = getPoints()[1].y + Math.sin(theta - Math.PI) * leadLength;
|
endY = getPoints()[1].getY() + Math.sin(theta - Math.PI) * leadLength;
|
||||||
g2d.draw(new Line2D.Double(getPoints()[1].x, getPoints()[1].y, endX, endY));
|
g2d.draw(new Line2D.Double(getPoints()[1].getX(), getPoints()[1].getY(), endX, endY));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void drawLead(Graphics2D g2d, ComponentState componentState, IDrawingObserver observer, boolean isCopperArea) {
|
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();
|
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()) {
|
if (shouldShadeLeads()) {
|
||||||
// for some reason the stroked line gets approx 1px thicker when converted to shape
|
// 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
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return (Point) getPoints()[index];
|
return (Point2D) getPoints()[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -568,14 +569,14 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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
|
// 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 (index < 2) {
|
||||||
if (gamma == null) {
|
if (gamma == null) {
|
||||||
double x = (getPoints()[1].x + getPoints()[0].x) / 2.0;
|
double x = (getPoints()[1].getX() + getPoints()[0].getX()) / 2.0;
|
||||||
double y = (getPoints()[1].y + getPoints()[0].y) / 2.0;
|
double y = (getPoints()[1].getY() + getPoints()[0].getY()) / 2.0;
|
||||||
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());
|
||||||
double beta = Math.atan2(getPoints()[2].y - y, getPoints()[2].x - x);
|
double beta = Math.atan2(getPoints()[2].getY() - y, getPoints()[2].getX() - x);
|
||||||
gamma = beta + (Math.PI / 2 - theta);
|
gamma = beta + (Math.PI / 2 - theta);
|
||||||
r = getPoints()[2].distance(x, y);
|
r = getPoints()[2].distance(x, y);
|
||||||
}
|
}
|
||||||
@@ -699,21 +700,21 @@ public abstract class AbstractLeadedComponent<T> extends AbstractTransparentComp
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Rectangle2D getCachingBounds() {
|
public Rectangle2D getCachingBounds() {
|
||||||
int minX = Integer.MAX_VALUE;
|
double minX = Integer.MAX_VALUE;
|
||||||
int maxX = Integer.MIN_VALUE;
|
double maxX = Integer.MIN_VALUE;
|
||||||
int minY = Integer.MAX_VALUE;
|
double minY = Integer.MAX_VALUE;
|
||||||
int maxY = Integer.MIN_VALUE;
|
double maxY = Integer.MIN_VALUE;
|
||||||
int margin = (int) Math.max(Math.max(getWidth().convertToPixels(), getLength().convertToPixels()), getLeadThickness());
|
double margin = (int) Math.max(Math.max(getWidth().convertToPixels(), getLength().convertToPixels()), getLeadThickness());
|
||||||
for (int i = 0; i < getControlPointCount(); i++) {
|
for (int i = 0; i < getControlPointCount(); i++) {
|
||||||
Point p = getControlPoint(i);
|
Point2D p = getControlPoint(i);
|
||||||
if (p.x < minX)
|
if (p.getX() < minX)
|
||||||
minX = p.x;
|
minX = p.getX();
|
||||||
if (p.x > maxX)
|
if (p.getX() > maxX)
|
||||||
maxX = p.x;
|
maxX = p.getX();
|
||||||
if (p.y < minY)
|
if (p.getY() < minY)
|
||||||
minY = p.y;
|
minY = p.getY();
|
||||||
if (p.y > maxY)
|
if (p.getY() > maxY)
|
||||||
maxY = p.y;
|
maxY = p.getY();
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Rectangle2D.Double(minX - margin, minY - margin, maxX - minX + 2 * margin, maxY - minY + 2 * margin);
|
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.Color;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Point;
|
import java.awt.Point;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import org.diylc.common.LabelPosition;
|
import org.diylc.common.LabelPosition;
|
||||||
@@ -72,10 +73,10 @@ public abstract class AbstractSchematicLeadedSymbol<T> extends AbstractLeadedCom
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Point calculateLabelPosition(Point point1, Point point2) {
|
protected Point2D calculateLabelPosition(Point2D point1, Point2D point2) {
|
||||||
double x = (point1.x + point2.x) / 2.0;
|
double x = (point1.getX() + point2.getX()) / 2.0;
|
||||||
double y = (point1.y + point2.y) / 2.0;
|
double y = (point1.getY() + point2.getY()) / 2.0;
|
||||||
double theta = Math.atan2(point2.y - point1.y, point2.x - point2.x) - Math.PI / 2;
|
double theta = Math.atan2(point2.getY() - point1.getY(), point2.getX() - point2.getX()) - Math.PI / 2;
|
||||||
double r = width.convertToPixels() / 2 + LABEL_FONT.getSize() / 2;
|
double r = width.convertToPixels() / 2 + LABEL_FONT.getSize() / 2;
|
||||||
return new Point((int) (x + Math.cos(theta) * r), (int) (y + Math.sin(theta) * r));
|
return new Point((int) (x + Math.cos(theta) * r), (int) (y + Math.sin(theta) * r));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,31 +21,31 @@
|
|||||||
*/
|
*/
|
||||||
package org.diylc.components;
|
package org.diylc.components;
|
||||||
|
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.geom.Path2D;
|
import java.awt.geom.Path2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
public class RoundedPolygon extends Path2D.Double {
|
public class RoundedPolygon extends Path2D.Double {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
public RoundedPolygon(Point[] points, double[] radiuses) {
|
public RoundedPolygon(Point2D[] points, double[] radiuses) {
|
||||||
super();
|
super();
|
||||||
moveTo(points[0].x, points[0].y);
|
moveTo(points[0].getX(), points[0].getY());
|
||||||
for (int i = 0; i < points.length - 1; i++) {
|
for (int i = 0; i < points.length - 1; i++) {
|
||||||
Point first = points[i];
|
Point2D first = points[i];
|
||||||
Point second = points[i + 1 >= points.length ? i + 1 - points.length : i + 1];
|
Point2D 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 third = points[i + 2 >= points.length ? i + 2 - points.length : i + 2];
|
||||||
|
|
||||||
Point p1 = new Point(0, 0);
|
Point2D p1 = new Point2D.Double(0, 0);
|
||||||
Point p2 = new Point(0, 0);
|
Point2D p2 = new Point2D.Double(0, 0);
|
||||||
locateTwoPoints(first, second, third, radiuses.length <= i ? radiuses[radiuses.length - 1] : radiuses[i], p1, p2);
|
locateTwoPoints(first, second, third, radiuses.length <= i ? radiuses[radiuses.length - 1] : radiuses[i], p1, p2);
|
||||||
lineTo(p1.x, p1.y);
|
lineTo(p1.getX(), p1.getY());
|
||||||
quadTo(second.x, second.y, p2.x, p2.y);
|
quadTo(second.getX(), second.getY(), p2.getX(), p2.getY());
|
||||||
}
|
}
|
||||||
closePath();
|
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 d1 = distance(first, second);
|
||||||
double d2 = distance(second, third);
|
double d2 = distance(second, third);
|
||||||
double t1 = 1 - radius / d1;
|
double t1 = 1 - radius / d1;
|
||||||
@@ -54,11 +54,11 @@ public class RoundedPolygon extends Path2D.Double {
|
|||||||
interpolate(second, third, t2, p2);
|
interpolate(second, third, t2, p2);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void interpolate(Point p1, Point p2, double t, Point p) {
|
private void interpolate(Point2D p1, Point2D p2, double t, Point2D p) {
|
||||||
p.setLocation((int)Math.round(p1.x * (1-t) + p2.x * t), (int)Math.round(p1.y * (1-t) + p2.y * t));
|
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) {
|
private double distance(Point2D p1, Point2D p2) {
|
||||||
return Math.sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y));
|
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.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
import java.awt.Point;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import org.diylc.awt.StringUtils;
|
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);
|
public static Size DEFAULT_HEIGHT = new Size(1.2d, SizeUnit.in);
|
||||||
|
|
||||||
protected String value = "";
|
protected String value = "";
|
||||||
protected Point[] controlPoints = new Point[] {new Point(0, 0),
|
protected Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0),
|
||||||
new Point((int) DEFAULT_WIDTH.convertToPixels(), (int) DEFAULT_HEIGHT.convertToPixels())};
|
new Point2D.Double(DEFAULT_WIDTH.convertToPixels(), DEFAULT_HEIGHT.convertToPixels())};
|
||||||
protected Point firstPoint = new Point();
|
protected Point2D firstPoint = new Point2D.Double();
|
||||||
protected Point secondPoint = new Point();
|
protected Point2D secondPoint = new Point.Double();
|
||||||
|
|
||||||
protected Color boardColor = BOARD_COLOR;
|
protected Color boardColor = BOARD_COLOR;
|
||||||
protected Color borderColor = BORDER_COLOR;
|
protected Color borderColor = BORDER_COLOR;
|
||||||
@@ -76,7 +77,7 @@ public abstract class AbstractBoard extends AbstractTransparentComponent<String>
|
|||||||
IDrawingObserver drawingObserver) {
|
IDrawingObserver drawingObserver) {
|
||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
|
||||||
|
|
||||||
Point finalSecondPoint = getFinalSecondPoint();
|
Point2D finalSecondPoint = getFinalSecondPoint();
|
||||||
|
|
||||||
Composite oldComposite = g2d.getComposite();
|
Composite oldComposite = g2d.getComposite();
|
||||||
// render as transparent when dragging
|
// 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.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
|
||||||
}
|
}
|
||||||
g2d.setColor(boardColor);
|
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);
|
g2d.setComposite(oldComposite);
|
||||||
|
|
||||||
// Do not track any changes that follow because the whole board has been
|
// 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();
|
drawingObserver.stopTracking();
|
||||||
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
|
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
|
||||||
: borderColor);
|
: 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() {
|
protected Point2D getFinalSecondPoint() {
|
||||||
Point finalSecondPoint;
|
Point2D finalSecondPoint;
|
||||||
if (getMode() == BoardSizingMode.TwoPoints)
|
if (getMode() == BoardSizingMode.TwoPoints)
|
||||||
finalSecondPoint = secondPoint;
|
finalSecondPoint = secondPoint;
|
||||||
else
|
else
|
||||||
finalSecondPoint = new Point((int)(firstPoint.x + getLength().convertToPixels()),
|
finalSecondPoint = new Point2D.Double(firstPoint.getX() + getLength().convertToPixels(),
|
||||||
(int)(firstPoint.y + getWidth().convertToPixels()));
|
firstPoint.getY() + getWidth().convertToPixels());
|
||||||
return finalSecondPoint;
|
return finalSecondPoint;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void drawCoordinates(Graphics2D g2d, int spacing, Project project) {
|
protected void drawCoordinates(Graphics2D g2d, double spacing, Project project) {
|
||||||
g2d.setColor(coordinateColor);
|
g2d.setColor(coordinateColor);
|
||||||
g2d.setFont(project.getFont().deriveFont(COORDINATE_FONT_SIZE));
|
g2d.setFont(project.getFont().deriveFont(COORDINATE_FONT_SIZE));
|
||||||
|
|
||||||
// The half space is used to do rounding when calculating the range.
|
// The half space is used to do rounding when calculating the range.
|
||||||
int halfSpace = spacing / 2;
|
double halfSpace = spacing / 2;
|
||||||
CoordinateOrigin origin = getCoordinateOrigin();
|
CoordinateOrigin origin = getCoordinateOrigin();
|
||||||
|
|
||||||
Point finalSecondPoint = getFinalSecondPoint();
|
Point2D finalSecondPoint = getFinalSecondPoint();
|
||||||
|
|
||||||
if (getCoordinateDisplay() != CoordinateDisplay.None) {
|
if (getCoordinateDisplay() != CoordinateDisplay.None) {
|
||||||
int range;
|
int range;
|
||||||
int yOffset;
|
double yOffset;
|
||||||
CoordinateType yType = getyType();
|
CoordinateType yType = getyType();
|
||||||
Point drawPoint = new Point(firstPoint);
|
double y = firstPoint.getY();
|
||||||
|
|
||||||
if (origin == CoordinateOrigin.Top_Left || origin == CoordinateOrigin.Top_Right) {
|
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;
|
yOffset = spacing;
|
||||||
} else {
|
} else {
|
||||||
range = (int) ((finalSecondPoint.y - firstPoint.y + halfSpace) / spacing);
|
range = (int) ((finalSecondPoint.getY() - firstPoint.getY() + halfSpace) / spacing);
|
||||||
yOffset = -spacing;
|
yOffset = -spacing;
|
||||||
drawPoint.y = finalSecondPoint.y;
|
y = finalSecondPoint.getY();
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int c = 1; c < range; c++) {
|
for (int c = 1; c < range; c++) {
|
||||||
int xOffset = (yType == CoordinateType.Numbers && c >= 10) || (yType == CoordinateType.Letters && c >= 27) ? 0 : 2;
|
int xOffset = (yType == CoordinateType.Numbers && c >= 10) || (yType == CoordinateType.Letters && c >= 27) ? 0 : 2;
|
||||||
String label = yType == CoordinateType.Letters ? getCoordinateLabel(c) : Integer.toString(c);
|
String label = yType == CoordinateType.Letters ? getCoordinateLabel(c) : Integer.toString(c);
|
||||||
|
|
||||||
drawPoint.y += yOffset;
|
y += yOffset;
|
||||||
|
|
||||||
StringUtils.drawCenteredText(g2d, label,
|
StringUtils.drawCenteredText(g2d, label,
|
||||||
firstPoint.x + xOffset, drawPoint.y,
|
firstPoint.getX() + xOffset, y,
|
||||||
HorizontalAlignment.LEFT, VerticalAlignment.CENTER);
|
HorizontalAlignment.LEFT, VerticalAlignment.CENTER);
|
||||||
if (getCoordinateDisplay() == CoordinateDisplay.Both_Sides) {
|
if (getCoordinateDisplay() == CoordinateDisplay.Both_Sides) {
|
||||||
StringUtils.drawCenteredText(g2d, label,
|
StringUtils.drawCenteredText(g2d, label,
|
||||||
finalSecondPoint.x - xOffset, drawPoint.y,
|
finalSecondPoint.getX() - xOffset, y,
|
||||||
HorizontalAlignment.RIGHT, VerticalAlignment.CENTER);
|
HorizontalAlignment.RIGHT, VerticalAlignment.CENTER);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -149,29 +151,30 @@ public abstract class AbstractBoard extends AbstractTransparentComponent<String>
|
|||||||
|
|
||||||
if (getCoordinateDisplay() != CoordinateDisplay.None) {
|
if (getCoordinateDisplay() != CoordinateDisplay.None) {
|
||||||
int range;
|
int range;
|
||||||
int xOffset;
|
double xOffset;
|
||||||
CoordinateType xType = getxType();
|
CoordinateType xType = getxType();
|
||||||
Point drawPoint = new Point(firstPoint);
|
double x = firstPoint.getX();
|
||||||
|
|
||||||
if (origin == CoordinateOrigin.Top_Left || origin == CoordinateOrigin.Bottom_Left) {
|
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;
|
xOffset = spacing;
|
||||||
} else {
|
} else {
|
||||||
range = (int) ((finalSecondPoint.x - firstPoint.x + halfSpace) / spacing);
|
range = (int) ((finalSecondPoint.getX() - firstPoint.getX() + halfSpace) / spacing);
|
||||||
xOffset = -spacing;
|
xOffset = -spacing;
|
||||||
drawPoint.x = finalSecondPoint.x;
|
x = finalSecondPoint.getX();
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int c = 1; c < range; c++) {
|
for (int c = 1; c < range; c++) {
|
||||||
String label = xType == CoordinateType.Letters ? getCoordinateLabel(c) : Integer.toString(c);
|
String label = xType == CoordinateType.Letters ? getCoordinateLabel(c) : Integer.toString(c);
|
||||||
|
|
||||||
drawPoint.x += xOffset;
|
x += xOffset;
|
||||||
|
|
||||||
StringUtils.drawCenteredText(g2d, label,
|
StringUtils.drawCenteredText(g2d, label,
|
||||||
drawPoint.x, firstPoint.y + 2,
|
x, firstPoint.getY() + 2,
|
||||||
HorizontalAlignment.CENTER, VerticalAlignment.BOTTOM);
|
HorizontalAlignment.CENTER, VerticalAlignment.BOTTOM);
|
||||||
if (getCoordinateDisplay() == CoordinateDisplay.Both_Sides) {
|
if (getCoordinateDisplay() == CoordinateDisplay.Both_Sides) {
|
||||||
StringUtils.drawCenteredText(g2d, label,
|
StringUtils.drawCenteredText(g2d, label,
|
||||||
drawPoint.x, (int) (finalSecondPoint.y - COORDINATE_FONT_SIZE),
|
x, (int) (finalSecondPoint.getY() - COORDINATE_FONT_SIZE),
|
||||||
HorizontalAlignment.CENTER, VerticalAlignment.BOTTOM);
|
HorizontalAlignment.CENTER, VerticalAlignment.BOTTOM);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -271,7 +274,7 @@ public abstract class AbstractBoard extends AbstractTransparentComponent<String>
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -286,12 +289,12 @@ public abstract class AbstractBoard extends AbstractTransparentComponent<String>
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
controlPoints[index].setLocation(point);
|
controlPoints[index].setLocation(point);
|
||||||
firstPoint.setLocation(Math.min(controlPoints[0].x, controlPoints[1].x),
|
firstPoint.setLocation(Math.min(controlPoints[0].getX(), controlPoints[1].getX()),
|
||||||
Math.min(controlPoints[0].y, controlPoints[1].y));
|
Math.min(controlPoints[0].getY(), controlPoints[1].getY()));
|
||||||
secondPoint.setLocation(Math.max(controlPoints[0].x, controlPoints[1].x),
|
secondPoint.setLocation(Math.max(controlPoints[0].getX(), controlPoints[1].getX()),
|
||||||
Math.max(controlPoints[0].y, controlPoints[1].y));
|
Math.max(controlPoints[0].getY(), controlPoints[1].getY()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@EditableProperty
|
@EditableProperty
|
||||||
@@ -336,9 +339,9 @@ public abstract class AbstractBoard extends AbstractTransparentComponent<String>
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Rectangle2D getCachingBounds() {
|
public Rectangle2D getCachingBounds() {
|
||||||
Point finalSecondPoint = getFinalSecondPoint();
|
Point2D finalSecondPoint = getFinalSecondPoint();
|
||||||
return new Rectangle2D.Double(Math.min(firstPoint.x, finalSecondPoint.x), Math.min(firstPoint.y, finalSecondPoint.y),
|
return new Rectangle2D.Double(Math.min(firstPoint.getX(), finalSecondPoint.getX()), Math.min(firstPoint.getY(), finalSecondPoint.getY()),
|
||||||
Math.abs(finalSecondPoint.x - firstPoint.x) + 2, Math.abs(finalSecondPoint.y - firstPoint.y) + 2);
|
Math.abs(finalSecondPoint.getX() - firstPoint.getX()) + 2, Math.abs(finalSecondPoint.getY() - firstPoint.getY()) + 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static enum CoordinateType {
|
public static enum CoordinateType {
|
||||||
|
|||||||
@@ -25,8 +25,8 @@ import java.awt.AlphaComposite;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
import org.diylc.common.ObjectCache;
|
import org.diylc.common.ObjectCache;
|
||||||
import org.diylc.common.SimpleComponentTransformer;
|
import org.diylc.common.SimpleComponentTransformer;
|
||||||
@@ -59,11 +59,11 @@ public class BlankBoard extends AbstractBoard {
|
|||||||
@Override
|
@Override
|
||||||
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
|
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
|
||||||
IDrawingObserver drawingObserver) {
|
IDrawingObserver drawingObserver) {
|
||||||
Point finalSecondPoint = getFinalSecondPoint();
|
Point2D finalSecondPoint = getFinalSecondPoint();
|
||||||
|
|
||||||
Shape clip = g2d.getClip();
|
Shape clip = g2d.getClip();
|
||||||
if (checkPointsClipped(clip) && !clip.contains(firstPoint.x, finalSecondPoint.y)
|
if (checkPointsClipped(clip) && !clip.contains(firstPoint.getX(), finalSecondPoint.getY())
|
||||||
&& !clip.contains(finalSecondPoint.x, firstPoint.y)) {
|
&& !clip.contains(finalSecondPoint.getX(), firstPoint.getY())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -75,9 +75,9 @@ public class BlankBoard extends AbstractBoard {
|
|||||||
}
|
}
|
||||||
g2d.setColor(boardColor);
|
g2d.setColor(boardColor);
|
||||||
if (getType() == Type.SQUARE)
|
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
|
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);
|
g2d.setComposite(oldComposite);
|
||||||
}
|
}
|
||||||
// Do not track any changes that follow because the whole board has been
|
// 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
|
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
|
||||||
: borderColor);
|
: borderColor);
|
||||||
if (getType() == Type.SQUARE)
|
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
|
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
|
@Override
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import java.awt.Composite;
|
|||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
import java.awt.Point;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import org.diylc.awt.StringUtils;
|
import org.diylc.awt.StringUtils;
|
||||||
@@ -361,7 +362,7 @@ public class Breadboard extends AbstractComponent<Void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
if (index == 0)
|
if (index == 0)
|
||||||
this.point.setLocation(point);
|
this.point.setLocation(point);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,8 +24,8 @@ package org.diylc.components.boards;
|
|||||||
import java.awt.AlphaComposite;
|
import java.awt.AlphaComposite;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
import org.diylc.common.SimpleComponentTransformer;
|
import org.diylc.common.SimpleComponentTransformer;
|
||||||
import org.diylc.core.ComponentState;
|
import org.diylc.core.ComponentState;
|
||||||
@@ -69,11 +69,11 @@ public class EyeletBoard extends AbstractBoard {
|
|||||||
@Override
|
@Override
|
||||||
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
|
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
|
||||||
IDrawingObserver drawingObserver) {
|
IDrawingObserver drawingObserver) {
|
||||||
Point finalSecondPoint = getFinalSecondPoint();
|
Point2D finalSecondPoint = getFinalSecondPoint();
|
||||||
|
|
||||||
Shape clip = g2d.getClip();
|
Shape clip = g2d.getClip();
|
||||||
if (checkPointsClipped(clip) && !clip.contains(firstPoint.x, finalSecondPoint.y)
|
if (checkPointsClipped(clip) && !clip.contains(firstPoint.getX(), finalSecondPoint.getY())
|
||||||
&& !clip.contains(finalSecondPoint.x, firstPoint.y)) {
|
&& !clip.contains(finalSecondPoint.getX(), firstPoint.getY())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
super.draw(g2d, componentState, outlineMode, project, drawingObserver);
|
super.draw(g2d, componentState, outlineMode, project, drawingObserver);
|
||||||
@@ -81,24 +81,25 @@ public class EyeletBoard extends AbstractBoard {
|
|||||||
if (alpha < MAX_ALPHA) {
|
if (alpha < MAX_ALPHA) {
|
||||||
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * 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 diameter = getClosestOdd((int) EYELET_SIZE.convertToPixels());
|
||||||
int holeDiameter = getClosestOdd((int) HOLE_SIZE.convertToPixels());
|
int holeDiameter = getClosestOdd((int) HOLE_SIZE.convertToPixels());
|
||||||
int spacing = (int) this.spacing.convertToPixels();
|
int spacing = (int) this.spacing.convertToPixels();
|
||||||
|
|
||||||
while (p.y < finalSecondPoint.y - spacing) {
|
while (y < finalSecondPoint.getY() - spacing) {
|
||||||
p.x = firstPoint.x;
|
x = firstPoint.getX();
|
||||||
p.y += spacing;
|
y += spacing;
|
||||||
while (p.x < finalSecondPoint.x - spacing - diameter) {
|
while (x < finalSecondPoint.getX() - spacing - diameter) {
|
||||||
p.x += spacing;
|
x += spacing;
|
||||||
g2d.setColor(eyeletColor);
|
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.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.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.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);
|
super.drawCoordinates(g2d, spacing, project);
|
||||||
|
|||||||
@@ -24,8 +24,8 @@ package org.diylc.components.boards;
|
|||||||
import java.awt.AlphaComposite;
|
import java.awt.AlphaComposite;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
import org.diylc.common.SimpleComponentTransformer;
|
import org.diylc.common.SimpleComponentTransformer;
|
||||||
import org.diylc.core.ComponentState;
|
import org.diylc.core.ComponentState;
|
||||||
@@ -67,11 +67,11 @@ public class MarshallPerfBoard extends AbstractBoard {
|
|||||||
@Override
|
@Override
|
||||||
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
|
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
|
||||||
IDrawingObserver drawingObserver) {
|
IDrawingObserver drawingObserver) {
|
||||||
Point finalSecondPoint = getFinalSecondPoint();
|
Point2D finalSecondPoint = getFinalSecondPoint();
|
||||||
|
|
||||||
Shape clip = g2d.getClip();
|
Shape clip = g2d.getClip();
|
||||||
if (checkPointsClipped(clip) && !clip.contains(firstPoint.x, finalSecondPoint.y)
|
if (checkPointsClipped(clip) && !clip.contains(firstPoint.getX(), finalSecondPoint.getY())
|
||||||
&& !clip.contains(finalSecondPoint.x, firstPoint.y)) {
|
&& !clip.contains(finalSecondPoint.getX(), firstPoint.getY())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
super.draw(g2d, componentState, outlineMode, project, drawingObserver);
|
super.draw(g2d, componentState, outlineMode, project, drawingObserver);
|
||||||
@@ -79,19 +79,20 @@ public class MarshallPerfBoard extends AbstractBoard {
|
|||||||
if (alpha < MAX_ALPHA) {
|
if (alpha < MAX_ALPHA) {
|
||||||
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * 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 holeDiameter = getClosestOdd((int) HOLE_SIZE.convertToPixels());
|
||||||
int spacing = (int) this.spacing.convertToPixels();
|
double spacing = this.spacing.convertToPixels();
|
||||||
|
|
||||||
while (p.y < finalSecondPoint.y - spacing) {
|
while (y < finalSecondPoint.getY() - spacing) {
|
||||||
p.x = firstPoint.x;
|
x = firstPoint.getX();
|
||||||
p.y += spacing;
|
y += spacing;
|
||||||
while (p.x < finalSecondPoint.x - spacing - holeDiameter) {
|
while (x < finalSecondPoint.getX() - spacing - holeDiameter) {
|
||||||
p.x += spacing;
|
x += spacing;
|
||||||
g2d.setColor(Constants.CANVAS_COLOR);
|
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.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);
|
super.drawCoordinates(g2d, spacing, project);
|
||||||
|
|||||||
@@ -24,8 +24,8 @@ package org.diylc.components.boards;
|
|||||||
import java.awt.AlphaComposite;
|
import java.awt.AlphaComposite;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
import org.diylc.common.SimpleComponentTransformer;
|
import org.diylc.common.SimpleComponentTransformer;
|
||||||
import org.diylc.core.ComponentState;
|
import org.diylc.core.ComponentState;
|
||||||
@@ -62,11 +62,11 @@ public class PerfBoard extends AbstractBoard {
|
|||||||
@Override
|
@Override
|
||||||
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
|
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
|
||||||
IDrawingObserver drawingObserver) {
|
IDrawingObserver drawingObserver) {
|
||||||
Point finalSecondPoint = getFinalSecondPoint();
|
Point2D finalSecondPoint = getFinalSecondPoint();
|
||||||
|
|
||||||
Shape clip = g2d.getClip();
|
Shape clip = g2d.getClip();
|
||||||
if (checkPointsClipped(clip) && !clip.contains(firstPoint.x, finalSecondPoint.y)
|
if (checkPointsClipped(clip) && !clip.contains(firstPoint.getX(), finalSecondPoint.getY())
|
||||||
&& !clip.contains(finalSecondPoint.x, firstPoint.y)) {
|
&& !clip.contains(finalSecondPoint.getX(), firstPoint.getY())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
super.draw(g2d, componentState, outlineMode, project, drawingObserver);
|
super.draw(g2d, componentState, outlineMode, project, drawingObserver);
|
||||||
@@ -74,24 +74,25 @@ public class PerfBoard extends AbstractBoard {
|
|||||||
if (alpha < MAX_ALPHA) {
|
if (alpha < MAX_ALPHA) {
|
||||||
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * 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 diameter = getClosestOdd((int) PAD_SIZE.convertToPixels());
|
||||||
int holeDiameter = getClosestOdd((int) HOLE_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) {
|
while (y < finalSecondPoint.getY() - spacing) {
|
||||||
p.x = firstPoint.x;
|
x = firstPoint.getX();
|
||||||
p.y += spacing;
|
y += spacing;
|
||||||
while (p.x < finalSecondPoint.x - spacing - diameter) {
|
while (x < finalSecondPoint.getX() - spacing - diameter) {
|
||||||
p.x += spacing;
|
x += spacing;
|
||||||
g2d.setColor(padColor);
|
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.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.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.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);
|
super.drawCoordinates(g2d, spacing, project);
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import java.awt.Color;
|
|||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
import java.awt.Point;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import org.diylc.awt.StringUtils;
|
import org.diylc.awt.StringUtils;
|
||||||
@@ -679,7 +680,7 @@ public class ProtoBoard extends AbstractComponent<Void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
if (index == 0)
|
if (index == 0)
|
||||||
this.point.setLocation(point);
|
this.point.setLocation(point);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import java.awt.Graphics2D;
|
|||||||
import java.awt.Point;
|
import java.awt.Point;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import org.diylc.appframework.miscutils.ConfigurationManager;
|
import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||||
@@ -149,7 +150,7 @@ public class TagStrip extends AbstractTransparentComponent<String> implements IC
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
controlPoints[index].setLocation(point);
|
controlPoints[index].setLocation(point);
|
||||||
body = null;
|
body = null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import java.awt.Graphics2D;
|
|||||||
import java.awt.Point;
|
import java.awt.Point;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.RoundRectangle2D;
|
import java.awt.geom.RoundRectangle2D;
|
||||||
|
|
||||||
import org.diylc.appframework.miscutils.ConfigurationManager;
|
import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||||
@@ -186,7 +187,7 @@ public class TerminalStrip extends AbstractTransparentComponent<String> implemen
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
controlPoints[index].setLocation(point);
|
controlPoints[index].setLocation(point);
|
||||||
body = null;
|
body = null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,8 +25,8 @@ import java.awt.AlphaComposite;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
import org.diylc.common.OrientationHV;
|
import org.diylc.common.OrientationHV;
|
||||||
import org.diylc.common.SimpleComponentTransformer;
|
import org.diylc.common.SimpleComponentTransformer;
|
||||||
@@ -65,11 +65,11 @@ public class TriPadBoard extends AbstractBoard {
|
|||||||
@Override
|
@Override
|
||||||
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
|
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
|
||||||
IDrawingObserver drawingObserver) {
|
IDrawingObserver drawingObserver) {
|
||||||
Point finalSecondPoint = getFinalSecondPoint();
|
Point2D finalSecondPoint = getFinalSecondPoint();
|
||||||
|
|
||||||
Shape clip = g2d.getClip();
|
Shape clip = g2d.getClip();
|
||||||
if (checkPointsClipped(clip) && !clip.contains(firstPoint.x, finalSecondPoint.y)
|
if (checkPointsClipped(clip) && !clip.contains(firstPoint.getX(), finalSecondPoint.getY())
|
||||||
&& !clip.contains(finalSecondPoint.x, firstPoint.y)) {
|
&& !clip.contains(finalSecondPoint.getX(), firstPoint.getY())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
super.draw(g2d, componentState, outlineMode, project, drawingObserver);
|
super.draw(g2d, componentState, outlineMode, project, drawingObserver);
|
||||||
@@ -78,20 +78,21 @@ public class TriPadBoard extends AbstractBoard {
|
|||||||
if (alpha < MAX_ALPHA) {
|
if (alpha < MAX_ALPHA) {
|
||||||
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * 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 stripSize = getClosestOdd((int) STRIP_SIZE.convertToPixels());
|
||||||
int holeSize = getClosestOdd((int) HOLE_SIZE.convertToPixels());
|
int holeSize = getClosestOdd((int) HOLE_SIZE.convertToPixels());
|
||||||
int spacing = (int) this.spacing.convertToPixels();
|
double spacing = this.spacing.convertToPixels();
|
||||||
|
|
||||||
if (orientation == OrientationHV.HORIZONTAL) {
|
if (orientation == OrientationHV.HORIZONTAL) {
|
||||||
while (p.y < finalSecondPoint.y - spacing) {
|
while (y < finalSecondPoint.getY() - spacing) {
|
||||||
p.x = firstPoint.x;
|
x = firstPoint.getX();
|
||||||
p.y += spacing;
|
y += spacing;
|
||||||
|
|
||||||
while (p.x + spacing < finalSecondPoint.x) {
|
while (x + spacing < finalSecondPoint.getX()) {
|
||||||
|
|
||||||
int remainingSpace = finalSecondPoint.x - p.x;
|
double remainingSpace = finalSecondPoint.getX() - x;
|
||||||
int spacesToDraw = stripSpan;
|
double spacesToDraw = stripSpan;
|
||||||
|
|
||||||
if (remainingSpace < (stripSize + (stripSpan * spacing))) {
|
if (remainingSpace < (stripSize + (stripSpan * spacing))) {
|
||||||
spacesToDraw = (remainingSpace - stripSize) / spacing;
|
spacesToDraw = (remainingSpace - stripSize) / spacing;
|
||||||
@@ -99,37 +100,37 @@ public class TriPadBoard extends AbstractBoard {
|
|||||||
|
|
||||||
g2d.setColor(stripColor);
|
g2d.setColor(stripColor);
|
||||||
drawingObserver.startTrackingContinuityArea(true);
|
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);
|
stripSize);
|
||||||
drawingObserver.stopTrackingContinuityArea();
|
drawingObserver.stopTrackingContinuityArea();
|
||||||
g2d.setColor(stripColor.darker());
|
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);
|
stripSize);
|
||||||
|
|
||||||
p.x += spacing * spacesToDraw;
|
x += spacing * spacesToDraw;
|
||||||
}
|
}
|
||||||
|
|
||||||
// draw holes
|
// draw holes
|
||||||
p.x = firstPoint.x;
|
x = firstPoint.getX();
|
||||||
|
|
||||||
while (p.x < finalSecondPoint.x - spacing - holeSize) {
|
while (x < finalSecondPoint.getX() - spacing - holeSize) {
|
||||||
p.x += spacing;
|
x += spacing;
|
||||||
g2d.setColor(Constants.CANVAS_COLOR);
|
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.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 {
|
} else {
|
||||||
while (p.x < finalSecondPoint.x - spacing) {
|
while (x < finalSecondPoint.getX() - spacing) {
|
||||||
p.x += spacing;
|
x += spacing;
|
||||||
p.y = firstPoint.y;
|
y = firstPoint.getY();
|
||||||
|
|
||||||
while (p.y + spacing < finalSecondPoint.y) {
|
while (y + spacing < finalSecondPoint.getY()) {
|
||||||
|
|
||||||
int remainingSpace = finalSecondPoint.y - p.y;
|
double remainingSpace = finalSecondPoint.getY() - y;
|
||||||
int spacesToDraw = stripSpan;
|
double spacesToDraw = stripSpan;
|
||||||
|
|
||||||
if (remainingSpace < (stripSize + (stripSpan * spacing))) {
|
if (remainingSpace < (stripSize + (stripSpan * spacing))) {
|
||||||
spacesToDraw = (remainingSpace - stripSize) / spacing;
|
spacesToDraw = (remainingSpace - stripSize) / spacing;
|
||||||
@@ -137,25 +138,25 @@ public class TriPadBoard extends AbstractBoard {
|
|||||||
|
|
||||||
g2d.setColor(stripColor);
|
g2d.setColor(stripColor);
|
||||||
drawingObserver.startTrackingContinuityArea(true);
|
drawingObserver.startTrackingContinuityArea(true);
|
||||||
g2d.fillRect(p.x - stripSize / 2, p.y + spacing - stripSize / 2, stripSize, spacing * (spacesToDraw - 1)
|
g2d.fillRect((int)(x - stripSize / 2), (int)(y + spacing - stripSize / 2), stripSize, (int)(spacing * (spacesToDraw - 1)
|
||||||
+ stripSize);
|
+ stripSize));
|
||||||
drawingObserver.stopTrackingContinuityArea();
|
drawingObserver.stopTrackingContinuityArea();
|
||||||
g2d.setColor(stripColor.darker());
|
g2d.setColor(stripColor.darker());
|
||||||
g2d.drawRect(p.x - stripSize / 2, p.y + spacing - stripSize / 2, stripSize, spacing * (spacesToDraw - 1)
|
g2d.drawRect((int)(x - stripSize / 2), (int)(y + spacing - stripSize / 2), stripSize, (int)(spacing * (spacesToDraw - 1)
|
||||||
+ stripSize);
|
+ stripSize));
|
||||||
|
|
||||||
p.y += spacing * spacesToDraw;
|
y += spacing * spacesToDraw;
|
||||||
}
|
}
|
||||||
|
|
||||||
// draw holes
|
// draw holes
|
||||||
p.y = firstPoint.y;
|
y = firstPoint.getY();
|
||||||
|
|
||||||
while (p.y < finalSecondPoint.y - spacing - holeSize) {
|
while (y < finalSecondPoint.getY() - spacing - holeSize) {
|
||||||
p.y += spacing;
|
y += spacing;
|
||||||
g2d.setColor(Constants.CANVAS_COLOR);
|
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.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.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
import org.diylc.common.OrientationHV;
|
import org.diylc.common.OrientationHV;
|
||||||
import org.diylc.common.SimpleComponentTransformer;
|
import org.diylc.common.SimpleComponentTransformer;
|
||||||
@@ -65,11 +65,11 @@ public class VeroBoard extends AbstractBoard {
|
|||||||
@Override
|
@Override
|
||||||
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
|
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
|
||||||
IDrawingObserver drawingObserver) {
|
IDrawingObserver drawingObserver) {
|
||||||
Point finalSecondPoint = getFinalSecondPoint();
|
Point2D finalSecondPoint = getFinalSecondPoint();
|
||||||
|
|
||||||
Shape clip = g2d.getClip();
|
Shape clip = g2d.getClip();
|
||||||
if (checkPointsClipped(clip) && !clip.contains(firstPoint.x, finalSecondPoint.y)
|
if (checkPointsClipped(clip) && !clip.contains(firstPoint.getX(), finalSecondPoint.getY())
|
||||||
&& !clip.contains(finalSecondPoint.x, firstPoint.y)) {
|
&& !clip.contains(finalSecondPoint.getX(), firstPoint.getY())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
super.draw(g2d, componentState, outlineMode, project, drawingObserver);
|
super.draw(g2d, componentState, outlineMode, project, drawingObserver);
|
||||||
@@ -78,45 +78,46 @@ public class VeroBoard extends AbstractBoard {
|
|||||||
if (alpha < MAX_ALPHA) {
|
if (alpha < MAX_ALPHA) {
|
||||||
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * 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 stripSize = getClosestOdd((int) STRIP_SIZE.convertToPixels());
|
||||||
int holeSize = getClosestOdd((int) HOLE_SIZE.convertToPixels());
|
int holeSize = getClosestOdd((int) HOLE_SIZE.convertToPixels());
|
||||||
int spacing = (int) this.spacing.convertToPixels();
|
int spacing = (int) this.spacing.convertToPixels();
|
||||||
|
|
||||||
if (orientation == OrientationHV.HORIZONTAL) {
|
if (orientation == OrientationHV.HORIZONTAL) {
|
||||||
while (p.y < finalSecondPoint.y - spacing) {
|
while (y < finalSecondPoint.getY() - spacing) {
|
||||||
p.x = firstPoint.x;
|
x = firstPoint.getX();
|
||||||
p.y += spacing;
|
y += spacing;
|
||||||
g2d.setColor(stripColor);
|
g2d.setColor(stripColor);
|
||||||
drawingObserver.startTrackingContinuityArea(true);
|
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();
|
drawingObserver.stopTrackingContinuityArea();
|
||||||
g2d.setColor(stripColor.darker());
|
g2d.setColor(stripColor.darker());
|
||||||
g2d.drawRect(p.x + spacing / 2, p.y - stripSize / 2, finalSecondPoint.x - spacing - p.x, stripSize);
|
g2d.drawRect((int)(x + spacing / 2), (int)(y - stripSize / 2), (int)(finalSecondPoint.getX() - spacing - x), stripSize);
|
||||||
while (p.x < finalSecondPoint.x - spacing - holeSize) {
|
while (x < finalSecondPoint.getX() - spacing - holeSize) {
|
||||||
p.x += spacing;
|
x += spacing;
|
||||||
g2d.setColor(Constants.CANVAS_COLOR);
|
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.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 {
|
} else {
|
||||||
while (p.x < finalSecondPoint.x - spacing) {
|
while (x < finalSecondPoint.getX() - spacing) {
|
||||||
p.x += spacing;
|
x += spacing;
|
||||||
p.y = firstPoint.y;
|
y = firstPoint.getY();
|
||||||
g2d.setColor(stripColor);
|
g2d.setColor(stripColor);
|
||||||
drawingObserver.startTrackingContinuityArea(true);
|
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();
|
drawingObserver.stopTrackingContinuityArea();
|
||||||
g2d.setColor(stripColor.darker());
|
g2d.setColor(stripColor.darker());
|
||||||
g2d.drawRect(p.x - stripSize / 2, p.y + spacing / 2, stripSize, finalSecondPoint.y - spacing - p.y);
|
g2d.drawRect((int)(x - stripSize / 2), (int)(y + spacing / 2), stripSize, (int)(finalSecondPoint.getY() - spacing - y));
|
||||||
while (p.y < finalSecondPoint.y - spacing - holeSize) {
|
while (y < finalSecondPoint.getY() - spacing - holeSize) {
|
||||||
p.y += spacing;
|
y += spacing;
|
||||||
g2d.setColor(Constants.CANVAS_COLOR);
|
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.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.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
|
||||||
}
|
}
|
||||||
g2d.setColor(color);
|
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);
|
radius);
|
||||||
g2d.setComposite(oldComposite);
|
g2d.setComposite(oldComposite);
|
||||||
}
|
}
|
||||||
@@ -73,7 +73,7 @@ public class ChassisPanel extends AbstractShape {
|
|||||||
drawingObserver.stopTracking();
|
drawingObserver.stopTracking();
|
||||||
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
|
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
|
||||||
: borderColor);
|
: 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);
|
radius);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ public class EllipticalCutout extends AbstractShape {
|
|||||||
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
|
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
|
||||||
}
|
}
|
||||||
g2d.setColor(color);
|
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);
|
g2d.setComposite(oldComposite);
|
||||||
}
|
}
|
||||||
// Do not track any changes that follow because the whole oval has been
|
// Do not track any changes that follow because the whole oval has been
|
||||||
@@ -61,7 +61,7 @@ public class EllipticalCutout extends AbstractShape {
|
|||||||
drawingObserver.stopTracking();
|
drawingObserver.stopTracking();
|
||||||
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
|
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
|
||||||
: borderColor);
|
: 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
|
@Override
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import java.awt.Color;
|
|||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
import java.awt.Point;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
import org.diylc.common.ObjectCache;
|
import org.diylc.common.ObjectCache;
|
||||||
@@ -61,8 +62,8 @@ public class PolygonalCutout extends AbstractShape {
|
|||||||
int[] xPoints = new int[controlPoints.length];
|
int[] xPoints = new int[controlPoints.length];
|
||||||
int[] yPoints = new int[controlPoints.length];
|
int[] yPoints = new int[controlPoints.length];
|
||||||
for (int i = 0; i < controlPoints.length; i++) {
|
for (int i = 0; i < controlPoints.length; i++) {
|
||||||
xPoints[i] = controlPoints[i].x;
|
xPoints[i] = (int)controlPoints[i].getX();
|
||||||
yPoints[i] = controlPoints[i].y;
|
yPoints[i] = (int)controlPoints[i].getY();
|
||||||
}
|
}
|
||||||
|
|
||||||
Composite oldComposite = g2d.getComposite();
|
Composite oldComposite = g2d.getComposite();
|
||||||
@@ -97,8 +98,8 @@ public class PolygonalCutout extends AbstractShape {
|
|||||||
this.controlPoints[newPointCount - 1] = this.controlPoints[oldPointCount - 1];
|
this.controlPoints[newPointCount - 1] = this.controlPoints[oldPointCount - 1];
|
||||||
for (int i = oldPointCount - 1; i < newPointCount - 1; i++) {
|
for (int i = oldPointCount - 1; i < newPointCount - 1; i++) {
|
||||||
this.controlPoints[i] =
|
this.controlPoints[i] =
|
||||||
new Point((this.controlPoints[i - 1].x + this.controlPoints[newPointCount - 1].x) / 2,
|
new Point2D.Double((this.controlPoints[i - 1].getX() + this.controlPoints[newPointCount - 1].getX()) / 2,
|
||||||
(this.controlPoints[i - 1].y + this.controlPoints[newPointCount - 1].y) / 2);
|
(this.controlPoints[i - 1].getY() + this.controlPoints[newPointCount - 1].getY()) / 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.pointCount = pointCount;
|
this.pointCount = pointCount;
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ public class RectangularCutout extends AbstractShape {
|
|||||||
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
|
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
|
||||||
}
|
}
|
||||||
g2d.setColor(color);
|
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);
|
radius);
|
||||||
g2d.setComposite(oldComposite);
|
g2d.setComposite(oldComposite);
|
||||||
}
|
}
|
||||||
@@ -68,7 +68,7 @@ public class RectangularCutout extends AbstractShape {
|
|||||||
drawingObserver.stopTracking();
|
drawingObserver.stopTracking();
|
||||||
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
|
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
|
||||||
: borderColor);
|
: 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);
|
radius);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import java.awt.AlphaComposite;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
import org.diylc.common.ObjectCache;
|
import org.diylc.common.ObjectCache;
|
||||||
import org.diylc.common.OrientationHV;
|
import org.diylc.common.OrientationHV;
|
||||||
@@ -52,7 +52,7 @@ public class CutLine extends AbstractTransparentComponent<Void> {
|
|||||||
private Size width = WIDTH;
|
private Size width = WIDTH;
|
||||||
private Size length = LENGTH;
|
private Size length = LENGTH;
|
||||||
private Color color = COLOR;
|
private Color color = COLOR;
|
||||||
private Point point = new Point(0, 0);
|
private Point2D point = new Point2D.Double(0, 0);
|
||||||
private OrientationHV orientation = OrientationHV.VERTICAL;
|
private OrientationHV orientation = OrientationHV.VERTICAL;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -70,9 +70,9 @@ public class CutLine extends AbstractTransparentComponent<Void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (getOrientation() == OrientationHV.HORIZONTAL)
|
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
|
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);
|
g2d.setComposite(oldComposite);
|
||||||
}
|
}
|
||||||
@@ -132,12 +132,12 @@ public class CutLine extends AbstractTransparentComponent<Void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return point;
|
return point;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
this.point.setLocation(point);
|
this.point.setLocation(point);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ package org.diylc.components.connectivity;
|
|||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
import org.diylc.common.SimpleComponentTransformer;
|
import org.diylc.common.SimpleComponentTransformer;
|
||||||
import org.diylc.components.AbstractComponent;
|
import org.diylc.components.AbstractComponent;
|
||||||
@@ -51,7 +51,7 @@ public class Dot extends AbstractComponent<Void> {
|
|||||||
|
|
||||||
private Size size = SIZE;
|
private Size size = SIZE;
|
||||||
private Color color = COLOR;
|
private Color color = COLOR;
|
||||||
private Point point = new Point(0, 0);
|
private Point2D point = new Point2D.Double(0, 0);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
|
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());
|
int diameter = getClosestOdd((int) getSize().convertToPixels());
|
||||||
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
|
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
|
||||||
: 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
|
@Override
|
||||||
@@ -102,12 +102,12 @@ public class Dot extends AbstractComponent<Void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return point;
|
return point;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
this.point.setLocation(point);
|
this.point.setLocation(point);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ package org.diylc.components.connectivity;
|
|||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import org.diylc.common.ObjectCache;
|
import org.diylc.common.ObjectCache;
|
||||||
@@ -60,7 +60,7 @@ public class Eyelet extends AbstractComponent<String> {
|
|||||||
private Size size = SIZE;
|
private Size size = SIZE;
|
||||||
private Size holeSize = HOLE_SIZE;
|
private Size holeSize = HOLE_SIZE;
|
||||||
private Color color = COLOR;
|
private Color color = COLOR;
|
||||||
private Point point = new Point(0, 0);
|
private Point2D point = new Point2D.Double(0, 0);
|
||||||
private String value = "";
|
private String value = "";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -74,16 +74,16 @@ public class Eyelet extends AbstractComponent<String> {
|
|||||||
g2d.setStroke(ObjectCache.getInstance().fetchZoomableStroke(1f));
|
g2d.setStroke(ObjectCache.getInstance().fetchZoomableStroke(1f));
|
||||||
g2d.setColor(color);
|
g2d.setColor(color);
|
||||||
drawingObserver.startTrackingContinuityArea(true);
|
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();
|
drawingObserver.stopTrackingContinuityArea();
|
||||||
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
|
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
|
||||||
: color.darker());
|
: 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.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
|
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
|
||||||
: color.darker());
|
: 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
|
@Override
|
||||||
@@ -139,12 +139,12 @@ public class Eyelet extends AbstractComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return point;
|
return point;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
this.point.setLocation(point);
|
this.point.setLocation(point);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ package org.diylc.components.connectivity;
|
|||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
import java.awt.geom.Point2D;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
import org.diylc.common.ObjectCache;
|
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_WIDTH = new Size(1.5d, SizeUnit.in);
|
||||||
public static Size DEFAULT_HEIGHT = new Size(1.2d, 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()),
|
protected Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0), new Point2D.Double(0, (int) DEFAULT_HEIGHT.convertToPixels()),
|
||||||
new Point((int) DEFAULT_WIDTH.convertToPixels(), (int) DEFAULT_HEIGHT.convertToPixels()),
|
new Point2D.Double((int) DEFAULT_WIDTH.convertToPixels(), (int) DEFAULT_HEIGHT.convertToPixels()),
|
||||||
new Point((int) DEFAULT_WIDTH.convertToPixels(), 0)};
|
new Point2D.Double((int) DEFAULT_WIDTH.convertToPixels(), 0)};
|
||||||
|
|
||||||
protected Color color = COLOR;
|
protected Color color = COLOR;
|
||||||
protected PointCount pointCount = PointCount._4;
|
protected PointCount pointCount = PointCount._4;
|
||||||
@@ -71,8 +71,8 @@ public class GroundFill extends AbstractComponent<Void> {
|
|||||||
int[] xPoints = new int[controlPoints.length];
|
int[] xPoints = new int[controlPoints.length];
|
||||||
int[] yPoints = new int[controlPoints.length];
|
int[] yPoints = new int[controlPoints.length];
|
||||||
for (int i = 0; i < controlPoints.length; i++) {
|
for (int i = 0; i < controlPoints.length; i++) {
|
||||||
xPoints[i] = controlPoints[i].x;
|
xPoints[i] = (int)controlPoints[i].getX();
|
||||||
yPoints[i] = controlPoints[i].y;
|
yPoints[i] = (int)controlPoints[i].getY();
|
||||||
}
|
}
|
||||||
drawingObserver.startTrackingContinuityArea(true);
|
drawingObserver.startTrackingContinuityArea(true);
|
||||||
g2d.fillPolygon(xPoints, yPoints, controlPoints.length);
|
g2d.fillPolygon(xPoints, yPoints, controlPoints.length);
|
||||||
@@ -97,7 +97,7 @@ public class GroundFill extends AbstractComponent<Void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -112,7 +112,7 @@ public class GroundFill extends AbstractComponent<Void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
controlPoints[index].setLocation(point);
|
controlPoints[index].setLocation(point);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -131,8 +131,8 @@ public class GroundFill extends AbstractComponent<Void> {
|
|||||||
this.controlPoints[newPointCount - 1] = this.controlPoints[oldPointCount - 1];
|
this.controlPoints[newPointCount - 1] = this.controlPoints[oldPointCount - 1];
|
||||||
for (int i = oldPointCount - 1; i < newPointCount - 1; i++) {
|
for (int i = oldPointCount - 1; i < newPointCount - 1; i++) {
|
||||||
this.controlPoints[i] =
|
this.controlPoints[i] =
|
||||||
new Point((this.controlPoints[i - 1].x + this.controlPoints[newPointCount - 1].x) / 2,
|
new Point2D.Double((this.controlPoints[i - 1].getX() + this.controlPoints[newPointCount - 1].getX()) / 2,
|
||||||
(this.controlPoints[i - 1].y + this.controlPoints[newPointCount - 1].y) / 2);
|
(this.controlPoints[i - 1].getY() + this.controlPoints[newPointCount - 1].getY()) / 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.pointCount = pointCount;
|
this.pointCount = pointCount;
|
||||||
|
|||||||
@@ -24,11 +24,11 @@ package org.diylc.components.connectivity;
|
|||||||
import java.awt.BasicStroke;
|
import java.awt.BasicStroke;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Polygon;
|
import java.awt.Polygon;
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.Stroke;
|
import java.awt.Stroke;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
import org.diylc.common.Display;
|
import org.diylc.common.Display;
|
||||||
import org.diylc.common.LineStyle;
|
import org.diylc.common.LineStyle;
|
||||||
@@ -91,13 +91,15 @@ public class Line extends AbstractLeadedComponent<Void> {
|
|||||||
g2d.setStroke(stroke);
|
g2d.setStroke(stroke);
|
||||||
g2d.setColor(componentState == ComponentState.SELECTED ? SELECTION_COLOR : color);
|
g2d.setColor(componentState == ComponentState.SELECTED ? SELECTION_COLOR : color);
|
||||||
|
|
||||||
Point startPoint = new Point(getControlPoint(0));
|
Point2D first = getControlPoint(0);
|
||||||
Point endPoint = new Point(getControlPoint(1));
|
Point2D second = getControlPoint(1);
|
||||||
|
Point2D startPoint = new Point2D.Double(first.getX(), first.getY());
|
||||||
|
Point2D endPoint = new Point2D.Double(second.getX(), second.getY());
|
||||||
|
|
||||||
if (arrowStart) {
|
if (arrowStart) {
|
||||||
arrowTx.setToIdentity();
|
arrowTx.setToIdentity();
|
||||||
double angle = Math.atan2(getControlPoint(1).y - getControlPoint(0).y, getControlPoint(1).x - getControlPoint(0).x);
|
double angle = Math.atan2(getControlPoint(1).getY() - getControlPoint(0).getY(), getControlPoint(1).getX() - getControlPoint(0).getX());
|
||||||
arrowTx.translate(getControlPoint(0).x, getControlPoint(0).y);
|
arrowTx.translate(getControlPoint(0).getX(), getControlPoint(0).getY());
|
||||||
arrowTx.rotate((angle + Math.PI / 2d));
|
arrowTx.rotate((angle + Math.PI / 2d));
|
||||||
AffineTransform oldTx = g2d.getTransform();
|
AffineTransform oldTx = g2d.getTransform();
|
||||||
g2d.transform(arrowTx);
|
g2d.transform(arrowTx);
|
||||||
@@ -110,8 +112,8 @@ public class Line extends AbstractLeadedComponent<Void> {
|
|||||||
}
|
}
|
||||||
if (arrowEnd) {
|
if (arrowEnd) {
|
||||||
arrowTx.setToIdentity();
|
arrowTx.setToIdentity();
|
||||||
double angle = Math.atan2(getControlPoint(1).y - getControlPoint(0).y, getControlPoint(1).x - getControlPoint(0).x);
|
double angle = Math.atan2(getControlPoint(1).getY() - getControlPoint(0).getY(), getControlPoint(1).getX() - getControlPoint(0).getX());
|
||||||
arrowTx.translate(getControlPoint(1).x, getControlPoint(1).y);
|
arrowTx.translate(getControlPoint(1).getX(), getControlPoint(1).getY());
|
||||||
arrowTx.rotate((angle - Math.PI / 2d));
|
arrowTx.rotate((angle - Math.PI / 2d));
|
||||||
AffineTransform oldTx = g2d.getTransform();
|
AffineTransform oldTx = g2d.getTransform();
|
||||||
g2d.transform(arrowTx);
|
g2d.transform(arrowTx);
|
||||||
@@ -123,15 +125,15 @@ public class Line extends AbstractLeadedComponent<Void> {
|
|||||||
interpolate(endPoint, startPoint, getArrowSize().convertToPixels() * 0.9 / distance, endPoint);
|
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) {
|
private void interpolate(Point2D p1, Point2D p2, double t, Point2D p) {
|
||||||
p.setLocation((int)Math.round(p1.x * (1-t) + p2.x * t), (int)Math.round(p1.y * (1-t) + p2.y * t));
|
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) {
|
private double distance(Point2D p1, Point2D p2) {
|
||||||
return Math.sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y));
|
return Math.sqrt((p1.getX() - p2.getX()) * (p1.getX() - p2.getX()) + (p1.getY() - p2.getY()) * (p1.getY() - p2.getY()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -19,8 +19,8 @@ package org.diylc.components.connectivity;
|
|||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import org.diylc.common.PCBLayer;
|
import org.diylc.common.PCBLayer;
|
||||||
@@ -55,7 +55,7 @@ public class SolderPad extends AbstractComponent<Void> {
|
|||||||
|
|
||||||
private Size size = SIZE;
|
private Size size = SIZE;
|
||||||
private Color color = COLOR;
|
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 Type type = Type.ROUND;
|
||||||
private Size holeSize = HOLE_SIZE;
|
private Size holeSize = HOLE_SIZE;
|
||||||
private PCBLayer layer = PCBLayer._1;
|
private PCBLayer layer = PCBLayer._1;
|
||||||
@@ -72,18 +72,18 @@ public class SolderPad extends AbstractComponent<Void> {
|
|||||||
: color);
|
: color);
|
||||||
drawingObserver.startTrackingContinuityArea(true);
|
drawingObserver.startTrackingContinuityArea(true);
|
||||||
if (type == Type.ROUND) {
|
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) {
|
} 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) {
|
} 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 {
|
} 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();
|
drawingObserver.stopTrackingContinuityArea();
|
||||||
if (getHoleSize().getValue() > 0) {
|
if (getHoleSize().getValue() > 0) {
|
||||||
g2d.setColor(Constants.CANVAS_COLOR);
|
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
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return point;
|
return point;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
this.point.setLocation(point);
|
this.point.setLocation(point);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ package org.diylc.components.connectivity;
|
|||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import org.diylc.common.ObjectCache;
|
import org.diylc.common.ObjectCache;
|
||||||
@@ -70,7 +70,7 @@ public class TraceCut extends AbstractComponent<Void> {
|
|||||||
private OrientationHV orientation = OrientationHV.VERTICAL;
|
private OrientationHV orientation = OrientationHV.VERTICAL;
|
||||||
private Size holeSpacing = VeroBoard.SPACING;
|
private Size holeSpacing = VeroBoard.SPACING;
|
||||||
|
|
||||||
protected Point point = new Point(0, 0);
|
protected Point2D point = new Point2D.Double(0, 0);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
|
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
|
||||||
@@ -87,22 +87,22 @@ public class TraceCut extends AbstractComponent<Void> {
|
|||||||
: getBoardColor());
|
: getBoardColor());
|
||||||
drawingObserver.startTrackingContinuityArea(false);
|
drawingObserver.startTrackingContinuityArea(false);
|
||||||
if (getOrientation() == OrientationHV.VERTICAL)
|
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
|
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();
|
drawingObserver.stopTrackingContinuityArea();
|
||||||
} else {
|
} else {
|
||||||
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
|
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
|
||||||
: getBoardColor());
|
: getBoardColor());
|
||||||
drawingObserver.startTrackingContinuityArea(false);
|
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();
|
drawingObserver.stopTrackingContinuityArea();
|
||||||
|
|
||||||
g2d.setColor(Constants.CANVAS_COLOR);
|
g2d.setColor(Constants.CANVAS_COLOR);
|
||||||
int holeSize = getClosestOdd((int) HOLE_SIZE.convertToPixels());
|
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.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
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return point;
|
return point;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -160,7 +160,7 @@ public class TraceCut extends AbstractComponent<Void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
this.point.setLocation(point);
|
this.point.setLocation(point);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ package org.diylc.components.connectivity;
|
|||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import org.diylc.common.ObjectCache;
|
import org.diylc.common.ObjectCache;
|
||||||
@@ -58,7 +58,7 @@ public class Turret extends AbstractComponent<String> {
|
|||||||
private Size size = SIZE;
|
private Size size = SIZE;
|
||||||
private Size holeSize = HOLE_SIZE;
|
private Size holeSize = HOLE_SIZE;
|
||||||
private Color color = COLOR;
|
private Color color = COLOR;
|
||||||
private Point point = new Point(0, 0);
|
private Point2D point = new Point2D.Double(0, 0);
|
||||||
private String value = "";
|
private String value = "";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -72,16 +72,16 @@ public class Turret extends AbstractComponent<String> {
|
|||||||
g2d.setColor(color);
|
g2d.setColor(color);
|
||||||
g2d.setStroke(ObjectCache.getInstance().fetchZoomableStroke(1f));
|
g2d.setStroke(ObjectCache.getInstance().fetchZoomableStroke(1f));
|
||||||
drawingObserver.startTrackingContinuityArea(true);
|
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();
|
drawingObserver.stopTrackingContinuityArea();
|
||||||
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
|
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
|
||||||
: color.darker());
|
: 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.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
|
g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR
|
||||||
: color.darker());
|
: 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
|
@Override
|
||||||
@@ -137,12 +137,12 @@ public class Turret extends AbstractComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return point;
|
return point;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
this.point.setLocation(point);
|
this.point.setLocation(point);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -172,7 +172,7 @@ public class TwistedWire extends AbstractCurvedComponent<Void> implements IConti
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
super.setControlPoint(point, index);
|
super.setControlPoint(point, index);
|
||||||
|
|
||||||
// invalidate cached areas
|
// invalidate cached areas
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ import java.awt.Shape;
|
|||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import org.diylc.appframework.miscutils.ConfigurationManager;
|
import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||||
@@ -235,7 +236,7 @@ public class BatterySnap9V extends AbstractTransparentComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
this.controlPoint.setLocation(point);
|
this.controlPoint.setLocation(point);
|
||||||
// Invalidate the body
|
// Invalidate the body
|
||||||
body = null;
|
body = null;
|
||||||
|
|||||||
@@ -25,12 +25,11 @@ import java.awt.AlphaComposite;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Rectangle;
|
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.awt.geom.RoundRectangle2D;
|
import java.awt.geom.RoundRectangle2D;
|
||||||
|
|
||||||
@@ -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 BODY_LENGTH = new Size(0.9d, SizeUnit.in);
|
||||||
private static Size TAIL_LENGTH = new Size(0.1d, 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 JackType type = JackType.MONO;
|
||||||
private Orientation orientation = Orientation.DEFAULT;
|
private Orientation orientation = Orientation.DEFAULT;
|
||||||
transient private Area[] body;
|
transient private Area[] body;
|
||||||
@@ -88,18 +87,18 @@ public class CliffJack1_4 extends AbstractMultiPartComponent<String> {
|
|||||||
private void updateControlPoints() {
|
private void updateControlPoints() {
|
||||||
// invalidate body shape
|
// invalidate body shape
|
||||||
body = null;
|
body = null;
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
int spacing = (int) SPACING.convertToPixels();
|
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[0] = new Point2D.Double(x, y);
|
||||||
controlPoints[1] = new Point(x, y + 2 * spacing);
|
controlPoints[1] = new Point2D.Double(x, y + 2 * spacing);
|
||||||
controlPoints[2] = new Point(x + 2 * spacing, y);
|
controlPoints[2] = new Point2D.Double(x + 2 * spacing, y);
|
||||||
controlPoints[3] = new Point(x + 2 * spacing, y + 2 * spacing);
|
controlPoints[3] = new Point2D.Double(x + 2 * spacing, y + 2 * spacing);
|
||||||
if (type == JackType.STEREO) {
|
if (type == JackType.STEREO) {
|
||||||
controlPoints[4] = new Point(x + spacing, y);
|
controlPoints[4] = new Point2D.Double(x + spacing, y);
|
||||||
controlPoints[5] = new Point(x + spacing, y + 2 * spacing);
|
controlPoints[5] = new Point2D.Double(x + spacing, y + 2 * spacing);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply rotation if necessary
|
// Apply rotation if necessary
|
||||||
@@ -139,9 +138,9 @@ public class CliffJack1_4 extends AbstractMultiPartComponent<String> {
|
|||||||
// Create body.
|
// Create body.
|
||||||
int bodyLength = (int) BODY_LENGTH.convertToPixels();
|
int bodyLength = (int) BODY_LENGTH.convertToPixels();
|
||||||
int bodyWidth = (int) BODY_WIDTH.convertToPixels();
|
int bodyWidth = (int) BODY_WIDTH.convertToPixels();
|
||||||
int centerX = (controlPoints[0].x + controlPoints[3].x) / 2;
|
double centerX = (controlPoints[0].getX() + controlPoints[3].getX()) / 2;
|
||||||
int centerY = (controlPoints[0].y + controlPoints[3].y) / 2;
|
double centerY = (controlPoints[0].getY() + controlPoints[3].getY()) / 2;
|
||||||
body[0] = new Area(new Rectangle(centerX - bodyLength / 2, centerY - bodyWidth / 2, bodyLength, bodyWidth));
|
body[0] = new Area(new Rectangle2D.Double(centerX - bodyLength / 2, centerY - bodyWidth / 2, bodyLength, bodyWidth));
|
||||||
|
|
||||||
int tailLength = (int) TAIL_LENGTH.convertToPixels();
|
int tailLength = (int) TAIL_LENGTH.convertToPixels();
|
||||||
body[1] = new Area(new RoundRectangle2D.Double(centerX - bodyLength / 2 - tailLength, centerY - bodyWidth / 4, tailLength * 2,
|
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]));
|
tailArea.subtract(new Area(body[0]));
|
||||||
body[1] = tailArea;
|
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]);
|
tailArea = new Area(body[3]);
|
||||||
int radius = bodyLength / 2 + tailLength * 2;
|
int radius = bodyLength / 2 + tailLength * 2;
|
||||||
tailArea.intersect(new Area(new Ellipse2D.Double(centerX - radius, centerY - radius, radius * 2, radius * 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 pinWidth = (int) PIN_WIDTH.convertToPixels();
|
||||||
int pinThickness = (int) PIN_THICKNESS.convertToPixels();
|
int pinThickness = (int) PIN_THICKNESS.convertToPixels();
|
||||||
for (int i = 0; i < getControlPointCount(); i++) {
|
for (int i = 0; i < getControlPointCount(); i++) {
|
||||||
Point point = getControlPoint(i);
|
Point2D point = getControlPoint(i);
|
||||||
Rectangle pin;
|
Rectangle2D pin;
|
||||||
if (orientation == Orientation.DEFAULT || orientation == Orientation._180) {
|
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 {
|
} 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));
|
pins.add(new Area(pin));
|
||||||
}
|
}
|
||||||
@@ -249,8 +248,8 @@ public class CliffJack1_4 extends AbstractMultiPartComponent<String> {
|
|||||||
}
|
}
|
||||||
g2d.setColor(finalLabelColor);
|
g2d.setColor(finalLabelColor);
|
||||||
g2d.setFont(project.getFont());
|
g2d.setFont(project.getFont());
|
||||||
int centerX = (controlPoints[0].x + controlPoints[3].x) / 2;
|
double centerX = (controlPoints[0].getX() + controlPoints[3].getX()) / 2;
|
||||||
int centerY = (controlPoints[0].y + controlPoints[3].y) / 2;
|
double centerY = (controlPoints[0].getY() + controlPoints[3].getY()) / 2;
|
||||||
StringUtils.drawCenteredText(g2d, name, centerX, centerY, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
|
StringUtils.drawCenteredText(g2d, name, centerX, centerY, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
|
||||||
|
|
||||||
drawSelectionOutline(g2d, componentState, outlineMode, project, drawingObserver);
|
drawSelectionOutline(g2d, componentState, outlineMode, project, drawingObserver);
|
||||||
@@ -293,12 +292,12 @@ public class CliffJack1_4 extends AbstractMultiPartComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
controlPoints[index].setLocation(point);
|
controlPoints[index].setLocation(point);
|
||||||
body = null;
|
body = null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,13 +25,13 @@ import java.awt.AlphaComposite;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Rectangle;
|
import java.awt.Rectangle;
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
import java.awt.geom.GeneralPath;
|
import java.awt.geom.GeneralPath;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import org.diylc.appframework.miscutils.ConfigurationManager;
|
import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||||
@@ -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_WIDTH = new Size(0.65d, SizeUnit.in);
|
||||||
private static Size BODY_LENGTH = new Size(0.8d, 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 JackType type = JackType.MONO;
|
||||||
private Orientation orientation = Orientation.DEFAULT;
|
private Orientation orientation = Orientation.DEFAULT;
|
||||||
transient private Shape[] body;
|
transient private Shape[] body;
|
||||||
@@ -89,16 +89,16 @@ public class ClosedJack1_4 extends AbstractMultiPartComponent<String> {
|
|||||||
private void updateControlPoints() {
|
private void updateControlPoints() {
|
||||||
// invalidate body shape
|
// invalidate body shape
|
||||||
body = null;
|
body = null;
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
int spacing = (int) SPACING.convertToPixels();
|
int spacing = (int) SPACING.convertToPixels();
|
||||||
int bodyLength = (int) BODY_LENGTH.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[0] = new Point2D.Double(x, y);
|
||||||
controlPoints[1] = new Point(x + bodyLength, y);
|
controlPoints[1] = new Point2D.Double(x + bodyLength, y);
|
||||||
if (type == JackType.STEREO) {
|
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
|
// Apply rotation if necessary
|
||||||
@@ -136,18 +136,18 @@ public class ClosedJack1_4 extends AbstractMultiPartComponent<String> {
|
|||||||
body = new Shape[5];
|
body = new Shape[5];
|
||||||
|
|
||||||
// Create body.
|
// Create body.
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
int lugWidth = (int) LUG_WIDTH.convertToPixels();
|
int lugWidth = (int) LUG_WIDTH.convertToPixels();
|
||||||
int lugLength = (int) LUG_LENGTH.convertToPixels();
|
int lugLength = (int) LUG_LENGTH.convertToPixels();
|
||||||
int lugHoleSize = (int) LUG_HOLE_SIZE.convertToPixels();
|
int lugHoleSize = (int) LUG_HOLE_SIZE.convertToPixels();
|
||||||
int bodyLength = (int) BODY_LENGTH.convertToPixels();
|
int bodyLength = (int) BODY_LENGTH.convertToPixels();
|
||||||
int bodyWidth = (int) BODY_WIDTH.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 shaftLength = (int) SHAFT_LENGTH.convertToPixels();
|
||||||
int shaftWidth = (int) SHAFT_WIDTH.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;
|
body[1] = shaft;
|
||||||
|
|
||||||
double angle = getAngle();
|
double angle = getAngle();
|
||||||
@@ -158,17 +158,17 @@ public class ClosedJack1_4 extends AbstractMultiPartComponent<String> {
|
|||||||
|
|
||||||
GeneralPath path = new GeneralPath();
|
GeneralPath path = new GeneralPath();
|
||||||
int step = 4;
|
int step = 4;
|
||||||
for (int i = x + lugLength + bodyLength + step; i <= x + lugLength + bodyLength + shaftLength; i += step) {
|
for (double i = x + lugLength + bodyLength + step; i <= x + lugLength + bodyLength + shaftLength; i += step) {
|
||||||
Point p = new Point(i, y - shaftWidth / 2 + 1);
|
Point2D p = new Point2D.Double(i, y - shaftWidth / 2 + 1);
|
||||||
if (rotation != null) {
|
if (rotation != null) {
|
||||||
rotation.transform(p, p);
|
rotation.transform(p, p);
|
||||||
}
|
}
|
||||||
path.moveTo(p.x, p.y);
|
path.moveTo(p.getX(), p.getY());
|
||||||
p = new Point(i - step, y + shaftWidth / 2 - 1);
|
p = new Point2D.Double(i - step, y + shaftWidth / 2 - 1);
|
||||||
if (rotation != null) {
|
if (rotation != null) {
|
||||||
rotation.transform(p, p);
|
rotation.transform(p, p);
|
||||||
}
|
}
|
||||||
path.lineTo(p.x, p.y);
|
path.lineTo(p.getX(), p.getY());
|
||||||
}
|
}
|
||||||
// Area pathArea = new Area(path);
|
// Area pathArea = new Area(path);
|
||||||
// pathArea.intersect(shaft);
|
// pathArea.intersect(shaft);
|
||||||
@@ -178,19 +178,19 @@ public class ClosedJack1_4 extends AbstractMultiPartComponent<String> {
|
|||||||
Area lugs = new Area();
|
Area lugs = new Area();
|
||||||
|
|
||||||
int spacing = (int) SPACING.convertToPixels();
|
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[0] = new Point2D.Double(x, y);
|
||||||
untransformedControlPoints[1] = new Point(x + bodyLength, y);
|
untransformedControlPoints[1] = new Point2D.Double(x + bodyLength, y);
|
||||||
if (type == JackType.STEREO) {
|
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++) {
|
for (int i = 0; i < untransformedControlPoints.length; i++) {
|
||||||
Point point = untransformedControlPoints[i];
|
Point2D point = untransformedControlPoints[i];
|
||||||
Area lug = new Area(new Ellipse2D.Double(point.x - lugWidth / 2, point.y - lugWidth / 2, lugWidth, lugWidth));
|
Area lug = new Area(new Ellipse2D.Double(point.getX() - lugWidth / 2, point.getY() - lugWidth / 2, lugWidth, lugWidth));
|
||||||
lug.add(new Area(new Rectangle(point.x, point.y - lugWidth / 2, lugLength, lugWidth)));
|
lug.add(new Area(new Rectangle2D.Double(point.getX(), point.getY() - lugWidth / 2, lugLength, lugWidth)));
|
||||||
lug.subtract(new Area(new Ellipse2D.Double(point.x - lugHoleSize / 2, point.y - lugHoleSize / 2, lugHoleSize,
|
lug.subtract(new Area(new Ellipse2D.Double(point.getX() - lugHoleSize / 2, point.getY() - lugHoleSize / 2, lugHoleSize,
|
||||||
lugHoleSize)));
|
lugHoleSize)));
|
||||||
lugs.add(lug);
|
lugs.add(lug);
|
||||||
}
|
}
|
||||||
@@ -269,8 +269,8 @@ public class ClosedJack1_4 extends AbstractMultiPartComponent<String> {
|
|||||||
g2d.setColor(finalLabelColor);
|
g2d.setColor(finalLabelColor);
|
||||||
g2d.setFont(project.getFont());
|
g2d.setFont(project.getFont());
|
||||||
Rectangle bounds = body[0].getBounds();
|
Rectangle bounds = body[0].getBounds();
|
||||||
int centerX = bounds.x + bounds.width / 2;
|
double centerX = bounds.getX() + bounds.width / 2;
|
||||||
int centerY = bounds.y + bounds.height / 2;
|
double centerY = bounds.getY() + bounds.height / 2;
|
||||||
StringUtils.drawCenteredText(g2d, name, centerX, centerY, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
|
StringUtils.drawCenteredText(g2d, name, centerX, centerY, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
|
||||||
|
|
||||||
drawSelectionOutline(g2d, componentState, outlineMode, project, drawingObserver);
|
drawSelectionOutline(g2d, componentState, outlineMode, project, drawingObserver);
|
||||||
@@ -303,12 +303,12 @@ public class ClosedJack1_4 extends AbstractMultiPartComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
controlPoints[index].setLocation(point);
|
controlPoints[index].setLocation(point);
|
||||||
body = null;
|
body = null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,10 +26,10 @@ import java.awt.Color;
|
|||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Rectangle;
|
import java.awt.Rectangle;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.awt.geom.RoundRectangle2D;
|
import java.awt.geom.RoundRectangle2D;
|
||||||
|
|
||||||
@@ -79,7 +79,7 @@ public class DIPSwitch extends AbstractTransparentComponent<String> implements I
|
|||||||
private SwitchCount switchCount = SwitchCount._8;
|
private SwitchCount switchCount = SwitchCount._8;
|
||||||
private Size pinSpacing = new Size(0.1d, SizeUnit.in);
|
private Size pinSpacing = new Size(0.1d, SizeUnit.in);
|
||||||
private Size rowSpacing = new Size(0.3d, 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;
|
protected Display display = Display.NONE;
|
||||||
private Color bodyColor = BODY_COLOR;
|
private Color bodyColor = BODY_COLOR;
|
||||||
private Color borderColor = BORDER_COLOR;
|
private Color borderColor = BORDER_COLOR;
|
||||||
@@ -179,7 +179,7 @@ public class DIPSwitch extends AbstractTransparentComponent<String> implements I
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -194,14 +194,14 @@ public class DIPSwitch extends AbstractTransparentComponent<String> implements I
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
controlPoints[index].setLocation(point);
|
controlPoints[index].setLocation(point);
|
||||||
body = null;
|
body = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateControlPoints() {
|
private void updateControlPoints() {
|
||||||
Point firstPoint = controlPoints[0];
|
Point2D firstPoint = controlPoints[0];
|
||||||
controlPoints = new Point[switchCount.getValue() * 2];
|
controlPoints = new Point2D[switchCount.getValue() * 2];
|
||||||
controlPoints[0] = firstPoint;
|
controlPoints[0] = firstPoint;
|
||||||
double pinSpacing = this.pinSpacing.convertToPixels();
|
double pinSpacing = this.pinSpacing.convertToPixels();
|
||||||
double rowSpacing = this.rowSpacing.convertToPixels();
|
double rowSpacing = this.rowSpacing.convertToPixels();
|
||||||
@@ -239,16 +239,16 @@ public class DIPSwitch extends AbstractTransparentComponent<String> implements I
|
|||||||
default:
|
default:
|
||||||
throw new RuntimeException("Unexpected orientation: " + orientation);
|
throw new RuntimeException("Unexpected orientation: " + orientation);
|
||||||
}
|
}
|
||||||
controlPoints[i] = new Point((int) (firstPoint.x + dx1), (int) (firstPoint.y + dy1));
|
controlPoints[i] = new Point2D.Double(firstPoint.getX() + dx1, firstPoint.getY() + dy1);
|
||||||
controlPoints[i + switchCount.getValue()] = new Point((int) (firstPoint.x + dx2), (int) (firstPoint.y + dy2));
|
controlPoints[i + switchCount.getValue()] = new Point2D.Double(firstPoint.getX() + dx2, firstPoint.getY() + dy2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Area[] getBody() {
|
public Area[] getBody() {
|
||||||
if (body == null) {
|
if (body == null) {
|
||||||
body = new Area[3];
|
body = new Area[3];
|
||||||
double x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
double y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
double width;
|
double width;
|
||||||
double height;
|
double height;
|
||||||
double pinSpacing = this.pinSpacing.convertToPixels();
|
double pinSpacing = this.pinSpacing.convertToPixels();
|
||||||
@@ -265,8 +265,8 @@ public class DIPSwitch extends AbstractTransparentComponent<String> implements I
|
|||||||
x -= (bodyWidth - rowSpacing) / 2;
|
x -= (bodyWidth - rowSpacing) / 2;
|
||||||
y -= pinSpacing / 2;
|
y -= pinSpacing / 2;
|
||||||
for (int i = 0; i < getSwitchCount().getValue(); i++) {
|
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)));
|
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].x + (rowSpacing - tickHoleLength) / 2, controlPoints[i].y - tickSize / 2, tickSize, tickSize)));
|
tickArea.add(new Area(new Rectangle2D.Double(controlPoints[i].getX() + (rowSpacing - tickHoleLength) / 2, controlPoints[i].getY() - tickSize / 2, tickSize, tickSize)));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _90:
|
case _90:
|
||||||
@@ -275,8 +275,8 @@ public class DIPSwitch extends AbstractTransparentComponent<String> implements I
|
|||||||
x -= (pinSpacing / 2) + width - pinSpacing;
|
x -= (pinSpacing / 2) + width - pinSpacing;
|
||||||
y -= (bodyWidth - rowSpacing) / 2;
|
y -= (bodyWidth - rowSpacing) / 2;
|
||||||
for (int i = 0; i < getSwitchCount().getValue(); i++) {
|
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)));
|
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].x - tickSize / 2, controlPoints[i].y + (rowSpacing - tickHoleLength) / 2, tickSize, tickSize)));
|
tickArea.add(new Area(new Rectangle2D.Double(controlPoints[i].getX() - tickSize / 2, controlPoints[i].getY() + (rowSpacing - tickHoleLength) / 2, tickSize, tickSize)));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _180:
|
case _180:
|
||||||
@@ -285,8 +285,8 @@ public class DIPSwitch extends AbstractTransparentComponent<String> implements I
|
|||||||
x -= rowSpacing + (bodyWidth - rowSpacing) / 2;
|
x -= rowSpacing + (bodyWidth - rowSpacing) / 2;
|
||||||
y -= (pinSpacing / 2) + height - pinSpacing;
|
y -= (pinSpacing / 2) + height - pinSpacing;
|
||||||
for (int i = getSwitchCount().getValue(); i < controlPoints.length; i++) {
|
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)));
|
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].x + (rowSpacing + tickHoleLength) / 2 - tickSize, controlPoints[i].y - tickSize / 2, tickSize, tickSize)));
|
tickArea.add(new Area(new Rectangle2D.Double(controlPoints[i].getX() + (rowSpacing + tickHoleLength) / 2 - tickSize, controlPoints[i].getY() - tickSize / 2, tickSize, tickSize)));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _270:
|
case _270:
|
||||||
@@ -295,8 +295,8 @@ public class DIPSwitch extends AbstractTransparentComponent<String> implements I
|
|||||||
x -= pinSpacing / 2;
|
x -= pinSpacing / 2;
|
||||||
y -= rowSpacing + (bodyWidth - rowSpacing) / 2;
|
y -= rowSpacing + (bodyWidth - rowSpacing) / 2;
|
||||||
for (int i = getSwitchCount().getValue(); i < controlPoints.length; i++) {
|
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)));
|
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].x - tickSize / 2, controlPoints[i].y + (rowSpacing - tickHoleLength) / 2 + tickHoleLength - tickSize, tickSize, tickSize)));
|
tickArea.add(new Area(new Rectangle2D.Double(controlPoints[i].getX() - tickSize / 2, controlPoints[i].getY() + (rowSpacing - tickHoleLength) / 2 + tickHoleLength - tickSize, tickSize, tickSize)));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -319,13 +319,13 @@ public class DIPSwitch extends AbstractTransparentComponent<String> implements I
|
|||||||
Area mainArea = getBody()[0];
|
Area mainArea = getBody()[0];
|
||||||
if (!outlineMode) {
|
if (!outlineMode) {
|
||||||
int pinSize = (int) PIN_SIZE.convertToPixels() / 2 * 2;
|
int pinSize = (int) PIN_SIZE.convertToPixels() / 2 * 2;
|
||||||
for (Point point : controlPoints) {
|
for (Point2D point : controlPoints) {
|
||||||
g2d.setColor(PIN_COLOR);
|
g2d.setColor(PIN_COLOR);
|
||||||
int pinWidth = getClosestOdd(pinSize / (getOrientation() == Orientation.DEFAULT || getOrientation() == Orientation._180 ? 2f : 1f));
|
int pinWidth = getClosestOdd(pinSize / (getOrientation() == Orientation.DEFAULT || getOrientation() == Orientation._180 ? 2f : 1f));
|
||||||
int pinHeight = getClosestOdd(pinSize / (getOrientation() == Orientation.DEFAULT || getOrientation() == Orientation._180 ? 1f : 2f));
|
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.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();
|
Composite oldComposite = g2d.getComposite();
|
||||||
@@ -407,14 +407,14 @@ public class DIPSwitch extends AbstractTransparentComponent<String> implements I
|
|||||||
int textWidth = (int) (rect.getWidth());
|
int textWidth = (int) (rect.getWidth());
|
||||||
// Center text horizontally and vertically
|
// Center text horizontally and vertically
|
||||||
Rectangle bounds = mainArea.getBounds();
|
Rectangle bounds = mainArea.getBounds();
|
||||||
int x = bounds.x + (bounds.width - textWidth) / 2;
|
double x = bounds.getX() + (bounds.width - textWidth) / 2;
|
||||||
int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
|
double y = bounds.getY() + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
|
||||||
|
|
||||||
AffineTransform oldTransform = g2d.getTransform();
|
AffineTransform oldTransform = g2d.getTransform();
|
||||||
|
|
||||||
if (getOrientation() == Orientation.DEFAULT || getOrientation() == Orientation._180) {
|
if (getOrientation() == Orientation.DEFAULT || getOrientation() == Orientation._180) {
|
||||||
int centerX = bounds.x + bounds.width / 2;
|
double centerX = bounds.getX() + bounds.width / 2;
|
||||||
int centerY = bounds.y + bounds.height / 2;
|
double centerY = bounds.getY() + bounds.height / 2;
|
||||||
g2d.rotate(-Math.PI / 2, centerX, centerY);
|
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.translate(0, textHeight / 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
g2d.drawString(l, x, y);
|
g2d.drawString(l, (int)x, (int)y);
|
||||||
|
|
||||||
g2d.setTransform(oldTransform);
|
g2d.setTransform(oldTransform);
|
||||||
}
|
}
|
||||||
|
|||||||
+15
-15
@@ -26,11 +26,11 @@ import java.awt.Color;
|
|||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Rectangle;
|
import java.awt.Rectangle;
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import org.diylc.appframework.miscutils.ConfigurationManager;
|
import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||||
@@ -69,7 +69,7 @@ public class FuseHolderPanel extends AbstractMultiPartComponent<String> {
|
|||||||
private static Color BORDER_COLOR = BODY_COLOR.darker();
|
private static Color BORDER_COLOR = BODY_COLOR.darker();
|
||||||
private static Color LABEL_COLOR = Color.white;
|
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;
|
transient protected Area[] body;
|
||||||
protected String name;
|
protected String name;
|
||||||
protected String value = "";
|
protected String value = "";
|
||||||
@@ -87,14 +87,14 @@ public class FuseHolderPanel extends AbstractMultiPartComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateControlPoints() {
|
private void updateControlPoints() {
|
||||||
Point firstPoint = controlPoints[0];
|
Point2D firstPoint = controlPoints[0];
|
||||||
int spacing = (int) SPACING.convertToPixels();
|
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
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -114,7 +114,7 @@ public class FuseHolderPanel extends AbstractMultiPartComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
controlPoints[index].setLocation(point);
|
controlPoints[index].setLocation(point);
|
||||||
// Reset body shape.
|
// Reset body shape.
|
||||||
body = null;
|
body = null;
|
||||||
@@ -213,13 +213,13 @@ public class FuseHolderPanel extends AbstractMultiPartComponent<String> {
|
|||||||
lugWidth = p;
|
lugWidth = p;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Point p : controlPoints) {
|
for (Point2D p : controlPoints) {
|
||||||
if (outlineMode) {
|
if (outlineMode) {
|
||||||
g2d.setColor(theme.getOutlineColor());
|
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 {
|
} else {
|
||||||
g2d.setColor(METAL_COLOR);
|
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());
|
int textWidth = (int) (rect.getWidth());
|
||||||
// Center text horizontally and vertically
|
// Center text horizontally and vertically
|
||||||
Rectangle bounds = body[0].getBounds();
|
Rectangle bounds = body[0].getBounds();
|
||||||
int x = bounds.x + (bounds.width - textWidth) / 2;
|
double x = bounds.getX() + (bounds.width - textWidth) / 2;
|
||||||
int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
|
double y = bounds.getY() + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
|
||||||
g2d.drawString(label, x, y);
|
g2d.drawString(label, (int)x, (int)y);
|
||||||
|
|
||||||
drawSelectionOutline(g2d, componentState, outlineMode, project, drawingObserver);
|
drawSelectionOutline(g2d, componentState, outlineMode, project, drawingObserver);
|
||||||
}
|
}
|
||||||
@@ -260,7 +260,7 @@ public class FuseHolderPanel extends AbstractMultiPartComponent<String> {
|
|||||||
@Override
|
@Override
|
||||||
public Area[] getBody() {
|
public Area[] getBody() {
|
||||||
if (body == null) {
|
if (body == null) {
|
||||||
Point firstPoint = controlPoints[0];
|
Point2D firstPoint = controlPoints[0];
|
||||||
int spacing = (int) SPACING.convertToPixels();
|
int spacing = (int) SPACING.convertToPixels();
|
||||||
int outerDiameter = (int) OUTER_DIAMETER.convertToPixels();
|
int outerDiameter = (int) OUTER_DIAMETER.convertToPixels();
|
||||||
int innerDiameter = (int) INNER_DIAMETER.convertToPixels();
|
int innerDiameter = (int) INNER_DIAMETER.convertToPixels();
|
||||||
@@ -272,8 +272,8 @@ public class FuseHolderPanel extends AbstractMultiPartComponent<String> {
|
|||||||
else
|
else
|
||||||
dy = spacing / 2;
|
dy = spacing / 2;
|
||||||
body = new Area[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[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.x + dx - innerDiameter / 2, firstPoint.y + dy - innerDiameter / 2, innerDiameter, innerDiameter));
|
body[1] = new Area(new Ellipse2D.Double(firstPoint.getX() + dx - innerDiameter / 2, firstPoint.getY() + dy - innerDiameter / 2, innerDiameter, innerDiameter));
|
||||||
}
|
}
|
||||||
return body;
|
return body;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ import java.awt.Point;
|
|||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.awt.geom.RoundRectangle2D;
|
import java.awt.geom.RoundRectangle2D;
|
||||||
|
|
||||||
@@ -79,7 +80,7 @@ public class IECSocket extends AbstractMultiPartComponent<String> {
|
|||||||
private static Color BODY_COLOR = Color.decode("#555555");
|
private static Color BODY_COLOR = Color.decode("#555555");
|
||||||
private static Color BORDER_COLOR = BODY_COLOR.darker();
|
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;
|
transient protected Area[] body;
|
||||||
protected String name;
|
protected String name;
|
||||||
protected String value;
|
protected String value;
|
||||||
@@ -95,12 +96,12 @@ public class IECSocket extends AbstractMultiPartComponent<String> {
|
|||||||
|
|
||||||
@SuppressWarnings("incomplete-switch")
|
@SuppressWarnings("incomplete-switch")
|
||||||
private void updateControlPoints() {
|
private void updateControlPoints() {
|
||||||
Point firstPoint = controlPoints[0];
|
Point2D firstPoint = controlPoints[0];
|
||||||
int hSpacing = (int) HORIZONTAL_SPACING.convertToPixels();
|
int hSpacing = (int) HORIZONTAL_SPACING.convertToPixels();
|
||||||
int vSpacing = (int) VERTICAL_SPACING.convertToPixels();
|
int vSpacing = (int) VERTICAL_SPACING.convertToPixels();
|
||||||
|
|
||||||
controlPoints[1].setLocation(firstPoint.x - hSpacing, firstPoint.y + vSpacing);
|
controlPoints[1].setLocation(firstPoint.getX() - hSpacing, firstPoint.getY() + vSpacing);
|
||||||
controlPoints[2].setLocation(firstPoint.x + hSpacing, firstPoint.y + vSpacing);
|
controlPoints[2].setLocation(firstPoint.getX() + hSpacing, firstPoint.getY() + vSpacing);
|
||||||
|
|
||||||
if (orientation != Orientation.DEFAULT) {
|
if (orientation != Orientation.DEFAULT) {
|
||||||
double theta = 0;
|
double theta = 0;
|
||||||
@@ -115,7 +116,7 @@ public class IECSocket extends AbstractMultiPartComponent<String> {
|
|||||||
theta = Math.PI * 3 / 2;
|
theta = Math.PI * 3 / 2;
|
||||||
break;
|
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++) {
|
for (int i = 1; i < controlPoints.length; i++) {
|
||||||
rotation.transform(controlPoints[i], controlPoints[i]);
|
rotation.transform(controlPoints[i], controlPoints[i]);
|
||||||
@@ -124,7 +125,7 @@ public class IECSocket extends AbstractMultiPartComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -144,7 +145,7 @@ public class IECSocket extends AbstractMultiPartComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
controlPoints[index].setLocation(point);
|
controlPoints[index].setLocation(point);
|
||||||
// Reset body shape.
|
// Reset body shape.
|
||||||
body = null;
|
body = null;
|
||||||
@@ -235,13 +236,13 @@ public class IECSocket extends AbstractMultiPartComponent<String> {
|
|||||||
lugWidth = p;
|
lugWidth = p;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Point p : controlPoints) {
|
for (Point2D p : controlPoints) {
|
||||||
if (outlineMode) {
|
if (outlineMode) {
|
||||||
g2d.setColor(theme.getOutlineColor());
|
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 {
|
} else {
|
||||||
g2d.setColor(METAL_COLOR);
|
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")
|
@SuppressWarnings("incomplete-switch")
|
||||||
public Area[] getBody() {
|
public Area[] getBody() {
|
||||||
if (body == null) {
|
if (body == null) {
|
||||||
Point firstPoint = controlPoints[0];
|
Point2D firstPoint = controlPoints[0];
|
||||||
int vSpacing = (int) VERTICAL_SPACING.convertToPixels();
|
int vSpacing = (int) VERTICAL_SPACING.convertToPixels();
|
||||||
|
|
||||||
double cutoutRadius;
|
double cutoutRadius;
|
||||||
@@ -278,13 +279,13 @@ public class IECSocket extends AbstractMultiPartComponent<String> {
|
|||||||
outerRadius = SIMPLE_OUTER_RADIUS.convertToPixels();
|
outerRadius = SIMPLE_OUTER_RADIUS.convertToPixels();
|
||||||
|
|
||||||
Point[] outerPoints = new Point[] {
|
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.getX()), (int) Math.round(firstPoint.getY() + 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.getX() + baseLength / 2), (int) Math.round(firstPoint.getY() + 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.getX() + length / 2), (int) Math.round(firstPoint.getY() + 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() + baseLength / 2), (int) Math.round(firstPoint.getY() + 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.getX() - baseLength / 2), (int) Math.round(firstPoint.getY() + 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.getX() - length / 2), (int) Math.round(firstPoint.getY() + 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() - baseLength / 2), (int) Math.round(firstPoint.getY() + vSpacing / 2 - baseWidth / 2)),
|
||||||
};
|
};
|
||||||
|
|
||||||
double[] outerRadiuses = new double[] {
|
double[] outerRadiuses = new double[] {
|
||||||
@@ -297,19 +298,19 @@ public class IECSocket extends AbstractMultiPartComponent<String> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
body[0] = new Area(new RoundedPolygon(outerPoints, outerRadiuses));
|
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.getX() - holeSpacing / 2 - holeDiameter / 2, firstPoint.getY() + 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[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[] {
|
Point2D[] cutoutPoints = new Point2D[] {
|
||||||
new Point(firstPoint.x, (int) (firstPoint.y + vSpacing / 2 - cutoutWidth / 2)),
|
new Point2D.Double(firstPoint.getX(), firstPoint.getY() + vSpacing / 2 - cutoutWidth / 2),
|
||||||
new Point((int) (firstPoint.x + cutoutLength / 2 - cutoutSlant), (int) (firstPoint.y + vSpacing / 2 - cutoutWidth / 2)),
|
new Point2D.Double(firstPoint.getX() + cutoutLength / 2 - cutoutSlant, (int) (firstPoint.getY() + vSpacing / 2 - cutoutWidth / 2)),
|
||||||
new Point((int) (firstPoint.x + cutoutLength / 2), (int) (firstPoint.y + vSpacing / 2 - cutoutWidth / 2 + cutoutSlant)),
|
new Point2D.Double(firstPoint.getX() + cutoutLength / 2, firstPoint.getY() + vSpacing / 2 - cutoutWidth / 2 + cutoutSlant),
|
||||||
new Point((int) (firstPoint.x + cutoutLength / 2), (int) (firstPoint.y + vSpacing / 2 + cutoutWidth / 2)),
|
new Point2D.Double(firstPoint.getX() + cutoutLength / 2, firstPoint.getY() + vSpacing / 2 + cutoutWidth / 2),
|
||||||
new Point((int) (firstPoint.x - cutoutLength / 2), (int) (firstPoint.y + vSpacing / 2 + cutoutWidth / 2)),
|
new Point2D.Double(firstPoint.getX() - cutoutLength / 2, firstPoint.getY() + vSpacing / 2 + cutoutWidth / 2),
|
||||||
new Point((int) (firstPoint.x - cutoutLength / 2), (int) (firstPoint.y + vSpacing / 2 - cutoutWidth / 2 + cutoutSlant)),
|
new Point2D.Double(firstPoint.getX() - cutoutLength / 2, firstPoint.getY() + vSpacing / 2 - cutoutWidth / 2 + cutoutSlant),
|
||||||
new Point((int) (firstPoint.x - cutoutLength / 2 + cutoutSlant), (int) (firstPoint.y + vSpacing / 2 - cutoutWidth / 2)),
|
new Point2D.Double(firstPoint.getX() - cutoutLength / 2 + cutoutSlant, firstPoint.getY() + vSpacing / 2 - cutoutWidth / 2),
|
||||||
};
|
};
|
||||||
|
|
||||||
double[] cutoutRadiuses = new double[] {
|
double[] cutoutRadiuses = new double[] {
|
||||||
@@ -331,7 +332,7 @@ public class IECSocket extends AbstractMultiPartComponent<String> {
|
|||||||
theta = Math.PI * 3 / 2;
|
theta = Math.PI * 3 / 2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
AffineTransform rotation = AffineTransform.getRotateInstance(theta, firstPoint.x, firstPoint.y);
|
AffineTransform rotation = AffineTransform.getRotateInstance(theta, firstPoint.getX(), firstPoint.getY());
|
||||||
for (Area a : body)
|
for (Area a : body)
|
||||||
if (a != null)
|
if (a != null)
|
||||||
a.transform(rotation);
|
a.transform(rotation);
|
||||||
|
|||||||
@@ -26,9 +26,9 @@ import java.awt.Color;
|
|||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Rectangle;
|
import java.awt.Rectangle;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.awt.geom.RoundRectangle2D;
|
import java.awt.geom.RoundRectangle2D;
|
||||||
|
|
||||||
@@ -85,7 +85,7 @@ public class MiniRelay extends AbstractTransparentComponent<String> {
|
|||||||
private String value = "";
|
private String value = "";
|
||||||
private Orientation orientation = Orientation.DEFAULT;
|
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;
|
protected Display display = Display.NAME;
|
||||||
private RelayType type = RelayType.DPDT;
|
private RelayType type = RelayType.DPDT;
|
||||||
private RelaySize size = RelaySize.Miniature;
|
private RelaySize size = RelaySize.Miniature;
|
||||||
@@ -136,7 +136,7 @@ public class MiniRelay extends AbstractTransparentComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -151,13 +151,13 @@ public class MiniRelay extends AbstractTransparentComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
controlPoints[index].setLocation(point);
|
controlPoints[index].setLocation(point);
|
||||||
body = null;
|
body = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateControlPoints() {
|
private void updateControlPoints() {
|
||||||
Point firstPoint = controlPoints[0];
|
Point2D firstPoint = controlPoints[0];
|
||||||
int pinCount = 0;
|
int pinCount = 0;
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case DPDT:
|
case DPDT:
|
||||||
@@ -169,7 +169,7 @@ public class MiniRelay extends AbstractTransparentComponent<String> {
|
|||||||
default:
|
default:
|
||||||
throw new RuntimeException("Unexpected type: " + type);
|
throw new RuntimeException("Unexpected type: " + type);
|
||||||
}
|
}
|
||||||
controlPoints = new Point[pinCount];
|
controlPoints = new Point2D[pinCount];
|
||||||
controlPoints[0] = firstPoint;
|
controlPoints[0] = firstPoint;
|
||||||
int pinSpacing =
|
int pinSpacing =
|
||||||
size == RelaySize.Miniature ? (int) MINI_PIN_SPACING.convertToPixels() : (int) ULTRA_PIN_SPACING
|
size == RelaySize.Miniature ? (int) MINI_PIN_SPACING.convertToPixels() : (int) ULTRA_PIN_SPACING
|
||||||
@@ -218,18 +218,18 @@ public class MiniRelay extends AbstractTransparentComponent<String> {
|
|||||||
default:
|
default:
|
||||||
throw new RuntimeException("Unexpected orientation: " + orientation);
|
throw new RuntimeException("Unexpected orientation: " + orientation);
|
||||||
}
|
}
|
||||||
controlPoints[i] = new Point(firstPoint.x + dx1, firstPoint.y + dy1);
|
controlPoints[i] = new Point2D.Double(firstPoint.getX() + dx1, firstPoint.getY() + dy1);
|
||||||
controlPoints[i + pinCount / 2] = new Point(firstPoint.x + dx2, firstPoint.y + dy2);
|
controlPoints[i + pinCount / 2] = new Point2D.Double(firstPoint.getX() + dx2, firstPoint.getY() + dy2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Area[] getBody() {
|
public Area[] getBody() {
|
||||||
if (body == null) {
|
if (body == null) {
|
||||||
body = new Area[2];
|
body = new Area[2];
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
int centerX = (controlPoints[0].x + controlPoints[controlPoints.length - 1].x) / 2;
|
double centerX = (controlPoints[0].getX() + controlPoints[controlPoints.length - 1].getX()) / 2;
|
||||||
int centerY = (controlPoints[0].y + controlPoints[controlPoints.length - 1].y) / 2;
|
double centerY = (controlPoints[0].getY() + controlPoints[controlPoints.length - 1].getY()) / 2;
|
||||||
int bodyMargin = getClosestOdd(BODY_MARGIN.convertToPixels());
|
int bodyMargin = getClosestOdd(BODY_MARGIN.convertToPixels());
|
||||||
int width = 0;
|
int width = 0;
|
||||||
int height = 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);
|
Theme theme = (Theme) ConfigurationManager.getInstance().readObject(IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME);
|
||||||
int pinSize = (int) PIN_SIZE.convertToPixels() / 2 * 2;
|
int pinSize = (int) PIN_SIZE.convertToPixels() / 2 * 2;
|
||||||
for (Point point : controlPoints) {
|
for (Point2D point : controlPoints) {
|
||||||
if (!outlineMode) {
|
if (!outlineMode) {
|
||||||
g2d.setColor(PIN_COLOR);
|
g2d.setColor(PIN_COLOR);
|
||||||
g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
|
g2d.fillOval((int)(point.getX() - pinSize / 2), (int)(point.getY() - pinSize / 2), pinSize, pinSize);
|
||||||
}
|
}
|
||||||
g2d.setColor(outlineMode ? theme.getOutlineColor() : PIN_BORDER_COLOR);
|
g2d.setColor(outlineMode ? theme.getOutlineColor() : PIN_BORDER_COLOR);
|
||||||
g2d.drawOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
|
g2d.drawOval((int)(point.getX() - pinSize / 2), (int)(point.getY() - pinSize / 2), pinSize, pinSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
Color finalBorderColor;
|
Color finalBorderColor;
|
||||||
@@ -367,9 +367,9 @@ public class MiniRelay extends AbstractTransparentComponent<String> {
|
|||||||
int textWidth = (int) (rect.getWidth());
|
int textWidth = (int) (rect.getWidth());
|
||||||
// Center text horizontally and vertically
|
// Center text horizontally and vertically
|
||||||
Rectangle bounds = mainArea.getBounds();
|
Rectangle bounds = mainArea.getBounds();
|
||||||
int x = bounds.x + (bounds.width - textWidth) / 2;
|
double x = bounds.getX() + (bounds.width - textWidth) / 2;
|
||||||
int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
|
double y = bounds.getY() + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
|
||||||
g2d.drawString(label, x, y);
|
g2d.drawString(label, (int)x, (int)y);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -434,21 +434,21 @@ public class MiniRelay extends AbstractTransparentComponent<String> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Rectangle2D getCachingBounds() {
|
public Rectangle2D getCachingBounds() {
|
||||||
int minX = Integer.MAX_VALUE;
|
double minX = Integer.MAX_VALUE;
|
||||||
int maxX = Integer.MIN_VALUE;
|
double maxX = Integer.MIN_VALUE;
|
||||||
int minY = Integer.MAX_VALUE;
|
double minY = Integer.MAX_VALUE;
|
||||||
int maxY = Integer.MIN_VALUE;
|
double maxY = Integer.MIN_VALUE;
|
||||||
int margin = 50;
|
double margin = 50;
|
||||||
for (int i = 0; i < getControlPointCount(); i++) {
|
for (int i = 0; i < getControlPointCount(); i++) {
|
||||||
Point p = getControlPoint(i);
|
Point2D p = getControlPoint(i);
|
||||||
if (p.x < minX)
|
if (p.getX() < minX)
|
||||||
minX = p.x;
|
minX = p.getX();
|
||||||
if (p.x > maxX)
|
if (p.getX() > maxX)
|
||||||
maxX = p.x;
|
maxX = p.getX();
|
||||||
if (p.y < minY)
|
if (p.getY() < minY)
|
||||||
minY = p.y;
|
minY = p.getY();
|
||||||
if (p.y > maxY)
|
if (p.getY() > maxY)
|
||||||
maxY = p.y;
|
maxY = p.getY();
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Rectangle2D.Double(minX - margin, minY - margin, maxX - minX + 2 * margin, maxY - minY + 2 * margin);
|
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.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.awt.geom.RoundRectangle2D;
|
import java.awt.geom.RoundRectangle2D;
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ public class MiniToggleSwitch extends AbstractTransparentComponent<ToggleSwitchT
|
|||||||
private static Color BORDER_COLOR = BODY_COLOR.darker();
|
private static Color BORDER_COLOR = BODY_COLOR.darker();
|
||||||
private static Color CIRCLE_COLOR = Color.decode("#FFFFAA");
|
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;
|
transient protected Shape body;
|
||||||
protected ToggleSwitchType switchType = ToggleSwitchType.DPDT;
|
protected ToggleSwitchType switchType = ToggleSwitchType.DPDT;
|
||||||
private OrientationHV orientation = OrientationHV.VERTICAL;
|
private OrientationHV orientation = OrientationHV.VERTICAL;
|
||||||
@@ -83,81 +83,85 @@ public class MiniToggleSwitch extends AbstractTransparentComponent<ToggleSwitchT
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateControlPoints() {
|
private void updateControlPoints() {
|
||||||
Point firstPoint = controlPoints[0];
|
Point2D firstPoint = controlPoints[0];
|
||||||
int spacing = (int) getSpacing().convertToPixels();
|
int spacing = (int) getSpacing().convertToPixels();
|
||||||
switch (switchType) {
|
switch (switchType) {
|
||||||
case SPST:
|
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;
|
break;
|
||||||
case SPDT:
|
case SPDT:
|
||||||
case SPDT_off:
|
case SPDT_off:
|
||||||
controlPoints =
|
controlPoints =
|
||||||
new Point[] {firstPoint, new Point(firstPoint.x, firstPoint.y + spacing),
|
new Point2D[] {firstPoint, new Point2D.Double(firstPoint.getX(), firstPoint.getY() + spacing),
|
||||||
new Point(firstPoint.x, firstPoint.y + 2 * spacing)};
|
new Point2D.Double(firstPoint.getX(), firstPoint.getY() + 2 * spacing)};
|
||||||
break;
|
break;
|
||||||
case DPDT:
|
case DPDT:
|
||||||
case DPDT_off:
|
case DPDT_off:
|
||||||
controlPoints =
|
controlPoints =
|
||||||
new Point[] {firstPoint, new Point(firstPoint.x, firstPoint.y + spacing),
|
new Point2D[] {firstPoint, new Point2D.Double(firstPoint.getX(), firstPoint.getY() + spacing),
|
||||||
new Point(firstPoint.x, firstPoint.y + 2 * spacing), new Point(firstPoint.x + spacing, firstPoint.y),
|
new Point2D.Double(firstPoint.getX(), firstPoint.getY() + 2 * spacing),
|
||||||
new Point(firstPoint.x + spacing, firstPoint.y + spacing),
|
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY()),
|
||||||
new Point(firstPoint.x + spacing, firstPoint.y + 2 * spacing)};
|
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY() + spacing),
|
||||||
|
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY() + 2 * spacing)};
|
||||||
break;
|
break;
|
||||||
case _DP3T_mustang:
|
case _DP3T_mustang:
|
||||||
controlPoints =
|
controlPoints =
|
||||||
new Point[] {firstPoint,
|
new Point2D[] {firstPoint,
|
||||||
new Point(firstPoint.x, firstPoint.y + spacing),
|
new Point2D.Double(firstPoint.getX(), firstPoint.getY() + spacing),
|
||||||
new Point(firstPoint.x, firstPoint.y + 2 * spacing),
|
new Point2D.Double(firstPoint.getX(), firstPoint.getY() + 2 * spacing),
|
||||||
new Point(firstPoint.x, firstPoint.y + 3 * spacing),
|
new Point2D.Double(firstPoint.getX(), firstPoint.getY() + 3 * spacing),
|
||||||
new Point(firstPoint.x + spacing, firstPoint.y),
|
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY()),
|
||||||
new Point(firstPoint.x + spacing, firstPoint.y + spacing),
|
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY() + spacing),
|
||||||
new Point(firstPoint.x + spacing, firstPoint.y + 2 * spacing),
|
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY() + 2 * spacing),
|
||||||
new Point(firstPoint.x + spacing, firstPoint.y + 3 * spacing)};
|
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY() + 3 * spacing)};
|
||||||
break;
|
break;
|
||||||
case _3PDT:
|
case _3PDT:
|
||||||
case _3PDT_off:
|
case _3PDT_off:
|
||||||
controlPoints =
|
controlPoints =
|
||||||
new Point[] {firstPoint, new Point(firstPoint.x, firstPoint.y + spacing),
|
new Point2D[] {firstPoint, new Point2D.Double(firstPoint.getX(), firstPoint.getY() + spacing),
|
||||||
new Point(firstPoint.x, firstPoint.y + 2 * spacing), new Point(firstPoint.x + spacing, firstPoint.y),
|
new Point2D.Double(firstPoint.getX(), firstPoint.getY() + 2 * spacing),
|
||||||
new Point(firstPoint.x + spacing, firstPoint.y + spacing),
|
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY()),
|
||||||
new Point(firstPoint.x + spacing, firstPoint.y + 2 * spacing),
|
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY() + spacing),
|
||||||
new Point(firstPoint.x + 2 * spacing, firstPoint.y),
|
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY() + 2 * spacing),
|
||||||
new Point(firstPoint.x + 2 * spacing, firstPoint.y + spacing),
|
new Point2D.Double(firstPoint.getX() + 2 * spacing, firstPoint.getY()),
|
||||||
new Point(firstPoint.x + 2 * spacing, firstPoint.y + 2 * spacing)};
|
new Point2D.Double(firstPoint.getX() + 2 * spacing, firstPoint.getY() + spacing),
|
||||||
|
new Point2D.Double(firstPoint.getX() + 2 * spacing, firstPoint.getY() + 2 * spacing)};
|
||||||
break;
|
break;
|
||||||
case _4PDT:
|
case _4PDT:
|
||||||
case _4PDT_off:
|
case _4PDT_off:
|
||||||
controlPoints =
|
controlPoints =
|
||||||
new Point[] {firstPoint, new Point(firstPoint.x, firstPoint.y + spacing),
|
new Point2D[] {firstPoint, new Point2D.Double(firstPoint.getX(), firstPoint.getY() + spacing),
|
||||||
new Point(firstPoint.x, firstPoint.y + 2 * spacing), new Point(firstPoint.x + spacing, firstPoint.y),
|
new Point2D.Double(firstPoint.getX(), firstPoint.getY() + 2 * spacing),
|
||||||
new Point(firstPoint.x + spacing, firstPoint.y + spacing),
|
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY()),
|
||||||
new Point(firstPoint.x + spacing, firstPoint.y + 2 * spacing),
|
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY() + spacing),
|
||||||
new Point(firstPoint.x + 2 * spacing, firstPoint.y),
|
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY() + 2 * spacing),
|
||||||
new Point(firstPoint.x + 2 * spacing, firstPoint.y + spacing),
|
new Point2D.Double(firstPoint.getX() + 2 * spacing, firstPoint.getY()),
|
||||||
new Point(firstPoint.x + 2 * spacing, firstPoint.y + 2 * spacing),
|
new Point2D.Double(firstPoint.getX() + 2 * spacing, firstPoint.getY() + spacing),
|
||||||
new Point(firstPoint.x + 3 * spacing, firstPoint.y),
|
new Point2D.Double(firstPoint.getX() + 2 * spacing, firstPoint.getY() + 2 * spacing),
|
||||||
new Point(firstPoint.x + 3 * spacing, firstPoint.y + spacing),
|
new Point2D.Double(firstPoint.getX() + 3 * spacing, firstPoint.getY()),
|
||||||
new Point(firstPoint.x + 3 * spacing, firstPoint.y + 2 * spacing)};
|
new Point2D.Double(firstPoint.getX() + 3 * spacing, firstPoint.getY() + spacing),
|
||||||
|
new Point2D.Double(firstPoint.getX() + 3 * spacing, firstPoint.getY() + 2 * spacing)};
|
||||||
break;
|
break;
|
||||||
case _5PDT:
|
case _5PDT:
|
||||||
case _5PDT_off:
|
case _5PDT_off:
|
||||||
controlPoints =
|
controlPoints =
|
||||||
new Point[] {firstPoint, new Point(firstPoint.x, firstPoint.y + spacing),
|
new Point2D[] {firstPoint, new Point2D.Double(firstPoint.getX(), firstPoint.getY() + spacing),
|
||||||
new Point(firstPoint.x, firstPoint.y + 2 * spacing), new Point(firstPoint.x + spacing, firstPoint.y),
|
new Point2D.Double(firstPoint.getX(), firstPoint.getY() + 2 * spacing),
|
||||||
new Point(firstPoint.x + spacing, firstPoint.y + spacing),
|
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY()),
|
||||||
new Point(firstPoint.x + spacing, firstPoint.y + 2 * spacing),
|
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY() + spacing),
|
||||||
new Point(firstPoint.x + 2 * spacing, firstPoint.y),
|
new Point2D.Double(firstPoint.getX() + spacing, firstPoint.getY() + 2 * spacing),
|
||||||
new Point(firstPoint.x + 2 * spacing, firstPoint.y + spacing),
|
new Point2D.Double(firstPoint.getX() + 2 * spacing, firstPoint.getY()),
|
||||||
new Point(firstPoint.x + 2 * spacing, firstPoint.y + 2 * spacing),
|
new Point2D.Double(firstPoint.getX() + 2 * spacing, firstPoint.getY() + spacing),
|
||||||
new Point(firstPoint.x + 3 * spacing, firstPoint.y),
|
new Point2D.Double(firstPoint.getX() + 2 * spacing, firstPoint.getY() + 2 * spacing),
|
||||||
new Point(firstPoint.x + 3 * spacing, firstPoint.y + spacing),
|
new Point2D.Double(firstPoint.getX() + 3 * spacing, firstPoint.getY()),
|
||||||
new Point(firstPoint.x + 3 * spacing, firstPoint.y + 2 * spacing),
|
new Point2D.Double(firstPoint.getX() + 3 * spacing, firstPoint.getY() + spacing),
|
||||||
new Point(firstPoint.x + 4 * spacing, firstPoint.y),
|
new Point2D.Double(firstPoint.getX() + 3 * spacing, firstPoint.getY() + 2 * spacing),
|
||||||
new Point(firstPoint.x + 4 * spacing, firstPoint.y + spacing),
|
new Point2D.Double(firstPoint.getX() + 4 * spacing, firstPoint.getY()),
|
||||||
new Point(firstPoint.x + 4 * spacing, firstPoint.y + 2 * spacing)};
|
new Point2D.Double(firstPoint.getX() + 4 * spacing, firstPoint.getY() + spacing),
|
||||||
|
new Point2D.Double(firstPoint.getX() + 4 * spacing, firstPoint.getY() + 2 * spacing)};
|
||||||
break;
|
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) {
|
if (getOrientation() == OrientationHV.HORIZONTAL) {
|
||||||
for (int i = 1; i < controlPoints.length; i++) {
|
for (int i = 1; i < controlPoints.length; i++) {
|
||||||
xform.transform(controlPoints[i], controlPoints[i]);
|
xform.transform(controlPoints[i], controlPoints[i]);
|
||||||
@@ -166,7 +170,7 @@ public class MiniToggleSwitch extends AbstractTransparentComponent<ToggleSwitchT
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -186,7 +190,7 @@ public class MiniToggleSwitch extends AbstractTransparentComponent<ToggleSwitchT
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
controlPoints[index].setLocation(point);
|
controlPoints[index].setLocation(point);
|
||||||
// Reset body shape.
|
// Reset body shape.
|
||||||
body = null;
|
body = null;
|
||||||
@@ -285,68 +289,68 @@ public class MiniToggleSwitch extends AbstractTransparentComponent<ToggleSwitchT
|
|||||||
int circleDiameter = getClosestOdd((int) CIRCLE_SIZE.convertToPixels());
|
int circleDiameter = getClosestOdd((int) CIRCLE_SIZE.convertToPixels());
|
||||||
int lugWidth = getClosestOdd((int) LUG_WIDTH.convertToPixels());
|
int lugWidth = getClosestOdd((int) LUG_WIDTH.convertToPixels());
|
||||||
int lugHeight = getClosestOdd((int) LUG_THICKNESS.convertToPixels());
|
int lugHeight = getClosestOdd((int) LUG_THICKNESS.convertToPixels());
|
||||||
for (Point p : controlPoints) {
|
for (Point2D p : controlPoints) {
|
||||||
if (outlineMode) {
|
if (outlineMode) {
|
||||||
g2d.setColor(theme.getOutlineColor());
|
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 {
|
} else {
|
||||||
g2d.setColor(CIRCLE_COLOR);
|
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.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() {
|
public Shape getBody() {
|
||||||
if (body == null) {
|
if (body == null) {
|
||||||
Point firstPoint = controlPoints[0];
|
Point2D firstPoint = controlPoints[0];
|
||||||
int margin = (int) MARGIN.convertToPixels();
|
int margin = (int) MARGIN.convertToPixels();
|
||||||
int spacing = (int) getSpacing().convertToPixels();
|
int spacing = (int) getSpacing().convertToPixels();
|
||||||
switch (switchType) {
|
switch (switchType) {
|
||||||
case SPST:
|
case SPST:
|
||||||
body =
|
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);
|
+ spacing, margin, margin);
|
||||||
break;
|
break;
|
||||||
case SPDT:
|
case SPDT:
|
||||||
case SPDT_off:
|
case SPDT_off:
|
||||||
body =
|
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);
|
* spacing, margin, margin);
|
||||||
break;
|
break;
|
||||||
case DPDT:
|
case DPDT:
|
||||||
case DPDT_off:
|
case DPDT_off:
|
||||||
body =
|
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);
|
* margin + 2 * spacing, margin, margin);
|
||||||
break;
|
break;
|
||||||
case _DP3T_mustang:
|
case _DP3T_mustang:
|
||||||
body =
|
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);
|
* margin + 3 * spacing, margin, margin);
|
||||||
break;
|
break;
|
||||||
case _3PDT:
|
case _3PDT:
|
||||||
case _3PDT_off:
|
case _3PDT_off:
|
||||||
body =
|
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);
|
* margin + 2 * spacing, margin, margin);
|
||||||
break;
|
break;
|
||||||
case _4PDT:
|
case _4PDT:
|
||||||
case _4PDT_off:
|
case _4PDT_off:
|
||||||
body =
|
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);
|
* margin + 2 * spacing, margin, margin);
|
||||||
break;
|
break;
|
||||||
case _5PDT:
|
case _5PDT:
|
||||||
case _5PDT_off:
|
case _5PDT_off:
|
||||||
body =
|
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);
|
* margin + 2 * spacing, margin, margin);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (getOrientation() == OrientationHV.HORIZONTAL) {
|
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);
|
body = new Area(body);
|
||||||
((Area) body).transform(xform);
|
((Area) body).transform(xform);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import java.awt.Shape;
|
|||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.awt.geom.RoundRectangle2D;
|
import java.awt.geom.RoundRectangle2D;
|
||||||
|
|
||||||
@@ -77,7 +78,7 @@ public class OpenJack1_4 extends AbstractMultiPartComponent<String> {
|
|||||||
private static Size HOLE_TO_EDGE = new Size(0.063d, SizeUnit.in);
|
private static Size HOLE_TO_EDGE = new Size(0.063d, SizeUnit.in);
|
||||||
|
|
||||||
private String value = "";
|
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;
|
transient Area[] body;
|
||||||
@Deprecated
|
@Deprecated
|
||||||
private Orientation orientation = Orientation.DEFAULT;
|
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));
|
g2d.setFont(project.getFont().deriveFont(project.getFont().getSize2D() * 0.8f));
|
||||||
int springLength = (int) SPRING_LENGTH.convertToPixels();
|
int springLength = (int) SPRING_LENGTH.convertToPixels();
|
||||||
int holeToEdge = (int) HOLE_TO_EDGE.convertToPixels();
|
int holeToEdge = (int) HOLE_TO_EDGE.convertToPixels();
|
||||||
int centerY = controlPoints[0].y + springLength - holeToEdge;
|
double centerY = controlPoints[0].getY() + springLength - holeToEdge;
|
||||||
Point tipLabel = new Point(controlPoints[0].x, (int) (controlPoints[0].y + holeToEdge * 1.25));
|
Point2D tipLabel = new Point2D.Double(controlPoints[0].getX(), (int) (controlPoints[0].getY() + holeToEdge * 1.25));
|
||||||
AffineTransform ringTransform = AffineTransform.getRotateInstance(getType() == OpenJackType.SWITCHED ? SWITCH_THETA : RING_THETA, controlPoints[0].x, centerY);
|
AffineTransform ringTransform = AffineTransform.getRotateInstance(getType() == OpenJackType.SWITCHED ? SWITCH_THETA : RING_THETA, controlPoints[0].getX(), centerY);
|
||||||
AffineTransform sleeveTransform = AffineTransform.getRotateInstance(getType() == OpenJackType.SWITCHED ? SLEEVE_SWITCHED_THETA : SLEEVE_THETA, controlPoints[0].x, centerY);
|
AffineTransform sleeveTransform = AffineTransform.getRotateInstance(getType() == OpenJackType.SWITCHED ? SLEEVE_SWITCHED_THETA : SLEEVE_THETA, controlPoints[0].getX(), centerY);
|
||||||
Point ringOrSwitchLabel = new Point(0, 0);
|
Point ringOrSwitchLabel = new Point(0, 0);
|
||||||
Point sleeveLabel = new Point(0, 0);
|
Point sleeveLabel = new Point(0, 0);
|
||||||
ringTransform.transform(tipLabel, ringOrSwitchLabel);
|
ringTransform.transform(tipLabel, ringOrSwitchLabel);
|
||||||
sleeveTransform.transform(tipLabel, sleeveLabel);
|
sleeveTransform.transform(tipLabel, sleeveLabel);
|
||||||
|
|
||||||
if (getTheta() != 0) {
|
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(tipLabel, tipLabel);
|
||||||
rotation.transform(ringOrSwitchLabel, ringOrSwitchLabel);
|
rotation.transform(ringOrSwitchLabel, ringOrSwitchLabel);
|
||||||
rotation.transform(sleeveLabel, sleeveLabel);
|
rotation.transform(sleeveLabel, sleeveLabel);
|
||||||
}
|
}
|
||||||
StringUtils.drawCenteredText(g2d, "T", tipLabel.x, tipLabel.y, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
|
StringUtils.drawCenteredText(g2d, "T", tipLabel.getX(), tipLabel.getY(), HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
|
||||||
StringUtils.drawCenteredText(g2d, "S", sleeveLabel.x, sleeveLabel.y, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
|
StringUtils.drawCenteredText(g2d, "S", sleeveLabel.getX(), sleeveLabel.getY(), HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
|
||||||
if (getType() == OpenJackType.STEREO)
|
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)
|
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);
|
drawSelectionOutline(g2d, componentState, outlineMode, project, drawingObserver);
|
||||||
@@ -191,8 +192,8 @@ public class OpenJack1_4 extends AbstractMultiPartComponent<String> {
|
|||||||
if (body == null) {
|
if (body == null) {
|
||||||
body = new Area[4];
|
body = new Area[4];
|
||||||
|
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
int outerDiameter = getClosestOdd(OUTER_DIAMETER.convertToPixels());
|
int outerDiameter = getClosestOdd(OUTER_DIAMETER.convertToPixels());
|
||||||
int innerDiameter = getClosestOdd(INNER_DIAMETER.convertToPixels());
|
int innerDiameter = getClosestOdd(INNER_DIAMETER.convertToPixels());
|
||||||
int ringDiameter = getClosestOdd(RING_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 holeDiameter = getClosestOdd(HOLE_DIAMETER.convertToPixels());
|
||||||
int holeToEdge = (int) HOLE_TO_EDGE.convertToPixels();
|
int holeToEdge = (int) HOLE_TO_EDGE.convertToPixels();
|
||||||
|
|
||||||
int centerY = y + springLength - holeToEdge;
|
double centerY = y + springLength - holeToEdge;
|
||||||
|
|
||||||
Area wafer =
|
Area wafer =
|
||||||
new Area(new Ellipse2D.Double(x - outerDiameter / 2, centerY - outerDiameter / 2, outerDiameter,
|
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() {
|
private void updateControlPoints() {
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
|
|
||||||
int springLength = (int) SPRING_LENGTH.convertToPixels();
|
int springLength = (int) SPRING_LENGTH.convertToPixels();
|
||||||
int holeToEdge = (int) HOLE_TO_EDGE.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 ? 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]);
|
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
|
// Rotate if needed
|
||||||
if (getTheta() != 0) {
|
if (getTheta() != 0) {
|
||||||
AffineTransform rotation = AffineTransform.getRotateInstance(getTheta(), x, y);
|
AffineTransform rotation = AffineTransform.getRotateInstance(getTheta(), x, y);
|
||||||
for (Point point : controlPoints) {
|
for (Point2D point : controlPoints) {
|
||||||
rotation.transform(point, point);
|
rotation.transform(point, point);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -328,12 +329,12 @@ public class OpenJack1_4 extends AbstractMultiPartComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
this.controlPoints[index].setLocation(point);
|
this.controlPoints[index].setLocation(point);
|
||||||
// Invalidate the body
|
// Invalidate the body
|
||||||
body = null;
|
body = null;
|
||||||
|
|||||||
+14
-14
@@ -25,12 +25,12 @@ import java.awt.AlphaComposite;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
import java.awt.geom.Path2D;
|
import java.awt.geom.Path2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.awt.geom.RoundRectangle2D;
|
import java.awt.geom.RoundRectangle2D;
|
||||||
|
|
||||||
@@ -76,7 +76,7 @@ public class PilotLampHolder extends AbstractMultiPartComponent<String> {
|
|||||||
private static Size HOLE_SPACING = new Size(0.1d, SizeUnit.in);
|
private static Size HOLE_SPACING = new Size(0.1d, SizeUnit.in);
|
||||||
|
|
||||||
private String value = "";
|
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;
|
transient Area[] body;
|
||||||
@Deprecated
|
@Deprecated
|
||||||
private Orientation orientation = Orientation.DEFAULT;
|
private Orientation orientation = Orientation.DEFAULT;
|
||||||
@@ -162,8 +162,8 @@ public class PilotLampHolder extends AbstractMultiPartComponent<String> {
|
|||||||
if (body == null) {
|
if (body == null) {
|
||||||
body = new Area[6];
|
body = new Area[6];
|
||||||
|
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
int threadOuterDiameter = getClosestOdd(THREAD_OUTER_DIAMETER.convertToPixels());
|
int threadOuterDiameter = getClosestOdd(THREAD_OUTER_DIAMETER.convertToPixels());
|
||||||
int threadThickness = getClosestOdd(THREAD_THICKNESS.convertToPixels());
|
int threadThickness = getClosestOdd(THREAD_THICKNESS.convertToPixels());
|
||||||
int nutDiameter = getClosestOdd(NUT_DIAMETER.convertToPixels());
|
int nutDiameter = getClosestOdd(NUT_DIAMETER.convertToPixels());
|
||||||
@@ -175,7 +175,7 @@ public class PilotLampHolder extends AbstractMultiPartComponent<String> {
|
|||||||
int holeDiameter = getClosestOdd(HOLE_DIAMETER.convertToPixels());
|
int holeDiameter = getClosestOdd(HOLE_DIAMETER.convertToPixels());
|
||||||
int holeToEdge = (int) HOLE_TO_EDGE.convertToPixels();
|
int holeToEdge = (int) HOLE_TO_EDGE.convertToPixels();
|
||||||
|
|
||||||
int centerY = y + springLength - holeToEdge;
|
double centerY = y + springLength - holeToEdge;
|
||||||
|
|
||||||
Area wafer =
|
Area wafer =
|
||||||
new Area(new Ellipse2D.Double(x - waferDiameter / 2, centerY - waferDiameter / 2, waferDiameter,
|
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 (int i = 1; i <= 2; i++)
|
||||||
for (Point p : controlPoints)
|
for (Point2D p : controlPoints)
|
||||||
body[i].subtract(new Area(new Ellipse2D.Double(p.x - holeDiameter / 2, p.y - holeDiameter / 2, holeDiameter, holeDiameter)));
|
body[i].subtract(new Area(new Ellipse2D.Double(p.getX() - holeDiameter / 2, p.getY() - holeDiameter / 2, holeDiameter, holeDiameter)));
|
||||||
}
|
}
|
||||||
|
|
||||||
return body;
|
return body;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateControlPoints() {
|
private void updateControlPoints() {
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
|
|
||||||
int springLength = (int) SPRING_LENGTH.convertToPixels();
|
int springLength = (int) SPRING_LENGTH.convertToPixels();
|
||||||
int holeToEdge = (int) HOLE_TO_EDGE.convertToPixels();
|
int holeToEdge = (int) HOLE_TO_EDGE.convertToPixels();
|
||||||
int holeSpacing = (int) HOLE_SPACING.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);
|
AffineTransform rotation = AffineTransform.getRotateInstance(Math.PI * 0.295, x, centerY);
|
||||||
|
|
||||||
rotation.transform(controlPoints[0], controlPoints[1]);
|
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]);
|
rotation.transform(controlPoints[2], controlPoints[3]);
|
||||||
|
|
||||||
// Rotate if needed
|
// Rotate if needed
|
||||||
if (getTheta() != 0) {
|
if (getTheta() != 0) {
|
||||||
rotation = AffineTransform.getRotateInstance(getTheta(), x, y);
|
rotation = AffineTransform.getRotateInstance(getTheta(), x, y);
|
||||||
for (Point point : controlPoints) {
|
for (Point2D point : controlPoints) {
|
||||||
rotation.transform(point, point);
|
rotation.transform(point, point);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -365,12 +365,12 @@ public class PilotLampHolder extends AbstractMultiPartComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
this.controlPoints[index].setLocation(point);
|
this.controlPoints[index].setLocation(point);
|
||||||
// Invalidate the body
|
// Invalidate the body
|
||||||
body = null;
|
body = null;
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ import java.awt.Point;
|
|||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import org.diylc.appframework.miscutils.ConfigurationManager;
|
import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||||
@@ -65,7 +66,7 @@ public class PinHeader extends AbstractTransparentComponent<Void> {
|
|||||||
|
|
||||||
private Orientation orientation = Orientation.DEFAULT;
|
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 rowCount = 2;
|
||||||
private int columnCount = 5;
|
private int columnCount = 5;
|
||||||
private Size spacing = PIN_SPACING;
|
private Size spacing = PIN_SPACING;
|
||||||
@@ -99,7 +100,7 @@ public class PinHeader extends AbstractTransparentComponent<Void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -114,26 +115,26 @@ public class PinHeader extends AbstractTransparentComponent<Void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
controlPoints[index].setLocation(point);
|
controlPoints[index].setLocation(point);
|
||||||
body = null;
|
body = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateControlPoints() {
|
private void updateControlPoints() {
|
||||||
Point firstPoint = controlPoints[0];
|
Point2D firstPoint = controlPoints[0];
|
||||||
int pinCount = rowCount * columnCount;
|
int pinCount = rowCount * columnCount;
|
||||||
controlPoints = new Point[pinCount];
|
controlPoints = new Point2D[pinCount];
|
||||||
controlPoints[0] = firstPoint;
|
controlPoints[0] = firstPoint;
|
||||||
double pinSpacing = spacing.convertToPixels();
|
double pinSpacing = spacing.convertToPixels();
|
||||||
|
|
||||||
for (int i = 0; i < columnCount; i++)
|
for (int i = 0; i < columnCount; i++)
|
||||||
for (int j = 0; j < rowCount; j++)
|
for (int j = 0; j < rowCount; j++)
|
||||||
controlPoints[i + j * columnCount] = new Point((int)Math.round(firstPoint.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
|
// Apply rotation if necessary
|
||||||
double angle = getAngle();
|
double angle = getAngle();
|
||||||
if (angle != 0) {
|
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++) {
|
for (int i = 1; i < controlPoints.length; i++) {
|
||||||
rotation.transform(controlPoints[i], controlPoints[i]);
|
rotation.transform(controlPoints[i], controlPoints[i]);
|
||||||
}
|
}
|
||||||
@@ -163,11 +164,11 @@ public class PinHeader extends AbstractTransparentComponent<Void> {
|
|||||||
public Area[] getBody() {
|
public Area[] getBody() {
|
||||||
if (body == null) {
|
if (body == null) {
|
||||||
body = new Area[2];
|
body = new Area[2];
|
||||||
int centerX = (controlPoints[0].x + controlPoints[controlPoints.length - 1].x) / 2;
|
double centerX = (controlPoints[0].getX() + controlPoints[controlPoints.length - 1].getX()) / 2;
|
||||||
int centerY = (controlPoints[0].y + controlPoints[controlPoints.length - 1].y) / 2;
|
double centerY = (controlPoints[0].getY() + controlPoints[controlPoints.length - 1].getY()) / 2;
|
||||||
double pinSpacing = spacing.convertToPixels();
|
double pinSpacing = spacing.convertToPixels();
|
||||||
double width = Math.abs((controlPoints[0].x - controlPoints[controlPoints.length - 1].x)) + pinSpacing;
|
double width = Math.abs((controlPoints[0].getX() - controlPoints[controlPoints.length - 1].getX())) + pinSpacing;
|
||||||
double height = Math.abs((controlPoints[0].y - controlPoints[controlPoints.length - 1].y)) + pinSpacing;
|
double height = Math.abs((controlPoints[0].getY() - controlPoints[controlPoints.length - 1].getY())) + pinSpacing;
|
||||||
if (shrouded) {
|
if (shrouded) {
|
||||||
if (orientation == Orientation.DEFAULT || orientation == Orientation._180) {
|
if (orientation == Orientation.DEFAULT || orientation == Orientation._180) {
|
||||||
height += 2 * pinSpacing;
|
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);
|
Theme theme = (Theme) ConfigurationManager.getInstance().readObject(IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME);
|
||||||
int pinSize = (int) PIN_SIZE.convertToPixels() / 2 * 2;
|
int pinSize = (int) PIN_SIZE.convertToPixels() / 2 * 2;
|
||||||
for (Point point : controlPoints) {
|
for (Point2D point : controlPoints) {
|
||||||
if (!outlineMode) {
|
if (!outlineMode) {
|
||||||
g2d.setColor(PIN_COLOR);
|
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.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;
|
Color finalBorderColor;
|
||||||
@@ -358,21 +359,21 @@ public class PinHeader extends AbstractTransparentComponent<Void> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Rectangle2D getCachingBounds() {
|
public Rectangle2D getCachingBounds() {
|
||||||
int minX = Integer.MAX_VALUE;
|
double minX = Integer.MAX_VALUE;
|
||||||
int maxX = Integer.MIN_VALUE;
|
double maxX = Integer.MIN_VALUE;
|
||||||
int minY = Integer.MAX_VALUE;
|
double minY = Integer.MAX_VALUE;
|
||||||
int maxY = Integer.MIN_VALUE;
|
double maxY = Integer.MIN_VALUE;
|
||||||
int margin = 50;
|
int margin = 50;
|
||||||
for (int i = 0; i < getControlPointCount(); i++) {
|
for (int i = 0; i < getControlPointCount(); i++) {
|
||||||
Point p = getControlPoint(i);
|
Point2D p = getControlPoint(i);
|
||||||
if (p.x < minX)
|
if (p.getX() < minX)
|
||||||
minX = p.x;
|
minX = p.getX();
|
||||||
if (p.x > maxX)
|
if (p.getX() > maxX)
|
||||||
maxX = p.x;
|
maxX = p.getX();
|
||||||
if (p.y < minY)
|
if (p.getY() < minY)
|
||||||
minY = p.y;
|
minY = p.getY();
|
||||||
if (p.y > maxY)
|
if (p.getY() > maxY)
|
||||||
maxY = p.y;
|
maxY = p.getY();
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Rectangle2D.Double(minX - margin, minY - margin, maxX - minX + 2 * margin, maxY - minY + 2 * margin);
|
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.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Rectangle;
|
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import org.diylc.appframework.miscutils.ConfigurationManager;
|
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 BORDER_COLOR = Color.black;
|
||||||
private static Color MARKING_COLOR = Color.lightGray;
|
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 String value = "";
|
||||||
private DCPolarity polarity = DCPolarity.CENTER_NEGATIVE;
|
private DCPolarity polarity = DCPolarity.CENTER_NEGATIVE;
|
||||||
transient private Area[] body;
|
transient private Area[] body;
|
||||||
@@ -80,12 +79,12 @@ public class PlasticDCJack extends AbstractMultiPartComponent<String> {
|
|||||||
// invalidate body shape
|
// invalidate body shape
|
||||||
body = null;
|
body = null;
|
||||||
|
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
|
|
||||||
int spacing = (int) SPACING.convertToPixels();
|
int spacing = (int) SPACING.convertToPixels();
|
||||||
controlPoints[1] = new Point(x + spacing, y + spacing);
|
controlPoints[1] = new Point2D.Double(x + spacing, y + spacing);
|
||||||
controlPoints[2] = new Point(x - spacing, y + spacing * 2);
|
controlPoints[2] = new Point2D.Double(x - spacing, y + spacing * 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -93,36 +92,36 @@ public class PlasticDCJack extends AbstractMultiPartComponent<String> {
|
|||||||
if (body == null) {
|
if (body == null) {
|
||||||
body = new Area[4];
|
body = new Area[4];
|
||||||
|
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
int spacing = (int) SPACING.convertToPixels();
|
int spacing = (int) SPACING.convertToPixels();
|
||||||
int diameter = getClosestOdd(DIAMETER.convertToPixels());
|
int diameter = getClosestOdd(DIAMETER.convertToPixels());
|
||||||
body[0] = new Area(new Ellipse2D.Double(x - diameter / 2, y + spacing - diameter / 2, diameter, diameter));
|
body[0] = new Area(new Ellipse2D.Double(x - diameter / 2, y + spacing - diameter / 2, diameter, diameter));
|
||||||
|
|
||||||
int rectWidth = (int) (diameter / Math.sqrt(2)) - 2;
|
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 lugWidth = getClosestOdd(LUG_WIDTH.convertToPixels());
|
||||||
int lugThickness = getClosestOdd(LUG_THICKNESS.convertToPixels());
|
int lugThickness = getClosestOdd(LUG_THICKNESS.convertToPixels());
|
||||||
|
|
||||||
Point groundPoint = controlPoints[controlPoints.length - 1];
|
Point2D groundPoint = controlPoints[controlPoints.length - 1];
|
||||||
Area groundLug =
|
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));
|
lugWidth));
|
||||||
groundLug.add(new Area(new Rectangle(groundPoint.x, groundPoint.y - lugWidth / 2, spacing, lugWidth)));
|
groundLug.add(new Area(new Rectangle2D.Double(groundPoint.getX(), groundPoint.getY() - lugWidth / 2, spacing, lugWidth)));
|
||||||
groundLug.subtract(new Area(new Ellipse2D.Double(groundPoint.x + spacing - lugWidth / 6, groundPoint.y - lugWidth
|
groundLug.subtract(new Area(new Ellipse2D.Double(groundPoint.getX() + spacing - lugWidth / 6, groundPoint.getY() - lugWidth
|
||||||
/ 6, lugWidth / 3, lugWidth / 3)));
|
/ 6, lugWidth / 3, lugWidth / 3)));
|
||||||
body[2] = groundLug;
|
body[2] = groundLug;
|
||||||
|
|
||||||
Area lugArea = new Area();
|
Area lugArea = new Area();
|
||||||
for (int i = 0; i < controlPoints.length; i++) {
|
for (int i = 0; i < controlPoints.length; i++) {
|
||||||
Point point = controlPoints[i];
|
Point2D point = controlPoints[i];
|
||||||
if (i == getControlPointCount() - 1) {
|
if (i == getControlPointCount() - 1) {
|
||||||
lugArea.add(new Area(
|
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 {
|
} else {
|
||||||
lugArea.add(new Area(
|
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;
|
body[3] = lugArea;
|
||||||
@@ -184,10 +183,10 @@ public class PlasticDCJack extends AbstractMultiPartComponent<String> {
|
|||||||
int spacing = (int) SPACING.convertToPixels();
|
int spacing = (int) SPACING.convertToPixels();
|
||||||
g2d.setColor(MARKING_COLOR);
|
g2d.setColor(MARKING_COLOR);
|
||||||
g2d.setFont(project.getFont().deriveFont(12f));
|
g2d.setFont(project.getFont().deriveFont(12f));
|
||||||
StringUtils.drawCenteredText(g2d, getPolarity() == DCPolarity.CENTER_NEGATIVE ? "+" : "-", controlPoints[0].x,
|
StringUtils.drawCenteredText(g2d, getPolarity() == DCPolarity.CENTER_NEGATIVE ? "+" : "-", controlPoints[0].getX(),
|
||||||
controlPoints[0].y - spacing * 7 / 16, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
|
controlPoints[0].getY() - spacing * 7 / 16, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
|
||||||
StringUtils.drawCenteredText(g2d, getPolarity() == DCPolarity.CENTER_NEGATIVE ? "_" : "+", controlPoints[2].x,
|
StringUtils.drawCenteredText(g2d, getPolarity() == DCPolarity.CENTER_NEGATIVE ? "_" : "+", controlPoints[2].getX(),
|
||||||
controlPoints[2].y - spacing * 3 / 4, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
|
controlPoints[2].getY() - spacing * 3 / 4, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
|
||||||
}
|
}
|
||||||
|
|
||||||
drawSelectionOutline(g2d, componentState, outlineMode, project, drawingObserver);
|
drawSelectionOutline(g2d, componentState, outlineMode, project, drawingObserver);
|
||||||
@@ -222,12 +221,12 @@ public class PlasticDCJack extends AbstractMultiPartComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
controlPoints[index].setLocation(point);
|
controlPoints[index].setLocation(point);
|
||||||
this.body = null;
|
this.body = null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import java.awt.AlphaComposite;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
@@ -71,7 +70,7 @@ public class RCAJack extends AbstractMultiPartComponent<String> {
|
|||||||
private static Size HOLE_TO_EDGE = new Size(0.063d, SizeUnit.in);
|
private static Size HOLE_TO_EDGE = new Size(0.063d, SizeUnit.in);
|
||||||
|
|
||||||
private String value = "";
|
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;
|
transient Area[] body;
|
||||||
private Orientation orientation = Orientation.DEFAULT;
|
private Orientation orientation = Orientation.DEFAULT;
|
||||||
|
|
||||||
@@ -147,10 +146,10 @@ public class RCAJack extends AbstractMultiPartComponent<String> {
|
|||||||
if (body == null) {
|
if (body == null) {
|
||||||
body = new Area[4];
|
body = new Area[4];
|
||||||
|
|
||||||
int x0 = controlPoints[0].x;
|
double x0 = controlPoints[0].getX();
|
||||||
int y0 = controlPoints[0].y;
|
double y0 = controlPoints[0].getY();
|
||||||
int x1 = controlPoints[1].x;
|
double x1 = controlPoints[1].getX();
|
||||||
int y1 = controlPoints[1].y;
|
double y1 = controlPoints[1].getY();
|
||||||
int bodyDiameter = getClosestOdd(BODY_DIAMETER.convertToPixels());
|
int bodyDiameter = getClosestOdd(BODY_DIAMETER.convertToPixels());
|
||||||
int waferDiameter = getClosestOdd(WAFER_DIAMETER.convertToPixels());
|
int waferDiameter = getClosestOdd(WAFER_DIAMETER.convertToPixels());
|
||||||
int springWidth = (int) SPRING_WIDTH.convertToPixels();
|
int springWidth = (int) SPRING_WIDTH.convertToPixels();
|
||||||
@@ -202,13 +201,13 @@ public class RCAJack extends AbstractMultiPartComponent<String> {
|
|||||||
|
|
||||||
@SuppressWarnings("incomplete-switch")
|
@SuppressWarnings("incomplete-switch")
|
||||||
private void updateControlPoints() {
|
private void updateControlPoints() {
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
|
|
||||||
int springLength = (int) SPRING_LENGTH.convertToPixels();
|
int springLength = (int) SPRING_LENGTH.convertToPixels();
|
||||||
int holeToEdge = (int) HOLE_TO_EDGE.convertToPixels();
|
int holeToEdge = (int) HOLE_TO_EDGE.convertToPixels();
|
||||||
|
|
||||||
int centerY = y + springLength - holeToEdge;
|
double centerY = y + springLength - holeToEdge;
|
||||||
|
|
||||||
controlPoints[1].setLocation(x, centerY);
|
controlPoints[1].setLocation(x, centerY);
|
||||||
|
|
||||||
@@ -284,12 +283,12 @@ public class RCAJack extends AbstractMultiPartComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
this.controlPoints[index].setLocation(point);
|
this.controlPoints[index].setLocation(point);
|
||||||
// Invalidate the body
|
// Invalidate the body
|
||||||
body = null;
|
body = null;
|
||||||
|
|||||||
+14
-14
@@ -22,11 +22,11 @@ import java.awt.AlphaComposite;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.awt.geom.RoundRectangle2D;
|
import java.awt.geom.RoundRectangle2D;
|
||||||
|
|
||||||
@@ -73,8 +73,8 @@ public class RotarySelectorSwitch extends AbstractMultiPartComponent<String> {
|
|||||||
private static Size HOLE_DIAMETER = new Size(2.5d, SizeUnit.mm);
|
private static Size HOLE_DIAMETER = new Size(2.5d, SizeUnit.mm);
|
||||||
|
|
||||||
private String value = "";
|
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),
|
||||||
new Point(0, 0), new Point(0, 0)};
|
new Point2D.Double(0, 0), new Point2D.Double(0, 0)};
|
||||||
transient Area[] body;
|
transient Area[] body;
|
||||||
private Orientation orientation = Orientation.DEFAULT;
|
private Orientation orientation = Orientation.DEFAULT;
|
||||||
private boolean showLabels = true;
|
private boolean showLabels = true;
|
||||||
@@ -154,8 +154,8 @@ public class RotarySelectorSwitch extends AbstractMultiPartComponent<String> {
|
|||||||
g2d.setFont(project.getFont().deriveFont(project.getFont().getSize2D() * 0.8f));
|
g2d.setFont(project.getFont().deriveFont(project.getFont().getSize2D() * 0.8f));
|
||||||
for (int i = 2; i < body.length; i++) {
|
for (int i = 2; i < body.length; i++) {
|
||||||
Rectangle2D bounds = body[i].getBounds2D();
|
Rectangle2D bounds = body[i].getBounds2D();
|
||||||
int x = (int) ((bounds.getCenterX() + controlPoints[i - 2].x) / 2);
|
double x = (int) ((bounds.getCenterX() + controlPoints[i - 2].getX()) / 2);
|
||||||
int y = (int) ((bounds.getCenterY() + controlPoints[i - 2].y) / 2);
|
double y = (int) ((bounds.getCenterY() + controlPoints[i - 2].getY()) / 2);
|
||||||
StringUtils.drawCenteredText(g2d, i == 2 ? "C" : String.valueOf(i - 2), x, y,
|
StringUtils.drawCenteredText(g2d, i == 2 ? "C" : String.valueOf(i - 2), x, y,
|
||||||
HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
|
HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
|
||||||
}
|
}
|
||||||
@@ -168,8 +168,8 @@ public class RotarySelectorSwitch extends AbstractMultiPartComponent<String> {
|
|||||||
if (body == null) {
|
if (body == null) {
|
||||||
body = new Area[3 + getPositionCount().getCount()];
|
body = new Area[3 + getPositionCount().getCount()];
|
||||||
|
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
int outerDiameter = getClosestOdd(OUTER_DIAMETER.convertToPixels());
|
int outerDiameter = getClosestOdd(OUTER_DIAMETER.convertToPixels());
|
||||||
int innerDiameter = getClosestOdd(INNER_DIAMETER.convertToPixels());
|
int innerDiameter = getClosestOdd(INNER_DIAMETER.convertToPixels());
|
||||||
int springLength = (int) TERMINAL_LENGTH.convertToPixels();
|
int springLength = (int) TERMINAL_LENGTH.convertToPixels();
|
||||||
@@ -177,7 +177,7 @@ public class RotarySelectorSwitch extends AbstractMultiPartComponent<String> {
|
|||||||
int holeDiameter = getClosestOdd(HOLE_DIAMETER.convertToPixels());
|
int holeDiameter = getClosestOdd(HOLE_DIAMETER.convertToPixels());
|
||||||
int holeDistance = (int) HOLE_DISTANCE.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,
|
Area main = new Area(new Ellipse2D.Double(x - outerDiameter / 2, centerY - outerDiameter / 2,
|
||||||
outerDiameter, outerDiameter));
|
outerDiameter, outerDiameter));
|
||||||
@@ -218,12 +218,12 @@ public class RotarySelectorSwitch extends AbstractMultiPartComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateControlPoints() {
|
private void updateControlPoints() {
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
|
|
||||||
int holeDistance = (int) HOLE_DISTANCE.convertToPixels();
|
int holeDistance = (int) HOLE_DISTANCE.convertToPixels();
|
||||||
|
|
||||||
int centerY = y - holeDistance;
|
double centerY = y - holeDistance;
|
||||||
|
|
||||||
for (int i = 1; i < controlPoints.length; i++) {
|
for (int i = 1; i < controlPoints.length; i++) {
|
||||||
double theta = -i * Math.PI / 4;
|
double theta = -i * Math.PI / 4;
|
||||||
@@ -236,7 +236,7 @@ public class RotarySelectorSwitch extends AbstractMultiPartComponent<String> {
|
|||||||
// Rotate if needed
|
// Rotate if needed
|
||||||
if (theta != 0) {
|
if (theta != 0) {
|
||||||
AffineTransform rotation = AffineTransform.getRotateInstance(theta, x, y);
|
AffineTransform rotation = AffineTransform.getRotateInstance(theta, x, y);
|
||||||
for (Point point : controlPoints) {
|
for (Point2D point : controlPoints) {
|
||||||
rotation.transform(point, point);
|
rotation.transform(point, point);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -292,12 +292,12 @@ public class RotarySelectorSwitch extends AbstractMultiPartComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
this.controlPoints[index].setLocation(point);
|
this.controlPoints[index].setLocation(point);
|
||||||
// Invalidate the body
|
// Invalidate the body
|
||||||
body = null;
|
body = null;
|
||||||
|
|||||||
@@ -20,11 +20,11 @@ package org.diylc.components.guitar;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Font;
|
import java.awt.Font;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Rectangle;
|
import java.awt.Rectangle;
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import org.diylc.appframework.miscutils.ConfigurationManager;
|
import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||||
@@ -56,8 +56,8 @@ public abstract class AbstractGuitarPickup extends AbstractTransparentComponent<
|
|||||||
protected Orientation orientation = Orientation.DEFAULT;
|
protected Orientation orientation = Orientation.DEFAULT;
|
||||||
protected transient Shape[] body;
|
protected transient Shape[] body;
|
||||||
|
|
||||||
protected Point controlPoint = new Point(0, 0);
|
protected Point2D controlPoint = new Point2D.Double(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[] 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;
|
protected Polarity polarity = Polarity.North;
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ public abstract class AbstractGuitarPickup extends AbstractTransparentComponent<
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void drawlTerminalLabels(Graphics2D g2d, Color color, Project project) {
|
protected void drawlTerminalLabels(Graphics2D g2d, Color color, Project project) {
|
||||||
Point[] points = getControlPoints();
|
Point2D[] points = getControlPoints();
|
||||||
g2d.setColor(color);
|
g2d.setColor(color);
|
||||||
|
|
||||||
g2d.setFont(project.getFont().deriveFont(TERMINAL_FONT_SIZE * 1f));
|
g2d.setFont(project.getFont().deriveFont(TERMINAL_FONT_SIZE * 1f));
|
||||||
@@ -93,8 +93,8 @@ public abstract class AbstractGuitarPickup extends AbstractTransparentComponent<
|
|||||||
break;
|
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, "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].x + points[3].x) / 2 + dx, (points[2].y + points[3].y) / 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) {
|
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();
|
Rectangle bounds = getBody()[0].getBounds();
|
||||||
|
|
||||||
AffineTransform originalTx = g2d.getTransform();
|
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)
|
if (orientation == Orientation._90)
|
||||||
g2d.rotate(Math.PI / 2);
|
g2d.rotate(Math.PI / 2);
|
||||||
else if (orientation == Orientation._270){
|
else if (orientation == Orientation._270){
|
||||||
@@ -159,11 +159,11 @@ public abstract class AbstractGuitarPickup extends AbstractTransparentComponent<
|
|||||||
updateControlPoints();
|
updateControlPoints();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Point[] getControlPoints() {
|
protected Point2D[] getControlPoints() {
|
||||||
if (controlPoints == null) {
|
if (controlPoints == null) {
|
||||||
controlPoints =
|
controlPoints =
|
||||||
new Point[] {controlPoint, new Point(controlPoint.x, controlPoint.y),
|
new Point2D[] {controlPoint, new Point2D.Double(controlPoint.getX(), controlPoint.getY()),
|
||||||
new Point(controlPoint.x, controlPoint.y), new Point(controlPoint.x, controlPoint.y)};
|
new Point2D.Double(controlPoint.getX(), controlPoint.getY()), new Point2D.Double(controlPoint.getX(), controlPoint.getY())};
|
||||||
updateControlPoints();
|
updateControlPoints();
|
||||||
}
|
}
|
||||||
return controlPoints;
|
return controlPoints;
|
||||||
@@ -181,12 +181,12 @@ public abstract class AbstractGuitarPickup extends AbstractTransparentComponent<
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return getControlPoints()[index];
|
return getControlPoints()[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
getControlPoints()[index].setLocation(point);
|
getControlPoints()[index].setLocation(point);
|
||||||
// Invalidate the body
|
// Invalidate the body
|
||||||
body = null;
|
body = null;
|
||||||
@@ -225,7 +225,7 @@ public abstract class AbstractGuitarPickup extends AbstractTransparentComponent<
|
|||||||
|
|
||||||
@SuppressWarnings("incomplete-switch")
|
@SuppressWarnings("incomplete-switch")
|
||||||
protected void updateControlPoints() {
|
protected void updateControlPoints() {
|
||||||
Point[] points = getControlPoints();
|
Point2D[] points = getControlPoints();
|
||||||
int pointSpacing = (int) POINT_SPACING.convertToPixels();
|
int pointSpacing = (int) POINT_SPACING.convertToPixels();
|
||||||
int dx = getControlPointDirection() == OrientationHV.HORIZONTAL ? 1 : 0;
|
int dx = getControlPointDirection() == OrientationHV.HORIZONTAL ? 1 : 0;
|
||||||
int dy = getControlPointDirection() == OrientationHV.HORIZONTAL ? 0 : 1;
|
int dy = getControlPointDirection() == OrientationHV.HORIZONTAL ? 0 : 1;
|
||||||
@@ -245,11 +245,11 @@ public abstract class AbstractGuitarPickup extends AbstractTransparentComponent<
|
|||||||
break;
|
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]
|
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]
|
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
|
@Override
|
||||||
|
|||||||
+5
-5
@@ -19,7 +19,7 @@ package org.diylc.components.guitar;
|
|||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
import org.diylc.awt.StringUtils;
|
import org.diylc.awt.StringUtils;
|
||||||
import org.diylc.common.HorizontalAlignment;
|
import org.diylc.common.HorizontalAlignment;
|
||||||
@@ -35,7 +35,7 @@ public abstract class AbstractSingleOrHumbuckerPickup extends AbstractGuitarPick
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void drawlTerminalLabels(Graphics2D g2d, Color color, Project project) {
|
protected void drawlTerminalLabels(Graphics2D g2d, Color color, Project project) {
|
||||||
Point[] points = getControlPoints();
|
Point2D[] points = getControlPoints();
|
||||||
g2d.setColor(color);
|
g2d.setColor(color);
|
||||||
|
|
||||||
g2d.setFont(project.getFont().deriveFont(TERMINAL_FONT_SIZE * 1f));
|
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) {
|
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);
|
VerticalAlignment.CENTER);
|
||||||
} else {
|
} 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, "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].x + points[3].x) / 2 + dx, (points[2].y + points[3].y) / 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.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.Stroke;
|
import java.awt.Stroke;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
import java.awt.geom.Path2D;
|
import java.awt.geom.Path2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.awt.geom.RoundRectangle2D;
|
import java.awt.geom.RoundRectangle2D;
|
||||||
|
|
||||||
@@ -187,9 +187,9 @@ public class HumbuckerPickup extends AbstractGuitarPickup {
|
|||||||
if (body == null) {
|
if (body == null) {
|
||||||
body = new Shape[7];
|
body = new Shape[7];
|
||||||
|
|
||||||
Point[] points = getControlPoints();
|
Point2D[] points = getControlPoints();
|
||||||
int x = points[0].x;
|
double x = points[0].getX();
|
||||||
int y = points[0].y;
|
double y = points[0].getY();
|
||||||
int width = (int) getType().getWidth().convertToPixels();
|
int width = (int) getType().getWidth().convertToPixels();
|
||||||
int length = (int) getType().getLength().convertToPixels();
|
int length = (int) getType().getLength().convertToPixels();
|
||||||
int lipWidth = (int) LIP_WIDTH.convertToPixels();
|
int lipWidth = (int) LIP_WIDTH.convertToPixels();
|
||||||
|
|||||||
@@ -25,11 +25,11 @@ import java.awt.AlphaComposite;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.RoundRectangle2D;
|
import java.awt.geom.RoundRectangle2D;
|
||||||
|
|
||||||
import org.diylc.appframework.miscutils.ConfigurationManager;
|
import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||||
@@ -144,9 +144,9 @@ public class JazzBassPickup extends AbstractSingleOrHumbuckerPickup {
|
|||||||
if (body == null) {
|
if (body == null) {
|
||||||
body = new Shape[4];
|
body = new Shape[4];
|
||||||
|
|
||||||
Point[] points = getControlPoints();
|
Point2D[] points = getControlPoints();
|
||||||
int x = points[0].x;
|
double x = points[0].getX();
|
||||||
int y = points[0].y;
|
double y = points[0].getY();
|
||||||
int width = (int) WIDTH.convertToPixels();
|
int width = (int) WIDTH.convertToPixels();
|
||||||
int length = (int) LENGTH.convertToPixels();
|
int length = (int) LENGTH.convertToPixels();
|
||||||
int edgeRadius = (int) EDGE_RADIUS.convertToPixels();
|
int edgeRadius = (int) EDGE_RADIUS.convertToPixels();
|
||||||
|
|||||||
@@ -25,11 +25,11 @@ import java.awt.AlphaComposite;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.GeneralPath;
|
import java.awt.geom.GeneralPath;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import org.diylc.appframework.miscutils.ConfigurationManager;
|
import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||||
@@ -66,7 +66,7 @@ public class LPSwitch extends AbstractTransparentComponent<String> implements IS
|
|||||||
private static Size TERMINAL_SPACING = new Size(0.2d, SizeUnit.in);
|
private static Size TERMINAL_SPACING = new Size(0.2d, SizeUnit.in);
|
||||||
|
|
||||||
private String value = "";
|
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;
|
transient Shape[] body;
|
||||||
private Orientation orientation = Orientation.DEFAULT;
|
private Orientation orientation = Orientation.DEFAULT;
|
||||||
|
|
||||||
@@ -135,8 +135,8 @@ public class LPSwitch extends AbstractTransparentComponent<String> implements IS
|
|||||||
if (body == null) {
|
if (body == null) {
|
||||||
body = new Shape[3];
|
body = new Shape[3];
|
||||||
|
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
int baseLength = (int) BASE_LENGTH.convertToPixels();
|
int baseLength = (int) BASE_LENGTH.convertToPixels();
|
||||||
int length = (int) LENGTH.convertToPixels();
|
int length = (int) LENGTH.convertToPixels();
|
||||||
int waferThickness = getClosestOdd(WAFER_THICKNESS.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);
|
new Rectangle2D.Double(x - waferThickness / 2, y, waferThickness - 1, baseLength + (length - baseLength) / 2);
|
||||||
body[0] = new Area(ground);
|
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));
|
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)));
|
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")
|
@SuppressWarnings("incomplete-switch")
|
||||||
private void updateControlPoints() {
|
private void updateControlPoints() {
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
int terminalSpacing = (int) TERMINAL_SPACING.convertToPixels();
|
int terminalSpacing = (int) TERMINAL_SPACING.convertToPixels();
|
||||||
int length = (int) LENGTH.convertToPixels();
|
int length = (int) LENGTH.convertToPixels();
|
||||||
|
|
||||||
@@ -239,7 +239,7 @@ public class LPSwitch extends AbstractTransparentComponent<String> implements IS
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
AffineTransform rotation = AffineTransform.getRotateInstance(theta, x, y);
|
AffineTransform rotation = AffineTransform.getRotateInstance(theta, x, y);
|
||||||
for (Point point : controlPoints) {
|
for (Point2D point : controlPoints) {
|
||||||
rotation.transform(point, point);
|
rotation.transform(point, point);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -290,12 +290,12 @@ public class LPSwitch extends AbstractTransparentComponent<String> implements IS
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
this.controlPoints[index].setLocation(point);
|
this.controlPoints[index].setLocation(point);
|
||||||
// Invalidate the body
|
// Invalidate the body
|
||||||
body = null;
|
body = null;
|
||||||
|
|||||||
@@ -25,11 +25,11 @@ import java.awt.AlphaComposite;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.awt.geom.RoundRectangle2D;
|
import java.awt.geom.RoundRectangle2D;
|
||||||
|
|
||||||
@@ -77,7 +77,7 @@ public class LeverSwitch extends AbstractTransparentComponent<String> implements
|
|||||||
private static Size TERMINAL_SPACING = new Size(0.1d, SizeUnit.in);
|
private static Size TERMINAL_SPACING = new Size(0.1d, SizeUnit.in);
|
||||||
|
|
||||||
private String value = "";
|
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;
|
transient Shape[] body;
|
||||||
private Orientation orientation = Orientation.DEFAULT;
|
private Orientation orientation = Orientation.DEFAULT;
|
||||||
private LeverSwitchType type = LeverSwitchType.DP3T;
|
private LeverSwitchType type = LeverSwitchType.DP3T;
|
||||||
@@ -147,7 +147,7 @@ public class LeverSwitch extends AbstractTransparentComponent<String> implements
|
|||||||
|
|
||||||
// g2d.setColor(Color.black);
|
// g2d.setColor(Color.black);
|
||||||
// for(int i = 0; i < getControlPointCount(); i++) {
|
// 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) {
|
if (body == null) {
|
||||||
body = new Shape[4];
|
body = new Shape[4];
|
||||||
|
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
int baseWidth = (int) BASE_WIDTH.convertToPixels();
|
int baseWidth = (int) BASE_WIDTH.convertToPixels();
|
||||||
int baseLength = (int) BASE_LENGTH.convertToPixels();
|
int baseLength = (int) BASE_LENGTH.convertToPixels();
|
||||||
int holeSize = getClosestOdd(HOLE_SIZE.convertToPixels());
|
int holeSize = getClosestOdd(HOLE_SIZE.convertToPixels());
|
||||||
@@ -177,8 +177,8 @@ public class LeverSwitch extends AbstractTransparentComponent<String> implements
|
|||||||
yOffset = 12;
|
yOffset = 12;
|
||||||
}
|
}
|
||||||
|
|
||||||
int baseX = x - terminalLength / 2 - waferSpacing;
|
double baseX = x - terminalLength / 2 - waferSpacing;
|
||||||
int baseY = y - (baseLength - terminalSpacing * yOffset) / 2;
|
double baseY = y - (baseLength - terminalSpacing * yOffset) / 2;
|
||||||
Area baseArea = new Area(new Rectangle2D.Double(baseX, baseY, baseWidth, baseLength));
|
Area baseArea = new Area(new Rectangle2D.Double(baseX, baseY, baseWidth, baseLength));
|
||||||
baseArea.subtract(new Area(new Ellipse2D.Double(baseX + baseWidth / 2 - holeSize / 2, baseY
|
baseArea.subtract(new Area(new Ellipse2D.Double(baseX + baseWidth / 2 - holeSize / 2, baseY
|
||||||
+ (baseLength - holeSpacing) / 2 - holeSize / 2, holeSize, holeSize)));
|
+ (baseLength - holeSpacing) / 2 - holeSize / 2, holeSize, holeSize)));
|
||||||
@@ -217,15 +217,15 @@ public class LeverSwitch extends AbstractTransparentComponent<String> implements
|
|||||||
Area terminalArea = new Area();
|
Area terminalArea = new Area();
|
||||||
Area commonTerminalArea = new Area();
|
Area commonTerminalArea = new Area();
|
||||||
for (int i = 0; i < controlPoints.length; i++) {
|
for (int i = 0; i < controlPoints.length; i++) {
|
||||||
Point point = controlPoints[i];
|
Point2D point = controlPoints[i];
|
||||||
Area terminal =
|
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));
|
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)));
|
/ 4, terminalLength / 2, terminalWidth / 2, terminalWidth / 2, terminalWidth / 2)));
|
||||||
// Rotate the terminal if needed
|
// Rotate the terminal if needed
|
||||||
if (theta != 0) {
|
if (theta != 0) {
|
||||||
AffineTransform rotation = AffineTransform.getRotateInstance(theta, point.x, point.y);
|
AffineTransform rotation = AffineTransform.getRotateInstance(theta, point.getX(), point.getY());
|
||||||
terminal.transform(rotation);
|
terminal.transform(rotation);
|
||||||
}
|
}
|
||||||
terminalArea.add(terminal);
|
terminalArea.add(terminal);
|
||||||
@@ -242,7 +242,7 @@ public class LeverSwitch extends AbstractTransparentComponent<String> implements
|
|||||||
|
|
||||||
// Rotate if needed
|
// Rotate if needed
|
||||||
if (theta != 0) {
|
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
|
// Skip the last two because terminals are already rotated
|
||||||
for (int i = 0; i < body.length - 2; i++) {
|
for (int i = 0; i < body.length - 2; i++) {
|
||||||
Shape shape = body[i];
|
Shape shape = body[i];
|
||||||
@@ -256,8 +256,8 @@ public class LeverSwitch extends AbstractTransparentComponent<String> implements
|
|||||||
|
|
||||||
@SuppressWarnings("incomplete-switch")
|
@SuppressWarnings("incomplete-switch")
|
||||||
private void updateControlPoints() {
|
private void updateControlPoints() {
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
int waferSpacing = (int) WAFER_SPACING.convertToPixels();
|
int waferSpacing = (int) WAFER_SPACING.convertToPixels();
|
||||||
int terminalSpacing = (int) TERMINAL_SPACING.convertToPixels();
|
int terminalSpacing = (int) TERMINAL_SPACING.convertToPixels();
|
||||||
int terminalLength = (int) TERMINAL_LENGTH.convertToPixels();
|
int terminalLength = (int) TERMINAL_LENGTH.convertToPixels();
|
||||||
@@ -265,28 +265,28 @@ public class LeverSwitch extends AbstractTransparentComponent<String> implements
|
|||||||
switch (type) {
|
switch (type) {
|
||||||
case DP3T:
|
case DP3T:
|
||||||
case DP3T_5pos:
|
case DP3T_5pos:
|
||||||
controlPoints = new Point[8];
|
controlPoints = new Point2D[8];
|
||||||
for (int i = 0; i < 8; i++) {
|
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;
|
break;
|
||||||
case DP4T:
|
case DP4T:
|
||||||
controlPoints = new Point[10];
|
controlPoints = new Point2D[10];
|
||||||
for (int i = 0; i < 10; i++) {
|
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;
|
break;
|
||||||
case DP5T:
|
case DP5T:
|
||||||
controlPoints = new Point[12];
|
controlPoints = new Point2D[12];
|
||||||
for (int i = 0; i < 12; i++) {
|
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;
|
break;
|
||||||
case _4P5T:
|
case _4P5T:
|
||||||
controlPoints = new Point[24];
|
controlPoints = new Point2D[24];
|
||||||
for (int i = 0; i < 12; i++) {
|
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));
|
||||||
controlPoints[i + 12] = new Point(x + waferSpacing, y + i * terminalSpacing + (i >= 6 ? terminalSpacing : 0));
|
controlPoints[i + 12] = new Point2D.Double(x + waferSpacing, y + i * terminalSpacing + (i >= 6 ? terminalSpacing : 0));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -306,7 +306,7 @@ public class LeverSwitch extends AbstractTransparentComponent<String> implements
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
AffineTransform rotation = AffineTransform.getRotateInstance(theta, x, y);
|
AffineTransform rotation = AffineTransform.getRotateInstance(theta, x, y);
|
||||||
for (Point point : controlPoints) {
|
for (Point2D point : controlPoints) {
|
||||||
rotation.transform(point, point);
|
rotation.transform(point, point);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -360,12 +360,12 @@ public class LeverSwitch extends AbstractTransparentComponent<String> implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
this.controlPoints[index].setLocation(point);
|
this.controlPoints[index].setLocation(point);
|
||||||
// Invalidate the body
|
// Invalidate the body
|
||||||
body = null;
|
body = null;
|
||||||
|
|||||||
@@ -25,13 +25,13 @@ import java.awt.AlphaComposite;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Polygon;
|
import java.awt.Polygon;
|
||||||
import java.awt.Rectangle;
|
import java.awt.Rectangle;
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.RoundRectangle2D;
|
import java.awt.geom.RoundRectangle2D;
|
||||||
|
|
||||||
import org.diylc.appframework.miscutils.ConfigurationManager;
|
import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||||
@@ -195,9 +195,9 @@ public class P90Pickup extends AbstractSingleOrHumbuckerPickup {
|
|||||||
if (body == null) {
|
if (body == null) {
|
||||||
body = new Shape[4];
|
body = new Shape[4];
|
||||||
|
|
||||||
Point[] points = getControlPoints();
|
Point2D[] points = getControlPoints();
|
||||||
int x = points[0].x;
|
double x = points[0].getX();
|
||||||
int y = points[0].y;
|
double y = points[0].getY();
|
||||||
int width = (int) getType().getWidth().convertToPixels();
|
int width = (int) getType().getWidth().convertToPixels();
|
||||||
int length = (int) getType().getLength().convertToPixels();
|
int length = (int) getType().getLength().convertToPixels();
|
||||||
int edgeRadius = (int) getType().getEdgeRadius().convertToPixels();
|
int edgeRadius = (int) getType().getEdgeRadius().convertToPixels();
|
||||||
|
|||||||
@@ -25,11 +25,11 @@ import java.awt.AlphaComposite;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.RoundRectangle2D;
|
import java.awt.geom.RoundRectangle2D;
|
||||||
|
|
||||||
import org.diylc.appframework.miscutils.ConfigurationManager;
|
import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||||
@@ -142,9 +142,9 @@ public class PBassPickup extends AbstractSingleOrHumbuckerPickup {
|
|||||||
if (body == null) {
|
if (body == null) {
|
||||||
body = new Shape[4];
|
body = new Shape[4];
|
||||||
|
|
||||||
Point[] points = getControlPoints();
|
Point2D[] points = getControlPoints();
|
||||||
int x = points[0].x;
|
double x = points[0].getX();
|
||||||
int y = points[0].y;
|
double y = points[0].getY();
|
||||||
int width = (int) WIDTH.convertToPixels();
|
int width = (int) WIDTH.convertToPixels();
|
||||||
int length = (int) LENGTH.convertToPixels();
|
int length = (int) LENGTH.convertToPixels();
|
||||||
int edgeRadius = (int) EDGE_RADIUS.convertToPixels();
|
int edgeRadius = (int) EDGE_RADIUS.convertToPixels();
|
||||||
|
|||||||
@@ -25,11 +25,11 @@ import java.awt.AlphaComposite;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.awt.geom.RoundRectangle2D;
|
import java.awt.geom.RoundRectangle2D;
|
||||||
|
|
||||||
@@ -186,9 +186,9 @@ public class SingleCoilPickup extends AbstractSingleOrHumbuckerPickup {
|
|||||||
if (body == null) {
|
if (body == null) {
|
||||||
body = new Shape[5];
|
body = new Shape[5];
|
||||||
|
|
||||||
Point[] points = getControlPoints();
|
Point2D[] points = getControlPoints();
|
||||||
int x = (points[0].x + points[3].x) / 2;
|
double x = (points[0].getX() + points[3].getX()) / 2;
|
||||||
int y = (points[0].y + points[3].y) / 2;;
|
double y = (points[0].getY() + points[3].getY()) / 2;;
|
||||||
int width = (int) WIDTH.convertToPixels();
|
int width = (int) WIDTH.convertToPixels();
|
||||||
int length = (int) LENGTH.convertToPixels();
|
int length = (int) LENGTH.convertToPixels();
|
||||||
int stratInnerLength = (int) STRAT_INNER_LENGTH.convertToPixels();
|
int stratInnerLength = (int) STRAT_INNER_LENGTH.convertToPixels();
|
||||||
@@ -327,9 +327,9 @@ public class SingleCoilPickup extends AbstractSingleOrHumbuckerPickup {
|
|||||||
body[1] = new Area();
|
body[1] = new Area();
|
||||||
double lugHole = getClosestOdd(lugDiameter * 0.4);
|
double lugHole = getClosestOdd(lugDiameter * 0.4);
|
||||||
for (int i = getPolarity() == Polarity.Humbucking ? 0 : 1; i < (getPolarity() == Polarity.Humbucking ? 4 : 3); i++) {
|
for (int i = getPolarity() == Polarity.Humbucking ? 0 : 1; i < (getPolarity() == Polarity.Humbucking ? 4 : 3); i++) {
|
||||||
Point p = points[i];
|
Point2D 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]).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.x - lugHole / 2, p.y - lugHole / 2, lugHole, lugHole)));
|
((Area)body[1]).subtract(new Area(new Ellipse2D.Double(p.getX() - lugHole / 2, p.getY() - lugHole / 2, lugHole, lugHole)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return body;
|
return body;
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ import java.awt.Color;
|
|||||||
import java.awt.Font;
|
import java.awt.Font;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -57,7 +57,7 @@ public class BOM extends AbstractComponent<Void> {
|
|||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
private Size size = DEFAULT_SIZE;
|
private Size size = DEFAULT_SIZE;
|
||||||
|
|
||||||
private Point point = new Point(0, 0);
|
private Point2D point = new Point2D.Double(0, 0);
|
||||||
private Color color = COLOR;
|
private Color color = COLOR;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -116,7 +116,7 @@ public class BOM extends AbstractComponent<Void> {
|
|||||||
int columnWidth = (int) size.convertToPixels() / columnCount;
|
int columnWidth = (int) size.convertToPixels() / columnCount;
|
||||||
int entriesPerColumn = (int) Math.ceil(1.d * bom.size() / columnCount);
|
int entriesPerColumn = (int) Math.ceil(1.d * bom.size() / columnCount);
|
||||||
if (entriesPerColumn == 0) {
|
if (entriesPerColumn == 0) {
|
||||||
g2d.drawString(DEFAULT_TEXT, point.x, point.y);
|
g2d.drawString(DEFAULT_TEXT, (int)point.getX(), (int)point.getY());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (int i = 0; i < bom.size(); i++) {
|
for (int i = 0; i < bom.size(); i++) {
|
||||||
@@ -129,8 +129,8 @@ public class BOM extends AbstractComponent<Void> {
|
|||||||
}
|
}
|
||||||
int columnIndex = i / entriesPerColumn;
|
int columnIndex = i / entriesPerColumn;
|
||||||
int rowIndex = i % entriesPerColumn;
|
int rowIndex = i % entriesPerColumn;
|
||||||
int x = point.x + columnIndex * columnWidth;
|
int x = (int)(point.getX() + columnIndex * columnWidth);
|
||||||
int y = point.y + rowIndex * maxHeight;
|
int y = (int)(point.getY() + rowIndex * maxHeight);
|
||||||
g2d.drawString(entry.getName(), x, y);
|
g2d.drawString(entry.getName(), x, y);
|
||||||
x += maxNameWidth + SPACING.convertToPixels();
|
x += maxNameWidth + SPACING.convertToPixels();
|
||||||
g2d.drawString(valueStr, x, y);
|
g2d.drawString(valueStr, x, y);
|
||||||
@@ -176,7 +176,7 @@ public class BOM extends AbstractComponent<Void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return point;
|
return point;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -191,7 +191,7 @@ public class BOM extends AbstractComponent<Void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
this.point.setLocation(point);
|
this.point.setLocation(point);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,8 +23,8 @@ package org.diylc.components.misc;
|
|||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Polygon;
|
import java.awt.Polygon;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
import org.diylc.common.ObjectCache;
|
import org.diylc.common.ObjectCache;
|
||||||
import org.diylc.common.Orientation;
|
import org.diylc.common.Orientation;
|
||||||
@@ -50,7 +50,7 @@ public class GroundSymbol extends AbstractComponent<Void> {
|
|||||||
public static Color COLOR = Color.black;
|
public static Color COLOR = Color.black;
|
||||||
public static Size SIZE = new Size(0.15d, SizeUnit.in);
|
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 Color color = COLOR;
|
||||||
private Size size = SIZE;
|
private Size size = SIZE;
|
||||||
private GroundSymbolType type = GroundSymbolType.DEFAULT;
|
private GroundSymbolType type = GroundSymbolType.DEFAULT;
|
||||||
@@ -60,35 +60,35 @@ public class GroundSymbol extends AbstractComponent<Void> {
|
|||||||
@Override
|
@Override
|
||||||
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
|
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
|
||||||
IDrawingObserver drawingObserver) {
|
IDrawingObserver drawingObserver) {
|
||||||
int sizePx = (int) size.convertToPixels();
|
double sizePx = size.convertToPixels();
|
||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
|
||||||
g2d.setColor(color);
|
g2d.setColor(color);
|
||||||
int x = point.x;
|
double x = point.getX();
|
||||||
int y = point.y;
|
double y = point.getY();
|
||||||
|
|
||||||
switch (getOrientation()) {
|
switch (getOrientation()) {
|
||||||
case _90:
|
case _90:
|
||||||
g2d.rotate(Math.PI / 2, point.x, point.y);
|
g2d.rotate(Math.PI / 2, point.getX(), point.getY());
|
||||||
break;
|
break;
|
||||||
case _180:
|
case _180:
|
||||||
g2d.rotate(Math.PI, point.x, point.y);
|
g2d.rotate(Math.PI, point.getX(), point.getY());
|
||||||
break;
|
break;
|
||||||
case _270:
|
case _270:
|
||||||
g2d.rotate(Math.PI * 3 / 2, point.x, point.y);
|
g2d.rotate(Math.PI * 3 / 2, point.getX(), point.getY());
|
||||||
break;
|
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) {
|
if (type == GroundSymbolType.DEFAULT) {
|
||||||
int delta = sizePx / 7;
|
double delta = sizePx / 7;
|
||||||
for (int i = 0; i < 5; i++) {
|
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
|
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));
|
* (i + 1)));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Polygon poly =
|
Polygon poly =
|
||||||
new Polygon(new int[] {x - sizePx / 2, x + sizePx / 2, x}, new int[] {y + sizePx / 6, y + sizePx / 6,
|
new Polygon(new int[] {(int)(x - sizePx / 2), (int)(x + sizePx / 2), (int)x}, new int[] {(int)(y + sizePx / 6), (int)(y + sizePx / 6),
|
||||||
y + sizePx}, 3);
|
(int)(y + sizePx)}, 3);
|
||||||
g2d.draw(poly);
|
g2d.draw(poly);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -126,7 +126,7 @@ public class GroundSymbol extends AbstractComponent<Void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return point;
|
return point;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -159,7 +159,7 @@ public class GroundSymbol extends AbstractComponent<Void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
this.point.setLocation(point);
|
this.point.setLocation(point);
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ package org.diylc.components.misc;
|
|||||||
import java.awt.AlphaComposite;
|
import java.awt.AlphaComposite;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
@@ -47,7 +47,6 @@ import org.diylc.core.annotations.PercentEditor;
|
|||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamConverter;
|
import com.thoughtworks.xstream.annotations.XStreamConverter;
|
||||||
|
|
||||||
|
|
||||||
@ComponentDescriptor(name = "Image", author = "Branislav Stojkovic", category = "Misc",
|
@ComponentDescriptor(name = "Image", author = "Branislav Stojkovic", category = "Misc",
|
||||||
description = "User defined image", instanceNamePrefix = "Img", zOrder = IDIYComponent.COMPONENT,
|
description = "User defined image", instanceNamePrefix = "Img", zOrder = IDIYComponent.COMPONENT,
|
||||||
flexibleZOrder = true, bomPolicy = BomPolicy.NEVER_SHOW)
|
flexibleZOrder = true, bomPolicy = BomPolicy.NEVER_SHOW)
|
||||||
@@ -58,6 +57,9 @@ public class Image extends AbstractTransparentComponent<Void> {
|
|||||||
private static ImageIcon ICON;
|
private static ImageIcon ICON;
|
||||||
private static byte DEFAULT_SCALE = 25;
|
private static byte DEFAULT_SCALE = 25;
|
||||||
|
|
||||||
|
private Point2D point = new Point2D.Double(0, 0);
|
||||||
|
private Point2D secondPoint = null;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
String name = "image.png";
|
String name = "image.png";
|
||||||
java.net.URL imgURL = Image.class.getResource(name);
|
java.net.URL imgURL = Image.class.getResource(name);
|
||||||
@@ -71,9 +73,6 @@ public class Image extends AbstractTransparentComponent<Void> {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Point point = new Point(0, 0);
|
|
||||||
private Point secondPoint = null;
|
|
||||||
|
|
||||||
@XStreamConverter(IconImageConverter.class)
|
@XStreamConverter(IconImageConverter.class)
|
||||||
@Deprecated
|
@Deprecated
|
||||||
private ImageIcon image;
|
private ImageIcon image;
|
||||||
@@ -99,9 +98,9 @@ public class Image extends AbstractTransparentComponent<Void> {
|
|||||||
if (getSizingMode() == ImageSizingMode.Scale) {
|
if (getSizingMode() == ImageSizingMode.Scale) {
|
||||||
scaleX = scaleY = 1d * getScale() / DEFAULT_SCALE;
|
scaleX = scaleY = 1d * getScale() / DEFAULT_SCALE;
|
||||||
} else {
|
} else {
|
||||||
Point secondPoint = getControlPoint(1);
|
Point2D secondPoint = getControlPoint(1);
|
||||||
scaleX = 1d * Math.abs(point.x - secondPoint.x) / imageIcon.getIconWidth();
|
scaleX = 1d * Math.abs(point.getX() - secondPoint.getX()) / imageIcon.getIconWidth();
|
||||||
scaleY = 1d * Math.abs(point.y - secondPoint.y) / imageIcon.getIconHeight();
|
scaleY = 1d * Math.abs(point.getY() - secondPoint.getY()) / imageIcon.getIconHeight();
|
||||||
}
|
}
|
||||||
|
|
||||||
Shape clip = g2d.getClip().getBounds();
|
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));
|
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
|
||||||
}
|
}
|
||||||
|
|
||||||
int x;
|
double x;
|
||||||
int y;
|
double y;
|
||||||
if (getSizingMode() == ImageSizingMode.Scale)
|
if (getSizingMode() == ImageSizingMode.Scale)
|
||||||
{
|
{
|
||||||
x = point.x;
|
x = point.getX();
|
||||||
y = point.y;
|
y = point.getY();
|
||||||
} else {
|
} else {
|
||||||
Point secondPoint = getControlPoint(1);
|
Point2D secondPoint = getControlPoint(1);
|
||||||
x = Math.min(point.x, secondPoint.x);
|
x = Math.min(point.getX(), secondPoint.getX());
|
||||||
y = Math.min(point.y, secondPoint.y);
|
y = Math.min(point.getY(), secondPoint.getY());
|
||||||
}
|
}
|
||||||
|
|
||||||
g2d.scale(scaleX, scaleY);
|
g2d.scale(scaleX, scaleY);
|
||||||
@@ -133,13 +132,13 @@ public class Image extends AbstractTransparentComponent<Void> {
|
|||||||
g2d.scale(1 / scaleX, 1 / scaleY);
|
g2d.scale(1 / scaleX, 1 / scaleY);
|
||||||
g2d.setColor(SELECTION_COLOR);
|
g2d.setColor(SELECTION_COLOR);
|
||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1f));
|
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
|
@Override
|
||||||
public void drawIcon(Graphics2D g2d, int width, int height) {
|
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
|
@Override
|
||||||
@@ -148,12 +147,12 @@ public class Image extends AbstractTransparentComponent<Void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
if (index == 0)
|
if (index == 0)
|
||||||
return point;
|
return point;
|
||||||
if (secondPoint == null) {
|
if (secondPoint == null) {
|
||||||
ImageIcon imageIcon = getImage();
|
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;
|
return secondPoint;
|
||||||
}
|
}
|
||||||
@@ -169,14 +168,14 @@ public class Image extends AbstractTransparentComponent<Void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
if (index == 0) {
|
if (index == 0) {
|
||||||
this.point.setLocation(point);
|
this.point.setLocation(point.getX(), point.getY());
|
||||||
} else {
|
} else {
|
||||||
if (secondPoint == null)
|
if (secondPoint == null)
|
||||||
secondPoint = new Point(point);
|
secondPoint = new Point2D.Double(point.getX(), point.getY());
|
||||||
else
|
else
|
||||||
secondPoint.setLocation(point);
|
secondPoint.setLocation(point.getX(), point.getY());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -208,7 +207,7 @@ public class Image extends AbstractTransparentComponent<Void> {
|
|||||||
this.image = null;
|
this.image = null;
|
||||||
if (getSizingMode() == ImageSizingMode.TwoPoints) {
|
if (getSizingMode() == ImageSizingMode.TwoPoints) {
|
||||||
ImageIcon imageIcon = getImage();
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ import java.awt.Color;
|
|||||||
import java.awt.Font;
|
import java.awt.Font;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import org.diylc.common.HorizontalAlignment;
|
import org.diylc.common.HorizontalAlignment;
|
||||||
@@ -51,7 +51,7 @@ public class Label extends AbstractComponent<String> {
|
|||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
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 String text = DEFAULT_TEXT;
|
||||||
private Font font = LABEL_FONT;
|
private Font font = LABEL_FONT;
|
||||||
private Color color = LABEL_COLOR;
|
private Color color = LABEL_COLOR;
|
||||||
@@ -74,30 +74,30 @@ public class Label extends AbstractComponent<String> {
|
|||||||
int textHeight = (int) rect.getHeight();
|
int textHeight = (int) rect.getHeight();
|
||||||
int textWidth = (int) rect.getWidth();
|
int textWidth = (int) rect.getWidth();
|
||||||
|
|
||||||
int x = point.x;
|
double x = point.getX();
|
||||||
int y = point.y;
|
double y = point.getY();
|
||||||
switch (getVerticalAlignment()) {
|
switch (getVerticalAlignment()) {
|
||||||
case CENTER:
|
case CENTER:
|
||||||
y = point.y - textHeight / 2 + fontMetrics.getAscent();
|
y = point.getY() - textHeight / 2 + fontMetrics.getAscent();
|
||||||
break;
|
break;
|
||||||
case TOP:
|
case TOP:
|
||||||
y = point.y - textHeight + fontMetrics.getAscent();
|
y = point.getY() - textHeight + fontMetrics.getAscent();
|
||||||
break;
|
break;
|
||||||
case BOTTOM:
|
case BOTTOM:
|
||||||
y = point.y + fontMetrics.getAscent();
|
y = point.getY() + fontMetrics.getAscent();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new RuntimeException("Unexpected alignment: " + getVerticalAlignment());
|
throw new RuntimeException("Unexpected alignment: " + getVerticalAlignment());
|
||||||
}
|
}
|
||||||
switch (getHorizontalAlignment()) {
|
switch (getHorizontalAlignment()) {
|
||||||
case CENTER:
|
case CENTER:
|
||||||
x = point.x - textWidth / 2;
|
x = point.getX() - textWidth / 2;
|
||||||
break;
|
break;
|
||||||
case LEFT:
|
case LEFT:
|
||||||
x = point.x;
|
x = point.getX();
|
||||||
break;
|
break;
|
||||||
case RIGHT:
|
case RIGHT:
|
||||||
x = point.x - textWidth;
|
x = point.getX() - textWidth;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new RuntimeException("Unexpected alignment: " + getHorizontalAlignment());
|
throw new RuntimeException("Unexpected alignment: " + getHorizontalAlignment());
|
||||||
@@ -105,16 +105,16 @@ public class Label extends AbstractComponent<String> {
|
|||||||
|
|
||||||
switch (getOrientation()) {
|
switch (getOrientation()) {
|
||||||
case _90:
|
case _90:
|
||||||
g2d.rotate(Math.PI / 2, point.x, point.y);
|
g2d.rotate(Math.PI / 2, point.getX(), point.getY());
|
||||||
break;
|
break;
|
||||||
case _180:
|
case _180:
|
||||||
g2d.rotate(Math.PI, point.x, point.y);
|
g2d.rotate(Math.PI, point.getX(), point.getY());
|
||||||
break;
|
break;
|
||||||
case _270:
|
case _270:
|
||||||
g2d.rotate(Math.PI * 3 / 2, point.x, point.y);
|
g2d.rotate(Math.PI * 3 / 2, point.getX(), point.getY());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
g2d.drawString(text, x, y);
|
g2d.drawString(text, (int)x, (int)y);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -216,7 +216,7 @@ public class Label extends AbstractComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return point;
|
return point;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -231,7 +231,7 @@ public class Label extends AbstractComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
this.point.setLocation(point);
|
this.point.setLocation(point);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,18 +22,14 @@ import java.awt.AlphaComposite;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
import org.diylc.common.ObjectCache;
|
import org.diylc.common.ObjectCache;
|
||||||
import org.diylc.common.SimpleComponentTransformer;
|
|
||||||
import org.diylc.components.boards.AbstractBoard;
|
import org.diylc.components.boards.AbstractBoard;
|
||||||
import org.diylc.core.ComponentState;
|
import org.diylc.core.ComponentState;
|
||||||
import org.diylc.core.IDIYComponent;
|
|
||||||
import org.diylc.core.IDrawingObserver;
|
import org.diylc.core.IDrawingObserver;
|
||||||
import org.diylc.core.Project;
|
import org.diylc.core.Project;
|
||||||
import org.diylc.core.annotations.BomPolicy;
|
|
||||||
import org.diylc.core.annotations.ComponentDescriptor;
|
|
||||||
import org.diylc.core.annotations.EditableProperty;
|
import org.diylc.core.annotations.EditableProperty;
|
||||||
|
|
||||||
//@ComponentDescriptor(name = "Loadline", category = "Misc", author = "Branislav Stojkovic",
|
//@ComponentDescriptor(name = "Loadline", category = "Misc", author = "Branislav Stojkovic",
|
||||||
@@ -66,11 +62,11 @@ public class Loadline extends AbstractBoard {
|
|||||||
@Override
|
@Override
|
||||||
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode,
|
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode,
|
||||||
Project project, IDrawingObserver drawingObserver) {
|
Project project, IDrawingObserver drawingObserver) {
|
||||||
Point finalSecondPoint = getFinalSecondPoint();
|
Point2D finalSecondPoint = getFinalSecondPoint();
|
||||||
|
|
||||||
Shape clip = g2d.getClip();
|
Shape clip = g2d.getClip();
|
||||||
if (checkPointsClipped(clip) && !clip.contains(firstPoint.x, finalSecondPoint.y)
|
if (checkPointsClipped(clip) && !clip.contains(firstPoint.getX(), finalSecondPoint.getY())
|
||||||
&& !clip.contains(finalSecondPoint.x, firstPoint.y)) {
|
&& !clip.contains(finalSecondPoint.getX(), firstPoint.getY())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -83,8 +79,8 @@ public class Loadline extends AbstractBoard {
|
|||||||
}
|
}
|
||||||
g2d.setColor(boardColor);
|
g2d.setColor(boardColor);
|
||||||
|
|
||||||
g2d.fillRect(firstPoint.x, firstPoint.y, finalSecondPoint.x - firstPoint.x,
|
g2d.fillRect((int)firstPoint.getX(), (int)firstPoint.getY(), (int)(finalSecondPoint.getX() - firstPoint.getX()),
|
||||||
finalSecondPoint.y - firstPoint.y);
|
(int)(finalSecondPoint.getY() - firstPoint.getY()));
|
||||||
|
|
||||||
g2d.setComposite(oldComposite);
|
g2d.setComposite(oldComposite);
|
||||||
}
|
}
|
||||||
@@ -96,8 +92,8 @@ public class Loadline extends AbstractBoard {
|
|||||||
? SELECTION_COLOR
|
? SELECTION_COLOR
|
||||||
: borderColor);
|
: borderColor);
|
||||||
|
|
||||||
g2d.drawRect(firstPoint.x, firstPoint.y, finalSecondPoint.x - firstPoint.x,
|
g2d.drawRect((int)firstPoint.getX(), (int)firstPoint.getY(), (int)(finalSecondPoint.getX() - firstPoint.getX()),
|
||||||
finalSecondPoint.y - firstPoint.y);
|
(int)(finalSecondPoint.getY() - firstPoint.getY()));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package org.diylc.components.misc;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Font;
|
import java.awt.Font;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
import org.diylc.awt.StringUtils;
|
import org.diylc.awt.StringUtils;
|
||||||
import org.diylc.common.HorizontalAlignment;
|
import org.diylc.common.HorizontalAlignment;
|
||||||
@@ -34,10 +34,10 @@ public class LoadlineCurve extends CurvedTrace {
|
|||||||
g2d.setColor(Color.black);
|
g2d.setColor(Color.black);
|
||||||
Font oldFont = g2d.getFont();
|
Font oldFont = g2d.getFont();
|
||||||
g2d.setFont(project.getFont().deriveFont(12f).deriveFont(Font.BOLD));
|
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 spacing = (int) LABEL_SPACING.convertToPixels();
|
||||||
int x = lastPoint.x + spacing;
|
double x = lastPoint.getX() + spacing;
|
||||||
int y = lastPoint.y - spacing;
|
double y = lastPoint.getY() - spacing;
|
||||||
StringUtils.drawCenteredText(g2d, getVoltage().toString(), x, y, HorizontalAlignment.LEFT, VerticalAlignment.TOP);
|
StringUtils.drawCenteredText(g2d, getVoltage().toString(), x, y, HorizontalAlignment.LEFT, VerticalAlignment.TOP);
|
||||||
g2d.setFont(oldFont);
|
g2d.setFont(oldFont);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,8 +25,8 @@ import java.awt.Color;
|
|||||||
import java.awt.Font;
|
import java.awt.Font;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import org.diylc.common.HorizontalAlignment;
|
import org.diylc.common.HorizontalAlignment;
|
||||||
@@ -55,7 +55,7 @@ public class PCBText extends AbstractComponent<Void> {
|
|||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
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 String text = DEFAULT_TEXT;
|
||||||
private Font font = DEFAULT_FONT;
|
private Font font = DEFAULT_FONT;
|
||||||
private Color color = LABEL_COLOR;
|
private Color color = LABEL_COLOR;
|
||||||
@@ -77,30 +77,30 @@ public class PCBText extends AbstractComponent<Void> {
|
|||||||
int textHeight = (int) rect.getHeight();
|
int textHeight = (int) rect.getHeight();
|
||||||
int textWidth = (int) rect.getWidth();
|
int textWidth = (int) rect.getWidth();
|
||||||
|
|
||||||
int x = point.x;
|
double x = point.getX();
|
||||||
int y = point.y;
|
double y = point.getY();
|
||||||
switch (getVerticalAlignment()) {
|
switch (getVerticalAlignment()) {
|
||||||
case CENTER:
|
case CENTER:
|
||||||
y = point.y - textHeight / 2 + fontMetrics.getAscent();
|
y = point.getY() - textHeight / 2 + fontMetrics.getAscent();
|
||||||
break;
|
break;
|
||||||
case TOP:
|
case TOP:
|
||||||
y = point.y - textHeight + fontMetrics.getAscent();
|
y = point.getY() - textHeight + fontMetrics.getAscent();
|
||||||
break;
|
break;
|
||||||
case BOTTOM:
|
case BOTTOM:
|
||||||
y = point.y + fontMetrics.getAscent();
|
y = point.getY() + fontMetrics.getAscent();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new RuntimeException("Unexpected alignment: " + getVerticalAlignment());
|
throw new RuntimeException("Unexpected alignment: " + getVerticalAlignment());
|
||||||
}
|
}
|
||||||
switch (getHorizontalAlignment()) {
|
switch (getHorizontalAlignment()) {
|
||||||
case CENTER:
|
case CENTER:
|
||||||
x = point.x - textWidth / 2;
|
x = point.getX() - textWidth / 2;
|
||||||
break;
|
break;
|
||||||
case LEFT:
|
case LEFT:
|
||||||
x = point.x;
|
x = point.getX();
|
||||||
break;
|
break;
|
||||||
case RIGHT:
|
case RIGHT:
|
||||||
x = point.x - textWidth;
|
x = point.getX() - textWidth;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new RuntimeException("Unexpected alignment: " + getHorizontalAlignment());
|
throw new RuntimeException("Unexpected alignment: " + getHorizontalAlignment());
|
||||||
@@ -108,13 +108,13 @@ public class PCBText extends AbstractComponent<Void> {
|
|||||||
|
|
||||||
switch (getOrientation()) {
|
switch (getOrientation()) {
|
||||||
case _90:
|
case _90:
|
||||||
g2d.rotate(Math.PI / 2, point.x, point.y);
|
g2d.rotate(Math.PI / 2, point.getX(), point.getY());
|
||||||
break;
|
break;
|
||||||
case _180:
|
case _180:
|
||||||
g2d.rotate(Math.PI, point.x, point.y);
|
g2d.rotate(Math.PI, point.getX(), point.getY());
|
||||||
break;
|
break;
|
||||||
case _270:
|
case _270:
|
||||||
g2d.rotate(Math.PI * 3 / 2, point.x, point.y);
|
g2d.rotate(Math.PI * 3 / 2, point.getX(), point.getY());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -125,7 +125,7 @@ public class PCBText extends AbstractComponent<Void> {
|
|||||||
tx.translate(-2 * x - textWidth, 0);
|
tx.translate(-2 * x - textWidth, 0);
|
||||||
g2d.transform(tx);
|
g2d.transform(tx);
|
||||||
|
|
||||||
g2d.drawString(text, x, y);
|
g2d.drawString(text, (int)x, (int)y);
|
||||||
|
|
||||||
g2d.setTransform(oldTx);
|
g2d.setTransform(oldTx);
|
||||||
}
|
}
|
||||||
@@ -231,7 +231,7 @@ public class PCBText extends AbstractComponent<Void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return point;
|
return point;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -246,7 +246,7 @@ public class PCBText extends AbstractComponent<Void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
this.point.setLocation(point);
|
this.point.setLocation(point);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ import java.awt.Color;
|
|||||||
import java.awt.Font;
|
import java.awt.Font;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import org.diylc.awt.StringUtils;
|
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_WIDTH = new Size(1.5d, SizeUnit.in);
|
||||||
public static Size DEFAULT_HEIGHT = new Size(0.5d, SizeUnit.in);
|
public static Size DEFAULT_HEIGHT = new Size(0.5d, SizeUnit.in);
|
||||||
|
|
||||||
protected Point[] controlPoints = new Point[] {new Point(0, 0),
|
protected Point2D[] controlPoints = new Point2D[] {new Point2D.Double(0, 0),
|
||||||
new Point((int) DEFAULT_WIDTH.convertToPixels(), (int) DEFAULT_HEIGHT.convertToPixels())};
|
new Point2D.Double((int) DEFAULT_WIDTH.convertToPixels(), (int) DEFAULT_HEIGHT.convertToPixels())};
|
||||||
protected Point firstPoint = new Point();
|
protected Point2D firstPoint = new Point2D.Double();
|
||||||
protected Point secondPoint = new Point();
|
protected Point2D secondPoint = new Point2D.Double();
|
||||||
|
|
||||||
private Font font = LABEL_FONT;
|
private Font font = LABEL_FONT;
|
||||||
private Color color = LABEL_COLOR;
|
private Color color = LABEL_COLOR;
|
||||||
@@ -86,17 +86,17 @@ public class WrapLabel extends AbstractComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
controlPoints[index].setLocation(point);
|
controlPoints[index].setLocation(point);
|
||||||
firstPoint.setLocation(Math.min(controlPoints[0].x, controlPoints[1].x),
|
firstPoint.setLocation(Math.min(controlPoints[0].getX(), controlPoints[1].getX()),
|
||||||
Math.min(controlPoints[0].y, controlPoints[1].y));
|
Math.min(controlPoints[0].getY(), controlPoints[1].getY()));
|
||||||
secondPoint.setLocation(Math.max(controlPoints[0].x, controlPoints[1].x),
|
secondPoint.setLocation(Math.max(controlPoints[0].getX(), controlPoints[1].getX()),
|
||||||
Math.max(controlPoints[0].y, controlPoints[1].y));
|
Math.max(controlPoints[0].getY(), controlPoints[1].getY()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -178,11 +178,11 @@ public class WrapLabel extends AbstractComponent<String> {
|
|||||||
g2d.setColor(componentState == ComponentState.SELECTED ? LABEL_COLOR_SELECTED : color);
|
g2d.setColor(componentState == ComponentState.SELECTED ? LABEL_COLOR_SELECTED : color);
|
||||||
g2d.setFont(font);
|
g2d.setFont(font);
|
||||||
|
|
||||||
int x = firstPoint.x;
|
double x = firstPoint.getX();
|
||||||
int y = firstPoint.y;
|
double y = firstPoint.getY();
|
||||||
int maxWidth = secondPoint.x - firstPoint.x;
|
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
|
@Override
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.diylc.components.passive;
|
package org.diylc.components.passive;
|
||||||
|
|
||||||
import java.awt.Point;
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
import org.diylc.common.Orientation;
|
import org.diylc.common.Orientation;
|
||||||
import org.diylc.components.AbstractTransparentComponent;
|
import org.diylc.components.AbstractTransparentComponent;
|
||||||
@@ -34,7 +34,7 @@ public abstract class AbstractPotentiometer extends AbstractTransparentComponent
|
|||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
protected Point[] controlPoints;
|
protected Point2D[] controlPoints;
|
||||||
|
|
||||||
protected Resistance resistance = null;
|
protected Resistance resistance = null;
|
||||||
protected Orientation orientation = Orientation.DEFAULT;
|
protected Orientation orientation = Orientation.DEFAULT;
|
||||||
@@ -46,12 +46,12 @@ public abstract class AbstractPotentiometer extends AbstractTransparentComponent
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
controlPoints[index].setLocation(point);
|
controlPoints[index].setLocation(point);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,10 +26,10 @@ import java.awt.Color;
|
|||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Rectangle;
|
import java.awt.Rectangle;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.awt.geom.RoundRectangle2D;
|
import java.awt.geom.RoundRectangle2D;
|
||||||
|
|
||||||
@@ -82,7 +82,7 @@ public class AudioTransformer extends AbstractMultiPartComponent<String> {
|
|||||||
private Size coreWidth = new Size(0.6, SizeUnit.in);
|
private Size coreWidth = new Size(0.6, SizeUnit.in);
|
||||||
private Size coilWidth = new Size(0.5, SizeUnit.in);
|
private Size coilWidth = new Size(0.5, SizeUnit.in);
|
||||||
private Size coilLength = new Size(0.6, 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;
|
protected Display display = Display.BOTH;
|
||||||
private Color coreColor = CORE_COLOR;
|
private Color coreColor = CORE_COLOR;
|
||||||
private Color coreBorderColor = CORE_BORDER_COLOR;
|
private Color coreBorderColor = CORE_BORDER_COLOR;
|
||||||
@@ -163,7 +163,7 @@ public class AudioTransformer extends AbstractMultiPartComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -178,24 +178,24 @@ public class AudioTransformer extends AbstractMultiPartComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
controlPoints[index].setLocation(point);
|
controlPoints[index].setLocation(point);
|
||||||
body = null;
|
body = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateControlPoints() {
|
private void updateControlPoints() {
|
||||||
Point firstPoint = controlPoints[0];
|
Point2D firstPoint = controlPoints[0];
|
||||||
int pinCount = 4 + (primaryCT ? 1 : 0) + (secondaryCT ? 1 : 0);
|
int pinCount = 4 + (primaryCT ? 1 : 0) + (secondaryCT ? 1 : 0);
|
||||||
controlPoints = new Point[pinCount];
|
controlPoints = new Point2D[pinCount];
|
||||||
controlPoints[0] = firstPoint;
|
controlPoints[0] = firstPoint;
|
||||||
double leadSpacing = this.leadSpacing.convertToPixels();
|
double leadSpacing = this.leadSpacing.convertToPixels();
|
||||||
double windingSpacing = this.windingSpacing.convertToPixels();
|
double windingSpacing = this.windingSpacing.convertToPixels();
|
||||||
|
|
||||||
// Update control points.
|
// Update control points.
|
||||||
for (int i = 1; i < 2 + (primaryCT ? 1 : 0); i++)
|
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++)
|
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();
|
AffineTransform tx = getTx();
|
||||||
|
|
||||||
@@ -212,8 +212,8 @@ public class AudioTransformer extends AbstractMultiPartComponent<String> {
|
|||||||
body = new Area[2];
|
body = new Area[2];
|
||||||
double leadSpacing = this.leadSpacing.convertToPixels();
|
double leadSpacing = this.leadSpacing.convertToPixels();
|
||||||
double windingSpacing = this.windingSpacing.convertToPixels();
|
double windingSpacing = this.windingSpacing.convertToPixels();
|
||||||
int centerX = (int) (controlPoints[0].x + windingSpacing / 2);
|
double centerX = (int) (controlPoints[0].getX() + windingSpacing / 2);
|
||||||
int centerY = (int) (controlPoints[0].y + leadSpacing);
|
double centerY = (int) (controlPoints[0].getY() + leadSpacing);
|
||||||
int coreWidth = getClosestOdd(this.coreWidth.convertToPixels());
|
int coreWidth = getClosestOdd(this.coreWidth.convertToPixels());
|
||||||
int coreThickness = getClosestOdd(this.coreThickness.convertToPixels());
|
int coreThickness = getClosestOdd(this.coreThickness.convertToPixels());
|
||||||
int coilWidth = getClosestOdd(this.coilWidth.convertToPixels());
|
int coilWidth = getClosestOdd(this.coilWidth.convertToPixels());
|
||||||
@@ -235,8 +235,8 @@ public class AudioTransformer extends AbstractMultiPartComponent<String> {
|
|||||||
|
|
||||||
@SuppressWarnings("incomplete-switch")
|
@SuppressWarnings("incomplete-switch")
|
||||||
private AffineTransform getTx() {
|
private AffineTransform getTx() {
|
||||||
double x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
double y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
if (orientation == Orientation.DEFAULT)
|
if (orientation == Orientation.DEFAULT)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
@@ -269,11 +269,11 @@ public class AudioTransformer extends AbstractMultiPartComponent<String> {
|
|||||||
|
|
||||||
if (!outlineMode) {
|
if (!outlineMode) {
|
||||||
int pinSize = (int) PIN_SIZE.convertToPixels() / 2 * 2;
|
int pinSize = (int) PIN_SIZE.convertToPixels() / 2 * 2;
|
||||||
for (Point point : controlPoints) {
|
for (Point2D point : controlPoints) {
|
||||||
g2d.setColor(PIN_COLOR);
|
g2d.setColor(PIN_COLOR);
|
||||||
g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
|
g2d.fillOval((int)(point.getX() - pinSize / 2), (int)(point.getY() - pinSize / 2), pinSize, pinSize);
|
||||||
g2d.setColor(PIN_BORDER_COLOR);
|
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();
|
Composite oldComposite = g2d.getComposite();
|
||||||
@@ -312,15 +312,15 @@ public class AudioTransformer extends AbstractMultiPartComponent<String> {
|
|||||||
g2d.setFont(project.getFont());
|
g2d.setFont(project.getFont());
|
||||||
|
|
||||||
// Draw winding designations
|
// 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();
|
AffineTransform tx = getTx();
|
||||||
if (tx != null)
|
if (tx != null)
|
||||||
tx.transform(wPoint, wPoint);
|
tx.transform(wPoint, wPoint);
|
||||||
StringUtils.drawCenteredText(g2d, "P", wPoint.x, wPoint.y, HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
|
StringUtils.drawCenteredText(g2d, "P", wPoint.getX(), wPoint.getY(), HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
|
||||||
wPoint = new Point((int) (controlPoints[0].x + windingSpacing.convertToPixels() - project.getFontSize()), (int) (controlPoints[0].y + leadSpacing.convertToPixels()));
|
wPoint = new Point2D.Double((int) (controlPoints[0].getX() + windingSpacing.convertToPixels() - project.getFontSize()), (int) (controlPoints[0].getY() + leadSpacing.convertToPixels()));
|
||||||
if (tx != null)
|
if (tx != null)
|
||||||
tx.transform(wPoint, wPoint);
|
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.
|
// Draw label.
|
||||||
Color finalLabelColor;
|
Color finalLabelColor;
|
||||||
@@ -356,14 +356,14 @@ public class AudioTransformer extends AbstractMultiPartComponent<String> {
|
|||||||
int textWidth = (int) (rect.getWidth());
|
int textWidth = (int) (rect.getWidth());
|
||||||
// Center text horizontally and vertically
|
// Center text horizontally and vertically
|
||||||
Rectangle bounds = coreArea.getBounds();
|
Rectangle bounds = coreArea.getBounds();
|
||||||
int x = bounds.x + (bounds.width - textWidth) / 2;
|
double x = bounds.getX() + (bounds.width - textWidth) / 2;
|
||||||
int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
|
double y = bounds.getY() + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
|
||||||
|
|
||||||
AffineTransform oldTransform = g2d.getTransform();
|
AffineTransform oldTransform = g2d.getTransform();
|
||||||
|
|
||||||
if (getOrientation() == Orientation.DEFAULT || getOrientation() == Orientation._180) {
|
if (getOrientation() == Orientation.DEFAULT || getOrientation() == Orientation._180) {
|
||||||
int centerX = bounds.x + bounds.width / 2;
|
double centerX = bounds.getX() + bounds.width / 2;
|
||||||
int centerY = bounds.y + bounds.height / 2;
|
double centerY = bounds.getY() + bounds.height / 2;
|
||||||
g2d.rotate(-Math.PI / 2, centerX, centerY);
|
g2d.rotate(-Math.PI / 2, centerX, centerY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -374,7 +374,7 @@ public class AudioTransformer extends AbstractMultiPartComponent<String> {
|
|||||||
g2d.translate(0, textHeight / 2);
|
g2d.translate(0, textHeight / 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
g2d.drawString(l, x, y);
|
g2d.drawString(l, (int)x, (int)y);
|
||||||
|
|
||||||
g2d.setTransform(oldTransform);
|
g2d.setTransform(oldTransform);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,10 +25,10 @@ import java.awt.AlphaComposite;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Rectangle;
|
import java.awt.Rectangle;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
import java.text.Format;
|
import java.text.Format;
|
||||||
@@ -79,7 +79,7 @@ public class MultiSectionCapacitor extends AbstractTransparentComponent<Capacita
|
|||||||
private org.diylc.core.measures.Voltage voltage = null;
|
private org.diylc.core.measures.Voltage voltage = null;
|
||||||
|
|
||||||
private Orientation orientation = Orientation.DEFAULT;
|
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;
|
transient private Area[] body;
|
||||||
private Color bodyColor = BODY_COLOR;
|
private Color bodyColor = BODY_COLOR;
|
||||||
private Color baseColor = BASE_COLOR;
|
private Color baseColor = BASE_COLOR;
|
||||||
@@ -169,7 +169,7 @@ public class MultiSectionCapacitor extends AbstractTransparentComponent<Capacita
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -184,7 +184,7 @@ public class MultiSectionCapacitor extends AbstractTransparentComponent<Capacita
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
controlPoints[index].setLocation(point);
|
controlPoints[index].setLocation(point);
|
||||||
body = null;
|
body = null;
|
||||||
}
|
}
|
||||||
@@ -195,17 +195,17 @@ public class MultiSectionCapacitor extends AbstractTransparentComponent<Capacita
|
|||||||
int newCount = value.length + 1;
|
int newCount = value.length + 1;
|
||||||
if (newCount != controlPoints.length) {
|
if (newCount != controlPoints.length) {
|
||||||
// need new control points
|
// need new control points
|
||||||
Point[] newPoints = new Point[newCount];
|
Point2D[] newPoints = new Point2D[newCount];
|
||||||
newPoints[0] = controlPoints[0];
|
newPoints[0] = controlPoints[0];
|
||||||
for (int i = 1; i < newCount; i++) {
|
for (int i = 1; i < newCount; i++) {
|
||||||
newPoints[i] = new Point(0, 0);
|
newPoints[i] = new Point2D.Double(0, 0);
|
||||||
}
|
}
|
||||||
controlPoints = newPoints;
|
controlPoints = newPoints;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update control points.
|
// Update control points.
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
|
|
||||||
if (newCount == 2) {
|
if (newCount == 2) {
|
||||||
switch (orientation) {
|
switch (orientation) {
|
||||||
@@ -286,8 +286,8 @@ public class MultiSectionCapacitor extends AbstractTransparentComponent<Capacita
|
|||||||
if (body == null) {
|
if (body == null) {
|
||||||
double centerX;
|
double centerX;
|
||||||
double centerY;
|
double centerY;
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
int pinSpacing = (int) (getDiameter().convertToPixels() * RELATIVE_DIAMETERS[value == null || value.length == 1 ? 0 : 1]);
|
int pinSpacing = (int) (getDiameter().convertToPixels() * RELATIVE_DIAMETERS[value == null || value.length == 1 ? 0 : 1]);
|
||||||
if (controlPoints.length == 2 || controlPoints.length == 3) {
|
if (controlPoints.length == 2 || controlPoints.length == 3) {
|
||||||
switch (orientation) {
|
switch (orientation) {
|
||||||
@@ -380,13 +380,13 @@ public class MultiSectionCapacitor extends AbstractTransparentComponent<Capacita
|
|||||||
g2d.draw(area[1]);
|
g2d.draw(area[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Point point : controlPoints) {
|
for (Point2D point : controlPoints) {
|
||||||
if (!outlineMode) {
|
if (!outlineMode) {
|
||||||
g2d.setColor(pinColor);
|
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.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.
|
// Draw label.
|
||||||
@@ -416,18 +416,18 @@ public class MultiSectionCapacitor extends AbstractTransparentComponent<Capacita
|
|||||||
|
|
||||||
Rectangle bounds = area[0].getBounds();
|
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
|
// draw polarity markers
|
||||||
g2d.setColor(pinColor.darker());
|
g2d.setColor(pinColor.darker());
|
||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(2f));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(2f));
|
||||||
double markerSize = pinSize * 0.7;
|
double markerSize = pinSize * 0.7;
|
||||||
for (int i = 0; i < controlPoints.length; i++) {
|
for (int i = 0; i < controlPoints.length; i++) {
|
||||||
int x = controlPoints[i].x;
|
double x = controlPoints[i].getX();
|
||||||
int y = controlPoints[i].y;
|
double y = controlPoints[i].getY();
|
||||||
g2d.drawLine((int)(x - markerSize / 2), y, (int)(x + markerSize / 2), y);
|
g2d.drawLine((int)(x - markerSize / 2), (int)y, (int)(x + markerSize / 2), (int)y);
|
||||||
if (i > 0)
|
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.Polygon;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.awt.geom.RoundRectangle2D;
|
import java.awt.geom.RoundRectangle2D;
|
||||||
|
|
||||||
@@ -93,20 +94,20 @@ public class PotentiometerPanel extends AbstractPotentiometer {
|
|||||||
int spacing = (int) this.spacing.convertToPixels();
|
int spacing = (int) this.spacing.convertToPixels();
|
||||||
switch (orientation) {
|
switch (orientation) {
|
||||||
case DEFAULT:
|
case DEFAULT:
|
||||||
controlPoints[1].setLocation(controlPoints[0].x + spacing, controlPoints[0].y);
|
controlPoints[1].setLocation(controlPoints[0].getX() + spacing, controlPoints[0].getY());
|
||||||
controlPoints[2].setLocation(controlPoints[0].x + 2 * spacing, controlPoints[0].y);
|
controlPoints[2].setLocation(controlPoints[0].getX() + 2 * spacing, controlPoints[0].getY());
|
||||||
break;
|
break;
|
||||||
case _90:
|
case _90:
|
||||||
controlPoints[1].setLocation(controlPoints[0].x, controlPoints[0].y + spacing);
|
controlPoints[1].setLocation(controlPoints[0].getX(), controlPoints[0].getY() + spacing);
|
||||||
controlPoints[2].setLocation(controlPoints[0].x, controlPoints[0].y + 2 * spacing);
|
controlPoints[2].setLocation(controlPoints[0].getX(), controlPoints[0].getY() + 2 * spacing);
|
||||||
break;
|
break;
|
||||||
case _180:
|
case _180:
|
||||||
controlPoints[1].setLocation(controlPoints[0].x - spacing, controlPoints[0].y);
|
controlPoints[1].setLocation(controlPoints[0].getX() - spacing, controlPoints[0].getY());
|
||||||
controlPoints[2].setLocation(controlPoints[0].x - 2 * spacing, controlPoints[0].y);
|
controlPoints[2].setLocation(controlPoints[0].getX() - 2 * spacing, controlPoints[0].getY());
|
||||||
break;
|
break;
|
||||||
case _270:
|
case _270:
|
||||||
controlPoints[1].setLocation(controlPoints[0].x, controlPoints[0].y - spacing);
|
controlPoints[1].setLocation(controlPoints[0].getX(), controlPoints[0].getY() - spacing);
|
||||||
controlPoints[2].setLocation(controlPoints[0].x, controlPoints[0].y - 2 * spacing);
|
controlPoints[2].setLocation(controlPoints[0].getX(), controlPoints[0].getY() - 2 * spacing);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -124,66 +125,66 @@ public class PotentiometerPanel extends AbstractPotentiometer {
|
|||||||
// Add lugs.
|
// Add lugs.
|
||||||
int pinWidth = (int) PIN_SIZE.convertToPixels();
|
int pinWidth = (int) PIN_SIZE.convertToPixels();
|
||||||
|
|
||||||
int centerX = 0;
|
double centerX = 0;
|
||||||
int centerY = 0;
|
double centerY = 0;
|
||||||
|
|
||||||
double waferWidth = 2.5 * spacing;
|
double waferWidth = 2.5 * spacing;
|
||||||
double waferHeight = spacing;
|
double waferHeight = spacing;
|
||||||
|
|
||||||
switch (orientation) {
|
switch (orientation) {
|
||||||
case DEFAULT:
|
case DEFAULT:
|
||||||
centerX = controlPoints[0].x + spacing;
|
centerX = controlPoints[0].getX() + spacing;
|
||||||
centerY = controlPoints[0].y - spacing / 2 - diameter / 2;
|
centerY = controlPoints[0].getY() - spacing / 2 - diameter / 2;
|
||||||
|
|
||||||
body[9] =
|
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));
|
/ 2, waferWidth, waferHeight, spacing / 4, spacing / 4));
|
||||||
|
|
||||||
for (int i = 0; i < 3; i++) {
|
for (int i = 0; i < 3; i++) {
|
||||||
body[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));
|
- (spacing + diameter) / 2, pinWidth, (spacing + diameter) / 2));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _90:
|
case _90:
|
||||||
centerX = controlPoints[0].x + spacing / 2 + diameter / 2;
|
centerX = controlPoints[0].getX() + spacing / 2 + diameter / 2;
|
||||||
centerY = controlPoints[0].y + spacing;
|
centerY = controlPoints[0].getY() + spacing;
|
||||||
|
|
||||||
body[9] =
|
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));
|
waferHeight, waferWidth, spacing / 4, spacing / 4));
|
||||||
|
|
||||||
for (int i = 0; i < 3; i++) {
|
for (int i = 0; i < 3; i++) {
|
||||||
body[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));
|
(spacing + diameter) / 2, pinWidth));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _180:
|
case _180:
|
||||||
centerX = controlPoints[0].x - spacing;
|
centerX = controlPoints[0].getX() - spacing;
|
||||||
centerY = controlPoints[0].y + spacing / 2 + diameter / 2;
|
centerY = controlPoints[0].getY() + spacing / 2 + diameter / 2;
|
||||||
|
|
||||||
body[9] =
|
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));
|
waferWidth, waferHeight, spacing / 4, spacing / 4));
|
||||||
|
|
||||||
for (int i = 0; i < 3; i++) {
|
for (int i = 0; i < 3; i++) {
|
||||||
body[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));
|
(spacing + diameter) / 2));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _270:
|
case _270:
|
||||||
centerX = controlPoints[0].x - spacing / 2 - diameter / 2;
|
centerX = controlPoints[0].getX() - spacing / 2 - diameter / 2;
|
||||||
centerY = controlPoints[0].y - spacing;
|
centerY = controlPoints[0].getY() - spacing;
|
||||||
|
|
||||||
body[9] =
|
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));
|
/ 2, waferHeight, waferWidth, spacing / 4, spacing / 4));
|
||||||
|
|
||||||
for (int i = 0; i < 3; i++) {
|
for (int i = 0; i < 3; i++) {
|
||||||
body[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));
|
- pinWidth / 2, (spacing + diameter) / 2, pinWidth));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -205,7 +206,7 @@ public class PotentiometerPanel extends AbstractPotentiometer {
|
|||||||
|
|
||||||
for (int i = 0; i < 3; i++) {
|
for (int i = 0; i < 3; i++) {
|
||||||
Area area =
|
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));
|
lugDiameter, lugDiameter));
|
||||||
body[4 + i] = area;
|
body[4 + i] = area;
|
||||||
}
|
}
|
||||||
@@ -217,7 +218,7 @@ public class PotentiometerPanel extends AbstractPotentiometer {
|
|||||||
}
|
}
|
||||||
// Make holes in the lugs.
|
// Make holes in the lugs.
|
||||||
for (int i = 0; i < 3; i++) {
|
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)));
|
- holeDiameter / 2, holeDiameter, holeDiameter)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -241,7 +242,7 @@ public class PotentiometerPanel extends AbstractPotentiometer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
super.setControlPoint(point, index);
|
super.setControlPoint(point, index);
|
||||||
body = null;
|
body = null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,10 +24,10 @@ package org.diylc.components.passive;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Polygon;
|
import java.awt.Polygon;
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.GeneralPath;
|
import java.awt.geom.GeneralPath;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import org.diylc.components.Abstract3LegSymbol;
|
import org.diylc.components.Abstract3LegSymbol;
|
||||||
@@ -51,9 +51,9 @@ public class PotentiometerSymbol extends Abstract3LegSymbol {
|
|||||||
|
|
||||||
public Shape[] getBody() {
|
public Shape[] getBody() {
|
||||||
Shape[] body = new Shape[3];
|
Shape[] body = new Shape[3];
|
||||||
Point[] controlPoints = getControlPoints();
|
Point2D[] controlPoints = getControlPoints();
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
int pinSpacing = (int) PIN_SPACING.convertToPixels();
|
int pinSpacing = (int) PIN_SPACING.convertToPixels();
|
||||||
|
|
||||||
GeneralPath polyline = new GeneralPath();
|
GeneralPath polyline = new GeneralPath();
|
||||||
@@ -92,8 +92,8 @@ public class PotentiometerSymbol extends Abstract3LegSymbol {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected int getLabelX(Rectangle2D shapeRect, Rectangle2D textRect, FontMetrics fontMetrics, boolean outlineMode) {
|
protected double getLabelX(Rectangle2D shapeRect, Rectangle2D textRect, FontMetrics fontMetrics, boolean outlineMode) {
|
||||||
int x = super.getLabelX(shapeRect, textRect, fontMetrics, outlineMode);
|
double x = super.getLabelX(shapeRect, textRect, fontMetrics, outlineMode);
|
||||||
if (getFlip() == SymbolFlipping.X)
|
if (getFlip() == SymbolFlipping.X)
|
||||||
return x - (int) (PIN_SPACING.convertToPixels() / 2);
|
return x - (int) (PIN_SPACING.convertToPixels() / 2);
|
||||||
return x + (int) PIN_SPACING.convertToPixels();
|
return x + (int) PIN_SPACING.convertToPixels();
|
||||||
|
|||||||
@@ -23,9 +23,9 @@ package org.diylc.components.passive;
|
|||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.GeneralPath;
|
import java.awt.geom.GeneralPath;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
import org.diylc.appframework.miscutils.ConfigurationManager;
|
import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||||
import org.diylc.common.IPlugInPort;
|
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 COLOR = Color.blue;
|
||||||
public static Color LEAD_COLOR = Color.black;
|
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 Orientation orientation = Orientation.DEFAULT;
|
||||||
private org.diylc.core.measures.Voltage voltage = null;
|
private org.diylc.core.measures.Voltage voltage = null;
|
||||||
private Color color = COLOR;
|
private Color color = COLOR;
|
||||||
@@ -96,9 +96,9 @@ public class TransformerCoil extends AbstractComponent<org.diylc.core.measures.V
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
Point refPoint = this.controlPoints[0];
|
Point2D refPoint = this.controlPoints[0];
|
||||||
for (int i = 1; i < controlPoints.length; i++) {
|
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
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return this.controlPoints[index];
|
return this.controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
this.controlPoints[index].setLocation(point);
|
this.controlPoints[index].setLocation(point);
|
||||||
this.body = null;
|
this.body = null;
|
||||||
}
|
}
|
||||||
@@ -248,11 +248,11 @@ public class TransformerCoil extends AbstractComponent<org.diylc.core.measures.V
|
|||||||
double offset = OFFSET.convertToPixels();
|
double offset = OFFSET.convertToPixels();
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
leads.moveTo(this.controlPoints[i].x, this.controlPoints[i].y);
|
leads.moveTo(this.controlPoints[i].getX(), this.controlPoints[i].getY());
|
||||||
leads
|
leads
|
||||||
.lineTo(this.controlPoints[i].x + fx * (spacing + offset), this.controlPoints[i].y + fy * (spacing + offset));
|
.lineTo(this.controlPoints[i].getX() + fx * (spacing + offset), this.controlPoints[i].getY() + fy * (spacing + offset));
|
||||||
leads.moveTo(this.controlPoints[i + 1].x, this.controlPoints[i + 1].y);
|
leads.moveTo(this.controlPoints[i + 1].getX(), this.controlPoints[i + 1].getY());
|
||||||
leads.lineTo(this.controlPoints[i + 1].x + fx * (spacing + offset), this.controlPoints[i + 1].y + fy
|
leads.lineTo(this.controlPoints[i + 1].getX() + fx * (spacing + offset), this.controlPoints[i + 1].getY() + fy
|
||||||
* (spacing + offset));
|
* (spacing + offset));
|
||||||
|
|
||||||
double dx = this.controlPoints[i + 1].getX() - this.controlPoints[i].getX();
|
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 x1 = this.controlPoints[i].getX() + fx * (spacing + d + offset);
|
||||||
double y1 = this.controlPoints[i].getY() + fy * (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 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 dxa = x2 - x1;
|
||||||
double dya = y2 - y1;
|
double dya = y2 - y1;
|
||||||
|
|
||||||
|
|||||||
@@ -23,8 +23,8 @@ package org.diylc.components.passive;
|
|||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.geom.GeneralPath;
|
import java.awt.geom.GeneralPath;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
|
|
||||||
import org.diylc.appframework.miscutils.ConfigurationManager;
|
import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||||
import org.diylc.common.IPlugInPort;
|
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 Size SPACING = new Size(0.025d, SizeUnit.in);
|
||||||
public static Color COLOR = Color.blue;
|
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;
|
protected Color color = COLOR;
|
||||||
|
|
||||||
@@ -68,12 +68,12 @@ public class TransformerCore extends AbstractComponent<Void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return this.controlPoints[index];
|
return this.controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
this.controlPoints[index].setLocation(point);
|
this.controlPoints[index].setLocation(point);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -115,7 +115,7 @@ public class TransformerCore extends AbstractComponent<Void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
double theta =
|
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;
|
+ Math.PI / 2;
|
||||||
double spacing = SPACING.convertToPixels();
|
double spacing = SPACING.convertToPixels();
|
||||||
// System.out.println(theta);
|
// System.out.println(theta);
|
||||||
@@ -124,9 +124,9 @@ public class TransformerCore extends AbstractComponent<Void> {
|
|||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
|
||||||
|
|
||||||
g2d.translate(spacing * Math.cos(theta) / 2, spacing * Math.sin(theta) / 2);
|
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.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
|
@Override
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import java.awt.Shape;
|
|||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.awt.geom.RoundRectangle2D;
|
import java.awt.geom.RoundRectangle2D;
|
||||||
|
|
||||||
@@ -283,8 +284,8 @@ public class TrimmerPotentiometer extends AbstractPotentiometer {
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
controlPoints[1].setLocation(controlPoints[0].x + dx1, controlPoints[0].y + dy1);
|
controlPoints[1].setLocation(controlPoints[0].getX() + dx1, controlPoints[0].getY() + dy1);
|
||||||
controlPoints[2].setLocation(controlPoints[0].x + dx2, controlPoints[0].y + dy2);
|
controlPoints[2].setLocation(controlPoints[0].getX() + dx2, controlPoints[0].getY() + dy2);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Shape[] getBody() {
|
public Shape[] getBody() {
|
||||||
@@ -293,12 +294,12 @@ public class TrimmerPotentiometer extends AbstractPotentiometer {
|
|||||||
|
|
||||||
// Calculate the center point as center of the minimum bounding
|
// Calculate the center point as center of the minimum bounding
|
||||||
// rectangle.
|
// rectangle.
|
||||||
int centerX =
|
double centerX =
|
||||||
(Math.max(Math.max(controlPoints[0].x, controlPoints[1].x), controlPoints[2].x) + Math.min(
|
(Math.max(Math.max(controlPoints[0].getX(), controlPoints[1].getX()), controlPoints[2].getX()) + Math.min(
|
||||||
Math.min(controlPoints[0].x, controlPoints[1].x), controlPoints[2].x)) / 2;
|
Math.min(controlPoints[0].getX(), controlPoints[1].getX()), controlPoints[2].getX())) / 2;
|
||||||
int centerY =
|
double centerY =
|
||||||
(Math.max(Math.max(controlPoints[0].y, controlPoints[1].y), controlPoints[2].y) + Math.min(
|
(Math.max(Math.max(controlPoints[0].getY(), controlPoints[1].getY()), controlPoints[2].getY()) + Math.min(
|
||||||
Math.min(controlPoints[0].y, controlPoints[1].y), controlPoints[2].y)) / 2;
|
Math.min(controlPoints[0].getY(), controlPoints[1].getY()), controlPoints[2].getY())) / 2;
|
||||||
|
|
||||||
// Calculate body dimensions based on the selected type.
|
// Calculate body dimensions based on the selected type.
|
||||||
int length = 0;
|
int length = 0;
|
||||||
@@ -350,7 +351,7 @@ public class TrimmerPotentiometer extends AbstractPotentiometer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
super.setControlPoint(point, index);
|
super.setControlPoint(point, index);
|
||||||
body = null;
|
body = null;
|
||||||
}
|
}
|
||||||
@@ -404,13 +405,13 @@ public class TrimmerPotentiometer extends AbstractPotentiometer {
|
|||||||
|
|
||||||
// Draw pins.
|
// Draw pins.
|
||||||
int pinSize = getClosestOdd(PIN_SIZE.convertToPixels());
|
int pinSize = getClosestOdd(PIN_SIZE.convertToPixels());
|
||||||
for (Point point : controlPoints) {
|
for (Point2D point : controlPoints) {
|
||||||
if (!outlineMode) {
|
if (!outlineMode) {
|
||||||
g2d.setColor(PIN_COLOR);
|
g2d.setColor(PIN_COLOR);
|
||||||
g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
|
g2d.fillOval((int)(point.getX() - pinSize / 2), (int)(point.getY() - pinSize / 2), pinSize, pinSize);
|
||||||
}
|
}
|
||||||
g2d.setColor(outlineMode ? theme.getOutlineColor() : PIN_BORDER_COLOR);
|
g2d.setColor(outlineMode ? theme.getOutlineColor() : PIN_BORDER_COLOR);
|
||||||
g2d.drawOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
|
g2d.drawOval((int)(point.getX() - pinSize / 2), (int)(point.getY() - pinSize / 2), pinSize, pinSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Draw label.
|
// Draw label.
|
||||||
|
|||||||
+2
-1
@@ -26,6 +26,7 @@ import java.awt.Font;
|
|||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
import java.awt.Point;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import org.diylc.awt.StringUtils;
|
import org.diylc.awt.StringUtils;
|
||||||
@@ -157,7 +158,7 @@ public abstract class AbstractTransistorPackage extends AbstractTransparentCompo
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
controlPoints[index].setLocation(point);
|
controlPoints[index].setLocation(point);
|
||||||
body = null;
|
body = null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,12 +22,12 @@
|
|||||||
package org.diylc.components.semiconductors;
|
package org.diylc.components.semiconductors;
|
||||||
|
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Polygon;
|
import java.awt.Polygon;
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.GeneralPath;
|
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.Abstract3LegSymbol;
|
||||||
@@ -48,9 +48,9 @@ public class BJTSymbol extends Abstract3LegSymbol {
|
|||||||
|
|
||||||
public Shape[] getBody() {
|
public Shape[] getBody() {
|
||||||
Shape[] body = new Shape[3];
|
Shape[] body = new Shape[3];
|
||||||
Point[] controlPoints = getControlPoints();
|
Point2D[] controlPoints = getControlPoints();
|
||||||
int x = controlPoints[0].x;
|
int x = (int) controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
int y = (int) controlPoints[0].getY();
|
||||||
int pinSpacing = (int) PIN_SPACING.convertToPixels();
|
int pinSpacing = (int) PIN_SPACING.convertToPixels();
|
||||||
|
|
||||||
GeneralPath polyline = new GeneralPath();
|
GeneralPath polyline = new GeneralPath();
|
||||||
|
|||||||
@@ -26,11 +26,11 @@ import java.awt.Color;
|
|||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Rectangle;
|
import java.awt.Rectangle;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.awt.geom.RoundRectangle2D;
|
import java.awt.geom.RoundRectangle2D;
|
||||||
|
|
||||||
@@ -103,7 +103,7 @@ public class BridgeRectifier extends AbstractTransparentComponent<String> {
|
|||||||
|
|
||||||
private String value = "";
|
private String value = "";
|
||||||
private Orientation orientation = Orientation.DEFAULT;
|
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[] { "+", "~", "~", "-" };
|
private String[] pointLabels = new String[] { "+", "~", "~", "-" };
|
||||||
protected Display display = Display.BOTH;
|
protected Display display = Display.BOTH;
|
||||||
private Color bodyColor = BODY_COLOR;
|
private Color bodyColor = BODY_COLOR;
|
||||||
@@ -160,7 +160,7 @@ public class BridgeRectifier extends AbstractTransparentComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -175,14 +175,14 @@ public class BridgeRectifier extends AbstractTransparentComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
controlPoints[index].setLocation(point);
|
controlPoints[index].setLocation(point);
|
||||||
body = null;
|
body = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("incomplete-switch")
|
@SuppressWarnings("incomplete-switch")
|
||||||
private void updateControlPoints() {
|
private void updateControlPoints() {
|
||||||
Point firstPoint = controlPoints[0];
|
Point2D firstPoint = controlPoints[0];
|
||||||
|
|
||||||
int hSpacing;
|
int hSpacing;
|
||||||
int vSpacing;
|
int vSpacing;
|
||||||
@@ -191,40 +191,40 @@ public class BridgeRectifier extends AbstractTransparentComponent<String> {
|
|||||||
case MiniDIP1:
|
case MiniDIP1:
|
||||||
hSpacing = (int) MINI_HORIZONTAL_SPACING.convertToPixels();
|
hSpacing = (int) MINI_HORIZONTAL_SPACING.convertToPixels();
|
||||||
vSpacing = (int) MINI_VERTICAL_SPACING.convertToPixels();
|
vSpacing = (int) MINI_VERTICAL_SPACING.convertToPixels();
|
||||||
controlPoints[1].setLocation(firstPoint.x + hSpacing, firstPoint.y);
|
controlPoints[1].setLocation(firstPoint.getX() + hSpacing, firstPoint.getY());
|
||||||
controlPoints[2].setLocation(firstPoint.x + hSpacing, firstPoint.y + vSpacing);
|
controlPoints[2].setLocation(firstPoint.getX() + hSpacing, firstPoint.getY() + vSpacing);
|
||||||
controlPoints[3].setLocation(firstPoint.x, firstPoint.y + vSpacing);
|
controlPoints[3].setLocation(firstPoint.getX(), firstPoint.getY() + vSpacing);
|
||||||
break;
|
break;
|
||||||
case MiniDIP2:
|
case MiniDIP2:
|
||||||
hSpacing = (int) MINI_HORIZONTAL_SPACING.convertToPixels();
|
hSpacing = (int) MINI_HORIZONTAL_SPACING.convertToPixels();
|
||||||
vSpacing = (int) MINI_VERTICAL_SPACING.convertToPixels();
|
vSpacing = (int) MINI_VERTICAL_SPACING.convertToPixels();
|
||||||
controlPoints[1].setLocation(firstPoint.x + hSpacing, firstPoint.y);
|
controlPoints[1].setLocation(firstPoint.getX() + hSpacing, firstPoint.getY());
|
||||||
controlPoints[2].setLocation(firstPoint.x, firstPoint.y + vSpacing);
|
controlPoints[2].setLocation(firstPoint.getX(), firstPoint.getY() + vSpacing);
|
||||||
controlPoints[3].setLocation(firstPoint.x + hSpacing, firstPoint.y + vSpacing);
|
controlPoints[3].setLocation(firstPoint.getX() + hSpacing, firstPoint.getY() + vSpacing);
|
||||||
break;
|
break;
|
||||||
case MiniRound1:
|
case MiniRound1:
|
||||||
hSpacing = vSpacing = (int) MINI_ROUND_SPACING.convertToPixels();
|
hSpacing = vSpacing = (int) MINI_ROUND_SPACING.convertToPixels();
|
||||||
controlPoints[1].setLocation(firstPoint.x + hSpacing, firstPoint.y);
|
controlPoints[1].setLocation(firstPoint.getX() + hSpacing, firstPoint.getY());
|
||||||
controlPoints[2].setLocation(firstPoint.x + hSpacing, firstPoint.y + vSpacing);
|
controlPoints[2].setLocation(firstPoint.getX() + hSpacing, firstPoint.getY() + vSpacing);
|
||||||
controlPoints[3].setLocation(firstPoint.x, firstPoint.y + vSpacing);
|
controlPoints[3].setLocation(firstPoint.getX(), firstPoint.getY() + vSpacing);
|
||||||
break;
|
break;
|
||||||
case MiniRound2:
|
case MiniRound2:
|
||||||
hSpacing = vSpacing = (int) MINI_ROUND_SPACING.convertToPixels();
|
hSpacing = vSpacing = (int) MINI_ROUND_SPACING.convertToPixels();
|
||||||
controlPoints[1].setLocation(firstPoint.x + hSpacing, firstPoint.y);
|
controlPoints[1].setLocation(firstPoint.getX() + hSpacing, firstPoint.getY());
|
||||||
controlPoints[2].setLocation(firstPoint.x, firstPoint.y + vSpacing);
|
controlPoints[2].setLocation(firstPoint.getX(), firstPoint.getY() + vSpacing);
|
||||||
controlPoints[3].setLocation(firstPoint.x + hSpacing, firstPoint.y + vSpacing);
|
controlPoints[3].setLocation(firstPoint.getX() + hSpacing, firstPoint.getY() + vSpacing);
|
||||||
break;
|
break;
|
||||||
case InLine:
|
case InLine:
|
||||||
vSpacing = (int) INLINE_SPACING.convertToPixels();
|
vSpacing = (int) INLINE_SPACING.convertToPixels();
|
||||||
controlPoints[1].setLocation(firstPoint.x, firstPoint.y + vSpacing);
|
controlPoints[1].setLocation(firstPoint.getX(), firstPoint.getY() + vSpacing);
|
||||||
controlPoints[2].setLocation(firstPoint.x, firstPoint.y + 2 * vSpacing);
|
controlPoints[2].setLocation(firstPoint.getX(), firstPoint.getY() + 2 * vSpacing);
|
||||||
controlPoints[3].setLocation(firstPoint.x, firstPoint.y + 3 * vSpacing);
|
controlPoints[3].setLocation(firstPoint.getX(), firstPoint.getY() + 3 * vSpacing);
|
||||||
break;
|
break;
|
||||||
case SquareBR3:
|
case SquareBR3:
|
||||||
hSpacing = vSpacing = (int) BR3_SPACING.convertToPixels();
|
hSpacing = vSpacing = (int) BR3_SPACING.convertToPixels();
|
||||||
controlPoints[1].setLocation(firstPoint.x + hSpacing, firstPoint.y);
|
controlPoints[1].setLocation(firstPoint.getX() + hSpacing, firstPoint.getY());
|
||||||
controlPoints[2].setLocation(firstPoint.x, firstPoint.y + vSpacing);
|
controlPoints[2].setLocation(firstPoint.getX(), firstPoint.getY() + vSpacing);
|
||||||
controlPoints[3].setLocation(firstPoint.x + hSpacing, firstPoint.y + vSpacing);
|
controlPoints[3].setLocation(firstPoint.getX() + hSpacing, firstPoint.getY() + vSpacing);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -241,7 +241,7 @@ public class BridgeRectifier extends AbstractTransparentComponent<String> {
|
|||||||
theta = Math.PI * 3 / 2;
|
theta = Math.PI * 3 / 2;
|
||||||
break;
|
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++) {
|
for (int i = 1; i < controlPoints.length; i++) {
|
||||||
rotation.transform(controlPoints[i], controlPoints[i]);
|
rotation.transform(controlPoints[i], controlPoints[i]);
|
||||||
@@ -254,8 +254,8 @@ public class BridgeRectifier extends AbstractTransparentComponent<String> {
|
|||||||
if (body == null) {
|
if (body == null) {
|
||||||
body = new Area[2];
|
body = new Area[2];
|
||||||
|
|
||||||
int centerX = (controlPoints[0].x + controlPoints[1].x + controlPoints[2].x + controlPoints[3].x) / 4;
|
double centerX = (controlPoints[0].getX() + controlPoints[1].getX() + controlPoints[2].getX() + controlPoints[3].getX()) / 4;
|
||||||
int centerY = (controlPoints[0].y + controlPoints[1].y + controlPoints[2].y + controlPoints[3].y) / 4;
|
double centerY = (controlPoints[0].getY() + controlPoints[1].getY() + controlPoints[2].getY() + controlPoints[3].getY()) / 4;
|
||||||
|
|
||||||
int width = 0;
|
int width = 0;
|
||||||
int length = 0;
|
int length = 0;
|
||||||
@@ -307,13 +307,13 @@ public class BridgeRectifier extends AbstractTransparentComponent<String> {
|
|||||||
// path.lineTo(centerX - width / 2, centerY - width / 2 + margin);
|
// path.lineTo(centerX - width / 2, centerY - width / 2 + margin);
|
||||||
// path.closePath();
|
// path.closePath();
|
||||||
|
|
||||||
RoundedPolygon poly = new RoundedPolygon(new Point[] {
|
RoundedPolygon poly = new RoundedPolygon(new Point2D[] {
|
||||||
new Point(centerX, centerY - width / 2),
|
new Point2D.Double(centerX, centerY - width / 2),
|
||||||
new Point(centerX + width / 2, centerY - width / 2),
|
new Point2D.Double(centerX + width / 2, centerY - width / 2),
|
||||||
new Point(centerX + width / 2, centerY + width / 2),
|
new Point2D.Double(centerX + width / 2, centerY + width / 2),
|
||||||
new Point(centerX - width / 2, centerY + width / 2),
|
new Point2D.Double(centerX - width / 2, centerY + width / 2),
|
||||||
new Point(centerX - width / 2, (int) (centerY - width / 2 + margin)),
|
new Point2D.Double(centerX - width / 2, (int) (centerY - width / 2 + margin)),
|
||||||
new Point((int) (centerX - width / 2 + margin), centerY - width / 2),
|
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});
|
}, 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));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1f));
|
||||||
if (!outlineMode) {
|
if (!outlineMode) {
|
||||||
for (Point point : controlPoints) {
|
for (Point2D point : controlPoints) {
|
||||||
g2d.setColor(PIN_COLOR);
|
g2d.setColor(PIN_COLOR);
|
||||||
if (pinShape == PinShape.Round)
|
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
|
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);
|
g2d.setColor(PIN_BORDER_COLOR);
|
||||||
if (pinShape == PinShape.Round)
|
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
|
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());
|
int textWidth = (int) (rect.getWidth());
|
||||||
// Center text horizontally and vertically
|
// Center text horizontally and vertically
|
||||||
Rectangle bounds = mainArea.getBounds();
|
Rectangle bounds = mainArea.getBounds();
|
||||||
int x = bounds.x + (bounds.width - textWidth) / 2;
|
double x = bounds.getX() + (bounds.width - textWidth) / 2;
|
||||||
int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
|
double y = bounds.getY() + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
|
||||||
|
|
||||||
AffineTransform oldTransform = g2d.getTransform();
|
AffineTransform oldTransform = g2d.getTransform();
|
||||||
|
|
||||||
if (getLabelOriantation() == LabelOriantation.Directional && (getOrientation() == Orientation.DEFAULT || getOrientation() == Orientation._180)) {
|
if (getLabelOriantation() == LabelOriantation.Directional && (getOrientation() == Orientation.DEFAULT || getOrientation() == Orientation._180)) {
|
||||||
int centerX = bounds.x + bounds.width / 2;
|
double centerX = bounds.getX() + bounds.width / 2;
|
||||||
int centerY = bounds.y + bounds.height / 2;
|
double centerY = bounds.getY() + bounds.height / 2;
|
||||||
g2d.rotate(-Math.PI / 2, centerX, centerY);
|
g2d.rotate(-Math.PI / 2, centerX, centerY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -464,7 +464,7 @@ public class BridgeRectifier extends AbstractTransparentComponent<String> {
|
|||||||
if (rectifierType == RectifierType.SquareBR3)
|
if (rectifierType == RectifierType.SquareBR3)
|
||||||
y -= BR3_HOLE_SIZE.convertToPixels();
|
y -= BR3_HOLE_SIZE.convertToPixels();
|
||||||
|
|
||||||
g2d.drawString(l, x, y);
|
g2d.drawString(l, (int)x, (int)y);
|
||||||
|
|
||||||
g2d.setTransform(oldTransform);
|
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.setFont(project.getFont().deriveFont((float) (project.getFont().getSize2D() * 0.8)));
|
||||||
g2d.setColor(finalLabelColor);
|
g2d.setColor(finalLabelColor);
|
||||||
for (int i = 0; i <controlPoints.length; i++) {
|
for (int i = 0; i <controlPoints.length; i++) {
|
||||||
Point point = controlPoints[i];
|
Point2D point = controlPoints[i];
|
||||||
|
|
||||||
int dx = 0;
|
int dx = 0;
|
||||||
int dy = 0;
|
int dy = 0;
|
||||||
@@ -563,7 +563,7 @@ public class BridgeRectifier extends AbstractTransparentComponent<String> {
|
|||||||
break;
|
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.Composite;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Rectangle;
|
import java.awt.Rectangle;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.awt.geom.RoundRectangle2D;
|
import java.awt.geom.RoundRectangle2D;
|
||||||
|
|
||||||
@@ -79,7 +79,7 @@ public class DIL_IC extends AbstractTransparentComponent<String> {
|
|||||||
private PinCount pinCount = PinCount._8;
|
private PinCount pinCount = PinCount._8;
|
||||||
private Size pinSpacing = new Size(0.1d, SizeUnit.in);
|
private Size pinSpacing = new Size(0.1d, SizeUnit.in);
|
||||||
private Size rowSpacing = new Size(0.3d, 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;
|
protected Display display = Display.BOTH;
|
||||||
private Color bodyColor = BODY_COLOR;
|
private Color bodyColor = BODY_COLOR;
|
||||||
private Color borderColor = BORDER_COLOR;
|
private Color borderColor = BORDER_COLOR;
|
||||||
@@ -178,7 +178,7 @@ public class DIL_IC extends AbstractTransparentComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -193,14 +193,14 @@ public class DIL_IC extends AbstractTransparentComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
controlPoints[index].setLocation(point);
|
controlPoints[index].setLocation(point);
|
||||||
body = null;
|
body = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateControlPoints() {
|
private void updateControlPoints() {
|
||||||
Point firstPoint = controlPoints[0];
|
Point2D firstPoint = controlPoints[0];
|
||||||
controlPoints = new Point[pinCount.getValue()];
|
controlPoints = new Point2D[pinCount.getValue()];
|
||||||
controlPoints[0] = firstPoint;
|
controlPoints[0] = firstPoint;
|
||||||
double pinSpacing = this.pinSpacing.convertToPixels();
|
double pinSpacing = this.pinSpacing.convertToPixels();
|
||||||
double rowSpacing = this.rowSpacing.convertToPixels();
|
double rowSpacing = this.rowSpacing.convertToPixels();
|
||||||
@@ -238,16 +238,16 @@ public class DIL_IC extends AbstractTransparentComponent<String> {
|
|||||||
default:
|
default:
|
||||||
throw new RuntimeException("Unexpected orientation: " + orientation);
|
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));
|
||||||
controlPoints[i + pinCount.getValue() / 2] = new Point((int) (firstPoint.x + dx2), (int) (firstPoint.y + dy2));
|
controlPoints[i + pinCount.getValue() / 2] = new Point2D.Double((int) (firstPoint.getX() + dx2), (int) (firstPoint.getY() + dy2));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Area[] getBody() {
|
public Area[] getBody() {
|
||||||
if (body == null) {
|
if (body == null) {
|
||||||
body = new Area[2];
|
body = new Area[2];
|
||||||
double x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
double y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
double width;
|
double width;
|
||||||
double height;
|
double height;
|
||||||
double pinSize = PIN_SIZE.convertToPixels();
|
double pinSize = PIN_SIZE.convertToPixels();
|
||||||
@@ -314,11 +314,11 @@ public class DIL_IC extends AbstractTransparentComponent<String> {
|
|||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1f));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1f));
|
||||||
if (!outlineMode) {
|
if (!outlineMode) {
|
||||||
int pinSize = (int) PIN_SIZE.convertToPixels() / 2 * 2;
|
int pinSize = (int) PIN_SIZE.convertToPixels() / 2 * 2;
|
||||||
for (Point point : controlPoints) {
|
for (Point2D point : controlPoints) {
|
||||||
g2d.setColor(PIN_COLOR);
|
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.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();
|
Composite oldComposite = g2d.getComposite();
|
||||||
@@ -392,14 +392,14 @@ public class DIL_IC extends AbstractTransparentComponent<String> {
|
|||||||
int textWidth = (int) (rect.getWidth());
|
int textWidth = (int) (rect.getWidth());
|
||||||
// Center text horizontally and vertically
|
// Center text horizontally and vertically
|
||||||
Rectangle bounds = mainArea.getBounds();
|
Rectangle bounds = mainArea.getBounds();
|
||||||
int x = bounds.x + (bounds.width - textWidth) / 2;
|
double x = bounds.getX() + (bounds.width - textWidth) / 2;
|
||||||
int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
|
double y = bounds.getY() + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
|
||||||
|
|
||||||
AffineTransform oldTransform = g2d.getTransform();
|
AffineTransform oldTransform = g2d.getTransform();
|
||||||
|
|
||||||
if (getOrientation() == Orientation.DEFAULT || getOrientation() == Orientation._180) {
|
if (getOrientation() == Orientation.DEFAULT || getOrientation() == Orientation._180) {
|
||||||
int centerX = bounds.x + bounds.width / 2;
|
double centerX = bounds.getX() + bounds.width / 2;
|
||||||
int centerY = bounds.y + bounds.height / 2;
|
double centerY = bounds.getY() + bounds.height / 2;
|
||||||
g2d.rotate(-Math.PI / 2, centerX, centerY);
|
g2d.rotate(-Math.PI / 2, centerX, centerY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -410,7 +410,7 @@ public class DIL_IC extends AbstractTransparentComponent<String> {
|
|||||||
g2d.translate(0, textHeight / 2);
|
g2d.translate(0, textHeight / 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
g2d.drawString(l, x, y);
|
g2d.drawString(l, (int)x, (int)y);
|
||||||
|
|
||||||
g2d.setTransform(oldTransform);
|
g2d.setTransform(oldTransform);
|
||||||
}
|
}
|
||||||
@@ -421,14 +421,14 @@ public class DIL_IC extends AbstractTransparentComponent<String> {
|
|||||||
int j = 0;
|
int j = 0;
|
||||||
int k = 0;
|
int k = 0;
|
||||||
int pinSize = (int) PIN_SIZE.convertToPixels();
|
int pinSize = (int) PIN_SIZE.convertToPixels();
|
||||||
for (Point point : controlPoints) {
|
for (Point2D point : controlPoints) {
|
||||||
pinNo++;
|
pinNo++;
|
||||||
|
|
||||||
// determine points relative to rotation
|
// determine points relative to rotation
|
||||||
int textX1 = point.x - 2 * pinSize;
|
int textX1 = (int) (point.getX() - 2 * pinSize);
|
||||||
int textY1 = point.y + pinSize / 2;
|
int textY1 = (int) (point.getY() + pinSize / 2);
|
||||||
int textX2 = point.x + pinSize;
|
int textX2 = (int) (point.getX() + pinSize);
|
||||||
int textY2 = point.y + pinSize / 2;
|
int textY2 = (int) (point.getY() + pinSize / 2);
|
||||||
if (orientation == Orientation._90) {
|
if (orientation == Orientation._90) {
|
||||||
textX2 = textX2 - pinSize - pinSize / 2;
|
textX2 = textX2 - pinSize - pinSize / 2;
|
||||||
textY2 = textY2 + pinSize;
|
textY2 = textY2 + pinSize;
|
||||||
@@ -560,21 +560,21 @@ public class DIL_IC extends AbstractTransparentComponent<String> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Rectangle2D getCachingBounds() {
|
public Rectangle2D getCachingBounds() {
|
||||||
int minX = Integer.MAX_VALUE;
|
double minX = Integer.MAX_VALUE;
|
||||||
int maxX = Integer.MIN_VALUE;
|
double maxX = Integer.MIN_VALUE;
|
||||||
int minY = Integer.MAX_VALUE;
|
double minY = Integer.MAX_VALUE;
|
||||||
int maxY = Integer.MIN_VALUE;
|
double maxY = Integer.MIN_VALUE;
|
||||||
int margin = 50;
|
int margin = 50;
|
||||||
for (int i = 0; i < getControlPointCount(); i++) {
|
for (int i = 0; i < getControlPointCount(); i++) {
|
||||||
Point p = getControlPoint(i);
|
Point2D p = getControlPoint(i);
|
||||||
if (p.x < minX)
|
if (p.getX() < minX)
|
||||||
minX = p.x;
|
minX = p.getX();
|
||||||
if (p.x > maxX)
|
if (p.getX() > maxX)
|
||||||
maxX = p.x;
|
maxX = p.getX();
|
||||||
if (p.y < minY)
|
if (p.getY() < minY)
|
||||||
minY = p.y;
|
minY = p.getY();
|
||||||
if (p.y > maxY)
|
if (p.getY() > maxY)
|
||||||
maxY = p.y;
|
maxY = p.getY();
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Rectangle2D.Double(minX - margin, minY - margin, maxX - minX + 2 * margin, maxY - minY + 2 * margin);
|
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.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Polygon;
|
import java.awt.Polygon;
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.GeneralPath;
|
import java.awt.geom.GeneralPath;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import org.diylc.appframework.miscutils.ConfigurationManager;
|
import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||||
@@ -66,8 +66,8 @@ public class ICSymbol extends AbstractTransparentComponent<String> {
|
|||||||
|
|
||||||
protected ICPointCount icPointCount = ICPointCount._5;
|
protected ICPointCount icPointCount = ICPointCount._5;
|
||||||
protected String value = "";
|
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),
|
||||||
new Point(0, 0)};
|
new Point2D.Double(0, 0)};
|
||||||
protected Color bodyColor = BODY_COLOR;
|
protected Color bodyColor = BODY_COLOR;
|
||||||
protected Color borderColor = BORDER_COLOR;
|
protected Color borderColor = BORDER_COLOR;
|
||||||
protected Display display = Display.NAME;
|
protected Display display = Display.NAME;
|
||||||
@@ -126,7 +126,7 @@ public class ICSymbol extends AbstractTransparentComponent<String> {
|
|||||||
: LABEL_COLOR;
|
: LABEL_COLOR;
|
||||||
}
|
}
|
||||||
g2d.setColor(finalLabelColor);
|
g2d.setColor(finalLabelColor);
|
||||||
int x = (controlPoints[0].x + controlPoints[2].x) / 2;
|
double x = (controlPoints[0].getX() + controlPoints[2].getX()) / 2;
|
||||||
String label = "";
|
String label = "";
|
||||||
label = display == Display.VALUE ? getValue() : getName();
|
label = display == Display.VALUE ? getValue() : getName();
|
||||||
if (display == Display.NONE) {
|
if (display == Display.NONE) {
|
||||||
@@ -135,12 +135,12 @@ public class ICSymbol extends AbstractTransparentComponent<String> {
|
|||||||
if (display == Display.BOTH) {
|
if (display == Display.BOTH) {
|
||||||
label = getName() + " " + (getValue() == null ? "" : getValue().toString());
|
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);
|
VerticalAlignment.CENTER);
|
||||||
// Draw +/- markers
|
// 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);
|
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);
|
VerticalAlignment.CENTER);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -165,7 +165,7 @@ public class ICSymbol extends AbstractTransparentComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -177,45 +177,38 @@ public class ICSymbol extends AbstractTransparentComponent<String> {
|
|||||||
private void updateControlPoints() {
|
private void updateControlPoints() {
|
||||||
int pinSpacing = (int) PIN_SPACING.convertToPixels();
|
int pinSpacing = (int) PIN_SPACING.convertToPixels();
|
||||||
// Update control points.
|
// Update control points.
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
|
|
||||||
controlPoints[1].x = x;
|
controlPoints[1].setLocation(x, y + pinSpacing * 2);
|
||||||
controlPoints[1].y = y + pinSpacing * 2;
|
controlPoints[2].setLocation(x + pinSpacing * 6, y + pinSpacing);
|
||||||
|
controlPoints[3].setLocation(x + pinSpacing * 3, y - pinSpacing);
|
||||||
controlPoints[2].x = x + pinSpacing * 6;
|
controlPoints[4].setLocation(x + pinSpacing * 3, y + pinSpacing * 3);
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Shape[] getBody() {
|
public Shape[] getBody() {
|
||||||
if (body == null) {
|
if (body == null) {
|
||||||
body = new Shape[2];
|
body = new Shape[2];
|
||||||
int pinSpacing = (int) PIN_SPACING.convertToPixels();
|
int pinSpacing = (int) PIN_SPACING.convertToPixels();
|
||||||
int x = controlPoints[0].x;
|
int x = (int) controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
int y = (int) controlPoints[0].getY();
|
||||||
Shape triangle =
|
Shape triangle =
|
||||||
new Polygon(new int[] {x + pinSpacing / 2, x + pinSpacing * 11 / 2, x + pinSpacing / 2}, new int[] {
|
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);
|
y - pinSpacing * 3 / 2, y + pinSpacing, y + pinSpacing * 7 / 2}, 3);
|
||||||
body[0] = triangle;
|
body[0] = triangle;
|
||||||
|
|
||||||
GeneralPath polyline = new GeneralPath();
|
GeneralPath polyline = new GeneralPath();
|
||||||
polyline.moveTo(controlPoints[0].x, controlPoints[0].y);
|
polyline.moveTo(controlPoints[0].getX(), controlPoints[0].getY());
|
||||||
polyline.lineTo(controlPoints[0].x + pinSpacing / 2, controlPoints[0].y);
|
polyline.lineTo(controlPoints[0].getX() + pinSpacing / 2, controlPoints[0].getY());
|
||||||
polyline.moveTo(controlPoints[1].x, controlPoints[1].y);
|
polyline.moveTo(controlPoints[1].getX(), controlPoints[1].getY());
|
||||||
polyline.lineTo(controlPoints[1].x + pinSpacing / 2, controlPoints[1].y);
|
polyline.lineTo(controlPoints[1].getX() + pinSpacing / 2, controlPoints[1].getY());
|
||||||
polyline.moveTo(controlPoints[2].x, controlPoints[2].y);
|
polyline.moveTo(controlPoints[2].getX(), controlPoints[2].getY());
|
||||||
polyline.lineTo(controlPoints[2].x - pinSpacing / 2, controlPoints[2].y);
|
polyline.lineTo(controlPoints[2].getX() - pinSpacing / 2, controlPoints[2].getY());
|
||||||
if (icPointCount == ICPointCount._5) {
|
if (icPointCount == ICPointCount._5) {
|
||||||
polyline.moveTo(controlPoints[3].x, controlPoints[3].y);
|
polyline.moveTo(controlPoints[3].getX(), controlPoints[3].getY());
|
||||||
polyline.lineTo(controlPoints[3].x, controlPoints[3].y + pinSpacing * 3 / 4);
|
polyline.lineTo(controlPoints[3].getX(), controlPoints[3].getY() + pinSpacing * 3 / 4);
|
||||||
polyline.moveTo(controlPoints[4].x, controlPoints[4].y);
|
polyline.moveTo(controlPoints[4].getX(), controlPoints[4].getY());
|
||||||
polyline.lineTo(controlPoints[4].x, controlPoints[4].y - pinSpacing * 3 / 4);
|
polyline.lineTo(controlPoints[4].getX(), controlPoints[4].getY() - pinSpacing * 3 / 4);
|
||||||
}
|
}
|
||||||
body[1] = polyline;
|
body[1] = polyline;
|
||||||
}
|
}
|
||||||
@@ -244,7 +237,7 @@ public class ICSymbol extends AbstractTransparentComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
controlPoints[index].setLocation(point);
|
controlPoints[index].setLocation(point);
|
||||||
body = null;
|
body = null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,10 +22,10 @@
|
|||||||
package org.diylc.components.semiconductors;
|
package org.diylc.components.semiconductors;
|
||||||
|
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Polygon;
|
import java.awt.Polygon;
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.GeneralPath;
|
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.Abstract3LegSymbol;
|
||||||
@@ -46,9 +46,9 @@ public class JFETSymbol extends Abstract3LegSymbol {
|
|||||||
|
|
||||||
public Shape[] getBody() {
|
public Shape[] getBody() {
|
||||||
Shape[] body = new Shape[3];
|
Shape[] body = new Shape[3];
|
||||||
Point[] controlPoints = getControlPoints();
|
Point2D[] controlPoints = getControlPoints();
|
||||||
int x = controlPoints[0].x;
|
int x = (int) controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
int y = (int) controlPoints[0].getY();
|
||||||
int pinSpacing = (int) PIN_SPACING.convertToPixels();
|
int pinSpacing = (int) PIN_SPACING.convertToPixels();
|
||||||
|
|
||||||
GeneralPath polyline = new GeneralPath();
|
GeneralPath polyline = new GeneralPath();
|
||||||
|
|||||||
@@ -21,13 +21,13 @@ import java.awt.AlphaComposite;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Polygon;
|
import java.awt.Polygon;
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
import java.awt.geom.GeneralPath;
|
import java.awt.geom.GeneralPath;
|
||||||
import java.awt.geom.Path2D;
|
import java.awt.geom.Path2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import org.diylc.appframework.miscutils.ConfigurationManager;
|
import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||||
@@ -64,7 +64,7 @@ public class LogicGateSymbol extends AbstractTransparentComponent<String> {
|
|||||||
|
|
||||||
protected GateType gateType = GateType.Not;
|
protected GateType gateType = GateType.Not;
|
||||||
protected String value = "";
|
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 bodyColor = BODY_COLOR;
|
||||||
protected Color borderColor = BORDER_COLOR;
|
protected Color borderColor = BORDER_COLOR;
|
||||||
protected Display display = Display.NONE;
|
protected Display display = Display.NONE;
|
||||||
@@ -124,7 +124,7 @@ public class LogicGateSymbol extends AbstractTransparentComponent<String> {
|
|||||||
: LABEL_COLOR;
|
: LABEL_COLOR;
|
||||||
}
|
}
|
||||||
g2d.setColor(finalLabelColor);
|
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 = "";
|
String label = "";
|
||||||
label = display == Display.VALUE ? getValue() : getName();
|
label = display == Display.VALUE ? getValue() : getName();
|
||||||
if (display == Display.NONE) {
|
if (display == Display.NONE) {
|
||||||
@@ -133,7 +133,7 @@ public class LogicGateSymbol extends AbstractTransparentComponent<String> {
|
|||||||
if (display == Display.BOTH) {
|
if (display == Display.BOTH) {
|
||||||
label = getName() + " " + (getValue() == null ? "" : getValue().toString());
|
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);
|
VerticalAlignment.CENTER);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -155,7 +155,7 @@ public class LogicGateSymbol extends AbstractTransparentComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -167,18 +167,14 @@ public class LogicGateSymbol extends AbstractTransparentComponent<String> {
|
|||||||
private void updateControlPoints() {
|
private void updateControlPoints() {
|
||||||
int pinSpacing = (int) PIN_SPACING.convertToPixels();
|
int pinSpacing = (int) PIN_SPACING.convertToPixels();
|
||||||
// Update control points.
|
// Update control points.
|
||||||
int x = controlPoints[0].x;
|
int x = (int) controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
int y = (int) controlPoints[0].getY();
|
||||||
|
|
||||||
if (getControlPointCount() == 2) {
|
if (getControlPointCount() == 2) {
|
||||||
controlPoints[1].x = x + pinSpacing * 6;
|
controlPoints[1].setLocation(x + pinSpacing * 6, y);
|
||||||
controlPoints[1].y = y;
|
|
||||||
} else {
|
} else {
|
||||||
controlPoints[1].x = x;
|
controlPoints[1].setLocation(x, y + pinSpacing * 2);
|
||||||
controlPoints[1].y = y + pinSpacing * 2;
|
controlPoints[2].setLocation(x + pinSpacing * 6, y + pinSpacing);
|
||||||
|
|
||||||
controlPoints[2].x = x + pinSpacing * 6;
|
|
||||||
controlPoints[2].y = y + pinSpacing;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -186,8 +182,8 @@ public class LogicGateSymbol extends AbstractTransparentComponent<String> {
|
|||||||
if (body == null) {
|
if (body == null) {
|
||||||
body = new Shape[3];
|
body = new Shape[3];
|
||||||
int pinSpacing = (int) PIN_SPACING.convertToPixels();
|
int pinSpacing = (int) PIN_SPACING.convertToPixels();
|
||||||
int x = controlPoints[0].x;
|
int x = (int) controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
int y = (int) controlPoints[0].getY();
|
||||||
|
|
||||||
Area main = null;
|
Area main = null;
|
||||||
|
|
||||||
@@ -224,23 +220,23 @@ public class LogicGateSymbol extends AbstractTransparentComponent<String> {
|
|||||||
|
|
||||||
GeneralPath connections = new GeneralPath();
|
GeneralPath connections = new GeneralPath();
|
||||||
if (getControlPointCount() == 2) {
|
if (getControlPointCount() == 2) {
|
||||||
connections.moveTo(controlPoints[0].x, controlPoints[0].y);
|
connections.moveTo(controlPoints[0].getX(), controlPoints[0].getY());
|
||||||
connections.lineTo(controlPoints[0].x + pinSpacing * 3 / 2, controlPoints[0].y);
|
connections.lineTo(controlPoints[0].getX() + pinSpacing * 3 / 2, controlPoints[0].getY());
|
||||||
connections.moveTo(controlPoints[1].x, controlPoints[1].y);
|
connections.moveTo(controlPoints[1].getX(), controlPoints[1].getY());
|
||||||
if (getGateType().getNeedsCircle())
|
if (getGateType().getNeedsCircle())
|
||||||
connections.lineTo(controlPoints[1].x - pinSpacing, controlPoints[1].y);
|
connections.lineTo(controlPoints[1].getX() - pinSpacing, controlPoints[1].getY());
|
||||||
else
|
else
|
||||||
connections.lineTo(controlPoints[1].x - pinSpacing * 3 / 2, controlPoints[1].y);
|
connections.lineTo(controlPoints[1].getX() - pinSpacing * 3 / 2, controlPoints[1].getY());
|
||||||
} else {
|
} else {
|
||||||
connections.moveTo(controlPoints[0].x, controlPoints[0].y);
|
connections.moveTo(controlPoints[0].getX(), controlPoints[0].getY());
|
||||||
connections.lineTo(controlPoints[0].x + pinSpacing * 3 / 2, controlPoints[0].y);
|
connections.lineTo(controlPoints[0].getX() + pinSpacing * 3 / 2, controlPoints[0].getY());
|
||||||
connections.moveTo(controlPoints[1].x, controlPoints[1].y);
|
connections.moveTo(controlPoints[1].getX(), controlPoints[1].getY());
|
||||||
connections.lineTo(controlPoints[1].x + pinSpacing * 3 / 2, controlPoints[1].y);
|
connections.lineTo(controlPoints[1].getX() + pinSpacing * 3 / 2, controlPoints[1].getY());
|
||||||
connections.moveTo(controlPoints[2].x, controlPoints[2].y);
|
connections.moveTo(controlPoints[2].getX(), controlPoints[2].getY());
|
||||||
if (getGateType().getNeedsCircle())
|
if (getGateType().getNeedsCircle())
|
||||||
connections.lineTo(controlPoints[2].x - pinSpacing, controlPoints[2].y);
|
connections.lineTo(controlPoints[2].getX() - pinSpacing, controlPoints[2].getY());
|
||||||
else
|
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;
|
body[1] = connections;
|
||||||
|
|
||||||
@@ -276,7 +272,7 @@ public class LogicGateSymbol extends AbstractTransparentComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
controlPoints[index].setLocation(point);
|
controlPoints[index].setLocation(point);
|
||||||
body = null;
|
body = null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,10 +22,10 @@
|
|||||||
package org.diylc.components.semiconductors;
|
package org.diylc.components.semiconductors;
|
||||||
|
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Polygon;
|
import java.awt.Polygon;
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
import java.awt.geom.GeneralPath;
|
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.Abstract3LegSymbol;
|
||||||
@@ -46,9 +46,9 @@ public class MOSFETSymbol extends Abstract3LegSymbol {
|
|||||||
|
|
||||||
public Shape[] getBody() {
|
public Shape[] getBody() {
|
||||||
Shape[] body = new Shape[3];
|
Shape[] body = new Shape[3];
|
||||||
Point[] controlPoints = getControlPoints();
|
Point2D[] controlPoints = getControlPoints();
|
||||||
int x = controlPoints[0].x;
|
int x = (int) controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
int y = (int) controlPoints[0].getY();
|
||||||
int pinSpacing = (int) PIN_SPACING.convertToPixels();
|
int pinSpacing = (int) PIN_SPACING.convertToPixels();
|
||||||
|
|
||||||
GeneralPath polyline = new GeneralPath();
|
GeneralPath polyline = new GeneralPath();
|
||||||
|
|||||||
@@ -26,10 +26,10 @@ import java.awt.Color;
|
|||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Rectangle;
|
import java.awt.Rectangle;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Ellipse2D;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.awt.geom.RoundRectangle2D;
|
import java.awt.geom.RoundRectangle2D;
|
||||||
|
|
||||||
@@ -77,7 +77,7 @@ public class SIL_IC extends AbstractTransparentComponent<String> {
|
|||||||
private Orientation orientation = Orientation.DEFAULT;
|
private Orientation orientation = Orientation.DEFAULT;
|
||||||
private PinCount pinCount = PinCount._8;
|
private PinCount pinCount = PinCount._8;
|
||||||
private Size pinSpacing = new Size(0.1d, SizeUnit.in);
|
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;
|
protected Display display = Display.NAME;
|
||||||
private Color bodyColor = BODY_COLOR;
|
private Color bodyColor = BODY_COLOR;
|
||||||
private Color borderColor = BORDER_COLOR;
|
private Color borderColor = BORDER_COLOR;
|
||||||
@@ -169,7 +169,7 @@ public class SIL_IC extends AbstractTransparentComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -184,14 +184,14 @@ public class SIL_IC extends AbstractTransparentComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
controlPoints[index].setLocation(point);
|
controlPoints[index].setLocation(point);
|
||||||
body = null;
|
body = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateControlPoints() {
|
private void updateControlPoints() {
|
||||||
Point firstPoint = controlPoints[0];
|
Point2D firstPoint = controlPoints[0];
|
||||||
controlPoints = new Point[pinCount.getValue()];
|
controlPoints = new Point2D.Double[pinCount.getValue()];
|
||||||
controlPoints[0] = firstPoint;
|
controlPoints[0] = firstPoint;
|
||||||
double pinSpacing = this.pinSpacing.convertToPixels();
|
double pinSpacing = this.pinSpacing.convertToPixels();
|
||||||
// Update control points.
|
// Update control points.
|
||||||
@@ -218,15 +218,15 @@ public class SIL_IC extends AbstractTransparentComponent<String> {
|
|||||||
default:
|
default:
|
||||||
throw new RuntimeException("Unexpected orientation: " + orientation);
|
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() {
|
public Area[] getBody() {
|
||||||
if (body == null) {
|
if (body == null) {
|
||||||
body = new Area[2];
|
body = new Area[2];
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
int thickness = getClosestOdd(THICKNESS.convertToPixels());
|
int thickness = getClosestOdd(THICKNESS.convertToPixels());
|
||||||
double width;
|
double width;
|
||||||
double height;
|
double height;
|
||||||
@@ -293,11 +293,11 @@ public class SIL_IC extends AbstractTransparentComponent<String> {
|
|||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1f));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1f));
|
||||||
if (!outlineMode) {
|
if (!outlineMode) {
|
||||||
int pinSize = (int) PIN_SIZE.convertToPixels() / 2 * 2;
|
int pinSize = (int) PIN_SIZE.convertToPixels() / 2 * 2;
|
||||||
for (Point point : controlPoints) {
|
for (Point2D point : controlPoints) {
|
||||||
g2d.setColor(PIN_COLOR);
|
g2d.setColor(PIN_COLOR);
|
||||||
g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
|
g2d.fillOval((int)(point.getX() - pinSize / 2), (int)(point.getY() - pinSize / 2), pinSize, pinSize);
|
||||||
g2d.setColor(PIN_BORDER_COLOR);
|
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());
|
int textWidth = (int) (rect.getWidth());
|
||||||
// Center text horizontally and vertically
|
// Center text horizontally and vertically
|
||||||
Rectangle bounds = mainArea.getBounds();
|
Rectangle bounds = mainArea.getBounds();
|
||||||
int x = bounds.x + (bounds.width - textWidth) / 2;
|
int x = (int) (bounds.getX() + (bounds.width - textWidth) / 2);
|
||||||
int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
|
int y = (int) (bounds.getY() + (bounds.height - textHeight) / 2 + fontMetrics.getAscent());
|
||||||
g2d.drawString(label, x, y);
|
g2d.drawString(label, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -434,21 +434,21 @@ public class SIL_IC extends AbstractTransparentComponent<String> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Rectangle2D getCachingBounds() {
|
public Rectangle2D getCachingBounds() {
|
||||||
int minX = Integer.MAX_VALUE;
|
double minX = Integer.MAX_VALUE;
|
||||||
int maxX = Integer.MIN_VALUE;
|
double maxX = Integer.MIN_VALUE;
|
||||||
int minY = Integer.MAX_VALUE;
|
double minY = Integer.MAX_VALUE;
|
||||||
int maxY = Integer.MIN_VALUE;
|
double maxY = Integer.MIN_VALUE;
|
||||||
int margin = 50;
|
int margin = 50;
|
||||||
for (int i = 0; i < getControlPointCount(); i++) {
|
for (int i = 0; i < getControlPointCount(); i++) {
|
||||||
Point p = getControlPoint(i);
|
Point2D p = getControlPoint(i);
|
||||||
if (p.x < minX)
|
if (p.getX() < minX)
|
||||||
minX = p.x;
|
minX = p.getX();
|
||||||
if (p.x > maxX)
|
if (p.getX() > maxX)
|
||||||
maxX = p.x;
|
maxX = p.getX();
|
||||||
if (p.y < minY)
|
if (p.getY() < minY)
|
||||||
minY = p.y;
|
minY = p.getY();
|
||||||
if (p.y > maxY)
|
if (p.getY() > maxY)
|
||||||
maxY = p.y;
|
maxY = p.getY();
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Rectangle2D.Double(minX - margin, minY - margin, maxX - minX + 2 * margin, maxY - minY + 2 * margin);
|
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.Composite;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Rectangle;
|
import java.awt.Rectangle;
|
||||||
import java.awt.RenderingHints;
|
import java.awt.RenderingHints;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
@@ -79,7 +78,7 @@ public class TransistorTO3 extends AbstractTransparentComponent<String> {
|
|||||||
|
|
||||||
private String value = "";
|
private String value = "";
|
||||||
private Orientation orientation = Orientation.DEFAULT;
|
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;
|
transient private Area[] body;
|
||||||
private Color bodyColor = BODY_COLOR;
|
private Color bodyColor = BODY_COLOR;
|
||||||
private Color borderColor = BORDER_COLOR;
|
private Color borderColor = BORDER_COLOR;
|
||||||
@@ -119,7 +118,7 @@ public class TransistorTO3 extends AbstractTransparentComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Point getControlPoint(int index) {
|
public Point2D getControlPoint(int index) {
|
||||||
return controlPoints[index];
|
return controlPoints[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -134,7 +133,7 @@ public class TransistorTO3 extends AbstractTransparentComponent<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setControlPoint(Point point, int index) {
|
public void setControlPoint(Point2D point, int index) {
|
||||||
controlPoints[index].setLocation(point);
|
controlPoints[index].setLocation(point);
|
||||||
body = null;
|
body = null;
|
||||||
}
|
}
|
||||||
@@ -142,8 +141,8 @@ public class TransistorTO3 extends AbstractTransparentComponent<String> {
|
|||||||
private void updateControlPoints() {
|
private void updateControlPoints() {
|
||||||
int pinSpacing = (int) PIN_SPACING.convertToPixels();
|
int pinSpacing = (int) PIN_SPACING.convertToPixels();
|
||||||
// Update control points.
|
// Update control points.
|
||||||
int x = controlPoints[0].x;
|
double x = controlPoints[0].getX();
|
||||||
int y = controlPoints[0].y;
|
double y = controlPoints[0].getY();
|
||||||
switch (orientation) {
|
switch (orientation) {
|
||||||
case DEFAULT:
|
case DEFAULT:
|
||||||
controlPoints[1].setLocation(x, y + pinSpacing);
|
controlPoints[1].setLocation(x, y + pinSpacing);
|
||||||
@@ -166,8 +165,8 @@ public class TransistorTO3 extends AbstractTransparentComponent<String> {
|
|||||||
if (body == null) {
|
if (body == null) {
|
||||||
body = new Area[2];
|
body = new Area[2];
|
||||||
int pinOffset = (int) PIN_OFFSET.convertToPixels();
|
int pinOffset = (int) PIN_OFFSET.convertToPixels();
|
||||||
int x = (controlPoints[0].x + controlPoints[1].x) / 2;
|
double x = (controlPoints[0].getX() + controlPoints[1].getX()) / 2;
|
||||||
int y = (controlPoints[0].y + controlPoints[1].y) / 2;
|
double y = (controlPoints[0].getY() + controlPoints[1].getY()) / 2;
|
||||||
|
|
||||||
switch (orientation) {
|
switch (orientation) {
|
||||||
case DEFAULT:
|
case DEFAULT:
|
||||||
@@ -235,13 +234,13 @@ public class TransistorTO3 extends AbstractTransparentComponent<String> {
|
|||||||
Theme theme = (Theme) ConfigurationManager.getInstance().readObject(IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME);
|
Theme theme = (Theme) ConfigurationManager.getInstance().readObject(IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME);
|
||||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1f));
|
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1f));
|
||||||
|
|
||||||
for (Point point : controlPoints) {
|
for (Point2D point : controlPoints) {
|
||||||
if (!outlineMode) {
|
if (!outlineMode) {
|
||||||
g2d.setColor(PIN_COLOR);
|
g2d.setColor(PIN_COLOR);
|
||||||
g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
|
g2d.fillOval((int)(point.getX() - pinSize / 2), (int)(point.getY() - pinSize / 2), pinSize, pinSize);
|
||||||
}
|
}
|
||||||
g2d.setColor(outlineMode ? theme.getOutlineColor() : PIN_BORDER_COLOR);
|
g2d.setColor(outlineMode ? theme.getOutlineColor() : PIN_BORDER_COLOR);
|
||||||
g2d.drawOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize);
|
g2d.drawOval((int)(point.getX() - pinSize / 2), (int)(point.getY() - pinSize / 2), pinSize, pinSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
Area mainArea = getBody()[0];
|
Area mainArea = getBody()[0];
|
||||||
@@ -296,8 +295,8 @@ public class TransistorTO3 extends AbstractTransparentComponent<String> {
|
|||||||
int textWidth = (int) (rect.getWidth());
|
int textWidth = (int) (rect.getWidth());
|
||||||
// Center text horizontally and vertically
|
// Center text horizontally and vertically
|
||||||
Rectangle bounds = mainArea.getBounds();
|
Rectangle bounds = mainArea.getBounds();
|
||||||
int x = bounds.x + (bounds.width - textWidth) / 2;
|
int x = (int) (bounds.getX() + (bounds.width - textWidth) / 2);
|
||||||
int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent();
|
int y = (int) (bounds.getY() + (bounds.height - textHeight) / 2 + fontMetrics.getAscent());
|
||||||
g2d.drawString(label, x, y);
|
g2d.drawString(label, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user