mirror of
https://github.com/bancika/diy-layout-creator
synced 2026-11-10 09:12:09 +10:00
Loading files that contain lines with end arrows sometimes produces errors in the log and lines not to be loaded
This commit is contained in:
@@ -4486,6 +4486,10 @@
|
|||||||
<changeType>BUG_FIX</changeType>
|
<changeType>BUG_FIX</changeType>
|
||||||
<description>Fixed null pointer exceptions when trying to add components to the layout in some cases</description>
|
<description>Fixed null pointer exceptions when trying to add components to the layout in some cases</description>
|
||||||
</org.diylc.appframework.update.Change>
|
</org.diylc.appframework.update.Change>
|
||||||
|
<org.diylc.appframework.update.Change>
|
||||||
|
<changeType>BUG_FIX</changeType>
|
||||||
|
<description>Loading files that contain lines with end arrows sometimes produces errors in the log and lines not to be loaded</description>
|
||||||
|
</org.diylc.appframework.update.Change>
|
||||||
</changes>
|
</changes>
|
||||||
<url>https://github.com/bancika/diy-layout-creator/releases</url>
|
<url>https://github.com/bancika/diy-layout-creator/releases</url>
|
||||||
</org.diylc.appframework.update.Version>
|
</org.diylc.appframework.update.Version>
|
||||||
|
|||||||
@@ -60,9 +60,12 @@ public class Line extends AbstractLeadedComponent<Void> {
|
|||||||
private Size thickness = new Size(1d, SizeUnit.px);
|
private Size thickness = new Size(1d, SizeUnit.px);
|
||||||
private Size arrowSize = new Size(5d, SizeUnit.px);
|
private Size arrowSize = new Size(5d, SizeUnit.px);
|
||||||
private Polygon arrow = null;
|
private Polygon arrow = null;
|
||||||
private AffineTransform arrowTx = new AffineTransform();
|
|
||||||
private boolean arrowStart = false;
|
private boolean arrowStart = false;
|
||||||
private boolean arrowEnd = false;
|
private boolean arrowEnd = false;
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
@Deprecated
|
||||||
|
private transient AffineTransform arrowTx;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void drawIcon(Graphics2D g2d, int width, int height) {
|
public void drawIcon(Graphics2D g2d, int width, int height) {
|
||||||
@@ -95,13 +98,15 @@ public class Line extends AbstractLeadedComponent<Void> {
|
|||||||
Point2D startPoint = new Point2D.Double(first.getX(), first.getY());
|
Point2D startPoint = new Point2D.Double(first.getX(), first.getY());
|
||||||
Point2D endPoint = new Point2D.Double(second.getX(), second.getY());
|
Point2D endPoint = new Point2D.Double(second.getX(), second.getY());
|
||||||
|
|
||||||
|
AffineTransform arrowPosTx = new AffineTransform();
|
||||||
|
|
||||||
if (arrowStart) {
|
if (arrowStart) {
|
||||||
arrowTx.setToIdentity();
|
arrowPosTx.setToIdentity();
|
||||||
double angle = Math.atan2(getControlPoint(1).getY() - getControlPoint(0).getY(), getControlPoint(1).getX() - getControlPoint(0).getX());
|
double angle = Math.atan2(getControlPoint(1).getY() - getControlPoint(0).getY(), getControlPoint(1).getX() - getControlPoint(0).getX());
|
||||||
arrowTx.translate(getControlPoint(0).getX(), getControlPoint(0).getY());
|
arrowPosTx.translate(getControlPoint(0).getX(), getControlPoint(0).getY());
|
||||||
arrowTx.rotate((angle + Math.PI / 2d));
|
arrowPosTx.rotate((angle + Math.PI / 2d));
|
||||||
AffineTransform oldTx = g2d.getTransform();
|
AffineTransform oldTx = g2d.getTransform();
|
||||||
g2d.transform(arrowTx);
|
g2d.transform(arrowPosTx);
|
||||||
g2d.fill(getArrow());
|
g2d.fill(getArrow());
|
||||||
g2d.setTransform(oldTx);
|
g2d.setTransform(oldTx);
|
||||||
|
|
||||||
@@ -110,12 +115,12 @@ public class Line extends AbstractLeadedComponent<Void> {
|
|||||||
interpolate(startPoint, endPoint, getArrowSize().convertToPixels() * 0.9 / distance, startPoint);
|
interpolate(startPoint, endPoint, getArrowSize().convertToPixels() * 0.9 / distance, startPoint);
|
||||||
}
|
}
|
||||||
if (arrowEnd) {
|
if (arrowEnd) {
|
||||||
arrowTx.setToIdentity();
|
arrowPosTx.setToIdentity();
|
||||||
double angle = Math.atan2(getControlPoint(1).getY() - getControlPoint(0).getY(), getControlPoint(1).getX() - getControlPoint(0).getX());
|
double angle = Math.atan2(getControlPoint(1).getY() - getControlPoint(0).getY(), getControlPoint(1).getX() - getControlPoint(0).getX());
|
||||||
arrowTx.translate(getControlPoint(1).getX(), getControlPoint(1).getY());
|
arrowPosTx.translate(getControlPoint(1).getX(), getControlPoint(1).getY());
|
||||||
arrowTx.rotate((angle - Math.PI / 2d));
|
arrowPosTx.rotate((angle - Math.PI / 2d));
|
||||||
AffineTransform oldTx = g2d.getTransform();
|
AffineTransform oldTx = g2d.getTransform();
|
||||||
g2d.transform(arrowTx);
|
g2d.transform(arrowPosTx);
|
||||||
g2d.fill(getArrow());
|
g2d.fill(getArrow());
|
||||||
g2d.setTransform(oldTx);
|
g2d.setTransform(oldTx);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user