mirror of
https://github.com/octoleo/plantuml.git
synced 2024-11-24 13:57:33 +00:00
fix: change GraphViz strategy
https://github.com/plantuml/plantuml/issues/1491
This commit is contained in:
parent
44ba32d053
commit
74bcd0f668
@ -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
|
@ -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() {
|
||||
|
@ -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:
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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) {
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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());
|
||||
//}
|
||||
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -82,6 +82,11 @@ class ExtremityDiamond extends Extremity {
|
||||
|
||||
ug.draw(polygon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getDecorationLength() {
|
||||
return 12;
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public XPoint2D isTooSmallSoGiveThePointCloserToThisOne(XPoint2D pt) {
|
||||
|
@ -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();
|
||||
|
@ -69,5 +69,11 @@ class ExtremityExtends extends Extremity {
|
||||
ug = ug.apply(fill.bg());
|
||||
ug.draw(polygon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getDecorationLength() {
|
||||
return 18;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -67,5 +67,10 @@ class ExtremityNotNavigable extends Extremity {
|
||||
public void drawU(UGraphic ug) {
|
||||
ug.draw(path);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getDecorationLength() {
|
||||
return 8;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
||||
"""
|
||||
*/
|
@ -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 ]
|
||||
|
Loading…
Reference in New Issue
Block a user