1
0
mirror of https://github.com/octoleo/plantuml.git synced 2024-12-22 10:59:01 +00:00
This commit is contained in:
Arnaud Roques 2022-11-30 18:41:17 +01:00
parent 4ea37512c7
commit 0d7f2eea2c
36 changed files with 543 additions and 470 deletions

View File

@ -37,6 +37,7 @@ package net.sourceforge.plantuml;
import java.util.Collection;
import net.sourceforge.plantuml.activitydiagram3.ftile.Arrows;
import net.sourceforge.plantuml.cucadiagram.Rankdir;
import net.sourceforge.plantuml.cucadiagram.Stereotype;
import net.sourceforge.plantuml.cucadiagram.dot.DotSplines;
@ -192,4 +193,6 @@ public interface ISkinParam extends ISkinSimple {
public LengthAdjust getlengthAdjust();
public double getParamSameClassWidth();
public Arrows arrows();
}

View File

@ -53,6 +53,9 @@ import java.util.Set;
import java.util.TreeSet;
import java.util.regex.Pattern;
import net.sourceforge.plantuml.activitydiagram3.ftile.Arrows;
import net.sourceforge.plantuml.activitydiagram3.ftile.ArrowsRegular;
import net.sourceforge.plantuml.activitydiagram3.ftile.ArrowsTriangle;
import net.sourceforge.plantuml.command.BlocLines;
import net.sourceforge.plantuml.command.regex.Matcher2;
import net.sourceforge.plantuml.command.regex.MyPattern;
@ -1221,4 +1224,11 @@ public class SkinParam implements ISkinParam {
return result;
}
@Override
public Arrows arrows() {
if (strictUmlStyle())
return new ArrowsTriangle();
return new ArrowsRegular();
}
}

View File

@ -38,6 +38,7 @@ package net.sourceforge.plantuml;
import java.util.Collection;
import java.util.Map;
import net.sourceforge.plantuml.activitydiagram3.ftile.Arrows;
import net.sourceforge.plantuml.creole.CreoleMode;
import net.sourceforge.plantuml.creole.SheetBuilder;
import net.sourceforge.plantuml.cucadiagram.Rankdir;
@ -458,4 +459,9 @@ public class SkinParamDelegator implements ISkinParam {
return skinParam.sheet(fontConfiguration, horizontalAlignment, creoleMode, stereo);
}
@Override
public Arrows arrows() {
return skinParam.arrows();
}
}

View File

@ -38,60 +38,29 @@ package net.sourceforge.plantuml.activitydiagram3.ftile;
import net.sourceforge.plantuml.Direction;
import net.sourceforge.plantuml.ugraphic.UPolygon;
public class Arrows {
public abstract class Arrows {
final static private double delta1 = 10;
final static private double delta2 = 4;
public abstract UPolygon asToUp();
public static UPolygon asToUp() {
final UPolygon polygon = new UPolygon("asToUp");
polygon.addPoint(-delta2, delta1);
polygon.addPoint(0, 0);
polygon.addPoint(delta2, delta1);
polygon.addPoint(0, delta1 - 4);
return polygon;
}
public abstract UPolygon asToDown();
public static UPolygon asToDown() {
final UPolygon polygon = new UPolygon("asToDown");
polygon.addPoint(-delta2, -delta1);
polygon.addPoint(0, 0);
polygon.addPoint(delta2, -delta1);
polygon.addPoint(0, -delta1 + 4);
return polygon;
}
public abstract UPolygon asToRight();
public static UPolygon asToRight() {
final UPolygon polygon = new UPolygon("asToRight");
polygon.addPoint(-delta1, -delta2);
polygon.addPoint(0, 0);
polygon.addPoint(-delta1, delta2);
polygon.addPoint(-delta1 + 4, 0);
return polygon;
}
public abstract UPolygon asToLeft();
public static UPolygon asToLeft() {
final UPolygon polygon = new UPolygon("asToLeft");
polygon.addPoint(delta1, -delta2);
polygon.addPoint(0, 0);
polygon.addPoint(delta1, delta2);
polygon.addPoint(delta1 - 4, 0);
return polygon;
}
public static UPolygon asTo(Direction direction) {
if (direction == Direction.UP) {
public final UPolygon asTo(Direction direction) {
if (direction == Direction.UP)
return asToUp();
}
if (direction == Direction.DOWN) {
if (direction == Direction.DOWN)
return asToDown();
}
if (direction == Direction.LEFT) {
if (direction == Direction.LEFT)
return asToLeft();
}
if (direction == Direction.RIGHT) {
if (direction == Direction.RIGHT)
return asToRight();
}
throw new IllegalArgumentException();
}

View File

@ -0,0 +1,85 @@
/* ========================================================================
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2023, Arnaud Roques
*
* Project Info: http://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* http://plantuml.com/patreon (only 1$ per month!)
* http://plantuml.com/paypal
*
* This file is part of PlantUML.
*
* PlantUML is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* PlantUML distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
* License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA.
*
*
* Original Author: Arnaud Roques
*
*
*/
package net.sourceforge.plantuml.activitydiagram3.ftile;
import net.sourceforge.plantuml.ugraphic.UPolygon;
public class ArrowsRegular extends Arrows {
final static private double delta1 = 10;
final static private double delta2 = 4;
@Override
public UPolygon asToUp() {
final UPolygon polygon = new UPolygon("asToUp");
polygon.addPoint(-delta2, delta1);
polygon.addPoint(0, 0);
polygon.addPoint(delta2, delta1);
polygon.addPoint(0, delta1 - 4);
return polygon;
}
@Override
public UPolygon asToDown() {
final UPolygon polygon = new UPolygon("asToDown");
polygon.addPoint(-delta2, -delta1);
polygon.addPoint(0, 0);
polygon.addPoint(delta2, -delta1);
polygon.addPoint(0, -delta1 + 4);
return polygon;
}
@Override
public UPolygon asToRight() {
final UPolygon polygon = new UPolygon("asToRight");
polygon.addPoint(-delta1, -delta2);
polygon.addPoint(0, 0);
polygon.addPoint(-delta1, delta2);
polygon.addPoint(-delta1 + 4, 0);
return polygon;
}
@Override
public UPolygon asToLeft() {
final UPolygon polygon = new UPolygon("asToLeft");
polygon.addPoint(delta1, -delta2);
polygon.addPoint(0, 0);
polygon.addPoint(delta1, delta2);
polygon.addPoint(delta1 - 4, 0);
return polygon;
}
}

View File

@ -0,0 +1,81 @@
/* ========================================================================
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2023, Arnaud Roques
*
* Project Info: http://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* http://plantuml.com/patreon (only 1$ per month!)
* http://plantuml.com/paypal
*
* This file is part of PlantUML.
*
* PlantUML is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* PlantUML distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
* License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA.
*
*
* Original Author: Arnaud Roques
*
*
*/
package net.sourceforge.plantuml.activitydiagram3.ftile;
import net.sourceforge.plantuml.ugraphic.UPolygon;
public class ArrowsTriangle extends Arrows {
final static private double delta1 = 10;
final static private double delta2 = 4;
@Override
public UPolygon asToUp() {
final UPolygon polygon = new UPolygon("asToUp");
polygon.addPoint(-delta2, delta1);
polygon.addPoint(0, 0);
polygon.addPoint(delta2, delta1);
return polygon;
}
@Override
public UPolygon asToDown() {
final UPolygon polygon = new UPolygon("asToDown");
polygon.addPoint(-delta2, -delta1);
polygon.addPoint(delta2, -delta1);
polygon.addPoint(0, 0);
return polygon;
}
@Override
public UPolygon asToRight() {
final UPolygon polygon = new UPolygon("asToRight");
polygon.addPoint(-delta1, -delta2);
polygon.addPoint(0, 0);
polygon.addPoint(-delta1, delta2);
return polygon;
}
@Override
public UPolygon asToLeft() {
final UPolygon polygon = new UPolygon("asToLeft");
polygon.addPoint(delta1, -delta2);
polygon.addPoint(0, 0);
polygon.addPoint(delta1, delta2);
return polygon;
}
}

View File

@ -149,20 +149,20 @@ public class Snake implements UShape {
public static Snake create(ISkinParam skinParam, Rainbow color) {
final Style style = StyleSignatureBasic.activityArrow().getMergedStyle(skinParam.getCurrentStyleBuilder());
return new Snake(skinParam, null, color, null, new Worm(style), MergeStrategy.FULL, null,
return new Snake(skinParam, null, color, null, new Worm(style, skinParam.arrows()), MergeStrategy.FULL, null,
new ArrayList<Text>());
}
public static Snake create(ISkinParam skinParam, Rainbow color, UPolygon endDecoration) {
final Style style = StyleSignatureBasic.activityArrow().getMergedStyle(skinParam.getCurrentStyleBuilder());
return new Snake(skinParam, null, color, endDecoration, new Worm(style), MergeStrategy.FULL, null,
new ArrayList<Text>());
return new Snake(skinParam, null, color, endDecoration, new Worm(style, skinParam.arrows()), MergeStrategy.FULL,
null, new ArrayList<Text>());
}
public static Snake create(ISkinParam skinParam, UPolygon startDecoration, Rainbow color, UPolygon endDecoration) {
final Style style = StyleSignatureBasic.activityArrow().getMergedStyle(skinParam.getCurrentStyleBuilder());
return new Snake(skinParam, startDecoration, color, endDecoration, new Worm(style), MergeStrategy.FULL, null,
new ArrayList<Text>());
return new Snake(skinParam, startDecoration, color, endDecoration, new Worm(style, skinParam.arrows()),
MergeStrategy.FULL, null, new ArrayList<Text>());
}
private Snake(ISkinParam skinParam, UPolygon startDecoration, Rainbow color, UPolygon endDecoration, Worm worm,

View File

@ -61,9 +61,11 @@ public class Worm implements Iterable<XPoint2D> {
private final List<XPoint2D> points = new ArrayList<>();
private final Style style;
private final Arrows arrows;
public Worm(Style style) {
public Worm(Style style, Arrows arrows) {
this.style = style;
this.arrows = arrows;
}
public boolean isPureHorizontal() {
@ -73,7 +75,7 @@ public class Worm implements Iterable<XPoint2D> {
private boolean ignoreForCompression;
public Worm cloneEmpty() {
final Worm result = new Worm(style);
final Worm result = new Worm(style, arrows);
result.ignoreForCompression = this.ignoreForCompression;
return result;
}
@ -147,13 +149,13 @@ public class Worm implements Iterable<XPoint2D> {
private void drawLine(UGraphic ug, double x1, double y1, double x2, double y2, Direction direction) {
ug = ug.apply(new UTranslate(x1, y1));
if (direction != null)
ug.apply(new UTranslate((x2 - x1) / 2, (y2 - y1) / 2)).draw(Arrows.asTo(direction));
ug.apply(new UTranslate((x2 - x1) / 2, (y2 - y1) / 2)).draw(arrows.asTo(direction));
ug.draw(new ULine(x2 - x1, y2 - y1));
}
public Worm move(double dx, double dy) {
final Worm result = new Worm(style);
final Worm result = new Worm(style, arrows);
for (XPoint2D pt : points)
result.addPoint(pt.getX() + dx, pt.getY() + dy);
@ -166,7 +168,7 @@ public class Worm implements Iterable<XPoint2D> {
if (dx != 0 && dy != 0)
throw new IllegalArgumentException("move=" + move);
final Worm result = new Worm(style);
final Worm result = new Worm(style, arrows);
double x0 = this.points.get(0).getX();
double y0 = this.points.get(0).getY();
double x1 = this.points.get(1).getX();
@ -195,7 +197,7 @@ public class Worm implements Iterable<XPoint2D> {
if (dx != 0 && dy != 0)
throw new IllegalArgumentException("move=" + move);
final Worm result = new Worm(style);
final Worm result = new Worm(style, arrows);
double x8 = this.points.get(this.points.size() - 2).getX();
double y8 = this.points.get(this.points.size() - 2).getY();
double x9 = this.points.get(this.points.size() - 1).getX();
@ -334,7 +336,7 @@ public class Worm implements Iterable<XPoint2D> {
if (Snake.same(this.getLast(), other.getFirst()) == false)
throw new IllegalArgumentException();
final Worm result = new Worm(style);
final Worm result = new Worm(style, arrows);
result.points.addAll(this.points);
result.points.addAll(other.points);
result.mergeMe(merge);

View File

@ -188,7 +188,7 @@ public class WormMutation {
}
public Worm mute(Worm original) {
final Worm result = new Worm(original.getStyle());
final Worm result = original.cloneEmpty();
for (int i = 0; i < original.size(); i++) {
result.addPoint(translations.get(i).getTranslated(original.get(i)));
}

View File

@ -54,8 +54,8 @@ public class WormTexted implements Iterable<XPoint2D> {
private final Worm worm;
private TextBlock textBlock;
private WormTexted(Style style) {
this(new Worm(style));
private WormTexted(Style style, Arrows arrows) {
this(new Worm(style, arrows));
}
private WormTexted(Worm worm) {

View File

@ -35,8 +35,8 @@
*/
package net.sourceforge.plantuml.activitydiagram3.ftile.vcompact;
import net.sourceforge.plantuml.ISkinParam;
import net.sourceforge.plantuml.activitydiagram3.ftile.AbstractConnection;
import net.sourceforge.plantuml.activitydiagram3.ftile.Arrows;
import net.sourceforge.plantuml.activitydiagram3.ftile.ConnectionTranslatable;
import net.sourceforge.plantuml.activitydiagram3.ftile.Ftile;
import net.sourceforge.plantuml.activitydiagram3.ftile.Snake;
@ -57,9 +57,9 @@ public class ConnectionVerticalDown extends AbstractConnection implements Connec
public ConnectionVerticalDown(Ftile ftile1, Ftile ftile2, XPoint2D p1, XPoint2D p2, Rainbow color,
TextBlock textBlock) {
super(ftile1, ftile2);
if (color.size() == 0) {
if (color.size() == 0)
throw new IllegalArgumentException();
}
this.p1 = p1;
this.p2 = p2;
this.color = color;
@ -75,7 +75,8 @@ public class ConnectionVerticalDown extends AbstractConnection implements Connec
}
private Snake getSimpleSnake() {
final Snake snake = Snake.create(getFtile1().skinParam(), color, Arrows.asToDown()).withLabel(textBlock,
final ISkinParam skinParam = getFtile1().skinParam();
final Snake snake = Snake.create(skinParam, color, skinParam.arrows().asToDown()).withLabel(textBlock,
arrowHorizontalAlignment());
snake.addPoint(p1);
snake.addPoint(p2);
@ -84,7 +85,8 @@ public class ConnectionVerticalDown extends AbstractConnection implements Connec
@Override
public void drawTranslate(UGraphic ug, UTranslate translate1, UTranslate translate2) {
final Snake snake = Snake.create(getFtile1().skinParam(), color, Arrows.asToDown()).withLabel(textBlock,
final ISkinParam skinParam = getFtile1().skinParam();
final Snake snake = Snake.create(skinParam, color, skinParam.arrows().asToDown()).withLabel(textBlock,
arrowHorizontalAlignment());
final XPoint2D mp1a = translate1.getTranslated(p1);
final XPoint2D mp2b = translate2.getTranslated(p2);
@ -95,11 +97,6 @@ public class ConnectionVerticalDown extends AbstractConnection implements Connec
snake.addPoint(mp2b);
ug.draw(snake);
// final Snake small = Snake.create(color, Arrows.asToDown());
// small.addPoint(mp2b.getX(), middle);
// small.addPoint(mp2b);
// ug.draw(small);
}
}

View File

@ -38,7 +38,6 @@ package net.sourceforge.plantuml.activitydiagram3.ftile.vcompact;
import java.util.List;
import net.sourceforge.plantuml.activitydiagram3.LinkRendering;
import net.sourceforge.plantuml.activitydiagram3.ftile.Arrows;
import net.sourceforge.plantuml.activitydiagram3.ftile.BoxStyle;
import net.sourceforge.plantuml.activitydiagram3.ftile.Connection;
import net.sourceforge.plantuml.activitydiagram3.ftile.Ftile;
@ -110,7 +109,7 @@ public class FtileFactoryDelegatorRepeat extends FtileFactoryDelegator {
final UTranslate tr2 = genealogy.getTranslate(diamondBreak, ug.getStringBounder());
final XDimension2D dimDiamond = diamondBreak.calculateDimension(ug.getStringBounder());
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToRight());
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToRight());
snake.addPoint(tr1.getDx(), tr1.getDy());
snake.addPoint(0, tr1.getDy());
snake.addPoint(0, tr2.getDy() + dimDiamond.getHeight() / 2);
@ -133,10 +132,9 @@ public class FtileFactoryDelegatorRepeat extends FtileFactoryDelegator {
}
private Ftile getEntry(Swimlane swimlane, Display startLabel, Colors colors, BoxStyle boxStyleIn) {
if (Display.isNull(startLabel)) {
if (Display.isNull(startLabel))
return null;
}
// final Colors colors = Colors.empty().add(ColorType.BACK, back);
return this.activity(startLabel, swimlane, boxStyleIn, colors, null);
}
}

View File

@ -39,7 +39,6 @@ import java.util.List;
import net.sourceforge.plantuml.activitydiagram3.Instruction;
import net.sourceforge.plantuml.activitydiagram3.LinkRendering;
import net.sourceforge.plantuml.activitydiagram3.ftile.Arrows;
import net.sourceforge.plantuml.activitydiagram3.ftile.Connection;
import net.sourceforge.plantuml.activitydiagram3.ftile.Ftile;
import net.sourceforge.plantuml.activitydiagram3.ftile.FtileBreak;
@ -101,7 +100,7 @@ public class FtileFactoryDelegatorWhile extends FtileFactoryDelegator {
public void drawU(UGraphic ug) {
final UTranslate tr1 = genealogy.getTranslate(ftileBreak, ug.getStringBounder());
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToLeft());
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToLeft());
snake.addPoint(tr1.getDx(), tr1.getDy());
snake.addPoint(Hexagon.hexagonHalfSize, tr1.getDy());
ug.draw(snake);
@ -123,9 +122,9 @@ public class FtileFactoryDelegatorWhile extends FtileFactoryDelegator {
}
private LinkRendering ensureColor(LinkRendering link, Rainbow color) {
if (link.getRainbow().size() == 0) {
if (link.getRainbow().size() == 0)
return link.withRainbow(color);
}
return link;
}

View File

@ -98,9 +98,9 @@ class FtileIfAndStop extends AbstractFtile {
public Set<Swimlane> getSwimlanes() {
final Set<Swimlane> result = new HashSet<>();
if (getSwimlaneIn() != null) {
if (getSwimlaneIn() != null)
result.add(getSwimlaneIn());
}
result.addAll(tile1.getSwimlanes());
return Collections.unmodifiableSet(result);
}
@ -153,7 +153,6 @@ class FtileIfAndStop extends AbstractFtile {
final FtileGeometry dim1 = tile1.calculateDimension(stringBounder);
final double x1 = calculateDimension(stringBounder).getLeft() - dim1.getLeft();
// final double y1 = (dimTotal.getHeight() - 2 * h - dim1.getHeight()) / 2 + h;
final double y1 = dimDiamond1.getHeight() + getSuppHeight();
return new UTranslate(x1, y1);
}
@ -165,7 +164,6 @@ class FtileIfAndStop extends AbstractFtile {
private UTranslate getTranslateDiamond1(StringBounder stringBounder) {
final double y1 = 0;
final XDimension2D dimDiamond1 = diamond1.calculateDimension(stringBounder);
// final double x1 = getLeft(stringBounder) - dimDiamond1.getWidth() / 2;
final double x1 = calculateDimension(stringBounder).getLeft() - dimDiamond1.getWidth() / 2;
return new UTranslate(x1, y1);
}
@ -197,7 +195,7 @@ class FtileIfAndStop extends AbstractFtile {
final XPoint2D p1 = getP1(stringBounder);
final XPoint2D p2 = getP2(stringBounder);
final Snake snake = Snake.create(skinParam(), color, Arrows.asToRight());
final Snake snake = Snake.create(skinParam(), color, skinParam().arrows().asToRight());
snake.addPoint(p1);
snake.addPoint(p2);
ug.draw(snake);

View File

@ -45,7 +45,6 @@ import java.util.Set;
import net.sourceforge.plantuml.Direction;
import net.sourceforge.plantuml.activitydiagram3.ftile.AbstractConnection;
import net.sourceforge.plantuml.activitydiagram3.ftile.AbstractFtile;
import net.sourceforge.plantuml.activitydiagram3.ftile.Arrows;
import net.sourceforge.plantuml.activitydiagram3.ftile.Connection;
import net.sourceforge.plantuml.activitydiagram3.ftile.ConnectionTranslatable;
import net.sourceforge.plantuml.activitydiagram3.ftile.Ftile;
@ -160,9 +159,8 @@ public class FtileIfDown extends AbstractFtile {
final StringBounder stringBounder = ug.getStringBounder();
final XPoint2D p1 = getP1(stringBounder);
final XPoint2D p2 = getP2(stringBounder);
// p2 = new XPoint2D(p2.getX(), p1.getY());
final Snake snake = Snake.create(skinParam(), color, Arrows.asToRight());
final Snake snake = Snake.create(skinParam(), color, skinParam().arrows().asToRight());
snake.addPoint(p1);
snake.addPoint(p2);
ug.draw(snake);
@ -204,7 +202,7 @@ public class FtileIfDown extends AbstractFtile {
public void drawU(UGraphic ug) {
final StringBounder stringBounder = ug.getStringBounder();
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown());
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown());
snake.addPoint(getP1(stringBounder));
snake.addPoint(getP2(stringBounder));
@ -216,7 +214,7 @@ public class FtileIfDown extends AbstractFtile {
final StringBounder stringBounder = ug.getStringBounder();
final XPoint2D p1 = getP1(stringBounder);
final XPoint2D p2 = getP2(stringBounder);
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown());
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown());
final XPoint2D mp1a = translate1.getTranslated(p1);
final XPoint2D mp2b = translate2.getTranslated(p2);
final double middle = (mp1a.getY() + mp2b.getY()) / 2.0;
@ -256,11 +254,10 @@ public class FtileIfDown extends AbstractFtile {
public void drawU(UGraphic ug) {
final StringBounder stringBounder = ug.getStringBounder();
if (getFtile1().calculateDimension(ug.getStringBounder()).hasPointOut() == false) {
if (getFtile1().calculateDimension(ug.getStringBounder()).hasPointOut() == false)
return;
}
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown());
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown());
snake.addPoint(getP1(stringBounder));
if (conditionEndStyle == ConditionEndStyle.DIAMOND)
@ -280,7 +277,7 @@ public class FtileIfDown extends AbstractFtile {
final StringBounder stringBounder = ug.getStringBounder();
final XPoint2D p1 = getP1(stringBounder);
final XPoint2D p2 = getP2(stringBounder);
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown());
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown());
final XPoint2D mp1a = translate1.getTranslated(p1);
final XPoint2D mp2b = translate2.getTranslated(p2);
final double middle = (mp1a.getY() + mp2b.getY()) / 2.0;
@ -331,7 +328,7 @@ public class FtileIfDown extends AbstractFtile {
final double t11 = getTranslateForThen(stringBounder).getDx();
final double xmin = Math.min(x1 - Hexagon.hexagonHalfSize, getTranslateForThen(stringBounder).getDx());
final Snake snake = Snake.create(skinParam(), endInlinkColor, Arrows.asToRight())
final Snake snake = Snake.create(skinParam(), endInlinkColor, skinParam().arrows().asToRight())
.emphasizeDirection(Direction.DOWN);
snake.addPoint(x1, y1);
snake.addPoint(xmin, y1);
@ -384,7 +381,7 @@ public class FtileIfDown extends AbstractFtile {
final double xmax = Math.max(x1 + Hexagon.hexagonHalfSize,
getTranslateForThen(stringBounder).getDx() + thenGeom.getWidth());
final Snake snake = Snake.create(skinParam(), endInlinkColor, Arrows.asToLeft())
final Snake snake = Snake.create(skinParam(), endInlinkColor, skinParam().arrows().asToLeft())
.emphasizeDirection(Direction.DOWN);
snake.addPoint(x1, y1);
snake.addPoint(xmax, y1);
@ -410,9 +407,9 @@ public class FtileIfDown extends AbstractFtile {
final StringBounder stringBounder = ug.getStringBounder();
final XPoint2D p1 = getP1(stringBounder);
if (calculateDimension(stringBounder).hasPointOut() == false) {
if (calculateDimension(stringBounder).hasPointOut() == false)
return;
}
final XPoint2D p2 = getP2(stringBounder);
final double x1 = p1.getX();
@ -424,25 +421,12 @@ public class FtileIfDown extends AbstractFtile {
final double xmax = Math.max(x1 + Hexagon.hexagonHalfSize,
getTranslateForThen(stringBounder).getDx() + thenGeom.getWidth());
/*
* if( conditionEndStyle == ConditionEndStyle.DIAMOND ) { final Snake snake =
* new Snake(arrowHorizontalAlignment(), endInlinkColor, Arrows.asToLeft());
* snake.addPoint(x1, y1); snake.addPoint(xmax, y1); snake.addPoint(xmax, y2);
* snake.addPoint(x2, y2); snake.emphasizeDirection(Direction.DOWN);
* ug.apply(new UTranslate(x2, y2 - Diamond.diamondHalfSize)).draw(new UEmpty(5,
* Diamond.diamondHalfSize)); ug.draw(snake); }
*/
final Snake snake = Snake.create(skinParam(), endInlinkColor, Arrows.asToDown());
final Snake snake = Snake.create(skinParam(), endInlinkColor, skinParam().arrows().asToDown());
snake.addPoint(x1, y1);
snake.addPoint(xmax, y1);
snake.addPoint(xmax, y2);
ug.apply(new UTranslate(xmax, y2 - Hexagon.hexagonHalfSize)).draw(new UEmpty(5, Hexagon.hexagonHalfSize));
ug.draw(snake);
/*
* final Snake snake2 = Snake.create(arrowHorizontalAlignment(),
* endInlinkColor); snake2.addPoint(xmax, y2); snake2.addPoint(x2, y2);
* ug.draw(snake2);
*/
}
@ -495,9 +479,9 @@ public class FtileIfDown extends AbstractFtile {
final StringBounder stringBounder = ug.getStringBounder();
final XPoint2D p1 = getP1(stringBounder);
if (calculateDimension(stringBounder).hasPointOut() == false) {
if (calculateDimension(stringBounder).hasPointOut() == false)
return;
}
final XPoint2D p2 = getP2(stringBounder);
final XPoint2D p3 = getP3(stringBounder);

View File

@ -47,7 +47,6 @@ import net.sourceforge.plantuml.activitydiagram3.Branch;
import net.sourceforge.plantuml.activitydiagram3.LinkRendering;
import net.sourceforge.plantuml.activitydiagram3.ftile.AbstractConnection;
import net.sourceforge.plantuml.activitydiagram3.ftile.AbstractFtile;
import net.sourceforge.plantuml.activitydiagram3.ftile.Arrows;
import net.sourceforge.plantuml.activitydiagram3.ftile.Connection;
import net.sourceforge.plantuml.activitydiagram3.ftile.ConnectionTranslatable;
import net.sourceforge.plantuml.activitydiagram3.ftile.Ftile;
@ -87,9 +86,9 @@ class FtileIfLongHorizontal extends AbstractFtile {
private FtileIfLongHorizontal(List<Ftile> diamonds, List<Double> inlabelSizes, List<Ftile> tiles, Ftile tile2,
Rainbow arrowColor) {
super(tiles.get(0).skinParam());
if (diamonds.size() != tiles.size()) {
if (diamonds.size() != tiles.size())
throw new IllegalArgumentException();
}
for (int i = 0; i < diamonds.size(); i++) {
final Ftile diamond = diamonds.get(i);
final FtileAssemblySimple tmp = new FtileAssemblySimple(diamond, tiles.get(i));
@ -105,9 +104,9 @@ class FtileIfLongHorizontal extends AbstractFtile {
private static List<Ftile> alignDiamonds(List<Ftile> diamonds, StringBounder stringBounder) {
double maxOutY = 0;
for (Ftile diamond : diamonds) {
for (Ftile diamond : diamonds)
maxOutY = Math.max(maxOutY, diamond.calculateDimension(stringBounder).getOutY());
}
final List<Ftile> result = new ArrayList<>();
for (int i = 0; i < diamonds.size(); i++) {
Ftile diamond = diamonds.get(i);
@ -121,12 +120,12 @@ class FtileIfLongHorizontal extends AbstractFtile {
public Set<Swimlane> getSwimlanes() {
final Set<Swimlane> result = new HashSet<>();
if (getSwimlaneIn() != null) {
if (getSwimlaneIn() != null)
result.add(getSwimlaneIn());
}
for (Ftile tile : couples) {
for (Ftile tile : couples)
result.addAll(tile.getSwimlanes());
}
result.addAll(tile2.getSwimlanes());
return Collections.unmodifiableSet(result);
}
@ -146,9 +145,8 @@ class FtileIfLongHorizontal extends AbstractFtile {
Objects.requireNonNull(afterEndwhile);
final List<Ftile> tiles = new ArrayList<>();
for (Branch branch : thens) {
for (Branch branch : thens)
tiles.add(new FtileMinWidthCentered(branch.getFtile(), 30));
}
final Ftile tile2 = new FtileMinWidthCentered(branch2.getFtile(), 30);
@ -162,8 +160,8 @@ class FtileIfLongHorizontal extends AbstractFtile {
ftileFactory.skinParam());
final HColor diamondColor = branch.getColor() == null ? backColor : branch.getColor();
FtileDiamondInside2 diamond = new FtileDiamondInside2(tbTest, branch.skinParam(), diamondColor,
borderColor, swimlane);
FtileDiamondInside2 diamond = new FtileDiamondInside2(tbTest, branch.skinParam(), diamondColor, borderColor,
swimlane);
TextBlock tbInlabel = null;
if (Display.isNull(branch.getInlabel())) {
inlabelSizes.add(0.0);
@ -196,15 +194,15 @@ class FtileIfLongHorizontal extends AbstractFtile {
final Rainbow rainbowIn = thens.get(i).getInColor(arrowColor);
final Branch branch = thens.get(i);
if (branch.getFtile().calculateDimension(ftileFactory.getStringBounder()).hasPointOut()) {
if (branch.getFtile().calculateDimension(ftileFactory.getStringBounder()).hasPointOut())
nbOut++;
}
final Rainbow rainbowOut = branch.getOut();
TextBlock out2 = null;
if (branch.getSpecial() != null) {
if (branch.getSpecial() != null)
out2 = branch.getSpecial().getDisplay().create(fcTest, HorizontalAlignment.LEFT,
ftileFactory.skinParam());
}
final Rainbow rainbow1 = rainbowIn.size() == 0 ? arrowColor : rainbowIn;
final Rainbow rainbow2 = rainbowOut.size() == 0 ? arrowColor : rainbowOut;
@ -223,9 +221,8 @@ class FtileIfLongHorizontal extends AbstractFtile {
}
conns.add(result.new ConnectionIn(topInColor));
TextBlock out2 = null;
if (branch2.getSpecial() != null) {
if (branch2.getSpecial() != null)
out2 = branch2.getSpecial().getDisplay().create(fcTest, HorizontalAlignment.LEFT, ftileFactory.skinParam());
}
final Rainbow rainbowOut = branch2.getOut();
final Rainbow rainbowIn = branch2.getInColor(arrowColor);
@ -257,7 +254,7 @@ class FtileIfLongHorizontal extends AbstractFtile {
final XPoint2D p1 = getP1(stringBounder);
final XPoint2D p2 = getP2(stringBounder);
final Snake snake = Snake.create(skinParam(), color, Arrows.asToRight());
final Snake snake = Snake.create(skinParam(), color, skinParam().arrows().asToRight());
snake.addPoint(p1);
snake.addPoint(p2);
ug.draw(snake);
@ -295,7 +292,7 @@ class FtileIfLongHorizontal extends AbstractFtile {
public void drawU(UGraphic ug) {
final UTranslate tr = getTranslateDiamond1(getFtile2(), ug.getStringBounder());
final XPoint2D p2 = tr.getTranslated(getFtile2().calculateDimension(ug.getStringBounder()).getPointIn());
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown());
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown());
final XPoint2D p1 = calculateDimensionInternal(ug.getStringBounder()).getPointIn();
snake.addPoint(p1);
@ -319,7 +316,7 @@ class FtileIfLongHorizontal extends AbstractFtile {
final XPoint2D p1 = getP1(ug.getStringBounder());
final UTranslate tr2 = getTranslate2(ug.getStringBounder());
final XPoint2D p2 = tr2.getTranslated(getFtile2().calculateDimension(ug.getStringBounder()).getPointIn());
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown());
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown());
snake.addPoint(p1);
snake.addPoint(p2.getX(), p1.getY());
snake.addPoint(p2);
@ -352,20 +349,21 @@ class FtileIfLongHorizontal extends AbstractFtile {
final StringBounder stringBounder = ug.getStringBounder();
final UTranslate tr1 = getTranslate2(stringBounder);
final FtileGeometry dim = getFtile1().calculateDimension(stringBounder);
if (dim.hasPointOut() == false) {
if (dim.hasPointOut() == false)
return;
}
final XPoint2D p1 = tr1.getTranslated(dim.getPointOut());
final FtileGeometry full = calculateDimensionInternal(stringBounder);
final double totalHeight = full.getHeight();
final XPoint2D p2 = new XPoint2D(p1.getX(), totalHeight);
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown()).withLabel(out2, arrowHorizontalAlignment());
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown()).withLabel(out2,
arrowHorizontalAlignment());
snake.addPoint(p1);
snake.addPoint(p2);
if (nbOut == 0) {
if (nbOut == 0)
snake.addPoint(new XPoint2D(full.getLeft(), totalHeight));
}
ug.draw(snake);
}
@ -385,7 +383,7 @@ class FtileIfLongHorizontal extends AbstractFtile {
final XPoint2D p1 = getP1(stringBounder);
final XPoint2D p2 = getP2(stringBounder);
final Snake snake = Snake.create(skinParam(), color, Arrows.asToDown());
final Snake snake = Snake.create(skinParam(), color, skinParam().arrows().asToDown());
snake.addPoint(p1);
snake.addPoint(p2);
ug.draw(snake);
@ -406,7 +404,7 @@ class FtileIfLongHorizontal extends AbstractFtile {
final XPoint2D p1 = getP1(ug.getStringBounder());
final XPoint2D p2 = getP2(ug.getStringBounder());
final Snake snake = Snake.create(skinParam(), color, Arrows.asToDown());
final Snake snake = Snake.create(skinParam(), color, skinParam().arrows().asToDown());
final XPoint2D mp1a = translate1.getTranslated(p1);
final XPoint2D mp2b = translate2.getTranslated(p2);
@ -435,12 +433,13 @@ class FtileIfLongHorizontal extends AbstractFtile {
final StringBounder stringBounder = ug.getStringBounder();
final double totalHeight = calculateDimensionInternal(stringBounder).getHeight();
final XPoint2D p1 = getP1(stringBounder);
if (p1 == null) {
if (p1 == null)
return;
}
final XPoint2D p2 = new XPoint2D(p1.getX(), totalHeight);
final Snake snake = Snake.create(skinParam(), color, Arrows.asToDown()).withLabel(out2, arrowHorizontalAlignment());
final Snake snake = Snake.create(skinParam(), color, skinParam().arrows().asToDown()).withLabel(out2,
arrowHorizontalAlignment());
snake.addPoint(p1);
snake.addPoint(p2);
ug.draw(snake);
@ -448,9 +447,9 @@ class FtileIfLongHorizontal extends AbstractFtile {
private XPoint2D getP1(StringBounder stringBounder) {
final FtileGeometry geo = getFtile1().calculateDimension(stringBounder);
if (geo.hasPointOut() == false) {
if (geo.hasPointOut() == false)
return null;
}
final XPoint2D p = geo.getPointOut();
return getTranslate1(getFtile1(), stringBounder).getTranslated(p);
}
@ -485,9 +484,8 @@ class FtileIfLongHorizontal extends AbstractFtile {
final double minX = minmax[0];
final double maxX = minmax[1];
if (Double.isNaN(minX) || Double.isNaN(maxX)) {
if (Double.isNaN(minX) || Double.isNaN(maxX))
return;
}
final Snake s = Snake.create(skinParam(), arrowColor).withMerge(MergeStrategy.NONE);
s.addPoint(minX, totalDim.getHeight());
@ -497,9 +495,9 @@ class FtileIfLongHorizontal extends AbstractFtile {
private Double getLeftOut(final StringBounder stringBounder) {
final FtileGeometry dim = calculateDimension(stringBounder);
if (dim.hasPointOut()) {
if (dim.hasPointOut())
return dim.getLeft();
}
return null;
}
@ -510,9 +508,9 @@ class FtileIfLongHorizontal extends AbstractFtile {
if (leftOut == null)
return new double[] { Double.NaN, Double.NaN };
if (current == -1) {
if (current == -1)
throw new IllegalStateException();
}
final int first = getFirstSwimlane(stringBounder, allTiles, allSwimlanes);
final int last = getLastSwimlane(stringBounder, allTiles, allSwimlanes);
if (current < first || current > last)
@ -522,12 +520,12 @@ class FtileIfLongHorizontal extends AbstractFtile {
minX = Math.min(minX, leftOut);
maxX = Math.max(maxX, leftOut);
for (Ftile tmp : allTiles) {
if (tmp.calculateDimension(stringBounder).hasPointOut() == false) {
if (tmp.calculateDimension(stringBounder).hasPointOut() == false)
continue;
}
if (ftileDoesOutcomeInThatSwimlane(tmp, intoSw) == false) {
if (ftileDoesOutcomeInThatSwimlane(tmp, intoSw) == false)
continue;
}
final UTranslate ut = getTranslateFor(tmp, stringBounder);
final double out = tmp.calculateDimension(stringBounder).translate(ut).getLeft();
minX = Math.min(minX, out);
@ -545,9 +543,9 @@ class FtileIfLongHorizontal extends AbstractFtile {
minX = Math.min(minX, leftOut);
maxX = Math.max(maxX, leftOut);
for (Ftile tmp : allTiles) {
if (tmp.calculateDimension(stringBounder).hasPointOut() == false) {
if (tmp.calculateDimension(stringBounder).hasPointOut() == false)
continue;
}
final UTranslate ut = getTranslateFor(tmp, stringBounder);
final double out = tmp.calculateDimension(stringBounder).translate(ut).getLeft();
minX = Math.min(minX, out);
@ -557,20 +555,18 @@ class FtileIfLongHorizontal extends AbstractFtile {
}
private int getFirstSwimlane(StringBounder stringBounder, List<Ftile> allTiles, List<Swimlane> allSwimlanes) {
for (int i = 0; i < allSwimlanes.size(); i++) {
if (atLeastOne(stringBounder, allSwimlanes.get(i), allTiles)) {
for (int i = 0; i < allSwimlanes.size(); i++)
if (atLeastOne(stringBounder, allSwimlanes.get(i), allTiles))
return i;
}
}
throw new IllegalStateException();
}
private int getLastSwimlane(StringBounder stringBounder, List<Ftile> allTiles, List<Swimlane> allSwimlanes) {
for (int i = allSwimlanes.size() - 1; i >= 0; i--) {
if (atLeastOne(stringBounder, allSwimlanes.get(i), allTiles)) {
for (int i = allSwimlanes.size() - 1; i >= 0; i--)
if (atLeastOne(stringBounder, allSwimlanes.get(i), allTiles))
return i;
}
}
throw new IllegalStateException();
}
@ -596,15 +592,15 @@ class FtileIfLongHorizontal extends AbstractFtile {
@Override
public UTranslate getTranslateFor(Ftile child, StringBounder stringBounder) {
if (child == tile2) {
if (child == tile2)
return getTranslate2(stringBounder);
}
if (couples.contains(child)) {
if (couples.contains(child))
return getTranslateCouple1(child, stringBounder);
}
if (tiles.contains(child)) {
if (tiles.contains(child))
return getTranslate1(child, stringBounder);
}
throw new UnsupportedOperationException();
}
@ -623,9 +619,9 @@ class FtileIfLongHorizontal extends AbstractFtile {
private UTranslate getTranslateDiamond1(Ftile diamond, StringBounder stringBounder) {
final int idx = diamonds.indexOf(diamond);
if (idx == -1) {
if (idx == -1)
throw new IllegalArgumentException();
}
final UTranslate trCouple = getTranslateCouple1(couples.get(idx), stringBounder);
final UTranslate in = couples.get(idx).getTranslateFor(diamond, stringBounder);
return trCouple.compose(in);
@ -633,9 +629,9 @@ class FtileIfLongHorizontal extends AbstractFtile {
private UTranslate getTranslate1(Ftile tile, StringBounder stringBounder) {
final int idx = tiles.indexOf(tile);
if (idx == -1) {
if (idx == -1)
throw new IllegalArgumentException();
}
final UTranslate trCouple = getTranslateCouple1(couples.get(idx), stringBounder);
final UTranslate in = couples.get(idx).getTranslateFor(tile, stringBounder);
return trCouple.compose(in);
@ -646,9 +642,9 @@ class FtileIfLongHorizontal extends AbstractFtile {
for (Ftile couple : couples) {
final FtileGeometry dim1 = couple.calculateDimension(stringBounder);
if (couple == candidat) {
if (couple == candidat)
return new UTranslate(x1, 25);
}
x1 += dim1.getWidth() + xSeparation;
}
throw new IllegalArgumentException();
@ -657,18 +653,17 @@ class FtileIfLongHorizontal extends AbstractFtile {
public void drawU(UGraphic ug) {
final StringBounder stringBounder = ug.getStringBounder();
for (Ftile couple : couples) {
for (Ftile couple : couples)
ug.apply(getTranslateCouple1(couple, stringBounder)).draw(couple);
}
ug.apply(getTranslate2(stringBounder)).draw(tile2);
}
private FtileGeometry calculateDimensionInternal(StringBounder stringBounder) {
XDimension2D result = new XDimension2D(0, 0);
for (Ftile couple : couples) {
for (Ftile couple : couples)
result = result.mergeLR(couple.calculateDimension(stringBounder));
}
XDimension2D dimTile2 = tile2.calculateDimension(stringBounder);
dimTile2 = dimTile2.delta(0, getDiamondsHeight(stringBounder) / 2);
result = result.mergeLR(dimTile2);
@ -679,9 +674,9 @@ class FtileIfLongHorizontal extends AbstractFtile {
private double getDiamondsHeight(StringBounder stringBounder) {
double height = 0;
for (Ftile diamond : diamonds) {
for (Ftile diamond : diamonds)
height = Math.max(height, diamond.calculateDimension(stringBounder).getHeight());
}
return height;
}
@ -691,11 +686,10 @@ class FtileIfLongHorizontal extends AbstractFtile {
final List<Ftile> all = new ArrayList<>(tiles);
all.add(tile2);
for (Ftile tmp : all) {
if (tmp.calculateDimension(stringBounder).hasPointOut()) {
for (Ftile tmp : all)
if (tmp.calculateDimension(stringBounder).hasPointOut())
return new FtileGeometry(dimTotal, dimTotal.getWidth() / 2, 0, dimTotal.getHeight());
}
}
return new FtileGeometry(dimTotal, dimTotal.getWidth() / 2, 0);
}

View File

@ -46,7 +46,6 @@ import net.sourceforge.plantuml.activitydiagram3.Branch;
import net.sourceforge.plantuml.activitydiagram3.LinkRendering;
import net.sourceforge.plantuml.activitydiagram3.ftile.AbstractConnection;
import net.sourceforge.plantuml.activitydiagram3.ftile.AbstractFtile;
import net.sourceforge.plantuml.activitydiagram3.ftile.Arrows;
import net.sourceforge.plantuml.activitydiagram3.ftile.Connection;
import net.sourceforge.plantuml.activitydiagram3.ftile.Ftile;
import net.sourceforge.plantuml.activitydiagram3.ftile.FtileFactory;
@ -95,9 +94,9 @@ class FtileIfLongVertical extends AbstractFtile {
private FtileIfLongVertical(List<Ftile> diamonds, List<Ftile> tiles, Ftile tile2, Rainbow arrowColor,
Ftile lastDiamond) {
super(tiles.get(0).skinParam());
if (diamonds.size() != tiles.size()) {
if (diamonds.size() != tiles.size())
throw new IllegalArgumentException();
}
this.lastDiamond = lastDiamond;
this.tile2 = tile2;
this.diamonds = new ArrayList<>(diamonds);
@ -109,12 +108,12 @@ class FtileIfLongVertical extends AbstractFtile {
public Set<Swimlane> getSwimlanes() {
final Set<Swimlane> result = new HashSet<>();
if (getSwimlaneIn() != null) {
if (getSwimlaneIn() != null)
result.add(getSwimlaneIn());
}
for (Ftile tile : tiles) {
for (Ftile tile : tiles)
result.addAll(tile.getSwimlanes());
}
result.addAll(tile2.getSwimlanes());
return Collections.unmodifiableSet(result);
}
@ -184,9 +183,8 @@ class FtileIfLongVertical extends AbstractFtile {
conns.add(result.new ConnectionVertical(diamonds.get(i), diamonds.get(i + 1), arrowColor, tbInlabel));
}
conns.add(result.new ConnectionThenOut(tiles.get(0), arrowColor));
for (int i = 1; i < tiles.size(); i++) {
for (int i = 1; i < tiles.size(); i++)
conns.add(result.new ConnectionThenOutConnect(tiles.get(i), arrowColor));
}
final Rainbow topInColor = topInlinkRendering.getRainbow(arrowColor);
conns.add(result.new ConnectionIn(topInColor));
@ -211,7 +209,7 @@ class FtileIfLongVertical extends AbstractFtile {
public void drawU(UGraphic ug) {
final UTranslate tr = getTranslateDiamond(getFtile2(), ug.getStringBounder());
final XPoint2D p2 = tr.getTranslated(getFtile2().calculateDimension(ug.getStringBounder()).getPointIn());
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown());
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown());
final XPoint2D p1 = calculateDimensionInternal(ug.getStringBounder()).getPointIn();
snake.addPoint(p1);
@ -237,7 +235,7 @@ class FtileIfLongVertical extends AbstractFtile {
final XPoint2D p1 = getP1(stringBounder);
final XPoint2D p2 = getP2(stringBounder);
final Snake snake = Snake.create(skinParam(), color, Arrows.asToDown());
final Snake snake = Snake.create(skinParam(), color, skinParam().arrows().asToDown());
snake.addPoint(p1);
snake.addPoint(p2.getX(), p1.getY());
snake.addPoint(p2);
@ -274,7 +272,7 @@ class FtileIfLongVertical extends AbstractFtile {
final XPoint2D p1 = getP1(stringBounder);
final XPoint2D p2 = getP2(stringBounder);
final Snake snake = Snake.create(skinParam(), color, Arrows.asToDown()).withLabel(label,
final Snake snake = Snake.create(skinParam(), color, skinParam().arrows().asToDown()).withLabel(label,
VerticalAlignment.CENTER);
snake.addPoint(p1);
snake.addPoint(p2);
@ -313,7 +311,7 @@ class FtileIfLongVertical extends AbstractFtile {
final XPoint2D p2 = getTranslate2(stringBounder)
.getTranslated(getFtile2().calculateDimension(stringBounder).getPointIn());
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown()).withLabel(label,
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown()).withLabel(label,
VerticalAlignment.CENTER);
snake.addPoint(p1);
snake.addPoint(p1.getX(), p2.getY() - 15);
@ -336,14 +334,14 @@ class FtileIfLongVertical extends AbstractFtile {
public void drawU(UGraphic ug) {
final StringBounder stringBounder = ug.getStringBounder();
final FtileGeometry dim1 = getFtile1().calculateDimension(stringBounder);
if (dim1.hasPointOut() == false) {
if (dim1.hasPointOut() == false)
return;
}
final XPoint2D p1 = getTranslate2(stringBounder).getTranslated(dim1.getPointOut());
final XPoint2D p2 = getTranslateLastDiamond(stringBounder)
.getTranslated(getFtile2().calculateDimension(stringBounder).getPointIn());
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown());
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown());
snake.addPoint(p1);
snake.addPoint(p1.getX(), p2.getY() - 15);
snake.addPoint(p2.getX(), p2.getY() - 15);
@ -365,9 +363,9 @@ class FtileIfLongVertical extends AbstractFtile {
public void drawU(UGraphic ug) {
final StringBounder stringBounder = ug.getStringBounder();
final FtileGeometry dim1 = getFtile1().calculateDimension(stringBounder);
if (dim1.hasPointOut() == false) {
if (dim1.hasPointOut() == false)
return;
}
final XPoint2D p1 = getTranslate1(getFtile1(), stringBounder).getTranslated(dim1.getPointOut());
final FtileGeometry dimLastDiamond = getFtile2().calculateDimension(stringBounder);
@ -377,7 +375,7 @@ class FtileIfLongVertical extends AbstractFtile {
final XDimension2D dimTotal = calculateDimensionInternal(stringBounder);
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToLeft());
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToLeft());
snake.addPoint(p1);
snake.addPoint(p1.getX(), p1.getY() + 15);
snake.addPoint(dimTotal.getWidth(), p1.getY() + 15);
@ -399,16 +397,16 @@ class FtileIfLongVertical extends AbstractFtile {
public void drawU(UGraphic ug) {
final StringBounder stringBounder = ug.getStringBounder();
final FtileGeometry dim1 = getFtile1().calculateDimension(stringBounder);
if (dim1.hasPointOut() == false) {
if (dim1.hasPointOut() == false)
return;
}
final XPoint2D p1 = getTranslate1(getFtile1(), stringBounder).getTranslated(dim1.getPointOut());
final XDimension2D dimTotal = calculateDimensionInternal(stringBounder);
final XPoint2D p2 = new XPoint2D(dimTotal.getWidth(), p1.getY() + 15);
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToRight());
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToRight());
snake.addPoint(p1);
snake.addPoint(p1.getX(), p2.getY());
snake.addPoint(p2);
@ -419,18 +417,18 @@ class FtileIfLongVertical extends AbstractFtile {
@Override
public UTranslate getTranslateFor(Ftile child, StringBounder stringBounder) {
if (child == tile2) {
if (child == tile2)
return getTranslate2(stringBounder);
}
if (child == lastDiamond) {
if (child == lastDiamond)
return getTranslateLastDiamond(stringBounder);
}
if (tiles.contains(child)) {
if (tiles.contains(child))
return getTranslate1(child, stringBounder);
}
if (diamonds.contains(child)) {
if (diamonds.contains(child))
return getTranslateDiamond(child, stringBounder);
}
throw new UnsupportedOperationException();
}
@ -438,9 +436,9 @@ class FtileIfLongVertical extends AbstractFtile {
final double allDiamondsWidth = allDiamondsWidth(stringBounder);
final int idx = diamonds.indexOf(diamond);
if (idx == -1) {
if (idx == -1)
throw new IllegalArgumentException();
}
final double y1 = getTranslateDy(idx, stringBounder);
return new UTranslate((allDiamondsWidth - diamond.calculateDimension(stringBounder).getWidth()) / 2, y1);
}
@ -454,9 +452,9 @@ class FtileIfLongVertical extends AbstractFtile {
private UTranslate getTranslate1(Ftile candidat, StringBounder stringBounder) {
final int idx = tiles.indexOf(candidat);
if (idx == -1) {
if (idx == -1)
throw new IllegalArgumentException();
}
final double y1 = getTranslateDy(idx, stringBounder);
final FtileGeometry diam = diamonds.get(idx).calculateDimension(stringBounder);
final FtileGeometry dim1 = candidat.calculateDimension(stringBounder);
@ -487,12 +485,11 @@ class FtileIfLongVertical extends AbstractFtile {
public void drawU(UGraphic ug) {
final StringBounder stringBounder = ug.getStringBounder();
for (Ftile tile1 : tiles) {
for (Ftile tile1 : tiles)
ug.apply(getTranslate1(tile1, stringBounder)).draw(tile1);
}
for (Ftile diam : diamonds) {
for (Ftile diam : diamonds)
ug.apply(getTranslateDiamond(diam, stringBounder)).draw(diam);
}
ug.apply(getTranslate2(stringBounder)).draw(tile2);
ug.apply(getTranslateLastDiamond(stringBounder)).draw(lastDiamond);
@ -500,21 +497,16 @@ class FtileIfLongVertical extends AbstractFtile {
private FtileGeometry calculateDimensionInternal(StringBounder stringBounder) {
double col1 = 0;
// double col1overpass = 0;
double col2 = 0;
double height = marginy1;
for (int i = 0; i < tiles.size(); i++) {
final FtileGeometry dim1 = tiles.get(i).calculateDimension(stringBounder);
// final FtileGeometry diamondOverpassing = ((FtileOverpassing) diamonds.get(i))
// .getOverpassDimension(stringBounder);
final FtileGeometry diamondDim = diamonds.get(i).calculateDimension(stringBounder);
height += diamondDim.getHeight() + dim1.getHeight();
col1 = Math.max(col1, diamondDim.getWidth());
// col1overpass = Math.max(col1overpass, diamondOverpassing.getWidth());
col2 = Math.max(col2, dim1.getWidth());
}
// final double width = Math.max(col1 + col2, col1overpass);
final double width = col1 + col2;
FtileGeometry result = new FtileGeometry(width, height, width / 2, 0);
@ -529,9 +521,9 @@ class FtileIfLongVertical extends AbstractFtile {
private double allDiamondsWidth(StringBounder stringBounder) {
double width = 0;
for (Ftile diam : diamonds) {
for (Ftile diam : diamonds)
width = Math.max(width, diam.calculateDimension(stringBounder).getWidth());
}
return width;
}
@ -541,11 +533,10 @@ class FtileIfLongVertical extends AbstractFtile {
final List<Ftile> all = new ArrayList<>(tiles);
all.add(tile2);
for (Ftile tmp : all) {
if (tmp.calculateDimension(stringBounder).hasPointOut()) {
for (Ftile tmp : all)
if (tmp.calculateDimension(stringBounder).hasPointOut())
return new FtileGeometry(dimTotal, dimTotal.getWidth() / 2, 0, dimTotal.getHeight());
}
}
return new FtileGeometry(dimTotal, dimTotal.getWidth() / 2, 0);
}

View File

@ -48,7 +48,6 @@ import net.sourceforge.plantuml.ISkinSimple;
import net.sourceforge.plantuml.activitydiagram3.LinkRendering;
import net.sourceforge.plantuml.activitydiagram3.ftile.AbstractConnection;
import net.sourceforge.plantuml.activitydiagram3.ftile.AbstractFtile;
import net.sourceforge.plantuml.activitydiagram3.ftile.Arrows;
import net.sourceforge.plantuml.activitydiagram3.ftile.Connection;
import net.sourceforge.plantuml.activitydiagram3.ftile.ConnectionTranslatable;
import net.sourceforge.plantuml.activitydiagram3.ftile.Ftile;
@ -220,7 +219,7 @@ class FtileRepeat extends AbstractFtile {
public void drawU(UGraphic ug) {
final StringBounder stringBounder = ug.getStringBounder();
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown()).withLabel(tbin,
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown()).withLabel(tbin,
arrowHorizontalAlignment());
final XPoint2D p1 = getP1(stringBounder);
final XPoint2D p2 = getP2(stringBounder);
@ -261,7 +260,7 @@ class FtileRepeat extends AbstractFtile {
if (getFtile1().calculateDimension(stringBounder).hasPointOut() == false)
return;
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown()).withLabel(tbout,
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown()).withLabel(tbout,
arrowHorizontalAlignment());
snake.addPoint(getP1(stringBounder));
snake.addPoint(getP2(stringBounder));
@ -284,7 +283,7 @@ class FtileRepeat extends AbstractFtile {
snake.addPoint(mp2b.getX(), middle);
ug.draw(snake);
final Snake small = Snake.create(skinParam(), arrowColor, Arrows.asToDown()).withLabel(tbout,
final Snake small = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown()).withLabel(tbout,
arrowHorizontalAlignment());
small.addPoint(mp2b.getX(), middle);
small.addPoint(mp2b);
@ -335,7 +334,8 @@ class FtileRepeat extends AbstractFtile {
final Snake snake;
if (x2 < x1_a) {
snake = Snake.create(skinParam(), arrowColor, Arrows.asToLeft()).emphasizeDirection(Direction.UP);
snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToLeft())
.emphasizeDirection(Direction.UP);
snake.addPoint(x1_a, y1);
if (x1_a < x1_b) {
snake.addPoint(x1_b, y1);
@ -346,7 +346,8 @@ class FtileRepeat extends AbstractFtile {
}
} else {
x2 = p2.getX();
snake = Snake.create(skinParam(), arrowColor, Arrows.asToRight()).emphasizeDirection(Direction.UP);
snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToRight())
.emphasizeDirection(Direction.UP);
snake.addPoint(x1_a, y1);
final double middle = x1_a / 4 + x2 * 3 / 4;
snake.addPoint(middle, y1);
@ -388,7 +389,7 @@ class FtileRepeat extends AbstractFtile {
final double x2 = p2.getX();
final double y2 = p2.getY();
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToUp()).withLabel(tbback,
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToUp()).withLabel(tbback,
arrowHorizontalAlignment());
snake.addPoint(x1, y1);
@ -413,7 +414,7 @@ class FtileRepeat extends AbstractFtile {
final double x2 = p2.getX();
final double y2 = p2.getY();
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToUp()).withLabel(tbback,
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToUp()).withLabel(tbback,
arrowHorizontalAlignment());
snake.addPoint(x1, y1);
@ -462,10 +463,10 @@ class FtileRepeat extends AbstractFtile {
x2 += dimDiamond1.getWidth();
final double y2 = p2.getY() + dimDiamond1.getHeight() / 2;
Snake snake = Snake.create(skinParam(), arrowColor, x2 < x1 ? Arrows.asToLeft() : Arrows.asToRight());
if (label != null) {
Snake snake = Snake.create(skinParam(), arrowColor,
x2 < x1 ? skinParam().arrows().asToLeft() : skinParam().arrows().asToRight());
if (label != null)
snake = snake.withLabel(label, arrowHorizontalAlignment());
}
snake.addPoint(x1, y1);
snake.addPoint(x1, y2);
@ -478,10 +479,10 @@ class FtileRepeat extends AbstractFtile {
public void drawU(UGraphic ug) {
final StringBounder stringBounder = ug.getStringBounder();
Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToLeft());
if (label != null) {
Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToLeft());
if (label != null)
snake = snake.withLabel(label, arrowHorizontalAlignment());
}
final XPoint2D p1 = getP1(stringBounder);
final XPoint2D p2 = getP2(stringBounder);
final XDimension2D dimDiamond1 = diamond1.calculateDimension(stringBounder);
@ -520,9 +521,8 @@ class FtileRepeat extends AbstractFtile {
public void drawU(UGraphic ug) {
final StringBounder stringBounder = ug.getStringBounder();
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToRight())
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToRight())
.emphasizeDirection(Direction.UP).withLabel(tbback, arrowHorizontalAlignment());
// final XDimension2D dimTotal = calculateDimensionInternal(stringBounder);
final XPoint2D p1 = getP1(stringBounder);
final XPoint2D p2 = getP2(stringBounder);
final XDimension2D dimDiamond1 = diamond1.calculateDimension(stringBounder);
@ -544,7 +544,7 @@ class FtileRepeat extends AbstractFtile {
@Override
public void drawTranslate(UGraphic ug, UTranslate translate1, UTranslate translate2) {
final StringBounder stringBounder = ug.getStringBounder();
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToLeft())
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToLeft())
.emphasizeDirection(Direction.UP).withLabel(tbback, arrowHorizontalAlignment());
final XDimension2D dimRepeat = repeat.calculateDimension(stringBounder);
@ -592,7 +592,7 @@ class FtileRepeat extends AbstractFtile {
public void drawU(UGraphic ug) {
final StringBounder stringBounder = ug.getStringBounder();
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToLeft())
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToLeft())
.emphasizeDirection(Direction.UP).withLabel(tbback, arrowHorizontalAlignment());
final XDimension2D dimTotal = calculateDimensionInternal(stringBounder);
final XPoint2D p1 = getP1(stringBounder);
@ -616,7 +616,7 @@ class FtileRepeat extends AbstractFtile {
@Override
public void drawTranslate(UGraphic ug, UTranslate translate1, UTranslate translate2) {
final StringBounder stringBounder = ug.getStringBounder();
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToLeft())
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToLeft())
.emphasizeDirection(Direction.UP).withLabel(tbback, arrowHorizontalAlignment());
final XDimension2D dimRepeat = repeat.calculateDimension(stringBounder);

View File

@ -47,7 +47,6 @@ import net.sourceforge.plantuml.activitydiagram3.Instruction;
import net.sourceforge.plantuml.activitydiagram3.LinkRendering;
import net.sourceforge.plantuml.activitydiagram3.ftile.AbstractConnection;
import net.sourceforge.plantuml.activitydiagram3.ftile.AbstractFtile;
import net.sourceforge.plantuml.activitydiagram3.ftile.Arrows;
import net.sourceforge.plantuml.activitydiagram3.ftile.Connection;
import net.sourceforge.plantuml.activitydiagram3.ftile.ConnectionTranslatable;
import net.sourceforge.plantuml.activitydiagram3.ftile.Ftile;
@ -85,9 +84,9 @@ class FtileWhile extends AbstractFtile {
@Override
public Collection<Ftile> getMyChildren() {
if (specialOut == null) {
if (specialOut == null)
return Arrays.asList(whileBlock, diamond1);
}
return Arrays.asList(whileBlock, diamond1, specialOut);
}
@ -126,18 +125,17 @@ class FtileWhile extends AbstractFtile {
ftileFactory.skinParam());
final Ftile diamond1;
if (conditionStyle == ConditionStyle.INSIDE_HEXAGON) {
if (conditionStyle == ConditionStyle.INSIDE_HEXAGON)
diamond1 = new FtileDiamondInside(testTb, whileBlock.skinParam(), backColor, borderColor, swimlane)
.withNorth(yesTb).withWest(outTb);
} else if (conditionStyle == ConditionStyle.INSIDE_DIAMOND) {
else if (conditionStyle == ConditionStyle.INSIDE_DIAMOND)
diamond1 = new FtileDiamondSquare(testTb, whileBlock.skinParam(), backColor, borderColor, swimlane)
.withNorth(yesTb).withWest(outTb);
} else if (conditionStyle == ConditionStyle.EMPTY_DIAMOND) {
else if (conditionStyle == ConditionStyle.EMPTY_DIAMOND)
diamond1 = new FtileDiamond(whileBlock.skinParam(), backColor, borderColor, swimlane).withNorth(testTb)
.withSouth(yesTb).withWest(outTb);
} else {
else
throw new IllegalStateException();
}
final Ftile special = specialOut == null ? null : specialOut.createFtile(ftileFactory);
final FtileWhile result = new FtileWhile(whileBlock, diamond1, special, backward);
@ -160,11 +158,11 @@ class FtileWhile extends AbstractFtile {
conns.add(result.new ConnectionBackBackward2(incoming2.getRainbow(), back2));
}
}
if (specialOut == null) {
if (specialOut == null)
conns.add(result.new ConnectionOut(outColor.getRainbow()));
} else {
else
conns.add(result.new ConnectionOutSpecial(outColor.getRainbow()));
}
return FtileUtils.addConnection(result, conns);
}
@ -189,7 +187,7 @@ class FtileWhile extends AbstractFtile {
public void drawU(UGraphic ug) {
final StringBounder stringBounder = ug.getStringBounder();
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown());
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown());
snake.addPoint(getP1(stringBounder));
snake.addPoint(getP2(stringBounder));
@ -201,7 +199,7 @@ class FtileWhile extends AbstractFtile {
final StringBounder stringBounder = ug.getStringBounder();
final XPoint2D p1 = getP1(stringBounder);
final XPoint2D p2 = getP2(stringBounder);
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown())
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown())
.withMerge(MergeStrategy.LIMITED);
final XPoint2D mp1a = translate1.getTranslated(p1);
final XPoint2D mp2b = translate2.getTranslated(p2);
@ -226,9 +224,9 @@ class FtileWhile extends AbstractFtile {
private XPoint2D getP1(final StringBounder stringBounder) {
final FtileGeometry geo = whileBlock.calculateDimension(stringBounder);
if (geo.hasPointOut() == false) {
if (geo.hasPointOut() == false)
return null;
}
return getTranslateForWhile(stringBounder).getTranslated(geo.getPointOut());
}
@ -246,9 +244,9 @@ class FtileWhile extends AbstractFtile {
final XDimension2D dimTotal = calculateDimension(stringBounder);
final XPoint2D p1 = getP1(stringBounder);
if (p1 == null) {
if (p1 == null)
return;
}
final XPoint2D p2 = getP2(stringBounder);
final FtileGeometry dimDiamond1 = diamond1.calculateDimension(stringBounder);
@ -258,7 +256,7 @@ class FtileWhile extends AbstractFtile {
final double half = (dimDiamond1.getOutY() - dimDiamond1.getInY()) / 2;
final double y2 = p2.getY() + dimDiamond1.getInY() + half;
final Snake snake = Snake.create(skinParam(), endInlinkColor, Arrows.asToLeft())
final Snake snake = Snake.create(skinParam(), endInlinkColor, skinParam().arrows().asToLeft())
.emphasizeDirection(Direction.UP).withLabel(back, arrowHorizontalAlignment());
snake.addPoint(x1, y1);
final double y1bis = Math.max(y1, getBottom(stringBounder)) + Hexagon.hexagonHalfSize;
@ -276,7 +274,7 @@ class FtileWhile extends AbstractFtile {
@Override
public void drawTranslate(UGraphic ug, UTranslate translate1, UTranslate translate2) {
final StringBounder stringBounder = ug.getStringBounder();
final Snake snake = Snake.create(skinParam(), endInlinkColor, Arrows.asToLeft())
final Snake snake = Snake.create(skinParam(), endInlinkColor, skinParam().arrows().asToLeft())
.withMerge(MergeStrategy.LIMITED);
final XDimension2D dimTotal = calculateDimension(stringBounder);
final XPoint2D ap1 = getP1(stringBounder);
@ -304,7 +302,7 @@ class FtileWhile extends AbstractFtile {
ug.apply(new UTranslate(x1, y1 + Hexagon.hexagonHalfSize)).draw(new UEmpty(5, Hexagon.hexagonHalfSize));
ug = ug.apply(endInlinkColor.getColor()).apply(endInlinkColor.getColor().bg());
ug.apply(new UTranslate(xx, (y1 + y2) / 2)).draw(Arrows.asToUp());
ug.apply(new UTranslate(xx, (y1 + y2) / 2)).draw(skinParam().arrows().asToUp());
}
@ -322,9 +320,9 @@ class FtileWhile extends AbstractFtile {
private XPoint2D getP1(final StringBounder stringBounder) {
final FtileGeometry geo = whileBlock.calculateDimension(stringBounder);
if (geo.hasPointOut() == false) {
if (geo.hasPointOut() == false)
return null;
}
return getTranslateForWhile(stringBounder).getTranslated(geo.getPointOut());
}
@ -342,16 +340,16 @@ class FtileWhile extends AbstractFtile {
final StringBounder stringBounder = ug.getStringBounder();
final XPoint2D p1 = getP1(stringBounder);
if (p1 == null) {
if (p1 == null)
return;
}
final XPoint2D p2 = getP2(stringBounder);
final double x1 = p1.getX();
final double y1 = p1.getY();
final double x2 = p2.getX();
final double y2 = p2.getY();
final Snake snake = Snake.create(skinParam(), endInlinkColor, Arrows.asToUp()).withLabel(back,
final Snake snake = Snake.create(skinParam(), endInlinkColor, skinParam().arrows().asToUp()).withLabel(back,
arrowHorizontalAlignment());
snake.addPoint(x1, y1);
final double y1bis = Math.max(y1, getBottom(stringBounder)) + Hexagon.hexagonHalfSize;
@ -386,8 +384,8 @@ class FtileWhile extends AbstractFtile {
public void drawU(UGraphic ug) {
final StringBounder stringBounder = ug.getStringBounder();
final Snake snake = Snake.create(skinParam(), endInlinkColor, Arrows.asToLeft()).withLabel(back,
arrowHorizontalAlignment());
final Snake snake = Snake.create(skinParam(), endInlinkColor, skinParam().arrows().asToLeft())
.withLabel(back, arrowHorizontalAlignment());
final XPoint2D p1 = getP1(stringBounder);
final XPoint2D p2 = getP2(stringBounder);
@ -432,7 +430,7 @@ class FtileWhile extends AbstractFtile {
public void drawU(UGraphic ug) {
final StringBounder stringBounder = ug.getStringBounder();
final Snake snake = Snake.create(skinParam(), endInlinkColor, Arrows.asToLeft())
final Snake snake = Snake.create(skinParam(), endInlinkColor, skinParam().arrows().asToLeft())
.emphasizeDirection(Direction.UP);
final XDimension2D dimTotal = calculateDimension(stringBounder);
final XPoint2D p1 = getP1(stringBounder);
@ -530,7 +528,7 @@ class FtileWhile extends AbstractFtile {
public void drawU(UGraphic ug) {
final StringBounder stringBounder = ug.getStringBounder();
final Snake snake = Snake.create(skinParam(), afterEndwhileColor, Arrows.asToDown());
final Snake snake = Snake.create(skinParam(), afterEndwhileColor, skinParam().arrows().asToDown());
final FtileGeometry dimDiamond1 = diamond1.calculateDimension(stringBounder);
final XPoint2D p1 = getP1(stringBounder);
@ -555,12 +553,12 @@ class FtileWhile extends AbstractFtile {
final StringBounder stringBounder = ug.getStringBounder();
ug.apply(getTranslateForWhile(stringBounder)).draw(whileBlock);
ug.apply(getTranslateDiamond1(stringBounder)).draw(diamond1);
if (specialOut != null) {
if (specialOut != null)
ug.apply(getTranslateForSpecial(stringBounder)).draw(specialOut);
}
if (backward != null) {
if (backward != null)
ug.apply(getTranslateBackward(stringBounder)).draw(backward);
}
}
private UTranslate getTranslateBackward(StringBounder stringBounder) {
@ -585,9 +583,9 @@ class FtileWhile extends AbstractFtile {
final double height = geo.getHeight() + 4 * Hexagon.hexagonHalfSize;
final double dx = 2 * Hexagon.hexagonHalfSize;
double backwardWidth = 0;
if (backward != null) {
if (backward != null)
backwardWidth += backward.calculateDimension(stringBounder).getWidth();
}
return new FtileGeometry(
xDeltaBecauseSpecial(stringBounder) + geo.getWidth() + dx + Hexagon.hexagonHalfSize + backwardWidth,
height, xDeltaBecauseSpecial(stringBounder) + geo.getLeft() + dx, geoDiamond1.getInY(), height);
@ -595,20 +593,20 @@ class FtileWhile extends AbstractFtile {
}
private double xDeltaBecauseSpecial(StringBounder stringBounder) {
if (specialOut == null) {
if (specialOut == null)
return 0;
}
return specialOut.calculateDimension(stringBounder).getWidth();
}
@Override
public UTranslate getTranslateFor(Ftile child, StringBounder stringBounder) {
if (child == whileBlock) {
if (child == whileBlock)
return getTranslateForWhile(stringBounder);
}
if (child == diamond1) {
if (child == diamond1)
return getTranslateDiamond1(stringBounder);
}
throw new UnsupportedOperationException();
}

View File

@ -40,7 +40,6 @@ import java.util.List;
import net.sourceforge.plantuml.ISkinParam;
import net.sourceforge.plantuml.activitydiagram3.ftile.AbstractConnection;
import net.sourceforge.plantuml.activitydiagram3.ftile.Arrows;
import net.sourceforge.plantuml.activitydiagram3.ftile.Connection;
import net.sourceforge.plantuml.activitydiagram3.ftile.ConnectionTranslatable;
import net.sourceforge.plantuml.activitydiagram3.ftile.Ftile;
@ -223,7 +222,7 @@ public class ParallelBuilderFork extends AbstractParallelFtilesBuilder {
public void drawU(UGraphic ug) {
ug = ug.apply(UTranslate.dx(x));
final FtileGeometry geo2 = getFtile2().calculateDimension(getStringBounder());
Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown());
Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown());
if (Display.isNull(label) == false)
snake = snake.withLabel(getTextBlock(label), arrowHorizontalAlignment());
@ -241,7 +240,7 @@ public class ParallelBuilderFork extends AbstractParallelFtilesBuilder {
final XPoint2D p1 = new XPoint2D(geo2.getLeft(), 0);
final XPoint2D p2 = new XPoint2D(geo2.getLeft(), geo2.getInY());
Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown()).ignoreForCompression();
Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown()).ignoreForCompression();
if (Display.isNull(label) == false)
snake = snake.withLabel(getTextBlock(label), arrowHorizontalAlignment());
@ -277,7 +276,7 @@ public class ParallelBuilderFork extends AbstractParallelFtilesBuilder {
if (geo1.hasPointOut() == false)
return;
Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown());
Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown());
if (Display.isNull(label) == false)
snake = snake.withLabel(getTextBlock(label), arrowHorizontalAlignment());
@ -298,7 +297,7 @@ public class ParallelBuilderFork extends AbstractParallelFtilesBuilder {
final XPoint2D p1 = new XPoint2D(geo.getLeft(), barHeight + geo.getOutY());
final XPoint2D p2 = new XPoint2D(geo.getLeft(), justBeforeBar2);
Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown()).ignoreForCompression();
Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown()).ignoreForCompression();
if (Display.isNull(label) == false)
snake = snake.withLabel(getTextBlock(label), arrowHorizontalAlignment());

View File

@ -40,7 +40,6 @@ import java.util.List;
import net.sourceforge.plantuml.ISkinParam;
import net.sourceforge.plantuml.activitydiagram3.ftile.AbstractConnection;
import net.sourceforge.plantuml.activitydiagram3.ftile.Arrows;
import net.sourceforge.plantuml.activitydiagram3.ftile.Connection;
import net.sourceforge.plantuml.activitydiagram3.ftile.ConnectionTranslatable;
import net.sourceforge.plantuml.activitydiagram3.ftile.Ftile;
@ -144,11 +143,11 @@ public class ParallelBuilderMerge extends AbstractParallelFtilesBuilder {
final UTranslate arrival = arrivalOnDiamond(stringBounder, p1.getX());
final UPolygon endDecoration;
if (arrival.getDx() < 0)
endDecoration = Arrows.asToRight();
endDecoration = skinParam().arrows().asToRight();
else if (arrival.getDx() > 0)
endDecoration = Arrows.asToLeft();
endDecoration = skinParam().arrows().asToLeft();
else
endDecoration = Arrows.asToDown();
endDecoration = skinParam().arrows().asToDown();
final Snake snake = Snake.create(skinParam(), arrowColor, endDecoration);
snake.addPoint(x1, y1);
@ -206,7 +205,7 @@ public class ParallelBuilderMerge extends AbstractParallelFtilesBuilder {
public void drawU(UGraphic ug) {
ug = ug.apply(UTranslate.dx(x));
final FtileGeometry geo = getFtile2().calculateDimension(getStringBounder());
Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown());
Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown());
if (Display.isNull(label) == false)
snake = snake.withLabel(getTextBlock(label), arrowHorizontalAlignment());
@ -222,7 +221,7 @@ public class ParallelBuilderMerge extends AbstractParallelFtilesBuilder {
final XPoint2D p1 = new XPoint2D(geo.getLeft(), 0);
final XPoint2D p2 = new XPoint2D(geo.getLeft(), geo.getInY());
Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown());
Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown());
if (Display.isNull(label) == false)
snake = snake.withLabel(getTextBlock(label), arrowHorizontalAlignment());

View File

@ -41,7 +41,6 @@ import java.util.List;
import net.sourceforge.plantuml.ISkinParam;
import net.sourceforge.plantuml.activitydiagram3.LinkRendering;
import net.sourceforge.plantuml.activitydiagram3.ftile.AbstractConnection;
import net.sourceforge.plantuml.activitydiagram3.ftile.Arrows;
import net.sourceforge.plantuml.activitydiagram3.ftile.Connection;
import net.sourceforge.plantuml.activitydiagram3.ftile.ConnectionTranslatable;
import net.sourceforge.plantuml.activitydiagram3.ftile.Ftile;
@ -92,8 +91,7 @@ public class ParallelBuilderSplit extends AbstractParallelFtilesBuilder {
last = x + dim.getLeft();
final LinkRendering inLinkRendering = tmp.getInLinkRendering();
final Rainbow rainbow = inLinkRendering
.getRainbow(Rainbow.build(style, skinParam().getIHtmlColorSet()));
final Rainbow rainbow = inLinkRendering.getRainbow(Rainbow.build(style, skinParam().getIHtmlColorSet()));
conns.add(new ConnectionIn(thin, tmp, x, rainbow));
x += dim.getWidth();
@ -116,8 +114,7 @@ public class ParallelBuilderSplit extends AbstractParallelFtilesBuilder {
final Style style = getStyleSignature().getMergedStyle(skinParam().getCurrentStyleBuilder());
for (Ftile tmp : list99) {
final LinkRendering inLinkRendering = tmp.getInLinkRendering();
final Rainbow rainbow = inLinkRendering
.getRainbow(Rainbow.build(style, skinParam().getIHtmlColorSet()));
final Rainbow rainbow = inLinkRendering.getRainbow(Rainbow.build(style, skinParam().getIHtmlColorSet()));
if (rainbow.isInvisible() == false)
return thinColor.getColor();
@ -143,8 +140,7 @@ public class ParallelBuilderSplit extends AbstractParallelFtilesBuilder {
final Style style = getStyleSignature().getMergedStyle(skinParam().getCurrentStyleBuilder());
final LinkRendering inLinkRendering = result.getInLinkRendering();
final Rainbow thinColor = inLinkRendering
.getRainbow(Rainbow.build(style, skinParam().getIHtmlColorSet()));
final Rainbow thinColor = inLinkRendering.getRainbow(Rainbow.build(style, skinParam().getIHtmlColorSet()));
final Ftile out = new FtileThinSplit(skinParam(), thinColor.getColor(), swimlaneOutForStep2());
result = new FtileAssemblySimple(result, out);
@ -163,8 +159,7 @@ public class ParallelBuilderSplit extends AbstractParallelFtilesBuilder {
}
final LinkRendering outLinkRendering = tmp.getOutLinkRendering();
final Rainbow rainbow = outLinkRendering
.getRainbow(Rainbow.build(style, skinParam().getIHtmlColorSet()));
final Rainbow rainbow = outLinkRendering.getRainbow(Rainbow.build(style, skinParam().getIHtmlColorSet()));
if (tmp.calculateDimension(getStringBounder()).hasPointOut())
conns.add(new ConnectionOut(translate0, tmp, out, x, rainbow, getHeightOfMiddle(inner)));
@ -198,7 +193,7 @@ public class ParallelBuilderSplit extends AbstractParallelFtilesBuilder {
public void drawU(UGraphic ug) {
ug = ug.apply(UTranslate.dx(x));
final FtileGeometry geo = getFtile2().calculateDimension(getStringBounder());
Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown());
Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown());
if (Display.isNull(label) == false)
snake = snake.withLabel(getTextBlock(label), arrowHorizontalAlignment());
@ -214,7 +209,7 @@ public class ParallelBuilderSplit extends AbstractParallelFtilesBuilder {
final XPoint2D p1 = new XPoint2D(geo.getLeft(), 0);
final XPoint2D p2 = new XPoint2D(geo.getLeft(), geo.getInY());
Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown());
Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown());
if (Display.isNull(label) == false)
snake = snake.withLabel(getTextBlock(label), arrowHorizontalAlignment());
@ -253,7 +248,7 @@ public class ParallelBuilderSplit extends AbstractParallelFtilesBuilder {
if (geo.hasPointOut() == false)
return;
Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown());
Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown());
if (Display.isNull(label) == false)
snake = snake.withLabel(getTextBlock(label), arrowHorizontalAlignment());
@ -274,7 +269,7 @@ public class ParallelBuilderSplit extends AbstractParallelFtilesBuilder {
final XPoint2D p1 = translate0.getTranslated(new XPoint2D(geo.getLeft(), geo.getOutY()));
final XPoint2D p2 = translate0.getTranslated(new XPoint2D(geo.getLeft(), height));
Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown());
Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown());
if (Display.isNull(label) == false)
snake = snake.withLabel(getTextBlock(label), arrowHorizontalAlignment());

View File

@ -41,7 +41,6 @@ import java.util.List;
import net.sourceforge.plantuml.Direction;
import net.sourceforge.plantuml.activitydiagram3.Branch;
import net.sourceforge.plantuml.activitydiagram3.ftile.AbstractConnection;
import net.sourceforge.plantuml.activitydiagram3.ftile.Arrows;
import net.sourceforge.plantuml.activitydiagram3.ftile.Connection;
import net.sourceforge.plantuml.activitydiagram3.ftile.ConnectionTranslatable;
import net.sourceforge.plantuml.activitydiagram3.ftile.Ftile;
@ -72,9 +71,9 @@ public class FtileIfWithLinks extends FtileIfWithDiamonds {
super(diamond1, tile1, tile2, diamond2, in, stringBounder);
this.arrowColor = arrowColor;
this.conditionEndStyle = conditionEndStyle;
if (arrowColor.size() == 0) {
if (arrowColor.size() == 0)
throw new IllegalArgumentException();
}
}
class ConnectionHorizontalThenVertical extends AbstractConnection implements ConnectionTranslatable {
@ -85,10 +84,10 @@ public class FtileIfWithLinks extends FtileIfWithDiamonds {
public ConnectionHorizontalThenVertical(Ftile tile, Branch branch) {
super(diamond1, tile);
color = branch.getInColor(arrowColor);
if (color.size() == 0) {
if (color.size() == 0)
throw new IllegalArgumentException();
}
usingArrow = branch.isEmpty() ? null : Arrows.asToDown();
usingArrow = branch.isEmpty() ? null : skinParam().arrows().asToDown();
}
public void drawU(UGraphic ug) {
@ -111,13 +110,13 @@ public class FtileIfWithLinks extends FtileIfWithDiamonds {
private XPoint2D getP1(StringBounder stringBounder) {
final FtileGeometry dimDiamond1 = diamond1.calculateDimension(stringBounder);
final XPoint2D pt;
if (getFtile2() == tile1) {
if (getFtile2() == tile1)
pt = dimDiamond1.getPointD();
} else if (getFtile2() == tile2) {
else if (getFtile2() == tile2)
pt = dimDiamond1.getPointB();
} else {
else
throw new IllegalStateException();
}
return getTranslateDiamond1(stringBounder).getTranslated(pt);
}
@ -126,12 +125,12 @@ public class FtileIfWithLinks extends FtileIfWithDiamonds {
}
private UTranslate translate(StringBounder stringBounder) {
if (getFtile2() == tile1) {
if (getFtile2() == tile1)
return getTranslate1(stringBounder);
}
if (getFtile2() == tile2) {
if (getFtile2() == tile2)
return getTranslate2(stringBounder);
}
throw new IllegalStateException();
}
@ -178,9 +177,9 @@ public class FtileIfWithLinks extends FtileIfWithDiamonds {
final StringBounder stringBounder = ug.getStringBounder();
final FtileGeometry geo = getFtile1().calculateDimension(stringBounder);
if (geo.hasPointOut() == false) {
if (geo.hasPointOut() == false)
return;
}
final XPoint2D p1 = geo.translate(translate(stringBounder)).getPointOut();
final XPoint2D p2 = getP2(stringBounder);
@ -189,11 +188,11 @@ public class FtileIfWithLinks extends FtileIfWithDiamonds {
final double x2 = p2.getX();
final double y2 = p2.getY();
final UPolygon arrow = x2 > x1 ? Arrows.asToRight() : Arrows.asToLeft();
final UPolygon arrow = x2 > x1 ? skinParam().arrows().asToRight() : skinParam().arrows().asToLeft();
Snake snake = Snake.create(skinParam(), myArrowColor, arrow);
if (branchEmpty) {
if (branchEmpty)
snake = snake.emphasizeDirection(Direction.DOWN);
}
snake.addPoint(x1, y1);
snake.addPoint(x1, y2);
snake.addPoint(x2, y2);
@ -204,23 +203,23 @@ public class FtileIfWithLinks extends FtileIfWithDiamonds {
private XPoint2D getP2(StringBounder stringBounder) {
final FtileGeometry dimDiamond2 = diamond2.calculateDimension(stringBounder);
final XPoint2D pt;
if (getFtile1() == tile1) {
if (getFtile1() == tile1)
pt = dimDiamond2.getPointD();
} else if (getFtile1() == tile2) {
else if (getFtile1() == tile2)
pt = dimDiamond2.getPointB();
} else {
else
throw new IllegalStateException();
}
return getTranslateDiamond2(stringBounder).getTranslated(pt);
}
private UTranslate translate(StringBounder stringBounder) {
if (getFtile1() == tile1) {
if (getFtile1() == tile1)
return getTranslate1(stringBounder);
}
if (getFtile1() == tile2) {
if (getFtile1() == tile2)
return getTranslate2(stringBounder);
}
throw new IllegalStateException();
}
@ -228,9 +227,9 @@ public class FtileIfWithLinks extends FtileIfWithDiamonds {
public void drawTranslate(UGraphic ug, UTranslate translate1, UTranslate translate2) {
final StringBounder stringBounder = ug.getStringBounder();
final FtileGeometry geo = getFtile1().calculateDimension(stringBounder);
if (geo.hasPointOut() == false) {
if (geo.hasPointOut() == false)
return;
}
final XPoint2D p2 = getP2(stringBounder);
final XPoint2D p1 = geo.translate(translate(stringBounder)).getPointOut();
final Direction originalDirection = Direction.leftOrRight(p1, p2);
@ -240,7 +239,7 @@ public class FtileIfWithLinks extends FtileIfWithDiamonds {
final XPoint2D mp1a = translate1.getTranslated(p1);
final XPoint2D mp2b = translate2.getTranslated(p2);
final Direction newDirection = Direction.leftOrRight(mp1a, mp2b);
final UPolygon arrow = x2 > x1 ? Arrows.asToRight() : Arrows.asToLeft();
final UPolygon arrow = x2 > x1 ? skinParam().arrows().asToRight() : skinParam().arrows().asToLeft();
if (originalDirection == newDirection) {
final double delta = (x2 > x1 ? -1 : 1) * 1.5 * Hexagon.hexagonHalfSize;
final XPoint2D mp2bc = new XPoint2D(mp2b.getX() + delta, mp2b.getY());
@ -258,8 +257,7 @@ public class FtileIfWithLinks extends FtileIfWithDiamonds {
ug.draw(small);
} else {
final double delta = (x2 > x1 ? -1 : 1) * 1.5 * Hexagon.hexagonHalfSize;
final XPoint2D mp2bb = new XPoint2D(mp2b.getX() + delta,
mp2b.getY() - 1.5 * Hexagon.hexagonHalfSize);
final XPoint2D mp2bb = new XPoint2D(mp2b.getX() + delta, mp2b.getY() - 1.5 * Hexagon.hexagonHalfSize);
final Snake snake = Snake.create(skinParam(), myArrowColor).withMerge(MergeStrategy.LIMITED);
snake.addPoint(mp1a);
snake.addPoint(mp1a.getX(), mp2bb.getY());
@ -292,9 +290,9 @@ public class FtileIfWithLinks extends FtileIfWithDiamonds {
final FtileGeometry dimTotal = calculateDimensionInternal(stringBounder);
final FtileGeometry geo = getFtile1().calculateDimension(stringBounder);
if (geo.hasPointOut() == false) {
if (geo.hasPointOut() == false)
return;
}
final XPoint2D p1 = geo.translate(translate(stringBounder)).getPointOut();
final XPoint2D p2 = new XPoint2D(dimTotal.getLeft(), dimTotal.getHeight());
@ -304,9 +302,9 @@ public class FtileIfWithLinks extends FtileIfWithDiamonds {
final double y2 = p2.getY();
Snake snake = Snake.create(skinParam(), myArrowColor);
if (branchEmpty) {
if (branchEmpty)
snake = snake.emphasizeDirection(Direction.DOWN);
}
snake.addPoint(x1, y1);
snake.addPoint(x1, y2);
snake.addPoint(x2, y2);
@ -321,9 +319,9 @@ public class FtileIfWithLinks extends FtileIfWithDiamonds {
final FtileGeometry dimTotal = calculateDimensionInternal(stringBounder);
final FtileGeometry geo = getFtile1().calculateDimension(stringBounder);
if (geo.hasPointOut() == false) {
if (geo.hasPointOut() == false)
return;
}
final XPoint2D p1 = geo.translate(translate(stringBounder)).getPointOut();
final XPoint2D p2 = new XPoint2D(dimTotal.getLeft(), dimTotal.getHeight() - Hexagon.hexagonHalfSize);
@ -331,7 +329,6 @@ public class FtileIfWithLinks extends FtileIfWithDiamonds {
final XPoint2D mp2b = translate2.getTranslated(p2);
final Snake snake = Snake.create(skinParam(), myArrowColor).withMerge(MergeStrategy.LIMITED);
// snake.emphasizeDirection(Direction.DOWN);
final double x1 = mp1a.getX();
final double x2 = mp2b.getX();
@ -346,12 +343,12 @@ public class FtileIfWithLinks extends FtileIfWithDiamonds {
}
private UTranslate translate(StringBounder stringBounder) {
if (getFtile1() == tile1) {
if (getFtile1() == tile1)
return getTranslate1(stringBounder);
}
if (getFtile1() == tile2) {
if (getFtile1() == tile2)
return getTranslate2(stringBounder);
}
throw new IllegalStateException();
}
@ -373,20 +370,18 @@ public class FtileIfWithLinks extends FtileIfWithDiamonds {
final StringBounder stringBounder = ug.getStringBounder();
final FtileGeometry geo = getFtile1().calculateDimension(stringBounder);
if (geo.hasPointOut() == false) {
if (geo.hasPointOut() == false)
return;
}
final XPoint2D p1 = geo.translate(translate(stringBounder)).getPointOut();
final double totalHeight = calculateDimensionInternal(stringBounder).getHeight();
// final XPoint2D p1 = getP1(stringBounder);
if (p1 == null) {
if (p1 == null)
return;
}
final XPoint2D p2 = new XPoint2D(p1.getX(), totalHeight);
final Snake snake = Snake.create(skinParam(), color, Arrows.asToDown()).withLabel(out2,
final Snake snake = Snake.create(skinParam(), color, skinParam().arrows().asToDown()).withLabel(out2,
arrowHorizontalAlignment());
snake.addPoint(p1);
snake.addPoint(p2);
@ -394,12 +389,12 @@ public class FtileIfWithLinks extends FtileIfWithDiamonds {
}
private UTranslate translate(StringBounder stringBounder) {
if (getFtile1() == tile1) {
if (getFtile1() == tile1)
return getTranslate1(stringBounder);
}
if (getFtile1() == tile2) {
if (getFtile1() == tile2)
return getTranslate2(stringBounder);
}
throw new IllegalStateException();
}
/*
@ -441,9 +436,8 @@ public class FtileIfWithLinks extends FtileIfWithDiamonds {
final double minX = minmax[0];
final double maxX = minmax[1];
if (Double.isNaN(minX) || Double.isNaN(maxX)) {
if (Double.isNaN(minX) || Double.isNaN(maxX))
return;
}
final Snake s = Snake.create(skinParam(), arrowColor).withMerge(MergeStrategy.NONE);
s.addPoint(minX, totalDim.getHeight());
@ -454,28 +448,23 @@ public class FtileIfWithLinks extends FtileIfWithDiamonds {
private double[] getMinmax(StringBounder stringBounder, double width, List<Ftile> allTiles, Swimlane intoSw,
List<Swimlane> allSwimlanes) {
final int current = allSwimlanes.indexOf(intoSw);
// final Double leftOut = getLeftOut(stringBounder);
// if (leftOut == null)
// return new double[] { Double.NaN, Double.NaN };
if (current == -1) {
if (current == -1)
throw new IllegalStateException();
}
final int first = getFirstSwimlane(stringBounder, allTiles, allSwimlanes);
final int last = getLastSwimlane(stringBounder, allTiles, allSwimlanes);
if (current < first || current > last)
return new double[] { Double.NaN, Double.NaN };
double minX = current != first ? 0 : width;
double maxX = current != last ? width : 0;
// minX = Math.min(minX, leftOut);
// maxX = Math.max(maxX, leftOut);
for (Ftile tmp : allTiles) {
if (tmp.calculateDimension(stringBounder).hasPointOut() == false) {
if (tmp.calculateDimension(stringBounder).hasPointOut() == false)
continue;
}
if (ftileDoesOutcomeInThatSwimlane(tmp, intoSw) == false) {
if (ftileDoesOutcomeInThatSwimlane(tmp, intoSw) == false)
continue;
}
final UTranslate ut = getTranslateFor(tmp, stringBounder);
final double out = tmp.calculateDimension(stringBounder).translate(ut).getLeft();
minX = Math.min(minX, out);
@ -485,17 +474,12 @@ public class FtileIfWithLinks extends FtileIfWithDiamonds {
}
private double[] getMinmaxSimple(StringBounder stringBounder, double width, List<Ftile> allTiles) {
// final Double leftOut = getLeftOut(stringBounder);
// if (leftOut == null)
// return new double[] { Double.NaN, Double.NaN };
double minX = width / 2;
double maxX = width / 2;
// minX = Math.min(minX, leftOut);
// maxX = Math.max(maxX, leftOut);
for (Ftile tmp : allTiles) {
if (tmp.calculateDimension(stringBounder).hasPointOut() == false) {
if (tmp.calculateDimension(stringBounder).hasPointOut() == false)
continue;
}
final UTranslate ut = getTranslateFor(tmp, stringBounder);
final double out = tmp.calculateDimension(stringBounder).translate(ut).getLeft();
minX = Math.min(minX, out);
@ -505,20 +489,18 @@ public class FtileIfWithLinks extends FtileIfWithDiamonds {
}
private int getFirstSwimlane(StringBounder stringBounder, List<Ftile> allTiles, List<Swimlane> allSwimlanes) {
for (int i = 0; i < allSwimlanes.size(); i++) {
if (atLeastOne(stringBounder, allSwimlanes.get(i), allTiles)) {
for (int i = 0; i < allSwimlanes.size(); i++)
if (atLeastOne(stringBounder, allSwimlanes.get(i), allTiles))
return i;
}
}
throw new IllegalStateException();
}
private int getLastSwimlane(StringBounder stringBounder, List<Ftile> allTiles, List<Swimlane> allSwimlanes) {
for (int i = allSwimlanes.size() - 1; i >= 0; i--) {
if (atLeastOne(stringBounder, allSwimlanes.get(i), allTiles)) {
for (int i = allSwimlanes.size() - 1; i >= 0; i--)
if (atLeastOne(stringBounder, allSwimlanes.get(i), allTiles))
return i;
}
}
throw new IllegalStateException();
}

View File

@ -41,7 +41,6 @@ import java.util.List;
import net.sourceforge.plantuml.Direction;
import net.sourceforge.plantuml.activitydiagram3.Branch;
import net.sourceforge.plantuml.activitydiagram3.ftile.AbstractConnection;
import net.sourceforge.plantuml.activitydiagram3.ftile.Arrows;
import net.sourceforge.plantuml.activitydiagram3.ftile.Connection;
import net.sourceforge.plantuml.activitydiagram3.ftile.Ftile;
import net.sourceforge.plantuml.activitydiagram3.ftile.FtileGeometry;
@ -88,7 +87,7 @@ public class FtileSwitchWithManyLinks extends FtileSwitchWithDiamonds {
final double x2 = p2.getX();
final double y2 = p2.getY();
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown())
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown())
.withLabel(branch.getTextBlockPositive(), arrowHorizontalAlignment());
snake.addPoint(x1, y1);
@ -158,15 +157,15 @@ public class FtileSwitchWithManyLinks extends FtileSwitchWithDiamonds {
final Direction direction;
if (x1 < ptD.getX()) {
p2 = ptD;
arrow = Arrows.asToRight();
arrow = skinParam().arrows().asToRight();
direction = Direction.RIGHT;
} else if (x1 > ptB.getX()) {
p2 = ptB;
arrow = Arrows.asToLeft();
arrow = skinParam().arrows().asToLeft();
direction = Direction.LEFT;
} else {
p2 = ptA;
arrow = Arrows.asToDown();
arrow = skinParam().arrows().asToDown();
direction = Direction.DOWN;
}
@ -215,7 +214,7 @@ public class FtileSwitchWithManyLinks extends FtileSwitchWithDiamonds {
final double x2 = p2.getX();
final double y2 = p2.getY();
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown())
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown())
.withLabel(branch.getTextBlockPositive(), VerticalAlignment.CENTER);
if (x2 < p1d.getX() - margin || x2 > p1b.getX() + margin) {
snake.addPoint(x2, p1d.getY());
@ -271,8 +270,8 @@ public class FtileSwitchWithManyLinks extends FtileSwitchWithDiamonds {
final double ym = (y1 + y2) / 2;
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown()).withLabel(outLabel,
VerticalAlignment.CENTER);
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown())
.withLabel(outLabel, VerticalAlignment.CENTER);
if (x1 < p1d.getX() - margin || x1 > p1b.getX() + margin) {
snake.addPoint(x1, y1);
@ -297,9 +296,9 @@ public class FtileSwitchWithManyLinks extends FtileSwitchWithDiamonds {
@Override
protected double getYdelta1a(StringBounder stringBounder) {
double max = 10;
for (Branch branch : branches) {
for (Branch branch : branches)
max = Math.max(max, branch.getTextBlockPositive().calculateDimension(stringBounder).getHeight());
}
if (mode == Mode.BIG_DIAMOND) {
final double diamondHeight = diamond1.calculateDimension(stringBounder).getHeight();
max += diamondHeight / 2;

View File

@ -40,7 +40,6 @@ import java.util.List;
import net.sourceforge.plantuml.activitydiagram3.Branch;
import net.sourceforge.plantuml.activitydiagram3.ftile.AbstractConnection;
import net.sourceforge.plantuml.activitydiagram3.ftile.Arrows;
import net.sourceforge.plantuml.activitydiagram3.ftile.Connection;
import net.sourceforge.plantuml.activitydiagram3.ftile.Ftile;
import net.sourceforge.plantuml.activitydiagram3.ftile.FtileGeometry;
@ -80,9 +79,8 @@ public class FtileSwitchWithOneLink extends FtileSwitchWithDiamonds {
final double x2 = p2.getX();
final double y2 = p2.getY();
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown())
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown())
.withLabel(branch.getTextBlockPositive(), arrowHorizontalAlignment());
// snake.addPoint(x1, y1);
snake.addPoint(x2, y1);
snake.addPoint(x2, y2);
@ -115,8 +113,7 @@ public class FtileSwitchWithOneLink extends FtileSwitchWithDiamonds {
final double x2 = p2.getX();
final double y2 = p2.getY();
final Snake snake = Snake.create(skinParam(), arrowColor, Arrows.asToDown());
// snake.addPoint(x1, y1);
final Snake snake = Snake.create(skinParam(), arrowColor, skinParam().arrows().asToDown());
snake.addPoint(x2, y1);
snake.addPoint(x2, y2);

View File

@ -36,7 +36,6 @@
package net.sourceforge.plantuml.activitydiagram3.gtile;
import net.sourceforge.plantuml.Direction;
import net.sourceforge.plantuml.activitydiagram3.ftile.Arrows;
import net.sourceforge.plantuml.activitydiagram3.ftile.Hexagon;
import net.sourceforge.plantuml.activitydiagram3.ftile.MergeStrategy;
import net.sourceforge.plantuml.activitydiagram3.ftile.Snake;
@ -82,14 +81,15 @@ public class GConnectionHorizontalThenVerticalDown extends GAbstractConnection {
// final Dimension2D dimDiamond1 =
// diamond1.calculateDimension(ug.getStringBounder());
final XDimension2D dimDiamond1 = new XDimension2D(0, 0);
final Snake small = Snake.create(skinParam(), getInLinkRenderingColor()).withLabel(textBlock, HorizontalAlignment.LEFT);
final Snake small = Snake.create(skinParam(), getInLinkRenderingColor()).withLabel(textBlock,
HorizontalAlignment.LEFT);
small.addPoint(p1);
small.addPoint(p1.getX() + delta, p1.getY());
small.addPoint(p1.getX() + delta, p1.getY() + dimDiamond1.getHeight() * .75);
ug.draw(small);
p1 = small.getLast();
}
UPolygon usingArrow = /* branch.isEmpty() ? null : */ Arrows.asToDown();
UPolygon usingArrow = /* branch.isEmpty() ? null : */ skinParam().arrows().asToDown();
final Snake snake = Snake.create(skinParam(), getInLinkRenderingColor(), usingArrow)
.withLabel(textBlock, HorizontalAlignment.LEFT).withMerge(MergeStrategy.LIMITED);
@ -102,8 +102,8 @@ public class GConnectionHorizontalThenVerticalDown extends GAbstractConnection {
@Override
public void drawU(UGraphic ug) {
final Snake snake = Snake.create(skinParam(), getInLinkRenderingColor(), Arrows.asToDown()).withLabel(textBlock,
HorizontalAlignment.LEFT);
final Snake snake = Snake.create(skinParam(), getInLinkRenderingColor(), skinParam().arrows().asToDown())
.withLabel(textBlock, HorizontalAlignment.LEFT);
final XPoint2D p1 = pos1.getTranslated(gpoint1.getPoint2D());
final XPoint2D p2 = pos2.getTranslated(gpoint2.getPoint2D());
snake.addPoint(p1);

View File

@ -36,7 +36,6 @@
package net.sourceforge.plantuml.activitydiagram3.gtile;
import net.sourceforge.plantuml.Direction;
import net.sourceforge.plantuml.activitydiagram3.ftile.Arrows;
import net.sourceforge.plantuml.activitydiagram3.ftile.Snake;
import net.sourceforge.plantuml.awt.geom.XPoint2D;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
@ -74,7 +73,7 @@ public class GConnectionSideThenVerticalThenSide extends GAbstractConnection {
final XPoint2D p1 = pos1.getTranslated(gpoint1.getPoint2D());
final XPoint2D p2 = pos2.getTranslated(gpoint2.getPoint2D());
final Direction direction = p1.getY() < p2.getY() ? Direction.DOWN : Direction.UP;
final UPolygon tmp = p1.getX() < p2.getX() ? Arrows.asToRight() : Arrows.asToLeft();
final UPolygon tmp = p1.getX() < p2.getX() ? skinParam().arrows().asToRight() : skinParam().arrows().asToLeft();
final Snake snake = Snake.create(skinParam(), getInLinkRenderingColor(), tmp).emphasizeDirection(direction)
.withLabel(textBlock, HorizontalAlignment.LEFT);
// final double maxX = Math.max(p1.getX(), p2.getX());

View File

@ -35,7 +35,6 @@
*/
package net.sourceforge.plantuml.activitydiagram3.gtile;
import net.sourceforge.plantuml.activitydiagram3.ftile.Arrows;
import net.sourceforge.plantuml.activitydiagram3.ftile.Snake;
import net.sourceforge.plantuml.awt.geom.XPoint2D;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
@ -60,8 +59,8 @@ public class GConnectionVerticalDown extends GAbstractConnection {
@Override
public void drawTranslate(UGraphic ug, UTranslate translate1, UTranslate translate2) {
final Snake snake = Snake.create(skinParam(), getInLinkRenderingColor(), Arrows.asToDown()).withLabel(textBlock,
HorizontalAlignment.LEFT);
final Snake snake = Snake.create(skinParam(), getInLinkRenderingColor(), skinParam().arrows().asToDown())
.withLabel(textBlock, HorizontalAlignment.LEFT);
final XPoint2D p1 = pos1.getTranslated(gpoint1.getPoint2D());
final XPoint2D p2 = pos2.getTranslated(gpoint2.getPoint2D());
final XPoint2D mp1a = translate1.getTranslated(p1);
@ -77,8 +76,8 @@ public class GConnectionVerticalDown extends GAbstractConnection {
@Override
public void drawU(UGraphic ug) {
final Snake snake = Snake.create(skinParam(), getInLinkRenderingColor(), Arrows.asToDown()).withLabel(textBlock,
HorizontalAlignment.LEFT);
final Snake snake = Snake.create(skinParam(), getInLinkRenderingColor(), skinParam().arrows().asToDown())
.withLabel(textBlock, HorizontalAlignment.LEFT);
final XPoint2D p1 = pos1.getTranslated(gpoint1.getPoint2D());
final XPoint2D p2 = pos2.getTranslated(gpoint2.getPoint2D());
snake.addPoint(p1);

View File

@ -36,7 +36,6 @@
package net.sourceforge.plantuml.activitydiagram3.gtile;
import net.sourceforge.plantuml.Direction;
import net.sourceforge.plantuml.activitydiagram3.ftile.Arrows;
import net.sourceforge.plantuml.activitydiagram3.ftile.Snake;
import net.sourceforge.plantuml.awt.geom.XPoint2D;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
@ -66,7 +65,7 @@ public class GConnectionVerticalDownThenBack extends GAbstractConnection {
public void drawU(UGraphic ug) {
final XPoint2D p1 = pos1.getTranslated(gpoint1.getPoint2D());
final XPoint2D p2 = pos2.getTranslated(gpoint2.getPoint2D());
final UPolygon arrow = Arrows.asToLeft();
final UPolygon arrow = skinParam().arrows().asToLeft();
final Snake snake = Snake.create(skinParam(), getInLinkRenderingColor(), arrow)
.withLabel(textBlock, HorizontalAlignment.LEFT).emphasizeDirection(Direction.UP);
@ -92,7 +91,7 @@ public class GConnectionVerticalDownThenBack extends GAbstractConnection {
p1 = translate1.getTranslated(p1);
p2 = translate2.getTranslated(p2);
final UPolygon arrow = Arrows.asToLeft();
final UPolygon arrow = skinParam().arrows().asToLeft();
final Snake snake = Snake.create(skinParam(), getInLinkRenderingColor(), arrow)
.withLabel(textBlock, HorizontalAlignment.LEFT).emphasizeDirection(Direction.UP);

View File

@ -36,7 +36,6 @@
package net.sourceforge.plantuml.activitydiagram3.gtile;
import net.sourceforge.plantuml.Direction;
import net.sourceforge.plantuml.activitydiagram3.ftile.Arrows;
import net.sourceforge.plantuml.activitydiagram3.ftile.Hexagon;
import net.sourceforge.plantuml.activitydiagram3.ftile.MergeStrategy;
import net.sourceforge.plantuml.activitydiagram3.ftile.Snake;
@ -77,7 +76,7 @@ public class GConnectionVerticalDownThenHorizontal extends GAbstractConnection {
final XPoint2D mp1a = translate1.getTranslated(p1);
final XPoint2D mp2b = translate2.getTranslated(p2);
final Direction newDirection = Direction.leftOrRight(mp1a, mp2b);
final UPolygon arrow = x2 > x1 ? Arrows.asToRight() : Arrows.asToLeft();
final UPolygon arrow = x2 > x1 ? skinParam().arrows().asToRight() : skinParam().arrows().asToLeft();
if (originalDirection == newDirection) {
final double delta = (x2 > x1 ? -1 : 1) * 1.5 * Hexagon.hexagonHalfSize;
final XPoint2D mp2bc = new XPoint2D(mp2b.getX() + delta, mp2b.getY());
@ -88,7 +87,8 @@ public class GConnectionVerticalDownThenHorizontal extends GAbstractConnection {
snake.addPoint(mp2bc.getX(), middle);
snake.addPoint(mp2bc);
ug.draw(snake);
final Snake small = Snake.create(skinParam(), getInLinkRenderingColor(), arrow).withMerge(MergeStrategy.LIMITED);
final Snake small = Snake.create(skinParam(), getInLinkRenderingColor(), arrow)
.withMerge(MergeStrategy.LIMITED);
small.addPoint(mp2bc);
small.addPoint(mp2bc.getX(), mp2b.getY());
small.addPoint(mp2b);
@ -101,7 +101,8 @@ public class GConnectionVerticalDownThenHorizontal extends GAbstractConnection {
snake.addPoint(mp1a.getX(), mp2bb.getY());
snake.addPoint(mp2bb);
ug.draw(snake);
final Snake small = Snake.create(skinParam(), getInLinkRenderingColor(), arrow).withMerge(MergeStrategy.LIMITED);
final Snake small = Snake.create(skinParam(), getInLinkRenderingColor(), arrow)
.withMerge(MergeStrategy.LIMITED);
small.addPoint(mp2bb);
small.addPoint(mp2bb.getX(), mp2b.getY());
small.addPoint(mp2b);
@ -115,7 +116,8 @@ public class GConnectionVerticalDownThenHorizontal extends GAbstractConnection {
public void drawU(UGraphic ug) {
final XPoint2D p1 = pos1.getTranslated(gpoint1.getPoint2D());
final XPoint2D p2 = pos2.getTranslated(gpoint2.getPoint2D());
final UPolygon arrow = p1.getX() < p2.getX() ? Arrows.asToRight() : Arrows.asToLeft();
final UPolygon arrow = p1.getX() < p2.getX() ? skinParam().arrows().asToRight()
: skinParam().arrows().asToLeft();
final Snake snake = Snake.create(skinParam(), getInLinkRenderingColor(), arrow).withLabel(textBlock,
HorizontalAlignment.LEFT);
snake.addPoint(p1);

View File

@ -156,8 +156,8 @@ public class ETileBox extends ETile {
} else if (symbol == Symbol.SPECIAL_SEQUENCE) {
final URectangle rect1 = new URectangle(dimBox.delta(2)).rounded(12);
final URectangle rect2 = new URectangle(dimBox.delta(-2)).rounded(8);
ug.apply(new UTranslate(posxBox - 1, posy - 1)).apply(lineColor).apply(new UStroke(1.0)).draw(rect1);
ug.apply(new UTranslate(posxBox + 1, posy + 1)).apply(lineColor).apply(new UStroke(1.0)).draw(rect2);
ug.apply(new UTranslate(posxBox - 1, posy - 1)).apply(lineColor).apply(new UStroke(1.0, 1.0, 1.0)).draw(rect1);
ug.apply(new UTranslate(posxBox + 1, posy + 1)).apply(lineColor).apply(new UStroke(0.5)).draw(rect2);
} else {
final URectangle rect = new URectangle(dimBox).rounded(10);
ug.apply(new UTranslate(posxBox, posy)).apply(lineColor).apply(backgroundColor.bg()).apply(new UStroke(1.5))

View File

@ -35,14 +35,15 @@
*/
package net.sourceforge.plantuml.project;
import net.sourceforge.plantuml.Direction;
import net.sourceforge.plantuml.activitydiagram3.ftile.Arrows;
import net.sourceforge.plantuml.ugraphic.UPolygon;
public class Arrows {
public class GArrows extends Arrows {
final static private double delta2 = 4;
private static UPolygon asToUp() {
@Override
public UPolygon asToUp() {
final UPolygon polygon = new UPolygon("asToUp");
polygon.addPoint(-delta2, 0);
polygon.addPoint(0, 0);
@ -51,7 +52,8 @@ public class Arrows {
return polygon;
}
private static UPolygon asToDown() {
@Override
public UPolygon asToDown() {
final UPolygon polygon = new UPolygon("asToDown");
polygon.addPoint(-delta2, 0);
polygon.addPoint(0, 0);
@ -60,7 +62,8 @@ public class Arrows {
return polygon;
}
private static UPolygon asToRight() {
@Override
public UPolygon asToRight() {
final UPolygon polygon = new UPolygon("asToRight");
polygon.addPoint(0, -delta2);
polygon.addPoint(0, 0);
@ -69,7 +72,8 @@ public class Arrows {
return polygon.translate(-4, 0);
}
private static UPolygon asToLeft() {
@Override
public UPolygon asToLeft() {
final UPolygon polygon = new UPolygon("asToLeft");
polygon.addPoint(0, -delta2);
polygon.addPoint(0, 0);
@ -78,20 +82,4 @@ public class Arrows {
return polygon.translate(4, 0);
}
public static UPolygon asTo(Direction direction) {
if (direction == Direction.UP) {
return asToUp();
}
if (direction == Direction.DOWN) {
return asToDown();
}
if (direction == Direction.LEFT) {
return asToLeft();
}
if (direction == Direction.RIGHT) {
return asToRight();
}
throw new IllegalArgumentException();
}
}

View File

@ -152,9 +152,9 @@ public class GanttArrow implements UDrawable {
throw new IllegalArgumentException();
}
ug = ug.apply(new UStroke(1.5)).apply(
style.value(PName.LineColor).asColor(colorSet).bg());
ug.apply(new UTranslate(x2, y2)).draw(Arrows.asTo(atEnd));
ug = ug.apply(new UStroke(1.5)).apply(style.value(PName.LineColor).asColor(colorSet).bg());
final GArrows arrows = new GArrows();
ug.apply(new UTranslate(x2, y2)).draw(arrows.asTo(atEnd));
}

View File

@ -36,7 +36,6 @@
package net.sourceforge.plantuml.sequencediagram;
import net.sourceforge.plantuml.ISkinParam;
import net.sourceforge.plantuml.activitydiagram3.ftile.Arrows;
import net.sourceforge.plantuml.activitydiagram3.ftile.Snake;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.FontConfiguration;
@ -111,8 +110,9 @@ public class LinkAnchor {
final Display display = Display.getWithNewlines(message);
final TextBlock title = display.create(fontConfiguration, HorizontalAlignment.CENTER, skinParam);
final Snake snake = Snake.create(skinParam, Arrows.asToUp(), rainbow, Arrows.asToDown()).withLabel(title,
HorizontalAlignment.CENTER);
final Snake snake = Snake
.create(skinParam, skinParam.arrows().asToUp(), rainbow, skinParam.arrows().asToDown())
.withLabel(title, HorizontalAlignment.CENTER);
snake.addPoint(x, ymin + 2);
snake.addPoint(x, ymax - 2);

View File

@ -210,7 +210,7 @@ public class GroupingTile extends AbstractTile {
if (tile instanceof ElseTile) {
final ElseTile elseTile = (ElseTile) tile;
final double ypos = elseTile.getTimeHook().getValue() - getTimeHook().getValue() + MARGINY_MAGIC / 2;
blotter.addChange(ypos, elseTile.getBackColorGeneral());
blotter.addChange(ypos + 1, elseTile.getBackColorGeneral());
}
blotter.closeChanges();

View File

@ -81,7 +81,7 @@ public class Version {
}
public static int beta() {
final int beta = 5;
final int beta = 6;
return beta;
}