From 74bcd0f66841a73ab09867b066d1999f0a319e0b Mon Sep 17 00:00:00 2001 From: Arnaud Roques Date: Wed, 26 Jul 2023 19:12:10 +0200 Subject: [PATCH] fix: change GraphViz strategy https://github.com/plantuml/plantuml/issues/1491 --- gradle.properties | 2 +- src/net/sourceforge/plantuml/abel/Link.java | 4 +- .../plantuml/decoration/LinkDecor.java | 4 +- .../plantuml/klimt/geom/XCubicCurve2D.java | 6 + .../plantuml/klimt/shape/DotPath.java | 31 +- .../plantuml/sdot/SmetanaPath.java | 34 ++- src/net/sourceforge/plantuml/svek/Kal.java | 27 +- .../sourceforge/plantuml/svek/SvekLine.java | 124 ++++---- .../plantuml/svek/extremity/Extremity.java | 12 +- .../extremity/ExtremityArrowAndCircle.java | 2 +- .../svek/extremity/ExtremityCircle.java | 5 + .../extremity/ExtremityCircleConnect.java | 5 + .../extremity/ExtremityCircleCrowfoot.java | 5 + .../svek/extremity/ExtremityCircleLine.java | 5 + .../svek/extremity/ExtremityDiamond.java | 5 + .../svek/extremity/ExtremityDoubleLine.java | 5 + .../svek/extremity/ExtremityExtends.java | 6 + .../svek/extremity/ExtremityExtendsLike.java | 5 + .../svek/extremity/ExtremityFactory.java | 2 +- .../svek/extremity/ExtremityFactoryArrow.java | 2 +- .../ExtremityFactoryArrowAndCircle.java | 10 +- .../extremity/ExtremityFactoryCircle.java | 2 +- .../ExtremityFactoryCircleConnect.java | 2 +- .../ExtremityFactoryCircleCross.java | 8 +- .../ExtremityFactoryCircleCrowfoot.java | 2 +- .../extremity/ExtremityFactoryCircleLine.java | 2 +- .../extremity/ExtremityFactoryCrowfoot.java | 2 +- .../extremity/ExtremityFactoryDiamond.java | 2 +- .../extremity/ExtremityFactoryDoubleLine.java | 2 +- .../extremity/ExtremityFactoryExtends.java | 2 +- .../ExtremityFactoryExtendsLike.java | 2 +- .../extremity/ExtremityFactoryHalfArrow.java | 2 +- .../ExtremityFactoryLineCrowfoot.java | 2 +- .../ExtremityFactoryNotNavigable.java | 2 +- .../ExtremityFactoryParenthesis.java | 2 +- .../svek/extremity/ExtremityFactoryPlus.java | 2 +- .../extremity/ExtremityFactorySquare.java | 2 +- .../extremity/ExtremityFactoryTriangle.java | 11 +- .../svek/extremity/ExtremityHalfArrow.java | 17 +- .../svek/extremity/ExtremityLineCrowfoot.java | 5 + .../svek/extremity/ExtremityNotNavigable.java | 5 + .../svek/extremity/ExtremityParenthesis.java | 5 + .../svek/extremity/ExtremityPlus.java | 5 + .../svek/extremity/ExtremitySquare.java | 5 + .../svek/extremity/ExtremityTriangle.java | 10 +- .../plantuml/svek/extremity/MiddleCircle.java | 5 + .../sourceforge/plantuml/version/Version.java | 2 +- test/nonreg/simple/A0004_TestResult.java | 270 +++++++++--------- test/nonreg/simple/A0005_TestResult.java | 24 +- 49 files changed, 422 insertions(+), 281 deletions(-) diff --git a/gradle.properties b/gradle.properties index 57e877c17..cc1f647af 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ # Warning, "version" should be the same in gradle.properties and Version.java # Any idea anyone how to magically synchronize those :-) ? -version = 1.2023.11beta1 +version = 1.2023.11beta2 org.gradle.workers.max = 3 \ No newline at end of file diff --git a/src/net/sourceforge/plantuml/abel/Link.java b/src/net/sourceforge/plantuml/abel/Link.java index fd9e342ac..7e4ddb378 100644 --- a/src/net/sourceforge/plantuml/abel/Link.java +++ b/src/net/sourceforge/plantuml/abel/Link.java @@ -96,8 +96,8 @@ public class Link extends WithLinkType implements Hideable, Removeable { private Url url; public LinkStrategy getLinkStrategy() { - return LinkStrategy.LEGACY; - // return LinkStrategy.SIMPLIER; + // return LinkStrategy.LEGACY; + return LinkStrategy.SIMPLIER; } public String idCommentForSvg() { diff --git a/src/net/sourceforge/plantuml/decoration/LinkDecor.java b/src/net/sourceforge/plantuml/decoration/LinkDecor.java index b97a3190d..577985e63 100644 --- a/src/net/sourceforge/plantuml/decoration/LinkDecor.java +++ b/src/net/sourceforge/plantuml/decoration/LinkDecor.java @@ -104,7 +104,7 @@ public enum LinkDecor { public ExtremityFactory getExtremityFactoryComplete(HColor backgroundColor) { if (this == EXTENDS) - return new ExtremityFactoryTriangle(backgroundColor, 16, 6); + return new ExtremityFactoryTriangle(null, 18, 6, 18); return getExtremityFactoryLegacy(backgroundColor); } @@ -120,7 +120,7 @@ public enum LinkDecor { case HALF_ARROW: return new ExtremityFactoryHalfArrow(); case ARROW_TRIANGLE: - return new ExtremityFactoryTriangle(null, 8, 3); + return new ExtremityFactoryTriangle(null, 8, 3, 8); case CROWFOOT: return new ExtremityFactoryCrowfoot(); case CIRCLE_CROWFOOT: diff --git a/src/net/sourceforge/plantuml/klimt/geom/XCubicCurve2D.java b/src/net/sourceforge/plantuml/klimt/geom/XCubicCurve2D.java index 6fa4b6e2d..2accd6126 100644 --- a/src/net/sourceforge/plantuml/klimt/geom/XCubicCurve2D.java +++ b/src/net/sourceforge/plantuml/klimt/geom/XCubicCurve2D.java @@ -49,6 +49,12 @@ public class XCubicCurve2D { } + public double getLength() { + final double dx = this.x2 - this.x1; + final double dy = this.y2 - this.y1; + return Math.sqrt(dx * dx + dy * dy); + } + public void setCurve(XCubicCurve2D other) { setCurve(other.x1, other.y1, other.ctrlx1, other.ctrly1, other.ctrlx2, other.ctrly2, other.ctrlx2, other.ctrly2); diff --git a/src/net/sourceforge/plantuml/klimt/shape/DotPath.java b/src/net/sourceforge/plantuml/klimt/shape/DotPath.java index 37e60a578..8cf4397ae 100644 --- a/src/net/sourceforge/plantuml/klimt/shape/DotPath.java +++ b/src/net/sourceforge/plantuml/klimt/shape/DotPath.java @@ -51,12 +51,12 @@ import net.sourceforge.plantuml.klimt.UPath; import net.sourceforge.plantuml.klimt.UShape; import net.sourceforge.plantuml.klimt.UTranslate; import net.sourceforge.plantuml.klimt.geom.BezierUtils; -import net.sourceforge.plantuml.klimt.geom.RectangleArea; import net.sourceforge.plantuml.klimt.geom.EnsureVisible; import net.sourceforge.plantuml.klimt.geom.MinFinder; import net.sourceforge.plantuml.klimt.geom.MinMax; import net.sourceforge.plantuml.klimt.geom.Moveable; import net.sourceforge.plantuml.klimt.geom.PointAndAngle; +import net.sourceforge.plantuml.klimt.geom.RectangleArea; import net.sourceforge.plantuml.klimt.geom.USegmentType; import net.sourceforge.plantuml.klimt.geom.XCubicCurve2D; import net.sourceforge.plantuml.klimt.geom.XPoint2D; @@ -187,12 +187,12 @@ public class DotPath implements UShape, Moveable { return pt.distanceSq(start) + pt.distanceSq(end); } - public void forceStartPoint(double x, double y) { - beziers.get(0).x1 = x; - beziers.get(0).y1 = y; - beziers.get(0).ctrlx1 = x; - beziers.get(0).ctrly1 = y; - } +// public void forceStartPoint(double x, double y) { +// beziers.get(0).x1 = x; +// beziers.get(0).y1 = y; +// beziers.get(0).ctrlx1 = x; +// beziers.get(0).ctrly1 = y; +// } public void moveStartPoint(UTranslate move) { moveStartPoint(move.getDx(), move.getDy()); @@ -203,6 +203,11 @@ public class DotPath implements UShape, Moveable { } public void moveStartPoint(double dx, double dy) { + if (beziers.size() > 1 && Math.sqrt(dx * dx + dy * dy) >= beziers.get(0).getLength()) { + dx -= beziers.get(1).x1 - beziers.get(0).x1; + dy -= beziers.get(1).y1 - beziers.get(0).y1; + beziers.remove(0); + } beziers.get(0).x1 += dx; beziers.get(0).y1 += dy; beziers.get(0).ctrlx1 += dx; @@ -213,12 +218,12 @@ public class DotPath implements UShape, Moveable { return beziers.get(beziers.size() - 1).getP2(); } - public void forceEndPoint(double x, double y) { - beziers.get(beziers.size() - 1).x2 = x; - beziers.get(beziers.size() - 1).y2 = y; - beziers.get(beziers.size() - 1).ctrlx2 = x; - beziers.get(beziers.size() - 1).ctrly2 = y; - } +// public void forceEndPoint(double x, double y) { +// beziers.get(beziers.size() - 1).x2 = x; +// beziers.get(beziers.size() - 1).y2 = y; +// beziers.get(beziers.size() - 1).ctrlx2 = x; +// beziers.get(beziers.size() - 1).ctrly2 = y; +// } public void moveEndPoint(double dx, double dy) { beziers.get(beziers.size() - 1).x2 += dx; diff --git a/src/net/sourceforge/plantuml/sdot/SmetanaPath.java b/src/net/sourceforge/plantuml/sdot/SmetanaPath.java index 5c9480860..2567a4b74 100644 --- a/src/net/sourceforge/plantuml/sdot/SmetanaPath.java +++ b/src/net/sourceforge/plantuml/sdot/SmetanaPath.java @@ -42,6 +42,7 @@ import h.ST_pointf; import h.ST_splines; import h.ST_textlabel_t; import net.sourceforge.plantuml.abel.Link; +import net.sourceforge.plantuml.abel.LinkStrategy; import net.sourceforge.plantuml.cucadiagram.ICucaDiagram; import net.sourceforge.plantuml.decoration.LinkType; import net.sourceforge.plantuml.klimt.UStroke; @@ -62,6 +63,7 @@ import net.sourceforge.plantuml.style.Style; import net.sourceforge.plantuml.style.StyleSignatureBasic; import net.sourceforge.plantuml.svek.Bibliotekon; import net.sourceforge.plantuml.svek.Cluster; +import net.sourceforge.plantuml.svek.extremity.Extremity; import net.sourceforge.plantuml.svek.extremity.ExtremityFactory; import net.sourceforge.plantuml.url.Url; @@ -88,6 +90,10 @@ public class SmetanaPath implements UDrawable { this.headLabel = headLabel; } + private LinkStrategy getLinkStrategy() { + return link.getLinkStrategy(); + } + public void drawU(UGraphic ug) { if (link.isHidden()) @@ -131,9 +137,9 @@ public class SmetanaPath implements UDrawable { if (url != null) ug.startUrl(url); - ug.apply(stroke).apply(color).draw(dotPath); printExtremityAtStart(dotPath, ug.apply(color)); printExtremityAtEnd(dotPath, ug.apply(color)); + ug.apply(stroke).apply(color).draw(dotPath); if (url != null) ug.closeUrl(); @@ -186,9 +192,14 @@ public class SmetanaPath implements UDrawable { final double startAngle = dotPath.getStartAngle() + Math.PI; try { - final UDrawable extremity2 = extremityFactory2.createUDrawable(p0, startAngle, null); - if (extremity2 != null) + final Extremity extremity2 = (Extremity) extremityFactory2.createUDrawable(p0, startAngle, null); + if (extremity2 != null) { + if (getLinkStrategy() == LinkStrategy.SIMPLIER) { + final double decorationLength = extremity2.getDecorationLength(); + dotPath.moveStartPoint(new UTranslate(decorationLength, 0).rotate(startAngle - Math.PI)); + } extremity2.drawU(ug); + } } catch (UnsupportedOperationException e) { e.printStackTrace(); @@ -206,9 +217,14 @@ public class SmetanaPath implements UDrawable { final double endAngle = dotPath.getEndAngle(); try { - final UDrawable extremity1 = extremityFactory1.createUDrawable(p0, endAngle, null); - if (extremity1 != null) + final Extremity extremity1 = (Extremity) extremityFactory1.createUDrawable(p0, endAngle, null); + if (extremity1 != null) { + if (getLinkStrategy() == LinkStrategy.SIMPLIER) { + final double decorationLength = extremity1.getDecorationLength(); + dotPath.moveEndPoint(new UTranslate(decorationLength, 0).rotate(endAngle - Math.PI)); + } extremity1.drawU(ug); + } } catch (UnsupportedOperationException e) { e.printStackTrace(); @@ -266,16 +282,16 @@ public class SmetanaPath implements UDrawable { return ymirror.getMirrored(UTranslate.point(boxInfo.getLowerLeft())); } - private DotPath dotPath; + // private DotPath dotPath; private DotPath getDotPathInternal() { - if (dotPath != null) - return dotPath; +// if (dotPath != null) +// return dotPath; final ST_Agedgeinfo_t data = (ST_Agedgeinfo_t) edge.data; final ST_splines splines = data.spl; - dotPath = new DotPath(); + DotPath dotPath = new DotPath(); final ST_bezier beziers = (ST_bezier) splines.list.get__(0); final XPoint2D pt1 = getPoint(splines, 0); final XPoint2D pt2 = getPoint(splines, 1); diff --git a/src/net/sourceforge/plantuml/svek/Kal.java b/src/net/sourceforge/plantuml/svek/Kal.java index 05b9426fd..499a8dffc 100644 --- a/src/net/sourceforge/plantuml/svek/Kal.java +++ b/src/net/sourceforge/plantuml/svek/Kal.java @@ -64,6 +64,21 @@ public class Kal implements UDrawable { private final Entity entity; private final Link link; + public UTranslate getTranslateForDecoration() { + switch (position) { + case RIGHT: + return UTranslate.dx(dim.getWidth()); + case LEFT: + return UTranslate.dx(-dim.getWidth()); + case DOWN: + return UTranslate.dy(dim.getHeight()); + case UP: + return UTranslate.dy(-dim.getHeight()); + default: + throw new IllegalStateException(); + } + } + public Kal(SvekLine svekLine, String text, FontConfiguration font, ISkinParam skinParam, Entity entity, Link link, StringBounder stringBounder) { this.svekLine = svekLine; @@ -87,7 +102,7 @@ public class Kal implements UDrawable { } else if (link.getEntity2() == entity) { this.position = Direction.UP; - entity.ensureMargins(new Margins(0, 0, dim.getHeight(),0 )); + entity.ensureMargins(new Margins(0, 0, dim.getHeight(), 0)); } else { throw new IllegalStateException(); @@ -144,11 +159,11 @@ public class Kal implements UDrawable { public void setTranslate(UTranslate translate, UDrawable decoration) { this.translate = translate; - if (decoration instanceof Extremity) { - final Extremity extremity = (Extremity) decoration; - final UTranslate deltaForKal = extremity.getDeltaForKal(); - // this.translate = this.translate.compose(deltaForKal); - } +// if (decoration instanceof Extremity) { +// final Extremity extremity = (Extremity) decoration; +// final UTranslate deltaForKal = extremity.getDeltaForKal(); +// // this.translate = this.translate.compose(deltaForKal); +// } } public double overlapx(Kal other) { diff --git a/src/net/sourceforge/plantuml/svek/SvekLine.java b/src/net/sourceforge/plantuml/svek/SvekLine.java index 50bef2dc1..9c085d249 100644 --- a/src/net/sourceforge/plantuml/svek/SvekLine.java +++ b/src/net/sourceforge/plantuml/svek/SvekLine.java @@ -135,6 +135,7 @@ public class SvekLine implements Moveable, Hideable, GuideLine { private final Bibliotekon bibliotekon; private DotPath dotPath; + private DotPath dotPathInit; private Positionable startTailLabelXY; private Positionable endHeadLabelXY; @@ -165,7 +166,7 @@ public class SvekLine implements Moveable, Hideable, GuideLine { return super.toString() + " color=" + lineColor; } - public LinkStrategy getLinkStrategy() { + private LinkStrategy getLinkStrategy() { return link.getLinkStrategy(); } @@ -502,8 +503,7 @@ public class SvekLine implements Moveable, Hideable, GuideLine { } private UDrawable getExtremitySimplier(XPoint2D center, ExtremityFactory extremityFactory, double angle, - Cluster cluster, SvekNode nodeContact, boolean isStart) { - System.err.println("extremityFactory=" + extremityFactory + " " + isStart); + Cluster cluster, SvekNode nodeContact, boolean isStart, Kal kal) { if (extremityFactory == null) return null; @@ -511,15 +511,23 @@ public class SvekLine implements Moveable, Hideable, GuideLine { if (nodeContact != null) side = nodeContact.getRectangleArea().getClosestSide(center); - final Extremity extremity = (Extremity) extremityFactory.createUDrawable(center, angle, null); - final double decorationLength = extremity.getDecorationLength(); - System.err.println("decorationLength=" + decorationLength); - if (isStart) { - dotPath.moveStartPoint(new UTranslate(decorationLength, 0).rotate(angle - Math.PI)); + final UTranslate translateForKal; + if (kal == null) { + translateForKal = new UTranslate(0, 0); } else { - dotPath.moveEndPoint(new UTranslate(decorationLength, 0).rotate(angle - Math.PI)); + translateForKal = kal.getTranslateForDecoration(); + center = translateForKal.getTranslated(center); } - return extremityFactory.createUDrawable(center, angle, side); + + final Extremity extremity = (Extremity) extremityFactory.createUDrawable(center, angle, side); + final double decorationLength = extremity.getDecorationLength(); + if (isStart) + dotPath.moveStartPoint( + translateForKal.compose(new UTranslate(decorationLength, 0).rotate(angle - Math.PI))); + else + dotPath.moveEndPoint(translateForKal.compose(new UTranslate(decorationLength, 0).rotate(angle - Math.PI))); + + return extremity; } private UDrawable getExtremity(final XPoint2D center, LinkDecor decor, PointListIterator pointListIterator, @@ -552,7 +560,7 @@ public class SvekLine implements Moveable, Hideable, GuideLine { if (nodeContact != null) side = nodeContact.getRectangleArea().getClosestSide(p1); - return extremityFactory.createUDrawable(p0, p1, p2, side); + return extremityFactory.createTBRDrawableLegacy(p0, p1, p2, side); } else if (decor == LinkDecor.NONE) { final UPolygon sh = new UPolygon(pointListIterator.cloneMe().next()); final XPoint2D contact = sh.checkMiddleContactForSpecificTriangle(center); @@ -594,6 +602,27 @@ public class SvekLine implements Moveable, Hideable, GuideLine { dotPath = path.toDotPath(); + final XPoint2D tmpStartPoint = dotPath.getStartPoint(); + final XPoint2D tmpEndPoint = dotPath.getEndPoint(); + + final SvekNode svekNode1 = getSvekNode1(); + final SvekNode svekNode2 = getSvekNode2(); + if (svekNode1 != null && svekNode2 != null) { + final XPoint2D tmpPos1 = svekNode1.getRectangleArea().getPointCenter(); + final XPoint2D tmpPos2 = svekNode2.getRectangleArea().getPointCenter(); + + final double normal = tmpStartPoint.distance(tmpPos1) + tmpEndPoint.distance(tmpPos2); + final double inversed = tmpStartPoint.distance(tmpPos2) + tmpEndPoint.distance(tmpPos1); + + // Sometime, GraphViz inverses the result line. + if (inversed < normal) + // So we reverse the inversion... + dotPath = dotPath.reverse(); + } + + // Used for Kal + dotPathInit = dotPath.copy(); + if (projectionCluster != null) { // System.err.println("Line::solveLine1 projectionCluster=" + // projectionCluster.getClusterPosition()); @@ -614,16 +643,12 @@ public class SvekLine implements Moveable, Hideable, GuideLine { final LinkType linkType = link.getType(); if (getLinkStrategy() == LinkStrategy.SIMPLIER) { - -// dotPath.moveStartPoint(0, 5); -// dotPath.moveEndPoint(0, -15); - this.extremity1 = getExtremitySimplier(dotPath.getStartPoint(), linkType.getDecor2().getExtremityFactoryComplete(backgroundColor), - dotPath.getStartAngle() + Math.PI, ltail, getSvekNode1(), true); + dotPath.getStartAngle() + Math.PI, ltail, svekNode1, true, kal1); this.extremity2 = getExtremitySimplier(dotPath.getEndPoint(), linkType.getDecor1().getExtremityFactoryComplete(backgroundColor), dotPath.getEndAngle(), lhead, - getSvekNode2(), false); + svekNode2, false, kal2); } else { pointListIterator = lineSvg.getPointsWithThisColor(lineColor); if (link.getLength() == 1 && isThereTwo(linkType) && count(pointListIterator.cloneMe()) == 2) { @@ -641,22 +666,22 @@ public class SvekLine implements Moveable, Hideable, GuideLine { endPoint = p1; this.extremity1 = getExtremitySpecial(startPoint, linkType.getDecor2(), - dotPath.getStartAngle() + Math.PI, ltail, getSvekNode1()); + dotPath.getStartAngle() + Math.PI, ltail, svekNode1); this.extremity2 = getExtremitySpecial(endPoint, linkType.getDecor1(), dotPath.getEndAngle(), lhead, - getSvekNode2()); + svekNode2); } else { this.extremity1 = getExtremity(dotPath.getStartPoint(), linkType.getDecor2(), pointListIterator, - dotPath.getStartAngle() + Math.PI, ltail, getSvekNode1()); + dotPath.getStartAngle() + Math.PI, ltail, svekNode1); this.extremity2 = getExtremity(dotPath.getEndPoint(), linkType.getDecor1(), pointListIterator, - dotPath.getEndAngle(), lhead, getSvekNode2()); + dotPath.getEndAngle(), lhead, svekNode2); } } if (link.getEntity1().getLeafType() == LeafType.LOLLIPOP_HALF) - getSvekNode1().addImpact(dotPath.getStartAngle() + Math.PI); + svekNode1.addImpact(dotPath.getStartAngle() + Math.PI); if (link.getEntity2().getLeafType() == LeafType.LOLLIPOP_HALF) - getSvekNode2().addImpact(dotPath.getEndAngle()); + svekNode2.addImpact(dotPath.getEndAngle()); if (getLinkStrategy() == LinkStrategy.LEGACY && extremity1 instanceof Extremity && extremity2 instanceof Extremity) { @@ -671,9 +696,9 @@ public class SvekLine implements Moveable, Hideable, GuideLine { if (dist1start > dist1end && dist2end > dist2start) { pointListIterator = lineSvg.getPointsWithThisColor(lineColor); this.extremity2 = getExtremity(dotPath.getEndPoint(), linkType.getDecor1(), pointListIterator, - dotPath.getEndAngle(), lhead, getSvekNode2()); + dotPath.getEndAngle(), lhead, svekNode2); this.extremity1 = getExtremity(dotPath.getStartPoint(), linkType.getDecor2(), pointListIterator, - dotPath.getStartAngle() + Math.PI, ltail, getSvekNode1()); + dotPath.getStartAngle() + Math.PI, ltail, svekNode1); } } @@ -806,7 +831,6 @@ public class SvekLine implements Moveable, Hideable, GuideLine { stroke = link.getColors().getSpecificLineStroke(); ug = ug.apply(stroke); - // double moveEndY = 0; DotPath todraw = dotPath.copy(); @@ -824,32 +848,6 @@ public class SvekLine implements Moveable, Hideable, GuideLine { todraw.moveEndPoint(magneticForce2); } -// final MagneticBorder magneticBorder2 = getSvekNode2().getMagneticBorder(); - -// if (link.getEntity2().isGroup() && link.getEntity2().getUSymbol() instanceof USymbolFolder) { -// final Cluster endCluster = bibliotekon.getCluster((Entity) link.getEntity2()); -// if (endCluster != null) { -// final double deltaFolderH = endCluster.checkFolderPosition(dotPath.getEndPoint(), -// ug.getStringBounder()); -// todraw = dotPath.copy(); -// todraw.moveEndPoint(0, deltaFolderH); -// // moveEndY = deltaFolderH; -// } -// } - -// if (extremity1 instanceof Extremity && extremity2 instanceof Extremity) { -// // http://forum.plantuml.net/9421/arrow-inversion-with-skinparam-linetype-ortho-missing-arrow -// final XPoint2D p1 = ((Extremity) extremity1) -// .isTooSmallSoGiveThePointCloserToThisOne(todraw.getStartPoint()); -// if (p1 != null) -// todraw.forceStartPoint(p1.getX(), p1.getY()); -// -// final XPoint2D p2 = ((Extremity) extremity2).isTooSmallSoGiveThePointCloserToThisOne(todraw.getEndPoint()); -// if (p2 != null) -// todraw.forceEndPoint(p2.getX(), p2.getY()); -// -// } - final String comment = link.idCommentForSvg(); final String tmp = uniq(ids, comment); todraw.setCommentAndCodeLine(tmp, link.getCodeLine()); @@ -910,11 +908,11 @@ public class SvekLine implements Moveable, Hideable, GuideLine { public void computeKal() { if (kal1 != null) { - final UTranslate tr = UTranslate.point(dotPath.getStartPoint()).compose(new UTranslate(dx, dy)); + final UTranslate tr = UTranslate.point(dotPathInit.getStartPoint()).compose(new UTranslate(dx, dy)); kal1.setTranslate(tr, extremity1); } if (kal2 != null) { - final UTranslate tr = UTranslate.point(dotPath.getEndPoint()).compose(new UTranslate(dx, dy)); + final UTranslate tr = UTranslate.point(dotPathInit.getEndPoint()).compose(new UTranslate(dx, dy)); kal2.setTranslate(tr, extremity2); } } @@ -1144,7 +1142,8 @@ public class SvekLine implements Moveable, Hideable, GuideLine { } private XPoint2D moveDelta(XPoint2D pt) { - return new XPoint2D(pt.getX() + dx, pt.getY() + dy); + return new UTranslate(dx, dy).getTranslated(pt); + // return new XPoint2D(pt.getX() + dx, pt.getY() + dy); } public boolean isLink(Link link) { @@ -1158,7 +1157,8 @@ public class SvekLine implements Moveable, Hideable, GuideLine { if (start == null) return null; - return new XPoint2D(dx + start.getX(), dy + start.getY()); + return new UTranslate(dx, dy).getTranslated(start); + // return new XPoint2D(dx + start.getX(), dy + start.getY()); } public XPoint2D getEndContactPoint() { @@ -1166,16 +1166,10 @@ public class SvekLine implements Moveable, Hideable, GuideLine { if (end == null) return null; - return new XPoint2D(dx + end.getX(), dy + end.getY()); + return new UTranslate(dx, dy).getTranslated(end); + // return new XPoint2D(dx + end.getX(), dy + end.getY()); } -// public Entity getOther(Entity entity) { -// if (link.contains(entity)) -// return link.getOther(entity); -// -// return null; -// } - public StyleBuilder getCurrentStyleBuilder() { return link.getStyleBuilder(); } @@ -1186,10 +1180,12 @@ public class SvekLine implements Moveable, Hideable, GuideLine { public void moveStartPoint(double dx, double dy) { dotPath.moveStartPoint(dx, dy); + dotPathInit.moveStartPoint(dx, dy); } public void moveEndPoint(double dx, double dy) { dotPath.moveEndPoint(dx, dy); + dotPathInit.moveEndPoint(dx, dy); } } diff --git a/src/net/sourceforge/plantuml/svek/extremity/Extremity.java b/src/net/sourceforge/plantuml/svek/extremity/Extremity.java index 6f52ce583..d0075f141 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/Extremity.java +++ b/src/net/sourceforge/plantuml/svek/extremity/Extremity.java @@ -78,8 +78,18 @@ public abstract class Extremity implements UDrawable { return UTranslate.none(); } + // public abstract double getDecorationLength(); + public double getDecorationLength() { - return 15; + return 8; } +// public double getDecorationLength() { +// // return 15; +// System.err.println("CLASS=" + getClass().getName()); +// Thread.dumpStack(); +// System.exit(0); +// throw new UnsupportedOperationException(getClass().getName()); +//} + } diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityArrowAndCircle.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityArrowAndCircle.java index 941368f0f..110b28f87 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityArrowAndCircle.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityArrowAndCircle.java @@ -57,7 +57,7 @@ class ExtremityArrowAndCircle extends Extremity { return contact; } - public ExtremityArrowAndCircle(XPoint2D p1, double angle, XPoint2D center, HColor backgroundColor) { + public ExtremityArrowAndCircle(XPoint2D p1, double angle, HColor backgroundColor) { angle = manageround(angle); polygon.addPoint(0, 0); this.backgroundColor = backgroundColor; diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityCircle.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityCircle.java index bb30b8ea8..39b28ba52 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityCircle.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityCircle.java @@ -82,5 +82,10 @@ class ExtremityCircle extends Extremity { ug = ug.apply(new UTranslate(dest.getX() - radius, dest.getY() - radius)); ug.draw(UEllipse.build(radius * 2, radius * 2)); } + + @Override + public double getDecorationLength() { + return 12; + } } \ No newline at end of file diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityCircleConnect.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityCircleConnect.java index f4b51d4bd..fa116fe4b 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityCircleConnect.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityCircleConnect.java @@ -73,6 +73,11 @@ class ExtremityCircleConnect extends Extremity { final UEllipse arc1 = new UEllipse(2 * radius2, 2 * radius2, deg, 90); ug.apply(new UTranslate(dest.getX() - radius2, dest.getY() - radius2)).draw(arc1); } + + @Override + public double getDecorationLength() { + return 10; + } // private XPoint2D getPointOnCircle(double angle) { // final double x = px + radius + radius2 * Math.cos(angle); diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityCircleCrowfoot.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityCircleCrowfoot.java index 17c84495b..ce1f9eec9 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityCircleCrowfoot.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityCircleCrowfoot.java @@ -86,5 +86,10 @@ class ExtremityCircleCrowfoot extends Extremity { final double dy = p2.getY() - p1.getY(); ug.apply(new UTranslate(x + p1.getX(), y + p1.getY())).draw(new ULine(dx, dy)); } + + @Override + public double getDecorationLength() { + return 18; + } } diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityCircleLine.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityCircleLine.java index f0a930022..35583de48 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityCircleLine.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityCircleLine.java @@ -89,5 +89,10 @@ class ExtremityCircleLine extends Extremity { final double dy = p2.getY() - p1.getY(); ug.apply(new UTranslate(x + p1.getX(), y + p1.getY())).draw(new ULine(dx, dy)); } + + @Override + public double getDecorationLength() { + return 15; + } } diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityDiamond.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityDiamond.java index 6aa3e229e..0f2be9fc1 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityDiamond.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityDiamond.java @@ -82,6 +82,11 @@ class ExtremityDiamond extends Extremity { ug.draw(polygon); } + + @Override + public double getDecorationLength() { + return 12; + } // @Override // public XPoint2D isTooSmallSoGiveThePointCloserToThisOne(XPoint2D pt) { diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityDoubleLine.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityDoubleLine.java index 50eb045d1..8c20fd80c 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityDoubleLine.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityDoubleLine.java @@ -80,6 +80,11 @@ class ExtremityDoubleLine extends Extremity { drawLine(ug, contact.getX(), contact.getY(), secondLineTop, secondLineBottom); drawLine(ug, contact.getX(), contact.getY(), base, middle); } + + @Override + public double getDecorationLength() { + return 8; + } static private void drawLine(UGraphic ug, double x, double y, XPoint2D p1, XPoint2D p2) { final double dx = p2.getX() - p1.getX(); diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityExtends.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityExtends.java index 4db65ddb7..f68b38531 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityExtends.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityExtends.java @@ -69,5 +69,11 @@ class ExtremityExtends extends Extremity { ug = ug.apply(fill.bg()); ug.draw(polygon); } + + @Override + public double getDecorationLength() { + return 18; + } + } diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityExtendsLike.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityExtendsLike.java index 9e2460c33..55585dd45 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityExtendsLike.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityExtendsLike.java @@ -169,5 +169,10 @@ abstract class ExtremityExtendsLike extends Extremity { public void drawU(UGraphic ug) { ug.apply(back).draw(trig); } + + @Override + public double getDecorationLength() { + return 18; + } } \ No newline at end of file diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactory.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactory.java index 502e1d21c..e79060b3a 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactory.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactory.java @@ -41,7 +41,7 @@ import net.sourceforge.plantuml.klimt.shape.UDrawable; public interface ExtremityFactory { - public UDrawable createUDrawable(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side); + public UDrawable createTBRDrawableLegacy(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side); public UDrawable createUDrawable(XPoint2D p0, double angle, Side side); diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryArrow.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryArrow.java index 90d3b0fb1..782050851 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryArrow.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryArrow.java @@ -48,7 +48,7 @@ public class ExtremityFactoryArrow extends AbstractExtremityFactory implements E } @Override - public UDrawable createUDrawable(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { + public UDrawable createTBRDrawableLegacy(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { final double ortho = atan2(p0, p2); final XPoint2D center = new XPoint2D((p0.getX() + p2.getX()) / 2, (p0.getY() + p2.getY()) / 2); return new ExtremityArrow(p1, ortho, center); diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryArrowAndCircle.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryArrowAndCircle.java index 0015fcca6..0f9af768a 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryArrowAndCircle.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryArrowAndCircle.java @@ -49,9 +49,13 @@ public class ExtremityFactoryArrowAndCircle extends AbstractExtremityFactory imp } @Override - public UDrawable createUDrawable(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { + public UDrawable createTBRDrawableLegacy(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { final double ortho = atan2(p0, p2); - final XPoint2D center = new XPoint2D((p0.getX() + p2.getX()) / 2, (p0.getY() + p2.getY()) / 2); - return new ExtremityArrowAndCircle(p1, ortho, center, backgroundColor); + return new ExtremityArrowAndCircle(p1, ortho, backgroundColor); + } + + @Override + public UDrawable createUDrawable(XPoint2D p0, double angle, Side side) { + return new ExtremityArrowAndCircle(p0, angle - Math.PI / 2, backgroundColor); } } \ No newline at end of file diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCircle.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCircle.java index a21d87f98..d44c3a063 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCircle.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCircle.java @@ -58,7 +58,7 @@ public class ExtremityFactoryCircle extends AbstractExtremityFactory implements } @Override - public UDrawable createUDrawable(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { + public UDrawable createTBRDrawableLegacy(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { final double ortho = atan2(p0, p2); return ExtremityCircle.create(p1, fill, ortho, backgroundColor); } diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCircleConnect.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCircleConnect.java index 16408ba14..b66a33f00 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCircleConnect.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCircleConnect.java @@ -56,7 +56,7 @@ public class ExtremityFactoryCircleConnect extends AbstractExtremityFactory impl } @Override - public UDrawable createUDrawable(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { + public UDrawable createTBRDrawableLegacy(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { final double ortho = atan2(p0, p2); return new ExtremityCircleConnect(p1, ortho, backgroundColor); } diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCircleCross.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCircleCross.java index 70918e7e8..1e381261e 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCircleCross.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCircleCross.java @@ -50,9 +50,13 @@ public class ExtremityFactoryCircleCross extends AbstractExtremityFactory implem } @Override - public UDrawable createUDrawable(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { - // final double ortho = atan2(p0, p2); + public UDrawable createTBRDrawableLegacy(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { return new ExtremityCircleCross(p1, backgroundColor); } + + @Override + public UDrawable createUDrawable(XPoint2D p0, double angle, Side side) { + return new ExtremityCircleCross(p0, backgroundColor); + } } \ No newline at end of file diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCircleCrowfoot.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCircleCrowfoot.java index 18a166d12..9c16b29d4 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCircleCrowfoot.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCircleCrowfoot.java @@ -49,7 +49,7 @@ public class ExtremityFactoryCircleCrowfoot extends AbstractExtremityFactory imp } @Override - public UDrawable createUDrawable(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { + public UDrawable createTBRDrawableLegacy(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { final double ortho = atan2(p0, p2); return new ExtremityCircleCrowfoot(p1, ortho); } diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCircleLine.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCircleLine.java index 7040e4bf5..e7cc5882c 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCircleLine.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCircleLine.java @@ -49,7 +49,7 @@ public class ExtremityFactoryCircleLine extends AbstractExtremityFactory impleme } @Override - public UDrawable createUDrawable(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { + public UDrawable createTBRDrawableLegacy(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { final double ortho = atan2(p0, p2); return new ExtremityCircleLine(p1, ortho); } diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCrowfoot.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCrowfoot.java index 70ae12aad..c72b50faf 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCrowfoot.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCrowfoot.java @@ -43,7 +43,7 @@ import net.sourceforge.plantuml.svek.AbstractExtremityFactory; public class ExtremityFactoryCrowfoot extends AbstractExtremityFactory implements ExtremityFactory { @Override - public UDrawable createUDrawable(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { + public UDrawable createTBRDrawableLegacy(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { final double ortho = atan2(p0, p2); return new ExtremityCrowfoot(p1, ortho, side); } diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryDiamond.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryDiamond.java index 7de3c9e00..274889d10 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryDiamond.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryDiamond.java @@ -54,7 +54,7 @@ public class ExtremityFactoryDiamond extends AbstractExtremityFactory implements } @Override - public UDrawable createUDrawable(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { + public UDrawable createTBRDrawableLegacy(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { final double ortho = atan2(p0, p2); return new ExtremityDiamond(p1, ortho, fill); } diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryDoubleLine.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryDoubleLine.java index ec49af474..f69e372fb 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryDoubleLine.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryDoubleLine.java @@ -49,7 +49,7 @@ public class ExtremityFactoryDoubleLine extends AbstractExtremityFactory impleme } @Override - public UDrawable createUDrawable(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { + public UDrawable createTBRDrawableLegacy(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { final double ortho = atan2(p0, p2); return new ExtremityDoubleLine(p1, ortho); } diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryExtends.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryExtends.java index fb2188c8f..56c3fa9bb 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryExtends.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryExtends.java @@ -55,7 +55,7 @@ public class ExtremityFactoryExtends extends AbstractExtremityFactory implements } @Override - public UDrawable createUDrawable(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { + public UDrawable createTBRDrawableLegacy(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { throw new UnsupportedOperationException(); // final double ortho = atan2(p0, p2); // return new ExtremityExtends(p1, ortho, true); diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryExtendsLike.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryExtendsLike.java index 27a9b2a4c..1ad030181 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryExtendsLike.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryExtendsLike.java @@ -61,7 +61,7 @@ public class ExtremityFactoryExtendsLike extends AbstractExtremityFactory implem } @Override - public UDrawable createUDrawable(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { + public UDrawable createTBRDrawableLegacy(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { final double ortho = atan2(p0, p2) + (Math.PI / 2.0); if (definedBy) { return new ExtremityExtendsLike.DefinedBy(p1, ortho, backgroundColor); diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryHalfArrow.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryHalfArrow.java index 38d77a003..f9ee2ed54 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryHalfArrow.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryHalfArrow.java @@ -48,7 +48,7 @@ public class ExtremityFactoryHalfArrow extends AbstractExtremityFactory implemen } @Override - public UDrawable createUDrawable(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { + public UDrawable createTBRDrawableLegacy(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { final double ortho = atan2(p0, p2); final XPoint2D center = new XPoint2D((p0.getX() + p2.getX()) / 2, (p0.getY() + p2.getY()) / 2); return new ExtremityHalfArrow(p1, ortho, center); diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryLineCrowfoot.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryLineCrowfoot.java index 0b25083e8..6764b7432 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryLineCrowfoot.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryLineCrowfoot.java @@ -49,7 +49,7 @@ public class ExtremityFactoryLineCrowfoot extends AbstractExtremityFactory imple } @Override - public UDrawable createUDrawable(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { + public UDrawable createTBRDrawableLegacy(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { final double ortho = atan2(p0, p2); return new ExtremityLineCrowfoot(p1, ortho); } diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryNotNavigable.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryNotNavigable.java index 434f99682..95341bf6a 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryNotNavigable.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryNotNavigable.java @@ -48,7 +48,7 @@ public class ExtremityFactoryNotNavigable extends AbstractExtremityFactory imple } @Override - public UDrawable createUDrawable(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { + public UDrawable createTBRDrawableLegacy(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { final double ortho = atan2(p0, p2); return new ExtremityNotNavigable(p1, ortho); } diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryParenthesis.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryParenthesis.java index 975049f68..bcc994b88 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryParenthesis.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryParenthesis.java @@ -49,7 +49,7 @@ public class ExtremityFactoryParenthesis extends AbstractExtremityFactory implem } @Override - public UDrawable createUDrawable(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { + public UDrawable createTBRDrawableLegacy(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { final double ortho = atan2(p0, p2); if (OptionFlags.USE_INTERFACE_EYE2) { final XPoint2D center = new XPoint2D((p0.getX() + p2.getX()) / 2, (p0.getY() + p2.getY()) / 2); diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryPlus.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryPlus.java index 690f4bf48..1c5ae0b75 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryPlus.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryPlus.java @@ -55,7 +55,7 @@ public class ExtremityFactoryPlus extends AbstractExtremityFactory implements Ex } @Override - public UDrawable createUDrawable(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { + public UDrawable createTBRDrawableLegacy(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { final double ortho = atan2(p0, p2); return ExtremityPlus.create(p1, ortho, backgroundColor); } diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactorySquare.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactorySquare.java index 2cbc514a3..d5a80ea4a 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactorySquare.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactorySquare.java @@ -55,7 +55,7 @@ public class ExtremityFactorySquare extends AbstractExtremityFactory implements } @Override - public UDrawable createUDrawable(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { + public UDrawable createTBRDrawableLegacy(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { // final double ortho = atan2(p0, p2); return new ExtremitySquare(p1, backgroundColor); } diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryTriangle.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryTriangle.java index 6ec435916..8d2219c01 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryTriangle.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryTriangle.java @@ -46,22 +46,25 @@ public class ExtremityFactoryTriangle extends AbstractExtremityFactory implement private final HColor backgroundColor; private final int xWing; private final int yAperture; + private final int decorationLength; - public ExtremityFactoryTriangle(HColor backgroundColor, int xWing, int yAperture) { + public ExtremityFactoryTriangle(HColor backgroundColor, int xWing, int yAperture, int decorationLength) { this.backgroundColor = backgroundColor; this.xWing = xWing; this.yAperture = yAperture; + this.decorationLength = decorationLength; } @Override public UDrawable createUDrawable(XPoint2D p0, double angle, Side side) { - return new ExtremityTriangle(p0, angle - Math.PI / 2, false, backgroundColor, xWing, yAperture); + return new ExtremityTriangle(p0, angle - Math.PI / 2, false, backgroundColor, xWing, yAperture, + decorationLength); } @Override - public UDrawable createUDrawable(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { + public UDrawable createTBRDrawableLegacy(XPoint2D p0, XPoint2D p1, XPoint2D p2, Side side) { final double ortho = atan2(p0, p2); - return new ExtremityTriangle(p1, ortho, true, backgroundColor, xWing, yAperture); + return new ExtremityTriangle(p1, ortho, true, backgroundColor, xWing, yAperture, decorationLength); } } diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityHalfArrow.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityHalfArrow.java index d2046f94a..e07f3fb29 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityHalfArrow.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityHalfArrow.java @@ -68,14 +68,25 @@ class ExtremityHalfArrow extends Extremity { } public ExtremityHalfArrow(XPoint2D p0, double angle) { - throw new UnsupportedOperationException(); + angle = manageround(angle); + final int xWing = 9; + final int yAperture = 4; + + this.contact = p0; + + final XPoint2D other = new XPoint2D(-xWing, -yAperture).transform(AffineTransform.getRotateInstance(angle)); + final XPoint2D other2 = new XPoint2D(-8, 0).transform(AffineTransform.getRotateInstance(angle)); + + this.line = new ULine(other.getX(), other.getY()); + this.otherLine = new ULine(other2.getX(), other2.getY()); } public void drawU(UGraphic ug) { ug = ug.apply(HColors.changeBack(ug)); if (line != null && line.getLength() > 2) { - ug.apply(new UTranslate(contact.getX(), contact.getY())).draw(line); - ug.apply(new UTranslate(contact.getX(), contact.getY())).draw(otherLine); + final UTranslate position = UTranslate.point(contact); + ug.apply(position).draw(line); + ug.apply(position).draw(otherLine); } } diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityLineCrowfoot.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityLineCrowfoot.java index 11036e485..bb7cad53f 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityLineCrowfoot.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityLineCrowfoot.java @@ -88,4 +88,9 @@ class ExtremityLineCrowfoot extends Extremity { ug.apply(new UTranslate(x + p1.getX(), y + p1.getY())).draw(new ULine(dx, dy)); } + @Override + public double getDecorationLength() { + return 8; + } + } diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityNotNavigable.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityNotNavigable.java index 4b4cec21f..1f12f44d2 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityNotNavigable.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityNotNavigable.java @@ -67,5 +67,10 @@ class ExtremityNotNavigable extends Extremity { public void drawU(UGraphic ug) { ug.draw(path); } + + @Override + public double getDecorationLength() { + return 8; + } } diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityParenthesis.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityParenthesis.java index ccf066880..a5cf97e83 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityParenthesis.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityParenthesis.java @@ -65,5 +65,10 @@ class ExtremityParenthesis extends Extremity { ug.apply(UStroke.withThickness(1.5)).apply(new UTranslate(dest.getX() - radius2, dest.getY() - radius2)) .draw(arc1); } + + @Override + public double getDecorationLength() { + return 10; + } } diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityPlus.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityPlus.java index 628154a90..7cfd1d6b2 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityPlus.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityPlus.java @@ -89,5 +89,10 @@ class ExtremityPlus extends Extremity { ug.apply(new UTranslate(x + p1.getX(), y + p1.getY())).draw(new ULine(dx, dy)); } + + @Override + public double getDecorationLength() { + return 16; + } } \ No newline at end of file diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremitySquare.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremitySquare.java index 7534ee629..9d526e568 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremitySquare.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremitySquare.java @@ -64,5 +64,10 @@ class ExtremitySquare extends Extremity { .apply(new UTranslate(dest.getX() - radius, dest.getY() - radius)) .draw(URectangle.build(radius * 2, radius * 2)); } + + @Override + public double getDecorationLength() { + return 5; + } } diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityTriangle.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityTriangle.java index fa586a183..f706a4b9b 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityTriangle.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityTriangle.java @@ -47,19 +47,19 @@ class ExtremityTriangle extends Extremity { private final boolean fill; private final HColor backgroundColor; private final XPoint2D contact; - private final int xWing; + private final int decorationLength; @Override public XPoint2D somePoint() { return contact; } - public ExtremityTriangle(XPoint2D p1, double angle, boolean fill, HColor backgroundColor, int xWing, - int yAperture) { + public ExtremityTriangle(XPoint2D p1, double angle, boolean fill, HColor backgroundColor, int xWing, int yAperture, + int decorationLength) { this.backgroundColor = backgroundColor; this.fill = fill; this.contact = new XPoint2D(p1.getX(), p1.getY()); - this.xWing = xWing; + this.decorationLength = decorationLength; angle = manageround(angle); polygon.addPoint(0, 0); @@ -80,7 +80,7 @@ class ExtremityTriangle extends Extremity { @Override public double getDecorationLength() { - return xWing; + return decorationLength; } } diff --git a/src/net/sourceforge/plantuml/svek/extremity/MiddleCircle.java b/src/net/sourceforge/plantuml/svek/extremity/MiddleCircle.java index c8e387b5b..2f6269545 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/MiddleCircle.java +++ b/src/net/sourceforge/plantuml/svek/extremity/MiddleCircle.java @@ -60,5 +60,10 @@ class MiddleCircle extends Extremity { public void drawU(UGraphic ug) { ug.apply(backColor.bg()).apply(UStroke.withThickness(1.5)).apply(new UTranslate(-radius, -radius)).draw(circle); } + + @Override + public double getDecorationLength() { + return radius; + } } diff --git a/src/net/sourceforge/plantuml/version/Version.java b/src/net/sourceforge/plantuml/version/Version.java index b5ad2e5e1..01a5184ff 100644 --- a/src/net/sourceforge/plantuml/version/Version.java +++ b/src/net/sourceforge/plantuml/version/Version.java @@ -46,7 +46,7 @@ public class Version { // Warning, "version" should be the same in gradle.properties and Version.java // Any idea anyone how to magically synchronize those :-) ? - private static final String version = "1.2023.11beta1"; + private static final String version = "1.2023.11beta2"; public static String versionString() { return version; diff --git a/test/nonreg/simple/A0004_TestResult.java b/test/nonreg/simple/A0004_TestResult.java index 18aca499a..53cdcbf22 100644 --- a/test/nonreg/simple/A0004_TestResult.java +++ b/test/nonreg/simple/A0004_TestResult.java @@ -194,18 +194,6 @@ TEXT: color: ff000000 extendedColor: NULL_COLOR -PATH: - - type: SEG_MOVETO - pt1: [ 142.0000 ; 30.2631 ] - - type: SEG_CUBICTO - pt1: [ 142.0000 ; 40.4562 ] - pt2: [ 142.0000 ; 55.5520 ] - pt3: [ 142.0000 ; 66.8097 ] - stroke: 0.0-0.0-1.0 - shadow: 0 - color: ff181818 - backcolor: NULL_COLOR - POLYGON: points: - [ 148.0000 ; 72.8097 ] @@ -220,11 +208,11 @@ POLYGON: PATH: - type: SEG_MOVETO - pt1: [ 142.0000 ; 99.2505 ] + pt1: [ 142.0000 ; 30.2631 ] - type: SEG_CUBICTO - pt1: [ 142.0000 ; 110.4667 ] - pt2: [ 142.0000 ; 125.4679 ] - pt3: [ 142.0000 ; 135.6413 ] + pt1: [ 142.0000 ; 40.4562 ] + pt2: [ 142.0000 ; 49.5520 ] + pt3: [ 142.0000 ; 60.8097 ] stroke: 0.0-0.0-1.0 shadow: 0 color: ff181818 @@ -242,6 +230,18 @@ POLYGON: color: ff181818 backcolor: ff181818 +PATH: + - type: SEG_MOVETO + pt1: [ 142.0000 ; 99.2505 ] + - type: SEG_CUBICTO + pt1: [ 142.0000 ; 110.4667 ] + pt2: [ 142.0000 ; 119.4679 ] + pt3: [ 142.0000 ; 129.6413 ] + stroke: 0.0-0.0-1.0 + shadow: 0 + color: ff181818 + backcolor: NULL_COLOR + EMPTY: pt1: [ 136.0000 ; 128.6413 ] pt2: [ 148.4231 ; 141.6413 ] @@ -254,18 +254,6 @@ TEXT: color: ff000000 extendedColor: NULL_COLOR -PATH: - - type: SEG_MOVETO - pt1: [ 129.7752 ; 158.1168 ] - - type: SEG_CUBICTO - pt1: [ 122.2145 ; 163.7553 ] - pt2: [ 112.3164 ; 171.1369 ] - pt3: [ 103.5732 ; 177.6573 ] - stroke: 0.0-0.0-1.0 - shadow: 0 - color: ff181818 - backcolor: NULL_COLOR - POLYGON: points: - [ 109.5732 ; 183.6573 ] @@ -278,6 +266,18 @@ POLYGON: color: ff181818 backcolor: ff181818 +PATH: + - type: SEG_MOVETO + pt1: [ 129.7752 ; 158.1168 ] + - type: SEG_CUBICTO + pt1: [ 122.2145 ; 163.7553 ] + pt2: [ 117.1261 ; 167.5500 ] + pt3: [ 108.3830 ; 174.0703 ] + stroke: 0.0-0.0-1.0 + shadow: 0 + color: ff181818 + backcolor: NULL_COLOR + EMPTY: pt1: [ 32.1176 ; 160.5563 ] pt2: [ 123.3348 ; 173.5563 ] @@ -290,26 +290,6 @@ TEXT: color: ff000000 extendedColor: NULL_COLOR -PATH: - - type: SEG_MOVETO - pt1: [ 80.9376 ; 210.2651 ] - - type: SEG_CUBICTO - pt1: [ 78.8728 ; 226.8910 ] - pt2: [ 76.0000 ; 254.2842 ] - pt3: [ 76.0000 ; 278.0000 ] - - type: SEG_CUBICTO - pt1: [ 76.0000 ; 278.0000 ] - pt2: [ 76.0000 ; 278.0000 ] - pt3: [ 76.0000 ; 597.0000 ] - - type: SEG_CUBICTO - pt1: [ 76.0000 ; 624.0056 ] - pt2: [ 105.0341 ; 645.0259 ] - pt3: [ 120.9122 ; 654.5023 ] - stroke: 0.0-0.0-1.0 - shadow: 0 - color: ff181818 - backcolor: NULL_COLOR - POLYGON: points: - [ 126.9122 ; 660.5023 ] @@ -324,15 +304,19 @@ POLYGON: PATH: - type: SEG_MOVETO - pt1: [ 154.0211 ; 159.3508 ] + pt1: [ 80.9376 ; 210.2651 ] - type: SEG_CUBICTO - pt1: [ 160.3243 ; 164.8317 ] - pt2: [ 168.1405 ; 171.7127 ] - pt3: [ 175.0000 ; 178.0000 ] + pt1: [ 78.8728 ; 226.8910 ] + pt2: [ 76.0000 ; 254.2842 ] + pt3: [ 76.0000 ; 278.0000 ] - type: SEG_CUBICTO - pt1: [ 193.2996 ; 194.7733 ] - pt2: [ 213.8411 ; 214.5434 ] - pt3: [ 227.5109 ; 227.8383 ] + pt1: [ 76.0000 ; 278.0000 ] + pt2: [ 76.0000 ; 278.0000 ] + pt3: [ 76.0000 ; 597.0000 ] + - type: SEG_CUBICTO + pt1: [ 76.0000 ; 624.0056 ] + pt2: [ 99.8820 ; 641.9510 ] + pt3: [ 115.7600 ; 651.4274 ] stroke: 0.0-0.0-1.0 shadow: 0 color: ff181818 @@ -350,6 +334,22 @@ POLYGON: color: ff181818 backcolor: ff181818 +PATH: + - type: SEG_MOVETO + pt1: [ 154.0211 ; 159.3508 ] + - type: SEG_CUBICTO + pt1: [ 160.3243 ; 164.8317 ] + pt2: [ 168.1405 ; 171.7127 ] + pt3: [ 175.0000 ; 178.0000 ] + - type: SEG_CUBICTO + pt1: [ 193.2996 ; 194.7733 ] + pt2: [ 209.5399 ; 210.3601 ] + pt3: [ 223.2097 ; 223.6550 ] + stroke: 0.0-0.0-1.0 + shadow: 0 + color: ff181818 + backcolor: NULL_COLOR + EMPTY: pt1: [ 215.0000 ; 193.5000 ] pt2: [ 292.9440 ; 206.5000 ] @@ -362,18 +362,6 @@ TEXT: color: ff000000 extendedColor: NULL_COLOR -PATH: - - type: SEG_MOVETO - pt1: [ 249.0518 ; 260.2505 ] - - type: SEG_CUBICTO - pt1: [ 253.5027 ; 271.4667 ] - pt2: [ 259.4555 ; 286.4679 ] - pt3: [ 263.4926 ; 296.6413 ] - stroke: 0.0-0.0-1.0 - shadow: 0 - color: ff181818 - backcolor: NULL_COLOR - POLYGON: points: - [ 269.4926 ; 302.6413 ] @@ -388,11 +376,11 @@ POLYGON: PATH: - type: SEG_MOVETO - pt1: [ 268.0000 ; 321.0974 ] + pt1: [ 249.0518 ; 260.2505 ] - type: SEG_CUBICTO - pt1: [ 268.0000 ; 331.6457 ] - pt2: [ 268.0000 ; 347.4205 ] - pt3: [ 268.0000 ; 357.9523 ] + pt1: [ 253.5027 ; 271.4667 ] + pt2: [ 257.2424 ; 280.8909 ] + pt3: [ 261.2795 ; 291.0644 ] stroke: 0.0-0.0-1.0 shadow: 0 color: ff181818 @@ -410,6 +398,18 @@ POLYGON: color: ff181818 backcolor: ff181818 +PATH: + - type: SEG_MOVETO + pt1: [ 268.0000 ; 321.0974 ] + - type: SEG_CUBICTO + pt1: [ 268.0000 ; 331.6457 ] + pt2: [ 268.0000 ; 341.4205 ] + pt3: [ 268.0000 ; 351.9523 ] + stroke: 0.0-0.0-1.0 + shadow: 0 + color: ff181818 + backcolor: NULL_COLOR + EMPTY: pt1: [ 262.0000 ; 350.9523 ] pt2: [ 274.4231 ; 363.9523 ] @@ -422,22 +422,6 @@ TEXT: color: ff000000 extendedColor: NULL_COLOR -PATH: - - type: SEG_MOVETO - pt1: [ 255.8218 ; 374.4963 ] - - type: SEG_CUBICTO - pt1: [ 215.5382 ; 386.6592 ] - pt2: [ 91.3580 ; 429.2712 ] - pt3: [ 131.0000 ; 482.0000 ] - - type: SEG_CUBICTO - pt1: [ 146.0983 ; 502.0826 ] - pt2: [ 212.5044 ; 516.4342 ] - pt3: [ 256.6136 ; 523.9570 ] - stroke: 0.0-0.0-1.0 - shadow: 0 - color: ff181818 - backcolor: NULL_COLOR - POLYGON: points: - [ 262.6136 ; 529.9570 ] @@ -450,6 +434,22 @@ POLYGON: color: ff181818 backcolor: ff181818 +PATH: + - type: SEG_MOVETO + pt1: [ 255.8218 ; 374.4963 ] + - type: SEG_CUBICTO + pt1: [ 215.5382 ; 386.6592 ] + pt2: [ 91.3580 ; 429.2712 ] + pt3: [ 131.0000 ; 482.0000 ] + - type: SEG_CUBICTO + pt1: [ 146.0983 ; 502.0826 ] + pt2: [ 206.5898 ; 515.4255 ] + pt3: [ 250.6990 ; 522.9483 ] + stroke: 0.0-0.0-1.0 + shadow: 0 + color: ff181818 + backcolor: NULL_COLOR + EMPTY: pt1: [ 137.0000 ; 465.5000 ] pt2: [ 252.5031 ; 478.5000 ] @@ -462,22 +462,6 @@ TEXT: color: ff000000 extendedColor: NULL_COLOR -PATH: - - type: SEG_MOVETO - pt1: [ 265.1414 ; 382.3557 ] - - type: SEG_CUBICTO - pt1: [ 262.5349 ; 395.4258 ] - pt2: [ 260.3945 ; 417.0128 ] - pt3: [ 270.0000 ; 432.0000 ] - - type: SEG_CUBICTO - pt1: [ 274.7698 ; 439.4421 ] - pt2: [ 281.7630 ; 445.2698 ] - pt3: [ 289.4347 ; 449.8128 ] - stroke: 0.0-0.0-1.0 - shadow: 0 - color: ff181818 - backcolor: NULL_COLOR - POLYGON: points: - [ 295.4347 ; 455.8128 ] @@ -490,6 +474,22 @@ POLYGON: color: ff181818 backcolor: ff181818 +PATH: + - type: SEG_MOVETO + pt1: [ 265.1414 ; 382.3557 ] + - type: SEG_CUBICTO + pt1: [ 262.5349 ; 395.4258 ] + pt2: [ 260.3945 ; 417.0128 ] + pt3: [ 270.0000 ; 432.0000 ] + - type: SEG_CUBICTO + pt1: [ 274.7698 ; 439.4421 ] + pt2: [ 276.6003 ; 442.2126 ] + pt3: [ 284.2720 ; 446.7556 ] + stroke: 0.0-0.0-1.0 + shadow: 0 + color: ff181818 + backcolor: NULL_COLOR + EMPTY: pt1: [ 276.0000 ; 415.5000 ] pt2: [ 341.5080 ; 428.5000 ] @@ -502,18 +502,6 @@ TEXT: color: ff000000 extendedColor: NULL_COLOR -PATH: - - type: SEG_MOVETO - pt1: [ 326.5592 ; 482.2505 ] - - type: SEG_CUBICTO - pt1: [ 319.6159 ; 493.4667 ] - pt2: [ 310.3294 ; 508.4679 ] - pt3: [ 304.0316 ; 518.6413 ] - stroke: 0.0-0.0-1.0 - shadow: 0 - color: ff181818 - backcolor: NULL_COLOR - POLYGON: points: - [ 310.0316 ; 524.6413 ] @@ -528,11 +516,11 @@ POLYGON: PATH: - type: SEG_MOVETO - pt1: [ 286.2922 ; 321.0384 ] + pt1: [ 326.5592 ; 482.2505 ] - type: SEG_CUBICTO - pt1: [ 317.6162 ; 339.9408 ] - pt2: [ 381.5657 ; 378.5310 ] - pt3: [ 416.9883 ; 399.9067 ] + pt1: [ 319.6159 ; 493.4667 ] + pt2: [ 313.4875 ; 503.3663 ] + pt3: [ 307.1897 ; 513.5397 ] stroke: 0.0-0.0-1.0 shadow: 0 color: ff181818 @@ -552,15 +540,11 @@ POLYGON: PATH: - type: SEG_MOVETO - pt1: [ 442.1322 ; 432.2570 ] + pt1: [ 286.2922 ; 321.0384 ] - type: SEG_CUBICTO - pt1: [ 441.4486 ; 446.7451 ] - pt2: [ 438.2173 ; 468.2922 ] - pt3: [ 426.0000 ; 482.0000 ] - - type: SEG_CUBICTO - pt1: [ 403.3436 ; 507.4206 ] - pt2: [ 365.9396 ; 519.4137 ] - pt3: [ 337.2264 ; 525.0513 ] + pt1: [ 317.6162 ; 339.9408 ] + pt2: [ 376.4286 ; 375.4310 ] + pt3: [ 411.8512 ; 396.8067 ] stroke: 0.0-0.0-1.0 shadow: 0 color: ff181818 @@ -580,11 +564,15 @@ POLYGON: PATH: - type: SEG_MOVETO - pt1: [ 292.3517 ; 543.2631 ] + pt1: [ 442.1322 ; 432.2570 ] - type: SEG_CUBICTO - pt1: [ 288.1451 ; 553.4562 ] - pt2: [ 281.9151 ; 568.5520 ] - pt3: [ 277.2690 ; 579.8097 ] + pt1: [ 441.4486 ; 446.7451 ] + pt2: [ 438.2173 ; 468.2922 ] + pt3: [ 426.0000 ; 482.0000 ] + - type: SEG_CUBICTO + pt1: [ 403.3436 ; 507.4206 ] + pt2: [ 371.8272 ; 518.2577 ] + pt3: [ 343.1140 ; 523.8953 ] stroke: 0.0-0.0-1.0 shadow: 0 color: ff181818 @@ -604,11 +592,11 @@ POLYGON: PATH: - type: SEG_MOVETO - pt1: [ 237.4665 ; 612.0901 ] + pt1: [ 292.3517 ; 543.2631 ] - type: SEG_CUBICTO - pt1: [ 206.0796 ; 626.2142 ] - pt2: [ 161.1219 ; 646.4451 ] - pt3: [ 141.1865 ; 655.4161 ] + pt1: [ 288.1451 ; 553.4562 ] + pt2: [ 284.2040 ; 563.0057 ] + pt3: [ 279.5579 ; 574.2635 ] stroke: 0.0-0.0-1.0 shadow: 0 color: ff181818 @@ -626,5 +614,17 @@ POLYGON: color: ff181818 backcolor: ff181818 +PATH: + - type: SEG_MOVETO + pt1: [ 237.4665 ; 612.0901 ] + - type: SEG_CUBICTO + pt1: [ 206.0796 ; 626.2142 ] + pt2: [ 166.5934 ; 643.9829 ] + pt3: [ 146.6581 ; 652.9539 ] + stroke: 0.0-0.0-1.0 + shadow: 0 + color: ff181818 + backcolor: NULL_COLOR + """ */ \ No newline at end of file diff --git a/test/nonreg/simple/A0005_TestResult.java b/test/nonreg/simple/A0005_TestResult.java index 5951b8586..ac54ee373 100644 --- a/test/nonreg/simple/A0005_TestResult.java +++ b/test/nonreg/simple/A0005_TestResult.java @@ -194,18 +194,6 @@ EMPTY: pt1: [ 21.0468 ; 98.0000 ] pt2: [ 33.0468 ; 106.0000 ] -PATH: - - type: SEG_MOVETO - pt1: [ 46.0000 ; 54.3837 ] - - type: SEG_CUBICTO - pt1: [ 46.0000 ; 65.1992 ] - pt2: [ 46.0000 ; 78.1811 ] - pt3: [ 46.0000 ; 89.7328 ] - stroke: 0.0-0.0-1.0 - shadow: 0 - color: ff181818 - backcolor: NULL_COLOR - POLYGON: points: - [ 67.0468 ; 141.7328 ] @@ -218,6 +206,18 @@ POLYGON: color: ff181818 backcolor: ff181818 +PATH: + - type: SEG_MOVETO + pt1: [ 46.0000 ; 54.3837 ] + - type: SEG_CUBICTO + pt1: [ 46.0000 ; 65.1992 ] + pt2: [ 46.0000 ; 72.1811 ] + pt3: [ 46.0000 ; 83.7328 ] + stroke: 0.0-0.0-1.0 + shadow: 0 + color: ff181818 + backcolor: NULL_COLOR + EMPTY: pt1: [ 0.0000 ; 198.0000 ] pt2: [ 128.0935 ; 247.0000 ]