diff --git a/diylc/diylc-library/lib/diylc-core.jar b/diylc/diylc-library/lib/diylc-core.jar index 53c10e4f..5f6f2667 100644 Binary files a/diylc/diylc-library/lib/diylc-core.jar and b/diylc/diylc-library/lib/diylc-core.jar differ diff --git a/diylc/diylc-library/src/org/diylc/components/AbstractLeadedComponent.java b/diylc/diylc-library/src/org/diylc/components/AbstractLeadedComponent.java index db689db7..6cdd86c1 100644 --- a/diylc/diylc-library/src/org/diylc/components/AbstractLeadedComponent.java +++ b/diylc/diylc-library/src/org/diylc/components/AbstractLeadedComponent.java @@ -98,6 +98,8 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp } catch (NullPointerException e) { // This will happen if components do not have any shape. } + if (newPoints != null) + newPoints[2] = calculateLabelPosition(newPoints[0], newPoints[1]); } protected boolean IsCopperArea() { diff --git a/diylc/diylc-library/src/org/diylc/components/AbstractSchematicLeadedSymbol.java b/diylc/diylc-library/src/org/diylc/components/AbstractSchematicLeadedSymbol.java index 73a22ffa..e57b0396 100644 --- a/diylc/diylc-library/src/org/diylc/components/AbstractSchematicLeadedSymbol.java +++ b/diylc/diylc-library/src/org/diylc/components/AbstractSchematicLeadedSymbol.java @@ -21,13 +21,14 @@ */ package org.diylc.components; -import java.awt.Color; -import java.awt.FontMetrics; -import java.awt.geom.Rectangle2D; +import java.awt.Color; +import java.awt.FontMetrics; +import java.awt.Point; +import java.awt.geom.Rectangle2D; -import org.diylc.common.LabelPosition; -import org.diylc.core.ComponentState; -import org.diylc.core.annotations.EditableProperty; +import org.diylc.common.LabelPosition; +import org.diylc.core.ComponentState; +import org.diylc.core.annotations.EditableProperty; public abstract class AbstractSchematicLeadedSymbol extends AbstractLeadedComponent { @@ -68,6 +69,15 @@ public abstract class AbstractSchematicLeadedSymbol extends AbstractLeadedCom } else { return (int) (shapeRect.getHeight() + textRect.getHeight()); } + } + + @Override + protected Point calculateLabelPosition(Point point1, Point point2) { + double x = (point1.x + point2.x) / 2.0; + double y = (point1.y + point2.y) / 2.0; + double theta = Math.atan2(point2.y - point1.y, point2.x - point2.x) - Math.PI / 2; + double r = width.convertToPixels() / 2 + LABEL_FONT.getSize() / 2; + return new Point((int) (x + Math.cos(theta) * r), (int) (y + Math.sin(theta) * r)); } @EditableProperty(name = "Label Position") diff --git a/diylc/diylc-swing/lib/diylc-core.jar b/diylc/diylc-swing/lib/diylc-core.jar index 53c10e4f..5f6f2667 100644 Binary files a/diylc/diylc-swing/lib/diylc-core.jar and b/diylc/diylc-swing/lib/diylc-core.jar differ diff --git a/diylc/diylc-swing/library/main.jar b/diylc/diylc-swing/library/main.jar index 66808e89..96110bcb 100644 Binary files a/diylc/diylc-swing/library/main.jar and b/diylc/diylc-swing/library/main.jar differ