Arnaud Roques 2023-08-24 19:01:41 +02:00
parent a27ff9b7f2
commit 38c5765a99
8 changed files with 31 additions and 33 deletions

View File

@ -65,7 +65,7 @@ import net.sourceforge.plantuml.command.CommandExecutionResult;
import net.sourceforge.plantuml.core.ImageData;
import net.sourceforge.plantuml.core.UmlSource;
import net.sourceforge.plantuml.cucadiagram.GroupHierarchy;
import net.sourceforge.plantuml.cucadiagram.HideOrShow2;
import net.sourceforge.plantuml.cucadiagram.HideOrShow;
import net.sourceforge.plantuml.cucadiagram.ICucaDiagram;
import net.sourceforge.plantuml.cucadiagram.LinkConstraint;
import net.sourceforge.plantuml.cucadiagram.Magma;
@ -93,8 +93,8 @@ import net.sourceforge.plantuml.xmlsc.StateDiagramScxmlMaker;
public abstract class CucaDiagram extends UmlDiagram implements GroupHierarchy, PortionShower, ICucaDiagram {
private final List<HideOrShow2> hides2 = new ArrayList<>();
private final List<HideOrShow2> removed = new ArrayList<>();
private final List<HideOrShow> hides2 = new ArrayList<>();
private final List<HideOrShow> removed = new ArrayList<>();
protected final EntityFactory entityFactory = new EntityFactory(hides2, removed, this);
private List<Bag> stacks = new ArrayList<>();
@ -516,7 +516,7 @@ public abstract class CucaDiagram extends UmlDiagram implements GroupHierarchy,
return false;
boolean result = true;
for (HideOrShow cmd : hideOrShows)
for (EntityHideOrShow cmd : hideOrShows)
if (cmd.portion == portion && cmd.gender.contains(entity))
result = cmd.show;
@ -525,7 +525,7 @@ public abstract class CucaDiagram extends UmlDiagram implements GroupHierarchy,
public final void hideOrShow(EntityGender gender, EntityPortion portions, boolean show) {
for (EntityPortion portion : portions.asSet())
this.hideOrShows.add(new HideOrShow(gender, portion, show));
this.hideOrShows.add(new EntityHideOrShow(gender, portion, show));
}
@ -537,22 +537,22 @@ public abstract class CucaDiagram extends UmlDiagram implements GroupHierarchy,
}
public void hideOrShow2(String what, boolean show) {
this.hides2.add(new HideOrShow2(what, show));
this.hides2.add(new HideOrShow(what, show));
}
public void removeOrRestore(String what, boolean show) {
this.removed.add(new HideOrShow2(what, show));
this.removed.add(new HideOrShow(what, show));
}
private final List<HideOrShow> hideOrShows = new ArrayList<>();
private final List<EntityHideOrShow> hideOrShows = new ArrayList<>();
private final Set<VisibilityModifier> hides = new HashSet<>();
static class HideOrShow {
static class EntityHideOrShow {
private final EntityGender gender;
private final EntityPortion portion;
private final boolean show;
public HideOrShow(EntityGender gender, EntityPortion portion, boolean show) {
public EntityHideOrShow(EntityGender gender, EntityPortion portion, boolean show) {
this.gender = gender;
this.portion = portion;
this.show = show;

View File

@ -46,7 +46,7 @@ import net.sourceforge.plantuml.cucadiagram.Bodier;
import net.sourceforge.plantuml.cucadiagram.BodierJSon;
import net.sourceforge.plantuml.cucadiagram.BodierMap;
import net.sourceforge.plantuml.cucadiagram.BodyFactory;
import net.sourceforge.plantuml.cucadiagram.HideOrShow2;
import net.sourceforge.plantuml.cucadiagram.HideOrShow;
import net.sourceforge.plantuml.cucadiagram.ICucaDiagram;
import net.sourceforge.plantuml.plasma.Plasma;
import net.sourceforge.plantuml.plasma.Quark;
@ -64,12 +64,12 @@ public final class EntityFactory implements IEntityFactory {
private final Entity rootGroup;
private final List<HideOrShow2> hides2;
private final List<HideOrShow2> removed;
private final List<HideOrShow> hides2;
private final List<HideOrShow> removed;
final private ICucaDiagram diagram;
//
public EntityFactory(List<HideOrShow2> hides2, List<HideOrShow2> removed, ICucaDiagram diagram) {
public EntityFactory(List<HideOrShow> hides2, List<HideOrShow> removed, ICucaDiagram diagram) {
this.hides2 = hides2;
this.removed = removed;
this.diagram = diagram;
@ -84,7 +84,7 @@ public final class EntityFactory implements IEntityFactory {
return isHidden(other);
boolean hidden = false;
for (HideOrShow2 hide : hides2)
for (HideOrShow hide : hides2)
hidden = hide.apply(hidden, leaf);
return hidden;
@ -92,7 +92,7 @@ public final class EntityFactory implements IEntityFactory {
public boolean isRemoved(Stereotype stereotype) {
boolean result = false;
for (HideOrShow2 hide : removed)
for (HideOrShow hide : removed)
result = hide.apply(result, stereotype);
return result;
@ -104,7 +104,7 @@ public final class EntityFactory implements IEntityFactory {
return isRemoved((Entity) other);
boolean result = false;
for (HideOrShow2 hide : removed)
for (HideOrShow hide : removed)
result = hide.apply(result, leaf);
return result;
@ -133,7 +133,7 @@ public final class EntityFactory implements IEntityFactory {
public boolean isRemovedIgnoreUnlinked(Entity leaf) {
boolean result = false;
for (HideOrShow2 hide : removed)
for (HideOrShow hide : removed)
if (hide.isAboutUnlinked() == false)
result = hide.apply(result, leaf);

View File

@ -45,12 +45,13 @@ public enum LinkStrategy {
* We then retrieve tail/head in generated SVG to compute link decoration angle.
*
* Drawbacks: sometimes, GraphViz does NOT draw those decorations, which causes issues
* This is to be removed
*/
LEGACY,
LEGACY_toberemoved,
/*
* In simplier mode, there are no tail/head in GraphViz generated dot.
* The decoration angle is retrieve using Bezier data.
* The decoration angle is retrieved using Bezier data.
*
*/
SIMPLIER

View File

@ -162,6 +162,8 @@ public class InstructionIf extends WithNote implements Instruction, InstructionC
}
public boolean swithToElse2(LinkRendering whenElse, LinkRendering nextLinkRenderer) {
this.current.setSpecial(nextLinkRenderer);
if (elseBranch != null)
return false;
@ -177,7 +179,6 @@ public class InstructionIf extends WithNote implements Instruction, InstructionC
if (elseBranch != null)
return false;
// this.current.setInlinkRendering(nextLinkRenderer);
this.current.setSpecial(nextLinkRenderer);
this.current = new Branch(skinParam.getCurrentStyleBuilder(), swimlane, whenThen, test, color, inlabel);
this.thens.add(current);

View File

@ -39,7 +39,7 @@ import net.sourceforge.plantuml.abel.Entity;
import net.sourceforge.plantuml.stereo.Stereotag;
import net.sourceforge.plantuml.stereo.Stereotype;
public class HideOrShow2 {
public class HideOrShow {
private final String what;
private final boolean show;
@ -59,8 +59,8 @@ public class HideOrShow2 {
if (isAboutUnlinked())
return isApplyableUnlinked(leaf);
final String fullName = leaf.getName();
// System.err.println("fullName=" + fullName);
final String fullName = leaf.getQuark().getQualifiedName();
// System.err.println("isApplyable leaf=" + leaf + " fullName=" + fullName);
return match(fullName, what);
}
@ -112,7 +112,7 @@ public class HideOrShow2 {
return s.equals(pattern);
}
public HideOrShow2(String what, boolean show) {
public HideOrShow(String what, boolean show) {
this.what = what;
this.show = show;
}

View File

@ -60,9 +60,9 @@ public class CommandEndState extends SingleLineCommand2<StateDiagram> {
@Override
protected CommandExecutionResult executeArg(StateDiagram diagram, LineLocation location, RegexResult arg) {
final Entity currentPackage = diagram.getCurrentGroup();
if (currentPackage == null) {
if (currentPackage == null || currentPackage.isRoot())
return CommandExecutionResult.error("No inner state defined");
}
diagram.endGroup();
return CommandExecutionResult.ok();
}

View File

@ -683,7 +683,7 @@ public class SvekLine implements Moveable, Hideable, GuideLine {
if (link.getEntity2().getLeafType() == LeafType.LOLLIPOP_HALF)
svekNode2.addImpact(dotPath.getEndAngle());
if (getLinkStrategy() == LinkStrategy.LEGACY && extremity1 instanceof Extremity
if (getLinkStrategy() == LinkStrategy.LEGACY_toberemoved && extremity1 instanceof Extremity
&& extremity2 instanceof Extremity) {
final XPoint2D p1 = ((Extremity) extremity1).somePoint();
final XPoint2D p2 = ((Extremity) extremity2).somePoint();

View File

@ -1,14 +1,10 @@
package net.sourceforge.plantuml;
package net.sourceforge.plantuml.url;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import net.sourceforge.plantuml.url.Url;
import net.sourceforge.plantuml.url.UrlBuilder;
import net.sourceforge.plantuml.url.UrlMode;
class UrlBuilderTest {
@ParameterizedTest
@CsvSource(value = {