mirror of
https://github.com/octoleo/plantuml.git
synced 2025-04-07 02:31:51 +00:00
wip
This commit is contained in:
parent
471c71d5ae
commit
5599f8fc82
@ -49,7 +49,7 @@ import net.sourceforge.plantuml.core.Diagram;
|
|||||||
import net.sourceforge.plantuml.core.ImageData;
|
import net.sourceforge.plantuml.core.ImageData;
|
||||||
import net.sourceforge.plantuml.core.UmlSource;
|
import net.sourceforge.plantuml.core.UmlSource;
|
||||||
import net.sourceforge.plantuml.cucadiagram.Display;
|
import net.sourceforge.plantuml.cucadiagram.Display;
|
||||||
import net.sourceforge.plantuml.cucadiagram.DisplayPositionned;
|
import net.sourceforge.plantuml.cucadiagram.DisplayPositioned;
|
||||||
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
|
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
|
||||||
import net.sourceforge.plantuml.graphic.VerticalAlignment;
|
import net.sourceforge.plantuml.graphic.VerticalAlignment;
|
||||||
import net.sourceforge.plantuml.stats.StatsUtilsIncrement;
|
import net.sourceforge.plantuml.stats.StatsUtilsIncrement;
|
||||||
@ -128,11 +128,11 @@ public abstract class AbstractPSystem implements Diagram {
|
|||||||
this.splitPagesVertical = splitPagesVertical;
|
this.splitPagesVertical = splitPagesVertical;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DisplayPositionned getTitle() {
|
public DisplayPositioned getTitle() {
|
||||||
if (source == null) {
|
if (source == null) {
|
||||||
return DisplayPositionned.single(Display.empty(), HorizontalAlignment.CENTER, VerticalAlignment.TOP);
|
return DisplayPositioned.single(Display.empty(), HorizontalAlignment.CENTER, VerticalAlignment.TOP);
|
||||||
}
|
}
|
||||||
return DisplayPositionned.single(source.getTitle(), HorizontalAlignment.CENTER, VerticalAlignment.TOP);
|
return DisplayPositioned.single(source.getTitle(), HorizontalAlignment.CENTER, VerticalAlignment.TOP);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getWarningOrError() {
|
public String getWarningOrError() {
|
||||||
|
@ -36,16 +36,16 @@
|
|||||||
package net.sourceforge.plantuml;
|
package net.sourceforge.plantuml;
|
||||||
|
|
||||||
import net.sourceforge.plantuml.cucadiagram.Display;
|
import net.sourceforge.plantuml.cucadiagram.Display;
|
||||||
import net.sourceforge.plantuml.cucadiagram.DisplayPositionned;
|
import net.sourceforge.plantuml.cucadiagram.DisplayPositioned;
|
||||||
import net.sourceforge.plantuml.cucadiagram.DisplaySection;
|
import net.sourceforge.plantuml.cucadiagram.DisplaySection;
|
||||||
|
|
||||||
public interface Annotated {
|
public interface Annotated {
|
||||||
|
|
||||||
public DisplayPositionned getTitle();
|
public DisplayPositioned getTitle();
|
||||||
|
|
||||||
public DisplayPositionned getCaption();
|
public DisplayPositioned getCaption();
|
||||||
|
|
||||||
public DisplayPositionned getLegend();
|
public DisplayPositioned getLegend();
|
||||||
|
|
||||||
public DisplaySection getHeader();
|
public DisplaySection getHeader();
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ import java.awt.geom.Rectangle2D;
|
|||||||
|
|
||||||
import net.sourceforge.plantuml.activitydiagram3.ftile.EntityImageLegend;
|
import net.sourceforge.plantuml.activitydiagram3.ftile.EntityImageLegend;
|
||||||
import net.sourceforge.plantuml.cucadiagram.Display;
|
import net.sourceforge.plantuml.cucadiagram.Display;
|
||||||
import net.sourceforge.plantuml.cucadiagram.DisplayPositionned;
|
import net.sourceforge.plantuml.cucadiagram.DisplayPositioned;
|
||||||
import net.sourceforge.plantuml.cucadiagram.DisplaySection;
|
import net.sourceforge.plantuml.cucadiagram.DisplaySection;
|
||||||
import net.sourceforge.plantuml.graphic.FontConfiguration;
|
import net.sourceforge.plantuml.graphic.FontConfiguration;
|
||||||
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
|
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
|
||||||
@ -142,7 +142,7 @@ public class AnnotatedWorker {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private TextBlock addLegend(TextBlock original) {
|
private TextBlock addLegend(TextBlock original) {
|
||||||
final DisplayPositionned legend = annotated.getLegend();
|
final DisplayPositioned legend = annotated.getLegend();
|
||||||
if (legend.isNull()) {
|
if (legend.isNull()) {
|
||||||
return original;
|
return original;
|
||||||
}
|
}
|
||||||
@ -156,7 +156,7 @@ public class AnnotatedWorker {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private TextBlock addCaption(TextBlock original) {
|
private TextBlock addCaption(TextBlock original) {
|
||||||
final DisplayPositionned caption = annotated.getCaption();
|
final DisplayPositioned caption = annotated.getCaption();
|
||||||
if (caption.isNull()) {
|
if (caption.isNull()) {
|
||||||
return original;
|
return original;
|
||||||
}
|
}
|
||||||
@ -165,7 +165,7 @@ public class AnnotatedWorker {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public TextBlock getCaption() {
|
public TextBlock getCaption() {
|
||||||
final DisplayPositionned caption = annotated.getCaption();
|
final DisplayPositioned caption = annotated.getCaption();
|
||||||
if (caption.isNull()) {
|
if (caption.isNull()) {
|
||||||
return TextBlockUtils.empty(0, 0);
|
return TextBlockUtils.empty(0, 0);
|
||||||
}
|
}
|
||||||
@ -179,7 +179,7 @@ public class AnnotatedWorker {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private TextBlock addTitle(TextBlock original) {
|
private TextBlock addTitle(TextBlock original) {
|
||||||
final DisplayPositionned title = annotated.getTitle();
|
final DisplayPositioned title = annotated.getTitle();
|
||||||
if (title.isNull()) {
|
if (title.isNull()) {
|
||||||
return original;
|
return original;
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,7 @@ import net.sourceforge.plantuml.command.CommandExecutionResult;
|
|||||||
import net.sourceforge.plantuml.core.Diagram;
|
import net.sourceforge.plantuml.core.Diagram;
|
||||||
import net.sourceforge.plantuml.core.UmlSource;
|
import net.sourceforge.plantuml.core.UmlSource;
|
||||||
import net.sourceforge.plantuml.cucadiagram.Display;
|
import net.sourceforge.plantuml.cucadiagram.Display;
|
||||||
import net.sourceforge.plantuml.cucadiagram.DisplayPositionned;
|
import net.sourceforge.plantuml.cucadiagram.DisplayPositioned;
|
||||||
import net.sourceforge.plantuml.cucadiagram.DisplaySection;
|
import net.sourceforge.plantuml.cucadiagram.DisplaySection;
|
||||||
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
|
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
|
||||||
import net.sourceforge.plantuml.graphic.VerticalAlignment;
|
import net.sourceforge.plantuml.graphic.VerticalAlignment;
|
||||||
@ -63,10 +63,10 @@ public abstract class TitledDiagram extends AbstractPSystem implements Diagram,
|
|||||||
public static boolean FORCE_SMETANA = false;
|
public static boolean FORCE_SMETANA = false;
|
||||||
public static boolean FORCE_ELK = false;
|
public static boolean FORCE_ELK = false;
|
||||||
|
|
||||||
private DisplayPositionned title = DisplayPositionned.none(HorizontalAlignment.CENTER, VerticalAlignment.TOP);
|
private DisplayPositioned title = DisplayPositioned.none(HorizontalAlignment.CENTER, VerticalAlignment.TOP);
|
||||||
|
|
||||||
private DisplayPositionned caption = DisplayPositionned.none(HorizontalAlignment.CENTER, VerticalAlignment.BOTTOM);
|
private DisplayPositioned caption = DisplayPositioned.none(HorizontalAlignment.CENTER, VerticalAlignment.BOTTOM);
|
||||||
private DisplayPositionned legend = DisplayPositionned.none(HorizontalAlignment.CENTER, VerticalAlignment.BOTTOM);
|
private DisplayPositioned legend = DisplayPositioned.none(HorizontalAlignment.CENTER, VerticalAlignment.BOTTOM);
|
||||||
private final DisplaySection header = DisplaySection.none();
|
private final DisplaySection header = DisplaySection.none();
|
||||||
private final DisplaySection footer = DisplaySection.none();
|
private final DisplaySection footer = DisplaySection.none();
|
||||||
private Display mainFrame;
|
private Display mainFrame;
|
||||||
@ -164,7 +164,7 @@ public abstract class TitledDiagram extends AbstractPSystem implements Diagram,
|
|||||||
// return i;
|
// return i;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
final public void setTitle(DisplayPositionned title) {
|
final public void setTitle(DisplayPositioned title) {
|
||||||
if (title.isNull() || title.getDisplay().isWhite()) {
|
if (title.isNull() || title.getDisplay().isWhite()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -172,7 +172,7 @@ public abstract class TitledDiagram extends AbstractPSystem implements Diagram,
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
final public DisplayPositionned getTitle() {
|
final public DisplayPositioned getTitle() {
|
||||||
return title;
|
return title;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -180,11 +180,11 @@ public abstract class TitledDiagram extends AbstractPSystem implements Diagram,
|
|||||||
this.mainFrame = mainFrame;
|
this.mainFrame = mainFrame;
|
||||||
}
|
}
|
||||||
|
|
||||||
final public void setCaption(DisplayPositionned caption) {
|
final public void setCaption(DisplayPositioned caption) {
|
||||||
this.caption = caption;
|
this.caption = caption;
|
||||||
}
|
}
|
||||||
|
|
||||||
final public DisplayPositionned getCaption() {
|
final public DisplayPositioned getCaption() {
|
||||||
return caption;
|
return caption;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -196,11 +196,11 @@ public abstract class TitledDiagram extends AbstractPSystem implements Diagram,
|
|||||||
return footer;
|
return footer;
|
||||||
}
|
}
|
||||||
|
|
||||||
final public DisplayPositionned getLegend() {
|
final public DisplayPositioned getLegend() {
|
||||||
return legend;
|
return legend;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLegend(DisplayPositionned legend) {
|
public void setLegend(DisplayPositioned legend) {
|
||||||
this.legend = legend;
|
this.legend = legend;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,8 +46,13 @@ import net.sourceforge.plantuml.activitydiagram3.ftile.Ftile;
|
|||||||
import net.sourceforge.plantuml.activitydiagram3.ftile.FtileFactory;
|
import net.sourceforge.plantuml.activitydiagram3.ftile.FtileFactory;
|
||||||
import net.sourceforge.plantuml.activitydiagram3.ftile.Swimlane;
|
import net.sourceforge.plantuml.activitydiagram3.ftile.Swimlane;
|
||||||
import net.sourceforge.plantuml.activitydiagram3.ftile.vcompact.FtileWithNoteOpale;
|
import net.sourceforge.plantuml.activitydiagram3.ftile.vcompact.FtileWithNoteOpale;
|
||||||
|
import net.sourceforge.plantuml.activitydiagram3.gtile.Gtile;
|
||||||
|
import net.sourceforge.plantuml.activitydiagram3.gtile.GtileSplit;
|
||||||
|
import net.sourceforge.plantuml.activitydiagram3.gtile.Gtiles;
|
||||||
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
||||||
import net.sourceforge.plantuml.cucadiagram.Display;
|
import net.sourceforge.plantuml.cucadiagram.Display;
|
||||||
|
import net.sourceforge.plantuml.graphic.Rainbow;
|
||||||
|
import net.sourceforge.plantuml.graphic.StringBounder;
|
||||||
import net.sourceforge.plantuml.graphic.color.Colors;
|
import net.sourceforge.plantuml.graphic.color.Colors;
|
||||||
import net.sourceforge.plantuml.sequencediagram.NotePosition;
|
import net.sourceforge.plantuml.sequencediagram.NotePosition;
|
||||||
import net.sourceforge.plantuml.sequencediagram.NoteType;
|
import net.sourceforge.plantuml.sequencediagram.NoteType;
|
||||||
@ -64,6 +69,7 @@ public class InstructionFork extends WithNote implements Instruction {
|
|||||||
private String label;
|
private String label;
|
||||||
boolean finished = false;
|
boolean finished = false;
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean containsBreak() {
|
public boolean containsBreak() {
|
||||||
for (InstructionList fork : forks) {
|
for (InstructionList fork : forks) {
|
||||||
if (fork.containsBreak()) {
|
if (fork.containsBreak()) {
|
||||||
@ -86,10 +92,32 @@ public class InstructionFork extends WithNote implements Instruction {
|
|||||||
return forks.get(forks.size() - 1);
|
return forks.get(forks.size() - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public CommandExecutionResult add(Instruction ins) {
|
public CommandExecutionResult add(Instruction ins) {
|
||||||
return getLastList().add(ins);
|
return getLastList().add(ins);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Gtile createGtile(ISkinParam skinParam, StringBounder stringBounder) {
|
||||||
|
final List<Gtile> all = new ArrayList<>();
|
||||||
|
for (InstructionList list : forks) {
|
||||||
|
Gtile tmp = list.createGtile(skinParam, stringBounder);
|
||||||
|
tmp = Gtiles.withIncomingArrow(tmp, 20);
|
||||||
|
tmp = Gtiles.withOutgoingArrow(tmp, 20);
|
||||||
|
all.add(tmp);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new GtileSplit(all, swimlaneIn, getInLinkRenderingColor(skinParam).getColor());
|
||||||
|
}
|
||||||
|
|
||||||
|
private Rainbow getInLinkRenderingColor(ISkinParam skinParam) {
|
||||||
|
Rainbow color;
|
||||||
|
color = Rainbow.build(skinParam);
|
||||||
|
return color;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
public Ftile createFtile(FtileFactory factory) {
|
public Ftile createFtile(FtileFactory factory) {
|
||||||
final List<Ftile> all = new ArrayList<>();
|
final List<Ftile> all = new ArrayList<>();
|
||||||
for (InstructionList list : forks) {
|
for (InstructionList list : forks) {
|
||||||
@ -111,10 +139,12 @@ public class InstructionFork extends WithNote implements Instruction {
|
|||||||
this.forks.add(new InstructionList());
|
this.forks.add(new InstructionList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
final public boolean kill() {
|
final public boolean kill() {
|
||||||
return getLastList().kill();
|
return getLastList().kill();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public LinkRendering getInLinkRendering() {
|
public LinkRendering getInLinkRendering() {
|
||||||
return inlinkRendering;
|
return inlinkRendering;
|
||||||
}
|
}
|
||||||
@ -130,6 +160,7 @@ public class InstructionFork extends WithNote implements Instruction {
|
|||||||
return getLastList().addNote(note, position, type, colors, swimlaneNote);
|
return getLastList().addNote(note, position, type, colors, swimlaneNote);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Set<Swimlane> getSwimlanes() {
|
public Set<Swimlane> getSwimlanes() {
|
||||||
final Set<Swimlane> result = new HashSet<>(InstructionList.getSwimlanes2(forks));
|
final Set<Swimlane> result = new HashSet<>(InstructionList.getSwimlanes2(forks));
|
||||||
result.add(swimlaneIn);
|
result.add(swimlaneIn);
|
||||||
@ -137,10 +168,12 @@ public class InstructionFork extends WithNote implements Instruction {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Swimlane getSwimlaneIn() {
|
public Swimlane getSwimlaneIn() {
|
||||||
return swimlaneIn;
|
return swimlaneIn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Swimlane getSwimlaneOut() {
|
public Swimlane getSwimlaneOut() {
|
||||||
return swimlaneOut;
|
return swimlaneOut;
|
||||||
}
|
}
|
||||||
|
@ -51,8 +51,8 @@ import net.sourceforge.plantuml.activitydiagram3.ftile.Swimlane;
|
|||||||
import net.sourceforge.plantuml.activitydiagram3.ftile.WeldingPoint;
|
import net.sourceforge.plantuml.activitydiagram3.ftile.WeldingPoint;
|
||||||
import net.sourceforge.plantuml.activitydiagram3.ftile.vcompact.FtileWithNoteOpale;
|
import net.sourceforge.plantuml.activitydiagram3.ftile.vcompact.FtileWithNoteOpale;
|
||||||
import net.sourceforge.plantuml.activitydiagram3.gtile.Gtile;
|
import net.sourceforge.plantuml.activitydiagram3.gtile.Gtile;
|
||||||
import net.sourceforge.plantuml.activitydiagram3.gtile.GtileIfHexagon;
|
|
||||||
import net.sourceforge.plantuml.activitydiagram3.gtile.GtileIfAlone;
|
import net.sourceforge.plantuml.activitydiagram3.gtile.GtileIfAlone;
|
||||||
|
import net.sourceforge.plantuml.activitydiagram3.gtile.GtileIfHexagon;
|
||||||
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
||||||
import net.sourceforge.plantuml.cucadiagram.Display;
|
import net.sourceforge.plantuml.cucadiagram.Display;
|
||||||
import net.sourceforge.plantuml.graphic.StringBounder;
|
import net.sourceforge.plantuml.graphic.StringBounder;
|
||||||
|
@ -48,7 +48,6 @@ import net.sourceforge.plantuml.activitydiagram3.ftile.FtileKilled;
|
|||||||
import net.sourceforge.plantuml.activitydiagram3.ftile.Swimlane;
|
import net.sourceforge.plantuml.activitydiagram3.ftile.Swimlane;
|
||||||
import net.sourceforge.plantuml.activitydiagram3.ftile.Swimlanes;
|
import net.sourceforge.plantuml.activitydiagram3.ftile.Swimlanes;
|
||||||
import net.sourceforge.plantuml.activitydiagram3.gtile.Gtile;
|
import net.sourceforge.plantuml.activitydiagram3.gtile.Gtile;
|
||||||
import net.sourceforge.plantuml.activitydiagram3.gtile.GtileIfAlone;
|
|
||||||
import net.sourceforge.plantuml.activitydiagram3.gtile.GtileRepeat;
|
import net.sourceforge.plantuml.activitydiagram3.gtile.GtileRepeat;
|
||||||
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
||||||
import net.sourceforge.plantuml.cucadiagram.Display;
|
import net.sourceforge.plantuml.cucadiagram.Display;
|
||||||
|
@ -45,7 +45,6 @@ import net.sourceforge.plantuml.activitydiagram3.ftile.Ftile;
|
|||||||
import net.sourceforge.plantuml.activitydiagram3.ftile.FtileFactory;
|
import net.sourceforge.plantuml.activitydiagram3.ftile.FtileFactory;
|
||||||
import net.sourceforge.plantuml.activitydiagram3.ftile.Swimlane;
|
import net.sourceforge.plantuml.activitydiagram3.ftile.Swimlane;
|
||||||
import net.sourceforge.plantuml.activitydiagram3.gtile.Gtile;
|
import net.sourceforge.plantuml.activitydiagram3.gtile.Gtile;
|
||||||
import net.sourceforge.plantuml.activitydiagram3.gtile.GtileColumns;
|
|
||||||
import net.sourceforge.plantuml.activitydiagram3.gtile.GtileSplit;
|
import net.sourceforge.plantuml.activitydiagram3.gtile.GtileSplit;
|
||||||
import net.sourceforge.plantuml.activitydiagram3.gtile.Gtiles;
|
import net.sourceforge.plantuml.activitydiagram3.gtile.Gtiles;
|
||||||
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
||||||
@ -55,7 +54,6 @@ import net.sourceforge.plantuml.graphic.StringBounder;
|
|||||||
import net.sourceforge.plantuml.graphic.color.Colors;
|
import net.sourceforge.plantuml.graphic.color.Colors;
|
||||||
import net.sourceforge.plantuml.sequencediagram.NotePosition;
|
import net.sourceforge.plantuml.sequencediagram.NotePosition;
|
||||||
import net.sourceforge.plantuml.sequencediagram.NoteType;
|
import net.sourceforge.plantuml.sequencediagram.NoteType;
|
||||||
import net.sourceforge.plantuml.ugraphic.color.HColorUtils;
|
|
||||||
|
|
||||||
public class InstructionSplit extends AbstractInstruction implements Instruction {
|
public class InstructionSplit extends AbstractInstruction implements Instruction {
|
||||||
|
|
||||||
|
@ -46,8 +46,11 @@ import net.sourceforge.plantuml.ISkinParam;
|
|||||||
import net.sourceforge.plantuml.activitydiagram3.ftile.Ftile;
|
import net.sourceforge.plantuml.activitydiagram3.ftile.Ftile;
|
||||||
import net.sourceforge.plantuml.activitydiagram3.ftile.FtileFactory;
|
import net.sourceforge.plantuml.activitydiagram3.ftile.FtileFactory;
|
||||||
import net.sourceforge.plantuml.activitydiagram3.ftile.Swimlane;
|
import net.sourceforge.plantuml.activitydiagram3.ftile.Swimlane;
|
||||||
|
import net.sourceforge.plantuml.activitydiagram3.gtile.Gtile;
|
||||||
|
import net.sourceforge.plantuml.activitydiagram3.gtile.GtileIfHexagon;
|
||||||
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
||||||
import net.sourceforge.plantuml.cucadiagram.Display;
|
import net.sourceforge.plantuml.cucadiagram.Display;
|
||||||
|
import net.sourceforge.plantuml.graphic.StringBounder;
|
||||||
import net.sourceforge.plantuml.graphic.color.Colors;
|
import net.sourceforge.plantuml.graphic.color.Colors;
|
||||||
import net.sourceforge.plantuml.sequencediagram.NotePosition;
|
import net.sourceforge.plantuml.sequencediagram.NotePosition;
|
||||||
import net.sourceforge.plantuml.sequencediagram.NoteType;
|
import net.sourceforge.plantuml.sequencediagram.NoteType;
|
||||||
@ -55,7 +58,7 @@ import net.sourceforge.plantuml.ugraphic.color.HColor;
|
|||||||
|
|
||||||
public class InstructionSwitch extends WithNote implements Instruction, InstructionCollection {
|
public class InstructionSwitch extends WithNote implements Instruction, InstructionCollection {
|
||||||
|
|
||||||
private final List<Branch> branches = new ArrayList<>();
|
private final List<Branch> switches = new ArrayList<>();
|
||||||
private final ISkinParam skinParam;
|
private final ISkinParam skinParam;
|
||||||
|
|
||||||
private final Instruction parent;
|
private final Instruction parent;
|
||||||
@ -67,8 +70,9 @@ public class InstructionSwitch extends WithNote implements Instruction, Instruct
|
|||||||
|
|
||||||
private final Swimlane swimlane;
|
private final Swimlane swimlane;
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean containsBreak() {
|
public boolean containsBreak() {
|
||||||
for (Branch branch : branches) {
|
for (Branch branch : switches) {
|
||||||
if (branch.containsBreak()) {
|
if (branch.containsBreak()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -85,6 +89,7 @@ public class InstructionSwitch extends WithNote implements Instruction, Instruct
|
|||||||
this.swimlane = swimlane;
|
this.swimlane = swimlane;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public CommandExecutionResult add(Instruction ins) {
|
public CommandExecutionResult add(Instruction ins) {
|
||||||
if (current == null) {
|
if (current == null) {
|
||||||
return CommandExecutionResult.error("No 'case' in this switch");
|
return CommandExecutionResult.error("No 'case' in this switch");
|
||||||
@ -92,42 +97,63 @@ public class InstructionSwitch extends WithNote implements Instruction, Instruct
|
|||||||
return current.add(ins);
|
return current.add(ins);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Ftile createFtile(FtileFactory factory) {
|
@Override
|
||||||
for (Branch branch : branches) {
|
public Gtile createGtile(ISkinParam skinParam, StringBounder stringBounder) {
|
||||||
branch.updateFtile(factory);
|
for (Branch branch : switches)
|
||||||
|
branch.updateGtile(skinParam, stringBounder);
|
||||||
|
|
||||||
|
final List<Gtile> gtiles = new ArrayList<>();
|
||||||
|
final List<Branch> branches = new ArrayList<>();
|
||||||
|
for (Branch branch : switches) {
|
||||||
|
gtiles.add(branch.getGtile());
|
||||||
|
branches.add(branch);
|
||||||
}
|
}
|
||||||
return factory.createSwitch(swimlane, branches, afterEndwhile, topInlinkRendering, labelTest);
|
|
||||||
|
return new GtileIfHexagon(swimlane, gtiles, switches);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Ftile createFtile(FtileFactory factory) {
|
||||||
|
for (Branch branch : switches)
|
||||||
|
branch.updateFtile(factory);
|
||||||
|
|
||||||
|
return factory.createSwitch(swimlane, switches, afterEndwhile, topInlinkRendering, labelTest);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
final public boolean kill() {
|
final public boolean kill() {
|
||||||
return current.kill();
|
return current.kill();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public LinkRendering getInLinkRendering() {
|
public LinkRendering getInLinkRendering() {
|
||||||
return topInlinkRendering;
|
return topInlinkRendering;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Set<Swimlane> getSwimlanes() {
|
public Set<Swimlane> getSwimlanes() {
|
||||||
final Set<Swimlane> result = new HashSet<>();
|
final Set<Swimlane> result = new HashSet<>();
|
||||||
if (swimlane != null) {
|
if (swimlane != null) {
|
||||||
result.add(swimlane);
|
result.add(swimlane);
|
||||||
}
|
}
|
||||||
for (Branch branch : branches) {
|
for (Branch branch : switches) {
|
||||||
result.addAll(branch.getSwimlanes());
|
result.addAll(branch.getSwimlanes());
|
||||||
}
|
}
|
||||||
return Collections.unmodifiableSet(result);
|
return Collections.unmodifiableSet(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Swimlane getSwimlaneIn() {
|
public Swimlane getSwimlaneIn() {
|
||||||
return swimlane;
|
return swimlane;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Swimlane getSwimlaneOut() {
|
public Swimlane getSwimlaneOut() {
|
||||||
return swimlane;
|
return swimlane;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Instruction getLast() {
|
public Instruction getLast() {
|
||||||
return branches.get(branches.size() - 1).getLast();
|
return switches.get(switches.size() - 1).getLast();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean switchCase(Display labelCase, LinkRendering nextLinkRenderer) {
|
public boolean switchCase(Display labelCase, LinkRendering nextLinkRenderer) {
|
||||||
@ -136,7 +162,7 @@ public class InstructionSwitch extends WithNote implements Instruction, Instruct
|
|||||||
this.current = new Branch(skinParam.getCurrentStyleBuilder(), swimlane,
|
this.current = new Branch(skinParam.getCurrentStyleBuilder(), swimlane,
|
||||||
LinkRendering.none().withDisplay(labelCase), labelCase, null,
|
LinkRendering.none().withDisplay(labelCase), labelCase, null,
|
||||||
LinkRendering.none().withDisplay(labelCase));
|
LinkRendering.none().withDisplay(labelCase));
|
||||||
this.branches.add(this.current);
|
this.switches.add(this.current);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,9 +45,11 @@ import net.sourceforge.plantuml.activitydiagram3.ftile.FtileFactory;
|
|||||||
import net.sourceforge.plantuml.activitydiagram3.ftile.FtileKilled;
|
import net.sourceforge.plantuml.activitydiagram3.ftile.FtileKilled;
|
||||||
import net.sourceforge.plantuml.activitydiagram3.ftile.Swimlane;
|
import net.sourceforge.plantuml.activitydiagram3.ftile.Swimlane;
|
||||||
import net.sourceforge.plantuml.activitydiagram3.ftile.vcompact.FtileWithNoteOpale;
|
import net.sourceforge.plantuml.activitydiagram3.ftile.vcompact.FtileWithNoteOpale;
|
||||||
|
import net.sourceforge.plantuml.activitydiagram3.gtile.Gtile;
|
||||||
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
||||||
import net.sourceforge.plantuml.cucadiagram.Display;
|
import net.sourceforge.plantuml.cucadiagram.Display;
|
||||||
import net.sourceforge.plantuml.graphic.Rainbow;
|
import net.sourceforge.plantuml.graphic.Rainbow;
|
||||||
|
import net.sourceforge.plantuml.graphic.StringBounder;
|
||||||
import net.sourceforge.plantuml.graphic.color.Colors;
|
import net.sourceforge.plantuml.graphic.color.Colors;
|
||||||
import net.sourceforge.plantuml.sequencediagram.NotePosition;
|
import net.sourceforge.plantuml.sequencediagram.NotePosition;
|
||||||
import net.sourceforge.plantuml.sequencediagram.NoteType;
|
import net.sourceforge.plantuml.sequencediagram.NoteType;
|
||||||
@ -94,10 +96,17 @@ public class InstructionWhile extends WithNote implements Instruction, Instructi
|
|||||||
this.skinParam = skinParam;
|
this.skinParam = skinParam;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public CommandExecutionResult add(Instruction ins) {
|
public CommandExecutionResult add(Instruction ins) {
|
||||||
return repeatList.add(ins);
|
return repeatList.add(ins);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Gtile createGtile(ISkinParam skinParam, StringBounder stringBounder) {
|
||||||
|
return repeatList.createGtile(skinParam, stringBounder);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Ftile createFtile(FtileFactory factory) {
|
public Ftile createFtile(FtileFactory factory) {
|
||||||
final Ftile back = Display.isNull(backward) ? null
|
final Ftile back = Display.isNull(backward) ? null
|
||||||
: factory.activity(backward, swimlane, boxStyle, Colors.empty(), null);
|
: factory.activity(backward, swimlane, boxStyle, Colors.empty(), null);
|
||||||
@ -116,6 +125,7 @@ public class InstructionWhile extends WithNote implements Instruction, Instructi
|
|||||||
return parent;
|
return parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
final public boolean kill() {
|
final public boolean kill() {
|
||||||
if (testCalled) {
|
if (testCalled) {
|
||||||
this.killed = true;
|
this.killed = true;
|
||||||
@ -124,6 +134,7 @@ public class InstructionWhile extends WithNote implements Instruction, Instructi
|
|||||||
return repeatList.kill();
|
return repeatList.kill();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public LinkRendering getInLinkRendering() {
|
public LinkRendering getInLinkRendering() {
|
||||||
return nextLinkRenderer;
|
return nextLinkRenderer;
|
||||||
}
|
}
|
||||||
@ -145,18 +156,22 @@ public class InstructionWhile extends WithNote implements Instruction, Instructi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Set<Swimlane> getSwimlanes() {
|
public Set<Swimlane> getSwimlanes() {
|
||||||
return repeatList.getSwimlanes();
|
return repeatList.getSwimlanes();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Swimlane getSwimlaneIn() {
|
public Swimlane getSwimlaneIn() {
|
||||||
return parent.getSwimlaneIn();
|
return parent.getSwimlaneIn();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Swimlane getSwimlaneOut() {
|
public Swimlane getSwimlaneOut() {
|
||||||
return parent.getSwimlaneOut();
|
return parent.getSwimlaneOut();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Instruction getLast() {
|
public Instruction getLast() {
|
||||||
return repeatList.getLast();
|
return repeatList.getLast();
|
||||||
}
|
}
|
||||||
@ -165,6 +180,7 @@ public class InstructionWhile extends WithNote implements Instruction, Instructi
|
|||||||
this.specialOut = special;
|
this.specialOut = special;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean containsBreak() {
|
public boolean containsBreak() {
|
||||||
return repeatList.containsBreak();
|
return repeatList.containsBreak();
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,7 @@ import net.sourceforge.plantuml.command.regex.RegexLeaf;
|
|||||||
import net.sourceforge.plantuml.command.regex.RegexOr;
|
import net.sourceforge.plantuml.command.regex.RegexOr;
|
||||||
import net.sourceforge.plantuml.command.regex.RegexResult;
|
import net.sourceforge.plantuml.command.regex.RegexResult;
|
||||||
import net.sourceforge.plantuml.cucadiagram.Display;
|
import net.sourceforge.plantuml.cucadiagram.Display;
|
||||||
import net.sourceforge.plantuml.cucadiagram.DisplayPositionned;
|
import net.sourceforge.plantuml.cucadiagram.DisplayPositioned;
|
||||||
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
|
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
|
||||||
import net.sourceforge.plantuml.graphic.VerticalAlignment;
|
import net.sourceforge.plantuml.graphic.VerticalAlignment;
|
||||||
|
|
||||||
@ -67,7 +67,7 @@ public class CommandCaption extends SingleLineCommand2<TitledDiagram> {
|
|||||||
@Override
|
@Override
|
||||||
protected CommandExecutionResult executeArg(TitledDiagram diagram, LineLocation location, RegexResult arg) {
|
protected CommandExecutionResult executeArg(TitledDiagram diagram, LineLocation location, RegexResult arg) {
|
||||||
final Display s = Display.getWithNewlines(arg.getLazzy("DISPLAY", 0));
|
final Display s = Display.getWithNewlines(arg.getLazzy("DISPLAY", 0));
|
||||||
diagram.setCaption(DisplayPositionned.single(s, HorizontalAlignment.CENTER, VerticalAlignment.BOTTOM));
|
diagram.setCaption(DisplayPositioned.single(s, HorizontalAlignment.CENTER, VerticalAlignment.BOTTOM));
|
||||||
return CommandExecutionResult.ok();
|
return CommandExecutionResult.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ import net.sourceforge.plantuml.command.regex.RegexLeaf;
|
|||||||
import net.sourceforge.plantuml.command.regex.RegexOr;
|
import net.sourceforge.plantuml.command.regex.RegexOr;
|
||||||
import net.sourceforge.plantuml.command.regex.RegexResult;
|
import net.sourceforge.plantuml.command.regex.RegexResult;
|
||||||
import net.sourceforge.plantuml.cucadiagram.Display;
|
import net.sourceforge.plantuml.cucadiagram.Display;
|
||||||
import net.sourceforge.plantuml.cucadiagram.DisplayPositionned;
|
import net.sourceforge.plantuml.cucadiagram.DisplayPositioned;
|
||||||
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
|
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
|
||||||
import net.sourceforge.plantuml.graphic.VerticalAlignment;
|
import net.sourceforge.plantuml.graphic.VerticalAlignment;
|
||||||
|
|
||||||
@ -67,7 +67,7 @@ public class CommandLegend extends SingleLineCommand2<TitledDiagram> {
|
|||||||
@Override
|
@Override
|
||||||
protected CommandExecutionResult executeArg(TitledDiagram diagram, LineLocation location, RegexResult arg) {
|
protected CommandExecutionResult executeArg(TitledDiagram diagram, LineLocation location, RegexResult arg) {
|
||||||
final Display s = Display.getWithNewlines(arg.getLazzy("LEGEND", 0));
|
final Display s = Display.getWithNewlines(arg.getLazzy("LEGEND", 0));
|
||||||
diagram.setLegend(DisplayPositionned.single(s, HorizontalAlignment.CENTER, VerticalAlignment.BOTTOM));
|
diagram.setLegend(DisplayPositioned.single(s, HorizontalAlignment.CENTER, VerticalAlignment.BOTTOM));
|
||||||
return CommandExecutionResult.ok();
|
return CommandExecutionResult.ok();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ package net.sourceforge.plantuml.command;
|
|||||||
|
|
||||||
import net.sourceforge.plantuml.TitledDiagram;
|
import net.sourceforge.plantuml.TitledDiagram;
|
||||||
import net.sourceforge.plantuml.cucadiagram.Display;
|
import net.sourceforge.plantuml.cucadiagram.Display;
|
||||||
import net.sourceforge.plantuml.cucadiagram.DisplayPositionned;
|
import net.sourceforge.plantuml.cucadiagram.DisplayPositioned;
|
||||||
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
|
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
|
||||||
import net.sourceforge.plantuml.graphic.VerticalAlignment;
|
import net.sourceforge.plantuml.graphic.VerticalAlignment;
|
||||||
import net.sourceforge.plantuml.ugraphic.color.NoSuchColorException;
|
import net.sourceforge.plantuml.ugraphic.color.NoSuchColorException;
|
||||||
@ -58,7 +58,7 @@ public class CommandMultilinesCaption extends CommandMultilines<TitledDiagram> {
|
|||||||
lines = lines.removeEmptyColumns();
|
lines = lines.removeEmptyColumns();
|
||||||
final Display strings = lines.toDisplay();
|
final Display strings = lines.toDisplay();
|
||||||
if (strings.size() > 0) {
|
if (strings.size() > 0) {
|
||||||
diagram.setCaption(DisplayPositionned.single(strings.replaceBackslashT(), HorizontalAlignment.CENTER, VerticalAlignment.BOTTOM));
|
diagram.setCaption(DisplayPositioned.single(strings.replaceBackslashT(), HorizontalAlignment.CENTER, VerticalAlignment.BOTTOM));
|
||||||
return CommandExecutionResult.ok();
|
return CommandExecutionResult.ok();
|
||||||
}
|
}
|
||||||
return CommandExecutionResult.error("No caption defined");
|
return CommandExecutionResult.error("No caption defined");
|
||||||
|
@ -42,7 +42,7 @@ import net.sourceforge.plantuml.command.regex.RegexLeaf;
|
|||||||
import net.sourceforge.plantuml.command.regex.RegexOptional;
|
import net.sourceforge.plantuml.command.regex.RegexOptional;
|
||||||
import net.sourceforge.plantuml.command.regex.RegexResult;
|
import net.sourceforge.plantuml.command.regex.RegexResult;
|
||||||
import net.sourceforge.plantuml.cucadiagram.Display;
|
import net.sourceforge.plantuml.cucadiagram.Display;
|
||||||
import net.sourceforge.plantuml.cucadiagram.DisplayPositionned;
|
import net.sourceforge.plantuml.cucadiagram.DisplayPositioned;
|
||||||
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
|
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
|
||||||
import net.sourceforge.plantuml.graphic.VerticalAlignment;
|
import net.sourceforge.plantuml.graphic.VerticalAlignment;
|
||||||
import net.sourceforge.plantuml.ugraphic.color.NoSuchColorException;
|
import net.sourceforge.plantuml.ugraphic.color.NoSuchColorException;
|
||||||
@ -88,7 +88,7 @@ public class CommandMultilinesLegend extends CommandMultilines2<TitledDiagram> {
|
|||||||
if (alignment == null) {
|
if (alignment == null) {
|
||||||
alignment = HorizontalAlignment.CENTER;
|
alignment = HorizontalAlignment.CENTER;
|
||||||
}
|
}
|
||||||
diagram.setLegend(DisplayPositionned.single(strings.replaceBackslashT(), alignment, valignment));
|
diagram.setLegend(DisplayPositioned.single(strings.replaceBackslashT(), alignment, valignment));
|
||||||
return CommandExecutionResult.ok();
|
return CommandExecutionResult.ok();
|
||||||
}
|
}
|
||||||
return CommandExecutionResult.error("No legend defined");
|
return CommandExecutionResult.error("No legend defined");
|
||||||
|
@ -37,7 +37,7 @@ package net.sourceforge.plantuml.command;
|
|||||||
|
|
||||||
import net.sourceforge.plantuml.TitledDiagram;
|
import net.sourceforge.plantuml.TitledDiagram;
|
||||||
import net.sourceforge.plantuml.cucadiagram.Display;
|
import net.sourceforge.plantuml.cucadiagram.Display;
|
||||||
import net.sourceforge.plantuml.cucadiagram.DisplayPositionned;
|
import net.sourceforge.plantuml.cucadiagram.DisplayPositioned;
|
||||||
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
|
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
|
||||||
import net.sourceforge.plantuml.graphic.VerticalAlignment;
|
import net.sourceforge.plantuml.graphic.VerticalAlignment;
|
||||||
import net.sourceforge.plantuml.ugraphic.color.NoSuchColorException;
|
import net.sourceforge.plantuml.ugraphic.color.NoSuchColorException;
|
||||||
@ -58,7 +58,7 @@ public class CommandMultilinesTitle extends CommandMultilines<TitledDiagram> {
|
|||||||
lines = lines.removeEmptyColumns();
|
lines = lines.removeEmptyColumns();
|
||||||
final Display strings = lines.toDisplay();
|
final Display strings = lines.toDisplay();
|
||||||
if (strings.size() > 0) {
|
if (strings.size() > 0) {
|
||||||
diagram.setTitle(DisplayPositionned.single(strings.replaceBackslashT(), HorizontalAlignment.CENTER, VerticalAlignment.TOP));
|
diagram.setTitle(DisplayPositioned.single(strings.replaceBackslashT(), HorizontalAlignment.CENTER, VerticalAlignment.TOP));
|
||||||
return CommandExecutionResult.ok();
|
return CommandExecutionResult.ok();
|
||||||
}
|
}
|
||||||
return CommandExecutionResult.error("No title defined");
|
return CommandExecutionResult.error("No title defined");
|
||||||
|
@ -43,7 +43,7 @@ import net.sourceforge.plantuml.command.regex.RegexLeaf;
|
|||||||
import net.sourceforge.plantuml.command.regex.RegexOr;
|
import net.sourceforge.plantuml.command.regex.RegexOr;
|
||||||
import net.sourceforge.plantuml.command.regex.RegexResult;
|
import net.sourceforge.plantuml.command.regex.RegexResult;
|
||||||
import net.sourceforge.plantuml.cucadiagram.Display;
|
import net.sourceforge.plantuml.cucadiagram.Display;
|
||||||
import net.sourceforge.plantuml.cucadiagram.DisplayPositionned;
|
import net.sourceforge.plantuml.cucadiagram.DisplayPositioned;
|
||||||
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
|
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
|
||||||
import net.sourceforge.plantuml.graphic.VerticalAlignment;
|
import net.sourceforge.plantuml.graphic.VerticalAlignment;
|
||||||
|
|
||||||
@ -67,7 +67,7 @@ public class CommandTitle extends SingleLineCommand2<TitledDiagram> {
|
|||||||
@Override
|
@Override
|
||||||
protected CommandExecutionResult executeArg(TitledDiagram diagram, LineLocation location, RegexResult arg) {
|
protected CommandExecutionResult executeArg(TitledDiagram diagram, LineLocation location, RegexResult arg) {
|
||||||
final Display s = Display.getWithNewlines(arg.getLazzy("TITLE", 0));
|
final Display s = Display.getWithNewlines(arg.getLazzy("TITLE", 0));
|
||||||
diagram.setTitle(DisplayPositionned.single(s, HorizontalAlignment.CENTER, VerticalAlignment.TOP));
|
diagram.setTitle(DisplayPositioned.single(s, HorizontalAlignment.CENTER, VerticalAlignment.TOP));
|
||||||
return CommandExecutionResult.ok();
|
return CommandExecutionResult.ok();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -149,9 +149,9 @@ final public class UmlSource {
|
|||||||
return new IteratorCounter2Impl(source);
|
return new IteratorCounter2Impl(source);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Iterator<StringLocated> iteratorRaw() {
|
// public Iterator<StringLocated> iteratorRaw() {
|
||||||
return Collections.unmodifiableCollection(rawSource).iterator();
|
// return Collections.unmodifiableCollection(rawSource).iterator();
|
||||||
}
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the source as a single String with <code>\n</code> as line separator.
|
* Return the source as a single String with <code>\n</code> as line separator.
|
||||||
|
@ -38,26 +38,26 @@ package net.sourceforge.plantuml.cucadiagram;
|
|||||||
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
|
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
|
||||||
import net.sourceforge.plantuml.graphic.VerticalAlignment;
|
import net.sourceforge.plantuml.graphic.VerticalAlignment;
|
||||||
|
|
||||||
public class DisplayPositionned {
|
public class DisplayPositioned {
|
||||||
|
|
||||||
private final Display display;
|
private final Display display;
|
||||||
private final HorizontalAlignment horizontalAlignment;
|
private final HorizontalAlignment horizontalAlignment;
|
||||||
private final VerticalAlignment verticalAlignment;
|
private final VerticalAlignment verticalAlignment;
|
||||||
|
|
||||||
private DisplayPositionned(Display display, HorizontalAlignment horizontalAlignment,
|
private DisplayPositioned(Display display, HorizontalAlignment horizontalAlignment,
|
||||||
VerticalAlignment verticalAlignment) {
|
VerticalAlignment verticalAlignment) {
|
||||||
this.display = display;
|
this.display = display;
|
||||||
this.horizontalAlignment = horizontalAlignment;
|
this.horizontalAlignment = horizontalAlignment;
|
||||||
this.verticalAlignment = verticalAlignment;
|
this.verticalAlignment = verticalAlignment;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DisplayPositionned single(Display display, HorizontalAlignment horizontalAlignment,
|
public static DisplayPositioned single(Display display, HorizontalAlignment horizontalAlignment,
|
||||||
VerticalAlignment verticalAlignment) {
|
VerticalAlignment verticalAlignment) {
|
||||||
return new DisplayPositionned(display, horizontalAlignment, verticalAlignment);
|
return new DisplayPositioned(display, horizontalAlignment, verticalAlignment);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DisplayPositionned none(HorizontalAlignment horizontalAlignment, VerticalAlignment verticalAlignment) {
|
public static DisplayPositioned none(HorizontalAlignment horizontalAlignment, VerticalAlignment verticalAlignment) {
|
||||||
return new DisplayPositionned(Display.NULL, horizontalAlignment, verticalAlignment);
|
return new DisplayPositioned(Display.NULL, horizontalAlignment, verticalAlignment);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final Display getDisplay() {
|
public final Display getDisplay() {
|
@ -299,12 +299,12 @@ public class GroupRoot implements IGroup {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setLegend(DisplayPositionned legend) {
|
public void setLegend(DisplayPositioned legend) {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DisplayPositionned getLegend() {
|
public DisplayPositioned getLegend() {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,8 +71,8 @@ public interface IGroup extends IEntity {
|
|||||||
|
|
||||||
public void setConcurrentSeparator(char separator);
|
public void setConcurrentSeparator(char separator);
|
||||||
|
|
||||||
public void setLegend(DisplayPositionned legend);
|
public void setLegend(DisplayPositioned legend);
|
||||||
|
|
||||||
public DisplayPositionned getLegend();
|
public DisplayPositioned getLegend();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -56,7 +56,7 @@ import net.sourceforge.plantuml.Url;
|
|||||||
import net.sourceforge.plantuml.cucadiagram.Bodier;
|
import net.sourceforge.plantuml.cucadiagram.Bodier;
|
||||||
import net.sourceforge.plantuml.cucadiagram.Code;
|
import net.sourceforge.plantuml.cucadiagram.Code;
|
||||||
import net.sourceforge.plantuml.cucadiagram.Display;
|
import net.sourceforge.plantuml.cucadiagram.Display;
|
||||||
import net.sourceforge.plantuml.cucadiagram.DisplayPositionned;
|
import net.sourceforge.plantuml.cucadiagram.DisplayPositioned;
|
||||||
import net.sourceforge.plantuml.cucadiagram.EntityPosition;
|
import net.sourceforge.plantuml.cucadiagram.EntityPosition;
|
||||||
import net.sourceforge.plantuml.cucadiagram.EntityUtils;
|
import net.sourceforge.plantuml.cucadiagram.EntityUtils;
|
||||||
import net.sourceforge.plantuml.cucadiagram.GroupRoot;
|
import net.sourceforge.plantuml.cucadiagram.GroupRoot;
|
||||||
@ -95,7 +95,7 @@ final public class EntityImpl implements ILeaf, IGroup {
|
|||||||
private final Bodier bodier;
|
private final Bodier bodier;
|
||||||
private final String uid = StringUtils.getUid("cl", UniqueSequence.getValue());
|
private final String uid = StringUtils.getUid("cl", UniqueSequence.getValue());
|
||||||
private Display display = Display.empty();
|
private Display display = Display.empty();
|
||||||
private DisplayPositionned legend = null;
|
private DisplayPositioned legend = null;
|
||||||
|
|
||||||
private LeafType leafType;
|
private LeafType leafType;
|
||||||
private Stereotype stereotype;
|
private Stereotype stereotype;
|
||||||
@ -749,12 +749,12 @@ final public class EntityImpl implements ILeaf, IGroup {
|
|||||||
return visibility;
|
return visibility;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLegend(DisplayPositionned legend) {
|
public void setLegend(DisplayPositioned legend) {
|
||||||
checkGroup();
|
checkGroup();
|
||||||
this.legend = legend;
|
this.legend = legend;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DisplayPositionned getLegend() {
|
public DisplayPositioned getLegend() {
|
||||||
return legend;
|
return legend;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,9 +88,7 @@ public class JsonDiagram extends TitledDiagram {
|
|||||||
protected ImageData exportDiagramNow(OutputStream os, int index, FileFormatOption fileFormatOption)
|
protected ImageData exportDiagramNow(OutputStream os, int index, FileFormatOption fileFormatOption)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
|
|
||||||
return createImageBuilder(fileFormatOption)
|
return createImageBuilder(fileFormatOption).drawable(getTextBlock()).write(os);
|
||||||
.drawable(getTextBlock())
|
|
||||||
.write(os);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void drawInternal(UGraphic ug) {
|
private void drawInternal(UGraphic ug) {
|
||||||
@ -122,7 +120,7 @@ public class JsonDiagram extends TitledDiagram {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Dimension2D calculateDimension(StringBounder stringBounder) {
|
public Dimension2D calculateDimension(StringBounder stringBounder) {
|
||||||
return null;
|
return TextBlockUtils.getMinMax(getTextBlock(), stringBounder, true).getDimension();
|
||||||
}
|
}
|
||||||
|
|
||||||
public HColor getBackcolor() {
|
public HColor getBackcolor() {
|
||||||
|
@ -63,7 +63,7 @@ public class JsonDiagramFactory extends PSystemAbstractFactory {
|
|||||||
JsonValue json;
|
JsonValue json;
|
||||||
try {
|
try {
|
||||||
final StringBuilder sb = new StringBuilder();
|
final StringBuilder sb = new StringBuilder();
|
||||||
styleExtractor = new StyleExtractor(source.iteratorRaw(), source.iterator2());
|
styleExtractor = new StyleExtractor(source.iterator2());
|
||||||
final Iterator<String> it = styleExtractor.getIterator();
|
final Iterator<String> it = styleExtractor.getIterator();
|
||||||
it.next();
|
it.next();
|
||||||
while (true) {
|
while (true) {
|
||||||
|
@ -50,33 +50,32 @@ public class StyleExtractor {
|
|||||||
|
|
||||||
private final List<String> list = new ArrayList<>();
|
private final List<String> list = new ArrayList<>();
|
||||||
private final List<StringLocated> style = new ArrayList<>();
|
private final List<StringLocated> style = new ArrayList<>();
|
||||||
|
private String title = null;
|
||||||
|
|
||||||
public StyleExtractor(Iterator<StringLocated> dataRaw, Iterator<StringLocated> data) {
|
public StyleExtractor(Iterator<StringLocated> data) {
|
||||||
while (dataRaw.hasNext()) {
|
while (data.hasNext()) {
|
||||||
StringLocated lineRaw = dataRaw.next();
|
StringLocated line = data.next();
|
||||||
if (startStyle(lineRaw)) {
|
if (startStyle(line)) {
|
||||||
while (dataRaw.hasNext()) {
|
|
||||||
style.add(lineRaw);
|
|
||||||
if (endStyle(lineRaw))
|
|
||||||
break;
|
|
||||||
lineRaw = dataRaw.next();
|
|
||||||
}
|
|
||||||
} else if (lineRaw.getString().trim().startsWith("!theme ")) {
|
|
||||||
while (data.hasNext()) {
|
while (data.hasNext()) {
|
||||||
StringLocated line = data.next();
|
style.add(line);
|
||||||
if (startStyle(line))
|
if (endStyle(line))
|
||||||
while (data.hasNext()) {
|
break;
|
||||||
style.add(line);
|
line = data.next();
|
||||||
if (endStyle(line))
|
}
|
||||||
break;
|
} else if (line.getString().trim().startsWith("title ")) {
|
||||||
line = data.next();
|
this.title = line.getString().trim().substring("title ".length()).trim();
|
||||||
}
|
} else if (line.getString().trim().startsWith("skinparam ")) {
|
||||||
|
if (line.getString().trim().contains("{")) {
|
||||||
|
while (data.hasNext()) {
|
||||||
|
if (line.getString().trim().equals("}"))
|
||||||
|
break;
|
||||||
|
line = data.next();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
list.add(lineRaw.getString());
|
list.add(line.getString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean startStyle(StringLocated line) {
|
private boolean startStyle(StringLocated line) {
|
||||||
@ -101,4 +100,8 @@ public class StyleExtractor {
|
|||||||
return list.iterator();
|
return list.iterator();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getTitle() {
|
||||||
|
return title;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ import net.sourceforge.plantuml.command.CommandExecutionResult;
|
|||||||
import net.sourceforge.plantuml.core.UmlSource;
|
import net.sourceforge.plantuml.core.UmlSource;
|
||||||
import net.sourceforge.plantuml.cucadiagram.Code;
|
import net.sourceforge.plantuml.cucadiagram.Code;
|
||||||
import net.sourceforge.plantuml.cucadiagram.Display;
|
import net.sourceforge.plantuml.cucadiagram.Display;
|
||||||
import net.sourceforge.plantuml.cucadiagram.DisplayPositionned;
|
import net.sourceforge.plantuml.cucadiagram.DisplayPositioned;
|
||||||
import net.sourceforge.plantuml.cucadiagram.GroupRoot;
|
import net.sourceforge.plantuml.cucadiagram.GroupRoot;
|
||||||
import net.sourceforge.plantuml.cucadiagram.IEntity;
|
import net.sourceforge.plantuml.cucadiagram.IEntity;
|
||||||
import net.sourceforge.plantuml.cucadiagram.IGroup;
|
import net.sourceforge.plantuml.cucadiagram.IGroup;
|
||||||
@ -360,7 +360,7 @@ public abstract class AbstractClassOrObjectDiagram extends AbstractEntityDiagram
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setLegend(DisplayPositionned legend) {
|
public void setLegend(DisplayPositioned legend) {
|
||||||
|
|
||||||
final IGroup currentGroup = this.getCurrentGroup();
|
final IGroup currentGroup = this.getCurrentGroup();
|
||||||
|
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
package net.sourceforge.plantuml.svek;
|
package net.sourceforge.plantuml.svek;
|
||||||
|
|
||||||
import java.awt.geom.Dimension2D;
|
import java.awt.geom.Dimension2D;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
import net.sourceforge.plantuml.Dimension2DDouble;
|
import net.sourceforge.plantuml.Dimension2DDouble;
|
||||||
import net.sourceforge.plantuml.graphic.AbstractTextBlock;
|
import net.sourceforge.plantuml.graphic.AbstractTextBlock;
|
||||||
@ -82,7 +83,7 @@ public class DecorateEntityImage extends AbstractTextBlock implements TextBlockB
|
|||||||
|
|
||||||
private DecorateEntityImage(TextBlock original, TextBlock text1, HorizontalAlignment horizontal1, TextBlock text2,
|
private DecorateEntityImage(TextBlock original, TextBlock text1, HorizontalAlignment horizontal1, TextBlock text2,
|
||||||
HorizontalAlignment horizontal2) {
|
HorizontalAlignment horizontal2) {
|
||||||
this.original = original;
|
this.original = Objects.requireNonNull(original);
|
||||||
this.horizontal1 = horizontal1;
|
this.horizontal1 = horizontal1;
|
||||||
this.text1 = text1;
|
this.text1 = text1;
|
||||||
this.horizontal2 = horizontal2;
|
this.horizontal2 = horizontal2;
|
||||||
@ -142,8 +143,9 @@ public class DecorateEntityImage extends AbstractTextBlock implements TextBlockB
|
|||||||
|
|
||||||
public Dimension2D calculateDimension(StringBounder stringBounder) {
|
public Dimension2D calculateDimension(StringBounder stringBounder) {
|
||||||
final Dimension2D dimOriginal = original.calculateDimension(stringBounder);
|
final Dimension2D dimOriginal = original.calculateDimension(stringBounder);
|
||||||
final Dimension2D dimText = Dimension2DDouble.mergeTB(getTextDim(text1, stringBounder),
|
final Dimension2D dim1 = getTextDim(text1, stringBounder);
|
||||||
getTextDim(text2, stringBounder));
|
final Dimension2D dim2 = getTextDim(text2, stringBounder);
|
||||||
|
final Dimension2D dimText = Dimension2DDouble.mergeTB(dim1, dim2);
|
||||||
return Dimension2DDouble.mergeTB(dimOriginal, dimText);
|
return Dimension2DDouble.mergeTB(dimOriginal, dimText);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,7 +67,7 @@ import net.sourceforge.plantuml.UseStyle;
|
|||||||
import net.sourceforge.plantuml.activitydiagram3.ftile.EntityImageLegend;
|
import net.sourceforge.plantuml.activitydiagram3.ftile.EntityImageLegend;
|
||||||
import net.sourceforge.plantuml.core.UmlSource;
|
import net.sourceforge.plantuml.core.UmlSource;
|
||||||
import net.sourceforge.plantuml.cucadiagram.Display;
|
import net.sourceforge.plantuml.cucadiagram.Display;
|
||||||
import net.sourceforge.plantuml.cucadiagram.DisplayPositionned;
|
import net.sourceforge.plantuml.cucadiagram.DisplayPositioned;
|
||||||
import net.sourceforge.plantuml.cucadiagram.EntityPortion;
|
import net.sourceforge.plantuml.cucadiagram.EntityPortion;
|
||||||
import net.sourceforge.plantuml.cucadiagram.EntityPosition;
|
import net.sourceforge.plantuml.cucadiagram.EntityPosition;
|
||||||
import net.sourceforge.plantuml.cucadiagram.GroupRoot;
|
import net.sourceforge.plantuml.cucadiagram.GroupRoot;
|
||||||
@ -715,7 +715,7 @@ public final class GeneralImageBuilder {
|
|||||||
return label.create(fontConfiguration, alignment, dotData.getSkinParam());
|
return label.create(fontConfiguration, alignment, dotData.getSkinParam());
|
||||||
}
|
}
|
||||||
|
|
||||||
private TextBlock addLegend(TextBlock original, DisplayPositionned legend) {
|
private TextBlock addLegend(TextBlock original, DisplayPositioned legend) {
|
||||||
if (legend == null || legend.isNull()) {
|
if (legend == null || legend.isNull()) {
|
||||||
return original;
|
return original;
|
||||||
}
|
}
|
||||||
@ -725,7 +725,7 @@ public final class GeneralImageBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private TextBlock getStereoBlock(IGroup g) {
|
private TextBlock getStereoBlock(IGroup g) {
|
||||||
final DisplayPositionned legend = g.getLegend();
|
final DisplayPositioned legend = g.getLegend();
|
||||||
return addLegend(getStereoBlockWithoutLegend(g), legend);
|
return addLegend(getStereoBlockWithoutLegend(g), legend);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ import net.sourceforge.plantuml.Url;
|
|||||||
import net.sourceforge.plantuml.UseStyle;
|
import net.sourceforge.plantuml.UseStyle;
|
||||||
import net.sourceforge.plantuml.activitydiagram3.ftile.EntityImageLegend;
|
import net.sourceforge.plantuml.activitydiagram3.ftile.EntityImageLegend;
|
||||||
import net.sourceforge.plantuml.cucadiagram.Display;
|
import net.sourceforge.plantuml.cucadiagram.Display;
|
||||||
import net.sourceforge.plantuml.cucadiagram.DisplayPositionned;
|
import net.sourceforge.plantuml.cucadiagram.DisplayPositioned;
|
||||||
import net.sourceforge.plantuml.cucadiagram.EntityPortion;
|
import net.sourceforge.plantuml.cucadiagram.EntityPortion;
|
||||||
import net.sourceforge.plantuml.cucadiagram.ILeaf;
|
import net.sourceforge.plantuml.cucadiagram.ILeaf;
|
||||||
import net.sourceforge.plantuml.cucadiagram.PortionShower;
|
import net.sourceforge.plantuml.cucadiagram.PortionShower;
|
||||||
@ -137,7 +137,7 @@ public class EntityImageEmptyPackage extends AbstractEntityImage {
|
|||||||
|
|
||||||
this.desc = entity.getDisplay().create(titleFontConfiguration, titleHorizontalAlignment, skinParam);
|
this.desc = entity.getDisplay().create(titleFontConfiguration, titleHorizontalAlignment, skinParam);
|
||||||
|
|
||||||
final DisplayPositionned legend = ((EntityImpl) entity).getLegend();
|
final DisplayPositioned legend = ((EntityImpl) entity).getLegend();
|
||||||
if (legend != null) {
|
if (legend != null) {
|
||||||
final TextBlock legendBlock = EntityImageLegend.create(legend.getDisplay(), skinParam);
|
final TextBlock legendBlock = EntityImageLegend.create(legend.getDisplay(), skinParam);
|
||||||
stereoBlock = legendBlock;
|
stereoBlock = legendBlock;
|
||||||
|
@ -86,6 +86,7 @@ import net.sourceforge.plantuml.tim.iterator.CodeIteratorWhile;
|
|||||||
import net.sourceforge.plantuml.tim.stdlib.AlwaysFalse;
|
import net.sourceforge.plantuml.tim.stdlib.AlwaysFalse;
|
||||||
import net.sourceforge.plantuml.tim.stdlib.AlwaysTrue;
|
import net.sourceforge.plantuml.tim.stdlib.AlwaysTrue;
|
||||||
import net.sourceforge.plantuml.tim.stdlib.CallUserFunction;
|
import net.sourceforge.plantuml.tim.stdlib.CallUserFunction;
|
||||||
|
import net.sourceforge.plantuml.tim.stdlib.Chr;
|
||||||
import net.sourceforge.plantuml.tim.stdlib.Darken;
|
import net.sourceforge.plantuml.tim.stdlib.Darken;
|
||||||
import net.sourceforge.plantuml.tim.stdlib.DateFunction;
|
import net.sourceforge.plantuml.tim.stdlib.DateFunction;
|
||||||
import net.sourceforge.plantuml.tim.stdlib.Dec2hex;
|
import net.sourceforge.plantuml.tim.stdlib.Dec2hex;
|
||||||
@ -112,6 +113,7 @@ import net.sourceforge.plantuml.tim.stdlib.RetrieveProcedure;
|
|||||||
import net.sourceforge.plantuml.tim.stdlib.ReverseColor;
|
import net.sourceforge.plantuml.tim.stdlib.ReverseColor;
|
||||||
import net.sourceforge.plantuml.tim.stdlib.ReverseHsluvColor;
|
import net.sourceforge.plantuml.tim.stdlib.ReverseHsluvColor;
|
||||||
import net.sourceforge.plantuml.tim.stdlib.SetVariableValue;
|
import net.sourceforge.plantuml.tim.stdlib.SetVariableValue;
|
||||||
|
import net.sourceforge.plantuml.tim.stdlib.Size;
|
||||||
import net.sourceforge.plantuml.tim.stdlib.StringFunction;
|
import net.sourceforge.plantuml.tim.stdlib.StringFunction;
|
||||||
import net.sourceforge.plantuml.tim.stdlib.Strlen;
|
import net.sourceforge.plantuml.tim.stdlib.Strlen;
|
||||||
import net.sourceforge.plantuml.tim.stdlib.Strpos;
|
import net.sourceforge.plantuml.tim.stdlib.Strpos;
|
||||||
@ -175,6 +177,8 @@ public class TContext {
|
|||||||
functionsSet.addFunction(new Hex2dec());
|
functionsSet.addFunction(new Hex2dec());
|
||||||
functionsSet.addFunction(new Dec2hex());
|
functionsSet.addFunction(new Dec2hex());
|
||||||
functionsSet.addFunction(new HslColor());
|
functionsSet.addFunction(new HslColor());
|
||||||
|
functionsSet.addFunction(new Chr());
|
||||||
|
functionsSet.addFunction(new Size());
|
||||||
// %standard_exists_function
|
// %standard_exists_function
|
||||||
// %str_replace
|
// %str_replace
|
||||||
// !exit
|
// !exit
|
||||||
|
@ -38,7 +38,7 @@ import java.util.Objects;
|
|||||||
|
|
||||||
import net.sourceforge.plantuml.json.JsonValue;
|
import net.sourceforge.plantuml.json.JsonValue;
|
||||||
|
|
||||||
public class TValue {
|
public final class TValue {
|
||||||
|
|
||||||
private final int intValue;
|
private final int intValue;
|
||||||
private final String stringValue;
|
private final String stringValue;
|
||||||
@ -142,6 +142,10 @@ public class TValue {
|
|||||||
return this.jsonValue != null;
|
return this.jsonValue != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isString() {
|
||||||
|
return this.stringValue != null;
|
||||||
|
}
|
||||||
|
|
||||||
public Token toToken() {
|
public Token toToken() {
|
||||||
if (isNumber()) {
|
if (isNumber()) {
|
||||||
return new Token(toString(), TokenType.NUMBER, null);
|
return new Token(toString(), TokenType.NUMBER, null);
|
||||||
|
68
src/net/sourceforge/plantuml/tim/stdlib/Chr.java
Normal file
68
src/net/sourceforge/plantuml/tim/stdlib/Chr.java
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
/* ========================================================================
|
||||||
|
* PlantUML : a free UML diagram generator
|
||||||
|
* ========================================================================
|
||||||
|
*
|
||||||
|
* (C) Copyright 2009-2020, 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.tim.stdlib;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import net.sourceforge.plantuml.LineLocation;
|
||||||
|
import net.sourceforge.plantuml.tim.EaterException;
|
||||||
|
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
|
||||||
|
import net.sourceforge.plantuml.tim.TContext;
|
||||||
|
import net.sourceforge.plantuml.tim.TFunctionSignature;
|
||||||
|
import net.sourceforge.plantuml.tim.TMemory;
|
||||||
|
import net.sourceforge.plantuml.tim.expression.TValue;
|
||||||
|
|
||||||
|
public class Chr extends SimpleReturnFunction {
|
||||||
|
|
||||||
|
public TFunctionSignature getSignature() {
|
||||||
|
return new TFunctionSignature("%chr", 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean canCover(int nbArg, Set<String> namedArgument) {
|
||||||
|
return nbArg == 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List<TValue> values,
|
||||||
|
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
|
||||||
|
try {
|
||||||
|
final char value = (char) values.get(0).toInt();
|
||||||
|
return TValue.fromString("" + value);
|
||||||
|
} catch (Throwable t) {
|
||||||
|
return TValue.fromString("\0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
81
src/net/sourceforge/plantuml/tim/stdlib/Size.java
Normal file
81
src/net/sourceforge/plantuml/tim/stdlib/Size.java
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
/* ========================================================================
|
||||||
|
* PlantUML : a free UML diagram generator
|
||||||
|
* ========================================================================
|
||||||
|
*
|
||||||
|
* (C) Copyright 2009-2020, 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.tim.stdlib;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import net.sourceforge.plantuml.LineLocation;
|
||||||
|
import net.sourceforge.plantuml.json.JsonArray;
|
||||||
|
import net.sourceforge.plantuml.json.JsonObject;
|
||||||
|
import net.sourceforge.plantuml.json.JsonValue;
|
||||||
|
import net.sourceforge.plantuml.tim.EaterException;
|
||||||
|
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
|
||||||
|
import net.sourceforge.plantuml.tim.TContext;
|
||||||
|
import net.sourceforge.plantuml.tim.TFunctionSignature;
|
||||||
|
import net.sourceforge.plantuml.tim.TMemory;
|
||||||
|
import net.sourceforge.plantuml.tim.expression.TValue;
|
||||||
|
|
||||||
|
public class Size extends SimpleReturnFunction {
|
||||||
|
|
||||||
|
public TFunctionSignature getSignature() {
|
||||||
|
return new TFunctionSignature("%size", 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean canCover(int nbArg, Set<String> namedArgument) {
|
||||||
|
return nbArg == 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List<TValue> values,
|
||||||
|
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
|
||||||
|
final TValue value = values.get(0);
|
||||||
|
if (value.isNumber())
|
||||||
|
return TValue.fromInt(0);
|
||||||
|
if (value.isString())
|
||||||
|
return TValue.fromInt(value.toString().length());
|
||||||
|
|
||||||
|
final JsonValue json = value.toJson();
|
||||||
|
if (json instanceof JsonArray) {
|
||||||
|
final JsonArray array = (JsonArray) json;
|
||||||
|
return TValue.fromInt(array.size());
|
||||||
|
}
|
||||||
|
if (json instanceof JsonObject) {
|
||||||
|
final JsonObject object = (JsonObject) json;
|
||||||
|
return TValue.fromInt(object.size());
|
||||||
|
}
|
||||||
|
return TValue.fromInt(0);
|
||||||
|
}
|
||||||
|
}
|
@ -80,7 +80,7 @@ public class Version {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static int beta() {
|
public static int beta() {
|
||||||
final int beta = 2;
|
final int beta = 4;
|
||||||
return beta;
|
return beta;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,7 +58,6 @@ public class VizJsEngine {
|
|||||||
final Method mCreate = classVizJS.getMethod("create");
|
final Method mCreate = classVizJS.getMethod("create");
|
||||||
mExecute = classVizJS.getMethod("execute", String.class);
|
mExecute = classVizJS.getMethod("execute", String.class);
|
||||||
this.viz = mCreate.invoke(null);
|
this.viz = mCreate.invoke(null);
|
||||||
System.err.println("Creating one engine");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String execute(String dot) throws IllegalAccessException, IllegalArgumentException,
|
public String execute(String dot) throws IllegalAccessException, IllegalArgumentException,
|
||||||
|
@ -45,6 +45,10 @@ import net.sourceforge.plantuml.command.PSystemAbstractFactory;
|
|||||||
import net.sourceforge.plantuml.core.Diagram;
|
import net.sourceforge.plantuml.core.Diagram;
|
||||||
import net.sourceforge.plantuml.core.DiagramType;
|
import net.sourceforge.plantuml.core.DiagramType;
|
||||||
import net.sourceforge.plantuml.core.UmlSource;
|
import net.sourceforge.plantuml.core.UmlSource;
|
||||||
|
import net.sourceforge.plantuml.cucadiagram.Display;
|
||||||
|
import net.sourceforge.plantuml.cucadiagram.DisplayPositioned;
|
||||||
|
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
|
||||||
|
import net.sourceforge.plantuml.graphic.VerticalAlignment;
|
||||||
import net.sourceforge.plantuml.json.JsonValue;
|
import net.sourceforge.plantuml.json.JsonValue;
|
||||||
import net.sourceforge.plantuml.jsondiagram.JsonDiagram;
|
import net.sourceforge.plantuml.jsondiagram.JsonDiagram;
|
||||||
import net.sourceforge.plantuml.jsondiagram.StyleExtractor;
|
import net.sourceforge.plantuml.jsondiagram.StyleExtractor;
|
||||||
@ -62,7 +66,7 @@ public class YamlDiagramFactory extends PSystemAbstractFactory {
|
|||||||
StyleExtractor styleExtractor = null;
|
StyleExtractor styleExtractor = null;
|
||||||
try {
|
try {
|
||||||
final List<String> list = new ArrayList<>();
|
final List<String> list = new ArrayList<>();
|
||||||
styleExtractor = new StyleExtractor(source.iteratorRaw(), source.iterator2());
|
styleExtractor = new StyleExtractor(source.iterator2());
|
||||||
final Iterator<String> it = styleExtractor.getIterator();
|
final Iterator<String> it = styleExtractor.getIterator();
|
||||||
it.next();
|
it.next();
|
||||||
while (true) {
|
while (true) {
|
||||||
@ -83,6 +87,10 @@ public class YamlDiagramFactory extends PSystemAbstractFactory {
|
|||||||
final JsonDiagram result = new JsonDiagram(source, UmlDiagramType.YAML, yaml, highlighted);
|
final JsonDiagram result = new JsonDiagram(source, UmlDiagramType.YAML, yaml, highlighted);
|
||||||
if (styleExtractor != null) {
|
if (styleExtractor != null) {
|
||||||
styleExtractor.applyStyles(result.getSkinParam());
|
styleExtractor.applyStyles(result.getSkinParam());
|
||||||
|
final String title = styleExtractor.getTitle();
|
||||||
|
if (title != null)
|
||||||
|
result.setTitle(DisplayPositioned.single(Display.getWithNewlines(title), HorizontalAlignment.CENTER,
|
||||||
|
VerticalAlignment.CENTER));
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user