From 36c461dabe919d34cebdba4ff64e84534d5987a2 Mon Sep 17 00:00:00 2001 From: Arnaud Roques Date: Sun, 3 Nov 2019 18:40:03 +0100 Subject: [PATCH] version 1.2019.12 --- pom.xml | 2 +- src/gen/lib/label/index__c.java | 11 +- .../plantuml/FileFormatOption.java | 27 +++-- src/net/sourceforge/plantuml/ISkinParam.java | 2 + src/net/sourceforge/plantuml/SkinParam.java | 9 ++ .../plantuml/SkinParamDelegator.java | 5 + src/net/sourceforge/plantuml/UmlDiagram.java | 1 + .../classdiagram/ClassDiagramFactory.java | 2 + .../command/CommandCreateClass.java | 17 ++- .../plantuml/command/CommandFooter.java | 1 - .../plantuml/command/CommandHeader.java | 1 - .../command/CommandMultilinesFooter.java | 1 - .../command/CommandMultilinesHeader.java | 1 - .../plantuml/command/CommandNamespace2.java | 1 - .../command/CommandNamespaceEmpty.java | 109 ++++++++++++++++++ .../plantuml/command/CommandPackage.java | 2 +- .../plantuml/command/UmlDiagramFactory.java | 1 - .../plantuml/cucadiagram/CucaDiagram.java | 23 ++-- .../plantuml/cucadiagram/Display.java | 22 ++++ .../plantuml/donors/PSystemDonors.java | 34 +++--- .../plantuml/graphic/SkinParameter.java | 2 +- .../sourceforge/plantuml/graphic/USymbol.java | 2 +- .../plantuml/graphic/USymbolEntityDomain.java | 2 +- .../plantuml/mindmap/FingerImpl.java | 22 ++-- .../sourceforge/plantuml/mindmap/Idea.java | 16 +-- .../plantuml/mindmap/MindMapDiagram.java | 16 ++- .../project3/ComplementDayOfWeek.java | 55 +++++++++ .../project3/ComplementSeveralDays.java | 5 - .../plantuml/project3/DayOfWeek.java | 2 +- .../plantuml/project3/GanttDiagram.java | 2 +- .../project3/GanttDiagramFactory.java | 1 - .../plantuml/project3/LoadInDays.java | 5 - .../plantuml/project3/Resource.java | 42 ++++--- .../plantuml/project3/SubjectResource.java | 2 +- .../plantuml/project3/VerbIsOff.java | 16 ++- .../plantuml/project3/VerbIsOn.java | 85 ++++++++++++++ .../plantuml/project3/VerbProjectStarts.java | 19 ++- .../sourceforge/plantuml/skin/rose/Rose.java | 13 ++- .../plantuml/sudoku/GraphicsSudoku.java | 2 +- .../extremity/ExtremityFactoryCrowfoot.java | 3 +- .../sourceforge/plantuml/svg/SvgGraphics.java | 12 +- .../plantuml/syntax/LanguageDescriptor.java | 1 + .../sourceforge/plantuml/tim/TContext.java | 2 + .../plantuml/tim/stdlib/GetVersion.java | 59 ++++++++++ .../plantuml/ugraphic/FontChecker.java | 2 +- .../plantuml/ugraphic/ImageBuilder.java | 10 +- .../plantuml/ugraphic/UGraphicUtils.java | 2 +- .../plantuml/ugraphic/svg/UGraphicSvg.java | 17 +-- .../plantuml/utils/CharHidder.java | 5 +- .../sourceforge/plantuml/version/Version.java | 4 +- stdlib/home.repx | 1 + stdlib/kubernetes-abx.repx | Bin 0 -> 587 bytes stdlib/kubernetes-dex.repx | Bin 0 -> 62783 bytes stdlib/osa-abx.repx | Bin 2617 -> 2585 bytes stdlib/osa-dex.repx | Bin 40617 -> 40715 bytes 55 files changed, 557 insertions(+), 142 deletions(-) create mode 100644 src/net/sourceforge/plantuml/command/CommandNamespaceEmpty.java create mode 100644 src/net/sourceforge/plantuml/project3/ComplementDayOfWeek.java create mode 100644 src/net/sourceforge/plantuml/project3/VerbIsOn.java create mode 100644 src/net/sourceforge/plantuml/tim/stdlib/GetVersion.java create mode 100644 stdlib/kubernetes-abx.repx create mode 100644 stdlib/kubernetes-dex.repx diff --git a/pom.xml b/pom.xml index ed0e15aef..01299bb53 100644 --- a/pom.xml +++ b/pom.xml @@ -35,7 +35,7 @@ net.sourceforge.plantuml plantuml - 1.2019.12-SNAPSHOT + 1.2019.13-SNAPSHOT jar PlantUML diff --git a/src/gen/lib/label/index__c.java b/src/gen/lib/label/index__c.java index 40b1fbeb2..7b38b24b7 100644 --- a/src/gen/lib/label/index__c.java +++ b/src/gen/lib/label/index__c.java @@ -379,11 +379,12 @@ UNSUPPORTED("1um729vqiy3529kbsrzyl9u3y"); // rtp->InTouchCount++; CombineRect((ST_Rect_t)r, (ST_Rect_t) n.branch[i].rect)); return 0; } else { /* child was split */ -UNSUPPORTED("7evrfdq7uc1smqislqm9d82l6"); // n->branch[i].rect = NodeCover(n->branch[i].child); -UNSUPPORTED("echuth2qnq0o4n5gkzgtu5bgs"); // b.child = n2; -UNSUPPORTED("50z4r9qcomgi4o7vvwq0v0xs"); // b.rect = NodeCover(n2); -UNSUPPORTED("451qw2ioqybj69k9abzvqw4mk"); // rtp->EntryCount++; -UNSUPPORTED("9uz11nbvh6yp6yq2axvo7e0fb"); // return AddBranch(rtp, &b, n, new); + n.branch[i].setStruct("rect", + NodeCover((ST_Node_t___)n.branch[i].child)); + b.child = n2[0]; + b.rect.___(NodeCover(n2[0])); + rtp.setInt("EntryCount", rtp.EntryCount+1); + return AddBranch(rtp, b, n, new_); } } else if (n.level == level) { /* at level for insertion. */ /*Add rect, split if necessary */ diff --git a/src/net/sourceforge/plantuml/FileFormatOption.java b/src/net/sourceforge/plantuml/FileFormatOption.java index 4dd262bed..dc8ee678a 100644 --- a/src/net/sourceforge/plantuml/FileFormatOption.java +++ b/src/net/sourceforge/plantuml/FileFormatOption.java @@ -57,13 +57,14 @@ public final class FileFormatOption implements Serializable { private final String hoverColor; private final TikzFontDistortion tikzFontDistortion; private final double scale; + private final String preserveAspectRatio; public double getScaleCoef() { return scale; } public FileFormatOption(FileFormat fileFormat) { - this(fileFormat, null, true, false, "_top", false, null, TikzFontDistortion.getDefault(), 1.0); + this(fileFormat, null, true, false, "_top", false, null, TikzFontDistortion.getDefault(), 1.0, "none"); } public StringBounder getDefaultStringBounder() { @@ -78,13 +79,17 @@ public final class FileFormatOption implements Serializable { return withMetadata; } + public final String getPreserveAspectRatio() { + return preserveAspectRatio; + } + public FileFormatOption(FileFormat fileFormat, boolean withMetadata) { - this(fileFormat, null, withMetadata, false, "_top", false, null, TikzFontDistortion.getDefault(), 1.0); + this(fileFormat, null, withMetadata, false, "_top", false, null, TikzFontDistortion.getDefault(), 1.0, "none"); } private FileFormatOption(FileFormat fileFormat, AffineTransform at, boolean withMetadata, boolean useRedForError, String svgLinkTarget, boolean debugsvek, String hoverColor, TikzFontDistortion tikzFontDistortion, - double scale) { + double scale, String preserveAspectRatio) { this.hoverColor = hoverColor; this.fileFormat = fileFormat; this.affineTransform = at; @@ -94,6 +99,7 @@ public final class FileFormatOption implements Serializable { this.debugsvek = debugsvek; this.tikzFontDistortion = tikzFontDistortion; this.scale = scale; + this.preserveAspectRatio = preserveAspectRatio; if (tikzFontDistortion == null) { throw new IllegalArgumentException(); } @@ -101,27 +107,32 @@ public final class FileFormatOption implements Serializable { public FileFormatOption withUseRedForError() { return new FileFormatOption(fileFormat, affineTransform, withMetadata, true, svgLinkTarget, debugsvek, - hoverColor, tikzFontDistortion, scale); + hoverColor, tikzFontDistortion, scale, preserveAspectRatio); } public FileFormatOption withTikzFontDistortion(TikzFontDistortion tikzFontDistortion) { return new FileFormatOption(fileFormat, affineTransform, withMetadata, true, svgLinkTarget, debugsvek, - hoverColor, tikzFontDistortion, scale); + hoverColor, tikzFontDistortion, scale, preserveAspectRatio); } public FileFormatOption withSvgLinkTarget(String svgLinkTarget) { return new FileFormatOption(fileFormat, affineTransform, withMetadata, useRedForError, svgLinkTarget, - debugsvek, hoverColor, tikzFontDistortion, scale); + debugsvek, hoverColor, tikzFontDistortion, scale, preserveAspectRatio); + } + + public FileFormatOption withPreserveAspectRatio(String preserveAspectRatio) { + return new FileFormatOption(fileFormat, affineTransform, withMetadata, useRedForError, svgLinkTarget, + debugsvek, hoverColor, tikzFontDistortion, scale, preserveAspectRatio); } public FileFormatOption withHoverColor(String hoverColor) { return new FileFormatOption(fileFormat, affineTransform, withMetadata, useRedForError, svgLinkTarget, - debugsvek, hoverColor, tikzFontDistortion, scale); + debugsvek, hoverColor, tikzFontDistortion, scale, preserveAspectRatio); } public FileFormatOption withScale(double scale) { return new FileFormatOption(fileFormat, affineTransform, withMetadata, useRedForError, svgLinkTarget, - debugsvek, hoverColor, tikzFontDistortion, scale); + debugsvek, hoverColor, tikzFontDistortion, scale, preserveAspectRatio); } @Override diff --git a/src/net/sourceforge/plantuml/ISkinParam.java b/src/net/sourceforge/plantuml/ISkinParam.java index cd191cae2..ef2689ad3 100644 --- a/src/net/sourceforge/plantuml/ISkinParam.java +++ b/src/net/sourceforge/plantuml/ISkinParam.java @@ -141,6 +141,8 @@ public interface ISkinParam extends ISkinSimple { public String getSvgLinkTarget(); + public String getPreserveAspectRatio(); + public int getTabSize(); public int maxAsciiMessageLength(); diff --git a/src/net/sourceforge/plantuml/SkinParam.java b/src/net/sourceforge/plantuml/SkinParam.java index a1469c6ca..88f1afc32 100644 --- a/src/net/sourceforge/plantuml/SkinParam.java +++ b/src/net/sourceforge/plantuml/SkinParam.java @@ -1046,6 +1046,15 @@ public class SkinParam implements ISkinParam { } return value; } + + public String getPreserveAspectRatio() { + final String value = getValue("preserveaspectratio"); + if (value == null) { + return "none"; + } + return value; + } + public String getMonospacedFamily() { final String value = getValue("defaultMonospacedFontName"); diff --git a/src/net/sourceforge/plantuml/SkinParamDelegator.java b/src/net/sourceforge/plantuml/SkinParamDelegator.java index cf6f1a8c9..40d0cf461 100644 --- a/src/net/sourceforge/plantuml/SkinParamDelegator.java +++ b/src/net/sourceforge/plantuml/SkinParamDelegator.java @@ -234,6 +234,10 @@ public class SkinParamDelegator implements ISkinParam { public String getSvgLinkTarget() { return skinParam.getSvgLinkTarget(); } + + public String getPreserveAspectRatio() { + return skinParam.getPreserveAspectRatio(); + } public String getMonospacedFamily() { return skinParam.getMonospacedFamily(); @@ -355,4 +359,5 @@ public class SkinParamDelegator implements ISkinParam { skinParam.setDefaultSkin(newFileName); } + } diff --git a/src/net/sourceforge/plantuml/UmlDiagram.java b/src/net/sourceforge/plantuml/UmlDiagram.java index e0c134903..2254c09b7 100644 --- a/src/net/sourceforge/plantuml/UmlDiagram.java +++ b/src/net/sourceforge/plantuml/UmlDiagram.java @@ -186,6 +186,7 @@ public abstract class UmlDiagram extends TitledDiagram implements Diagram, Annot if (fileFormatOption.getSvgLinkTarget() == null || fileFormatOption.getSvgLinkTarget().equals("_top")) { fileFormatOption = fileFormatOption.withSvgLinkTarget(getSkinParam().getSvgLinkTarget()); } + fileFormatOption = fileFormatOption.withPreserveAspectRatio(getSkinParam().getPreserveAspectRatio()); fileFormatOption = fileFormatOption.withTikzFontDistortion(getSkinParam().getTikzFontDistortion()); if (hover != null) { fileFormatOption = fileFormatOption.withHoverColor(StringUtils.getAsHtml(getSkinParam().getColorMapper() diff --git a/src/net/sourceforge/plantuml/classdiagram/ClassDiagramFactory.java b/src/net/sourceforge/plantuml/classdiagram/ClassDiagramFactory.java index 704780e7f..f9c87602d 100644 --- a/src/net/sourceforge/plantuml/classdiagram/ClassDiagramFactory.java +++ b/src/net/sourceforge/plantuml/classdiagram/ClassDiagramFactory.java @@ -61,6 +61,7 @@ import net.sourceforge.plantuml.command.CommandEndPackage; import net.sourceforge.plantuml.command.CommandFootboxIgnored; import net.sourceforge.plantuml.command.CommandNamespace; import net.sourceforge.plantuml.command.CommandNamespace2; +import net.sourceforge.plantuml.command.CommandNamespaceEmpty; import net.sourceforge.plantuml.command.CommandPackage; import net.sourceforge.plantuml.command.CommandPackageEmpty; import net.sourceforge.plantuml.command.CommandPage; @@ -125,6 +126,7 @@ public class ClassDiagramFactory extends UmlDiagramFactory { cmds.add(new CommandNamespace()); cmds.add(new CommandNamespace2()); + cmds.add(new CommandNamespaceEmpty()); cmds.add(new CommandStereotype()); cmds.add(new CommandLinkClass(UmlDiagramType.CLASS)); diff --git a/src/net/sourceforge/plantuml/classdiagram/command/CommandCreateClass.java b/src/net/sourceforge/plantuml/classdiagram/command/CommandCreateClass.java index b94d766f5..3ec0dfbd1 100644 --- a/src/net/sourceforge/plantuml/classdiagram/command/CommandCreateClass.java +++ b/src/net/sourceforge/plantuml/classdiagram/command/CommandCreateClass.java @@ -76,7 +76,8 @@ public class CommandCreateClass extends SingleLineCommand2 { } private static IRegex getRegexConcat() { - return RegexConcat.build(CommandCreateClass.class.getName(), RegexLeaf.start(), // + return RegexConcat.build(CommandCreateClass.class.getName(), + RegexLeaf.start(), // new RegexLeaf("TYPE", // "(interface|enum|annotation|abstract[%s]+class|abstract|class|entity|circle|diamond)"), // RegexLeaf.spaceOneOrMore(), // @@ -95,7 +96,8 @@ public class CommandCreateClass extends SingleLineCommand2 { new RegexLeaf("DISPLAY2", DISPLAY_WITH_GENERIC)), // new RegexLeaf("CODE3", "(" + CODE + ")"), // new RegexLeaf("CODE4", "[%g]([^%g]+)[%g]")), // - new RegexOptional(new RegexConcat(RegexLeaf.spaceZeroOrMore(), new RegexLeaf("GENERIC", "\\<(" + GenericRegexProducer.PATTERN + ")\\>"))), // + new RegexOptional(new RegexConcat(RegexLeaf.spaceZeroOrMore(), new RegexLeaf("GENERIC", "\\<(" + + GenericRegexProducer.PATTERN + ")\\>"))), // RegexLeaf.spaceZeroOrMore(), // new RegexLeaf("STEREO", "(\\<{2}.*\\>{2})?"), // RegexLeaf.spaceZeroOrMore(), // @@ -105,9 +107,14 @@ public class CommandCreateClass extends SingleLineCommand2 { RegexLeaf.spaceZeroOrMore(), // color().getRegex(), // RegexLeaf.spaceZeroOrMore(), // - new RegexOptional(new RegexConcat(new RegexLeaf("##"), new RegexLeaf("LINECOLOR", "(?:\\[(dotted|dashed|bold)\\])?(\\w+)?"))), // - new RegexOptional(new RegexConcat(RegexLeaf.spaceOneOrMore(), new RegexLeaf("EXTENDS", "(extends)[%s]+(" + CommandCreateClassMultilines.CODES + ")"))), // - new RegexOptional(new RegexConcat(RegexLeaf.spaceOneOrMore(), new RegexLeaf("IMPLEMENTS", "(implements)[%s]+(" + CommandCreateClassMultilines.CODES + ")"))), // + new RegexOptional(new RegexConcat(new RegexLeaf("##"), new RegexLeaf("LINECOLOR", + "(?:\\[(dotted|dashed|bold)\\])?(\\w+)?"))), // + new RegexOptional(new RegexConcat(RegexLeaf.spaceOneOrMore(), new RegexLeaf("EXTENDS", + "(extends)[%s]+(" + CommandCreateClassMultilines.CODES + ")"))), // + new RegexOptional(new RegexConcat(RegexLeaf.spaceOneOrMore(), new RegexLeaf("IMPLEMENTS", + "(implements)[%s]+(" + CommandCreateClassMultilines.CODES + ")"))), // + new RegexOptional(new RegexConcat(RegexLeaf.spaceZeroOrMore(), new RegexLeaf("\\{"), RegexLeaf + .spaceZeroOrMore(), new RegexLeaf("\\}"))), // RegexLeaf.end()); } diff --git a/src/net/sourceforge/plantuml/command/CommandFooter.java b/src/net/sourceforge/plantuml/command/CommandFooter.java index 3718a4a54..5ab32c201 100644 --- a/src/net/sourceforge/plantuml/command/CommandFooter.java +++ b/src/net/sourceforge/plantuml/command/CommandFooter.java @@ -48,7 +48,6 @@ import net.sourceforge.plantuml.command.regex.RegexOr; import net.sourceforge.plantuml.command.regex.RegexResult; import net.sourceforge.plantuml.cucadiagram.Display; import net.sourceforge.plantuml.graphic.HorizontalAlignment; -import net.sourceforge.plantuml.style.PName; public class CommandFooter extends SingleLineCommand2 { diff --git a/src/net/sourceforge/plantuml/command/CommandHeader.java b/src/net/sourceforge/plantuml/command/CommandHeader.java index 43c1c951e..b86791772 100644 --- a/src/net/sourceforge/plantuml/command/CommandHeader.java +++ b/src/net/sourceforge/plantuml/command/CommandHeader.java @@ -48,7 +48,6 @@ import net.sourceforge.plantuml.command.regex.RegexOr; import net.sourceforge.plantuml.command.regex.RegexResult; import net.sourceforge.plantuml.cucadiagram.Display; import net.sourceforge.plantuml.graphic.HorizontalAlignment; -import net.sourceforge.plantuml.style.PName; public class CommandHeader extends SingleLineCommand2 { diff --git a/src/net/sourceforge/plantuml/command/CommandMultilinesFooter.java b/src/net/sourceforge/plantuml/command/CommandMultilinesFooter.java index 06e0c0863..71a4c1dcf 100644 --- a/src/net/sourceforge/plantuml/command/CommandMultilinesFooter.java +++ b/src/net/sourceforge/plantuml/command/CommandMultilinesFooter.java @@ -42,7 +42,6 @@ import net.sourceforge.plantuml.UmlDiagram; import net.sourceforge.plantuml.command.regex.Matcher2; import net.sourceforge.plantuml.cucadiagram.Display; import net.sourceforge.plantuml.graphic.HorizontalAlignment; -import net.sourceforge.plantuml.style.PName; public class CommandMultilinesFooter extends CommandMultilines { diff --git a/src/net/sourceforge/plantuml/command/CommandMultilinesHeader.java b/src/net/sourceforge/plantuml/command/CommandMultilinesHeader.java index 8a196e9eb..b87374f25 100644 --- a/src/net/sourceforge/plantuml/command/CommandMultilinesHeader.java +++ b/src/net/sourceforge/plantuml/command/CommandMultilinesHeader.java @@ -42,7 +42,6 @@ import net.sourceforge.plantuml.UmlDiagram; import net.sourceforge.plantuml.command.regex.Matcher2; import net.sourceforge.plantuml.cucadiagram.Display; import net.sourceforge.plantuml.graphic.HorizontalAlignment; -import net.sourceforge.plantuml.style.PName; public class CommandMultilinesHeader extends CommandMultilines { diff --git a/src/net/sourceforge/plantuml/command/CommandNamespace2.java b/src/net/sourceforge/plantuml/command/CommandNamespace2.java index 0feb26a53..3f6356a1d 100644 --- a/src/net/sourceforge/plantuml/command/CommandNamespace2.java +++ b/src/net/sourceforge/plantuml/command/CommandNamespace2.java @@ -43,7 +43,6 @@ import net.sourceforge.plantuml.classdiagram.ClassDiagram; import net.sourceforge.plantuml.command.regex.IRegex; import net.sourceforge.plantuml.command.regex.RegexConcat; import net.sourceforge.plantuml.command.regex.RegexLeaf; -import net.sourceforge.plantuml.command.regex.RegexOptional; import net.sourceforge.plantuml.command.regex.RegexResult; import net.sourceforge.plantuml.cucadiagram.Code; import net.sourceforge.plantuml.cucadiagram.Display; diff --git a/src/net/sourceforge/plantuml/command/CommandNamespaceEmpty.java b/src/net/sourceforge/plantuml/command/CommandNamespaceEmpty.java new file mode 100644 index 000000000..b466668ec --- /dev/null +++ b/src/net/sourceforge/plantuml/command/CommandNamespaceEmpty.java @@ -0,0 +1,109 @@ +/* ======================================================================== + * 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.command; + +import net.sourceforge.plantuml.LineLocation; +import net.sourceforge.plantuml.Url; +import net.sourceforge.plantuml.UrlBuilder; +import net.sourceforge.plantuml.UrlBuilder.ModeUrl; +import net.sourceforge.plantuml.classdiagram.ClassDiagram; +import net.sourceforge.plantuml.command.regex.IRegex; +import net.sourceforge.plantuml.command.regex.RegexConcat; +import net.sourceforge.plantuml.command.regex.RegexLeaf; +import net.sourceforge.plantuml.command.regex.RegexResult; +import net.sourceforge.plantuml.cucadiagram.Code; +import net.sourceforge.plantuml.cucadiagram.Display; +import net.sourceforge.plantuml.cucadiagram.GroupType; +import net.sourceforge.plantuml.cucadiagram.IEntity; +import net.sourceforge.plantuml.cucadiagram.IGroup; +import net.sourceforge.plantuml.cucadiagram.NamespaceStrategy; +import net.sourceforge.plantuml.cucadiagram.Stereotype; +import net.sourceforge.plantuml.graphic.color.ColorParser; +import net.sourceforge.plantuml.graphic.color.ColorType; + +public class CommandNamespaceEmpty extends SingleLineCommand2 { + + public CommandNamespaceEmpty() { + super(getRegexConcat()); + } + + private static IRegex getRegexConcat() { + return RegexConcat.build(CommandNamespaceEmpty.class.getName(), RegexLeaf.start(), // + new RegexLeaf("namespace"), // + RegexLeaf.spaceOneOrMore(), // + new RegexLeaf("NAME", "([\\p{L}0-9_][-\\p{L}0-9_.:\\\\]*)"), // + RegexLeaf.spaceZeroOrMore(), // + new RegexLeaf("STEREOTYPE", "(\\<\\<.*\\>\\>)?"), // + RegexLeaf.spaceZeroOrMore(), // + new RegexLeaf("URL", "(" + UrlBuilder.getRegexp() + ")?"), // + RegexLeaf.spaceZeroOrMore(), // + ColorParser.exp1(), // + RegexLeaf.spaceZeroOrMore(), // + new RegexLeaf("\\{"), // + RegexLeaf.spaceZeroOrMore(), // + new RegexLeaf("\\}"), // + RegexLeaf.end()); + } + + @Override + protected CommandExecutionResult executeArg(ClassDiagram diagram, LineLocation location, RegexResult arg) { + final Code code = Code.of(arg.get("NAME", 0)); + final IGroup currentPackage = diagram.getCurrentGroup(); + final Display display = Display.getWithNewlines(code); + diagram.gotoGroup2(code, display, GroupType.PACKAGE, currentPackage, NamespaceStrategy.MULTIPLE); + final IEntity p = diagram.getCurrentGroup(); + final String stereotype = arg.get("STEREOTYPE", 0); + if (stereotype != null) { + p.setStereotype(new Stereotype(stereotype)); + } + + final String urlString = arg.get("URL", 0); + if (urlString != null) { + final UrlBuilder urlBuilder = new UrlBuilder(diagram.getSkinParam().getValue("topurl"), ModeUrl.STRICT); + final Url url = urlBuilder.getUrl(urlString); + p.addUrl(url); + } + + final String color = arg.get("COLOR", 0); + if (color != null) { + p.setSpecificColorTOBEREMOVED(ColorType.BACK, + diagram.getSkinParam().getIHtmlColorSet().getColorIfValid(color)); + } + diagram.endGroup(); + return CommandExecutionResult.ok(); + } + +} diff --git a/src/net/sourceforge/plantuml/command/CommandPackage.java b/src/net/sourceforge/plantuml/command/CommandPackage.java index b55eeeeb6..1feb11f49 100644 --- a/src/net/sourceforge/plantuml/command/CommandPackage.java +++ b/src/net/sourceforge/plantuml/command/CommandPackage.java @@ -69,7 +69,7 @@ public class CommandPackage extends SingleLineCommand2 { private static IRegex getRegexConcat() { return RegexConcat.build(CommandPackage.class.getName(), RegexLeaf.start(), // - new RegexLeaf("TYPE", "(package|together)"), // + new RegexLeaf("TYPE", "(package)"), // RegexLeaf.spaceOneOrMore(), // new RegexLeaf("NAME", "([%g][^%g]+[%g]|[^#%s{}]*)"), // new RegexOptional( // diff --git a/src/net/sourceforge/plantuml/command/UmlDiagramFactory.java b/src/net/sourceforge/plantuml/command/UmlDiagramFactory.java index b3de396e1..b032a8ef4 100644 --- a/src/net/sourceforge/plantuml/command/UmlDiagramFactory.java +++ b/src/net/sourceforge/plantuml/command/UmlDiagramFactory.java @@ -53,7 +53,6 @@ import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.error.PSystemError; import net.sourceforge.plantuml.error.PSystemErrorUtils; import net.sourceforge.plantuml.sequencediagram.command.CommandSkin; -import net.sourceforge.plantuml.sprite.CommandListSprite; import net.sourceforge.plantuml.statediagram.command.CommandHideEmptyDescription; import net.sourceforge.plantuml.style.CommandStyleImport; import net.sourceforge.plantuml.style.CommandStyleMultilinesCSS; diff --git a/src/net/sourceforge/plantuml/cucadiagram/CucaDiagram.java b/src/net/sourceforge/plantuml/cucadiagram/CucaDiagram.java index e8a79de17..405fc0eff 100644 --- a/src/net/sourceforge/plantuml/cucadiagram/CucaDiagram.java +++ b/src/net/sourceforge/plantuml/cucadiagram/CucaDiagram.java @@ -75,6 +75,7 @@ public abstract class CucaDiagram extends UmlDiagram implements GroupHierarchy, private final List removed = new ArrayList(); protected final EntityFactory entityFactory = new EntityFactory(hides2, removed); private IGroup currentGroup = entityFactory.getRootGroup(); + private List stacks = new ArrayList(); private boolean visibilityModifierPresent; @@ -196,6 +197,8 @@ public abstract class CucaDiagram extends UmlDiagram implements GroupHierarchy, final protected void gotoGroupInternalWithNamespace(final Code code, Display display, final Code namespace2, GroupType type, IGroup parent) { + + this.stacks.add(currentGroup); if (getNamespaceSeparator() == null) { gotoGroupInternal(code, display, namespace2, type, parent); return; @@ -220,6 +223,18 @@ public abstract class CucaDiagram extends UmlDiagram implements GroupHierarchy, } + public void endGroup() { + if (EntityUtils.groupRoot(currentGroup)) { + Log.error("No parent group"); + return; + } + if (stacks.size() > 0) { + currentGroup = stacks.remove(stacks.size() - 1); + } else { + currentGroup = currentGroup.getParentContainer(); + } + } + final protected void gotoGroupInternal(final Code code, Display display, final Code namespace2, GroupType type, IGroup parent) { IGroup result = entityFactory.getGroupsget(code); @@ -277,14 +292,6 @@ public abstract class CucaDiagram extends UmlDiagram implements GroupHierarchy, return p; } - public void endGroup() { - if (EntityUtils.groupRoot(currentGroup)) { - Log.error("No parent group"); - return; - } - currentGroup = currentGroup.getParentContainer(); - } - public final boolean isGroup(Code code) { return leafExist(code) == false && entityFactory.getGroupsget(code) != null; } diff --git a/src/net/sourceforge/plantuml/cucadiagram/Display.java b/src/net/sourceforge/plantuml/cucadiagram/Display.java index f48c47f1d..63f9b7968 100644 --- a/src/net/sourceforge/plantuml/cucadiagram/Display.java +++ b/src/net/sourceforge/plantuml/cucadiagram/Display.java @@ -54,6 +54,7 @@ import net.sourceforge.plantuml.StringUtils; import net.sourceforge.plantuml.UrlBuilder; import net.sourceforge.plantuml.UrlBuilder.ModeUrl; import net.sourceforge.plantuml.command.regex.Matcher2; +import net.sourceforge.plantuml.command.regex.MyPattern; import net.sourceforge.plantuml.command.regex.Pattern2; import net.sourceforge.plantuml.creole.CreoleMode; import net.sourceforge.plantuml.creole.CreoleParser; @@ -74,6 +75,7 @@ import net.sourceforge.plantuml.skin.VisibilityModifier; import net.sourceforge.plantuml.style.Style; import net.sourceforge.plantuml.ugraphic.UFont; import net.sourceforge.plantuml.ugraphic.UStroke; +import net.sourceforge.plantuml.wbs.WBSDiagram; public class Display implements Iterable { @@ -270,6 +272,26 @@ public class Display implements Iterable { return new Display(result, this.naturalHorizontalAlignment, this.isNull, this.defaultCreoleMode); } + public Display removeEndingStereotype() { + final Matcher2 m = patternStereotype.matcher(displayData.get(displayData.size() - 1)); + if (m.matches()) { + final List result = new ArrayList(this.displayData); + result.set(result.size() - 1, m.group(1)); + return new Display(result, this.naturalHorizontalAlignment, this.isNull, this.defaultCreoleMode); + } + return this; + } + + public final static Pattern2 patternStereotype = MyPattern.cmpile("^(.*?)(?:\\<\\<\\s*(.*)\\s*\\>\\>)\\s*$"); + + public String getEndingStereotype() { + final Matcher2 m = patternStereotype.matcher(displayData.get(displayData.size() - 1)); + if (m.matches()) { + return m.group(2); + } + return null; + } + public Display underlined() { final List result = new ArrayList(); for (CharSequence line : displayData) { diff --git a/src/net/sourceforge/plantuml/donors/PSystemDonors.java b/src/net/sourceforge/plantuml/donors/PSystemDonors.java index 6a85fff67..99fedab08 100644 --- a/src/net/sourceforge/plantuml/donors/PSystemDonors.java +++ b/src/net/sourceforge/plantuml/donors/PSystemDonors.java @@ -71,23 +71,23 @@ public class PSystemDonors extends AbstractPSystem { private static final int COLS = 6; private static final int FREE_LINES = 6; - public static final String DONORS = "6uq902mFw6aNBnoRoJQNUtErFonYo206_-9C-IFeunriW0n1BL5IhOvS7xq622gWQ-ZeCRVlzBZVI7yH" - + "NUdUDys8jcnDSPvH50k27c-JQuPjxkqnSsBnGt1dZe133yW3iacsZHfPkfVj92sddof3IY7pywS6s9OA" - + "ihYRQXukK7S6TknnUzX_ePwbHp_sKxhZEw0nZHBhiAEQb5SFVAsgP8B2sM_7DwrYLapW42cEjd043jcO" - + "YNnrMiUu85NxZte3BJPcM2foJoYssYMf-UVP-hQ1xXCOJ2AmYG4RC7Eew32UO2vGRyGGM4MYYUpiZCQ6" - + "QsvveeC95zInXd-KHKsFLEOSZau4Dg-40Ww_XXE0hIYlmcVxDWCAHNgBkYN9EZMUX9N6XoKfhXyqt006" - + "R2ne7QY2a3T19_nfCVjJatjT3GLUzEpClTaPo4Ms0y3nPaRVPDsPAF_t3yuqiMsfbaXrBlrvhlTn3iZT" - + "Kgj6_37QM6LBtDQJ5nLQUN81_4FGIxsZOdxETMCX6UAvT7iYpdFgojSe0cR5OMJXJx4bDUxIBazZVLcU" - + "eIp1Z_RhL2EPq89N8bu6_QfMA0zqlb2oBArSFlHeMBqCV4t8JBmjkcV7NCh_lrAymupI5RJVnPogQo1A" - + "dh5pLUjigWXC8texv2QGAr3jhbknU_-G_vmFIBqbaO78RCvnlrIig3LT334RrdIwn0nWyfHe9mAxaqGY" - + "faReNR2oZ4mhnQw7g-VqYJ5nxVJ2uxwfCOWFTBBo9EpfHR1cXY79chaDxGUSWt06NvnNN_VXFLO1hBjv" - + "Zxr9pHzd85tfXP4aRKQKszRzgR1c1QLdKPPyM96_U_4p5mzT2bvdikW8Cwysno5ZeNZPf9N-PFJ3aY5l" - + "dygo_aeLUGFkbug5G9XdV0nuF3XPKCKb15RJMGuJ6u1mweDNx3SlSJEekgNav18snAp3LkU1IkU7UGT6" - + "bN7WcOCTtRt4pz0IHSx7vxso-cbbhIfsBA1uLWYMKaVPQweeqkTKCcICGSzXQ-3jDmjT42xrsXkc1Gfl" - + "W-Y-V0EjKyYq4kC7JPybqeLyHRxaiJ02_iwltsGlEDP1nhyPtOV7cUUA8AKgEi0vSRRKQbjQ1-ij-lpv" - + "ifoy1t_-xpLjvrI8vtoM0Bg0WlQlfS2SQDRLF7liJwEF3kmsiW9Y7PpqbLUcNWWm40oQPQcNrcb6uSuO" - + "Ncwg1dt6yQ52No4L9uZZ3SikbYcA6bFEykLanQYys9VU22SvU5x_55M6KbnbkPeOeLNi_2ZEqtWVjHjk" - + "TUa24j0T5mJAVlExtIntZJvVW7qO7b3avoDvwB25QK4Lfx4yDJ15OtrlnjjJPwP-4m00"; + public static final String DONORS = "6wO902mFU3XMJYceJdotTlPGzS6YgH3yYpFbZw2FTx01CWIrH4crEd9zz1eWg82keQF7tBxJutuZ_KLq" + + "fNlVD2FQiZN5UKPHB0Xwl4sk6RQvjmV2d2KlWZjJWfuF5n0bqTtfBCiTANQVa85C9s9S14-RrrZgP2tv" + + "1mcd-zyr5RAlgiAGBgiwVxf2SL807Z2x_5ETowPoBbUrwKqeGAVkNC5DLOUvTgAlJWmIOEBrR-TRrMHM" + + "JF0GASwsS0HEepD3CnUjCx8Xi_OVzGzeip73Kf5RGd7KBedEFo-TsJRGVOu44nAxADWmvb3AOLgWUyYD" + + "cCGcWeRwB4PZipLRdkXXS4CB-_AFHbBZaShCuMYJsDq31KxVnW58hzJK96RxDmFAH4QB6KjITM7SX3ld" + + "OJ4LwGSDDuB2pe9Ma1g2l0bTyEan-rEJMrqD1Lxo3CczsIxKATi6jCsClirrIAByxpRDjF4UKowHwcpz" + + "UQxtSGx8tL8hp_XZj3784TpxoOiALfvQ03y2lLGBbUJdf-mR2oaGzzRjYJmwLwxSHn4Ocp9CBFOgjbYB" + + "_5YNjx4LMLOO2_helYuq8GCjTELoD_HjMfaqTBvGafPMBXzwT5gz369DnaplFFqP7NCv_xzIlCDCYXle" + + "IedPfci4HUGSMaqN6nE1QQ77Gsu2iWBbxheLk_SF-NK-8FEMPGGYjpcZVL_nGjrr4M8wrdGrnGnW_fJI" + + "5ed3WWW5xOBUHfL-fAqKknwkdkaJO-w-w9F7NJDZ40SwHMCHldeHtDqme-hDaGtjUymXU8Wlowkl-_0T" + + "gm3MuTuR_aZDds0Wd-c54P568nhRrlsfSBU24bdK9HShybt5prmyT2TudScYGyoysXo7B0oL1qbQwfyC" + + "FomPVFjCDkolIf4tu7bfc8PmP7mCBXzDUjJa4edDT9PZPYS0bofUiTzymdMXwfQQaoriYCd3Lnz29lWn" + + "le2bCXMU1jQwUr6SGOmIvyIyLrOjAsjLyR60YbaXw4iBfMggADBdD3BYh47FGUjW-yt25kYbNdl3c51u" + + "6wAx6XkmJH7JLKp_Q0AUY2gA9NefayG0lkR3hzL3Onry_6Pq7n47oEwI4485QewUE2tDjsDO1-ij-l_p" + + "PJbv3_xytslQmQaLztnM0NI2aF_hA1W7JLtjCmflNJwSE1om0gasJcBbfQMdGG91v9QTFdMTPgHtOaIv" + + "BLdqZkD3PRvI8Gv8OyFoYtwAeiQKaxwSh3YL3_lE6-4aXyZhdwBAcXHNfP6Q6C4cTdOKvsdiLhlXheih" + + "yA0UN12e-_NZqyqiTuqrNq1g61uqvESZSkZGmxMWfgQ5iIom8iRwtYVzKAR7RyQcW5qbW3dJ0000"; /* * Special thanks to our sponsors and donors: diff --git a/src/net/sourceforge/plantuml/graphic/SkinParameter.java b/src/net/sourceforge/plantuml/graphic/SkinParameter.java index 713dd4c6b..c4b54835e 100644 --- a/src/net/sourceforge/plantuml/graphic/SkinParameter.java +++ b/src/net/sourceforge/plantuml/graphic/SkinParameter.java @@ -116,7 +116,7 @@ public class SkinParameter { public static final SkinParameter CONTROL = new SkinParameter("CONTROL", ColorParam.controlBackground, ColorParam.controlBorder, FontParam.CONTROL, FontParam.CONTROL_STEREOTYPE); - public static final SkinParameter ENTITY_DOMAIN = new SkinParameter("ENTITY_DOMAIN", ColorParam.entityBackground, + public static final SkinParameter ENTITY = new SkinParameter("ENTITY", ColorParam.entityBackground, ColorParam.entityBorder, FontParam.ENTITY, FontParam.ENTITY_STEREOTYPE); public static final SkinParameter INTERFACE = new SkinParameter("INTERFACE", ColorParam.interfaceBackground, diff --git a/src/net/sourceforge/plantuml/graphic/USymbol.java b/src/net/sourceforge/plantuml/graphic/USymbol.java index a82290830..5b169512e 100644 --- a/src/net/sourceforge/plantuml/graphic/USymbol.java +++ b/src/net/sourceforge/plantuml/graphic/USymbol.java @@ -73,7 +73,7 @@ public abstract class USymbol { public final static USymbol COMPONENT1 = record("COMPONENT1", SkinParameter.COMPONENT1, new USymbolComponent1()); public final static USymbol COMPONENT2 = record("COMPONENT2", SkinParameter.COMPONENT2, new USymbolComponent2()); public final static USymbol BOUNDARY = record("BOUNDARY", SkinParameter.BOUNDARY, new USymbolBoundary()); - public final static USymbol ENTITY_DOMAIN = record("ENTITY_DOMAIN", SkinParameter.ENTITY_DOMAIN, + public final static USymbol ENTITY_DOMAIN = record("ENTITY_DOMAIN", SkinParameter.ENTITY, new USymbolEntityDomain(2)); public final static USymbol CONTROL = record("CONTROL", SkinParameter.CONTROL, new USymbolControl(2)); public final static USymbol INTERFACE = record("INTERFACE", SkinParameter.INTERFACE, new USymbolInterface()); diff --git a/src/net/sourceforge/plantuml/graphic/USymbolEntityDomain.java b/src/net/sourceforge/plantuml/graphic/USymbolEntityDomain.java index ed4845373..d7b6ddb89 100644 --- a/src/net/sourceforge/plantuml/graphic/USymbolEntityDomain.java +++ b/src/net/sourceforge/plantuml/graphic/USymbolEntityDomain.java @@ -48,7 +48,7 @@ class USymbolEntityDomain extends USymbolSimpleAbstract { @Override public SkinParameter getSkinParameter() { - return SkinParameter.ENTITY_DOMAIN; + return SkinParameter.ENTITY; } diff --git a/src/net/sourceforge/plantuml/mindmap/FingerImpl.java b/src/net/sourceforge/plantuml/mindmap/FingerImpl.java index a077552ec..29017f01c 100644 --- a/src/net/sourceforge/plantuml/mindmap/FingerImpl.java +++ b/src/net/sourceforge/plantuml/mindmap/FingerImpl.java @@ -45,7 +45,7 @@ import net.sourceforge.plantuml.Direction; import net.sourceforge.plantuml.FontParam; import net.sourceforge.plantuml.ISkinParam; import net.sourceforge.plantuml.SkinParam; -import net.sourceforge.plantuml.SkinParamBackcolored; +import net.sourceforge.plantuml.SkinParamColors; import net.sourceforge.plantuml.activitydiagram3.ftile.vertical.FtileBox; import net.sourceforge.plantuml.cucadiagram.Display; import net.sourceforge.plantuml.graphic.FontConfiguration; @@ -55,6 +55,7 @@ import net.sourceforge.plantuml.graphic.StringBounder; import net.sourceforge.plantuml.graphic.TextBlock; import net.sourceforge.plantuml.graphic.TextBlockUtils; import net.sourceforge.plantuml.graphic.UDrawable; +import net.sourceforge.plantuml.graphic.color.ColorType; import net.sourceforge.plantuml.graphic.color.Colors; import net.sourceforge.plantuml.style.PName; import net.sourceforge.plantuml.style.SName; @@ -85,19 +86,23 @@ public class FingerImpl implements Finger, UDrawable { private Tetris tetris = null; private StyleSignature getDefaultStyleDefinitionNode() { + final String depth = SName.depth(level); if (level == 0) { - return StyleSignature.of(SName.root, SName.element, SName.mindmapDiagram, SName.node, SName.rootNode).add( - stereotype); + return StyleSignature.of(SName.root, SName.element, SName.mindmapDiagram, SName.node, SName.rootNode) + .add(stereotype).add(depth); } if (nail.size() == 0) { - return StyleSignature.of(SName.root, SName.element, SName.mindmapDiagram, SName.node, SName.leafNode).add( - stereotype); + return StyleSignature.of(SName.root, SName.element, SName.mindmapDiagram, SName.node, SName.leafNode) + .add(stereotype).add(depth); } - return StyleSignature.of(SName.root, SName.element, SName.mindmapDiagram, SName.node).add(stereotype); + return StyleSignature.of(SName.root, SName.element, SName.mindmapDiagram, SName.node).add(stereotype) + .add(depth); } public StyleSignature getDefaultStyleDefinitionArrow() { - return StyleSignature.of(SName.root, SName.element, SName.mindmapDiagram, SName.arrow).add(stereotype); + final String depth = SName.depth(level); + return StyleSignature.of(SName.root, SName.element, SName.mindmapDiagram, SName.arrow).add(stereotype) + .add(depth); } public static FingerImpl build(Idea idea, ISkinParam skinParam, Direction direction) { @@ -237,7 +242,8 @@ public class FingerImpl implements Finger, UDrawable { font = skinParam.getFont(null, false, FontParam.ACTIVITY); } if (shape == IdeaShape.BOX) { - final ISkinParam foo = new SkinParamBackcolored(Colors.empty().mute(skinParam), backColor); + // final ISkinParam foo = new SkinParamBackcolored(Colors.empty().mute(skinParam), backColor); + final ISkinParam foo = new SkinParamColors(skinParam, Colors.empty().add(ColorType.BACK, backColor)); final FtileBox box = FtileBox.createMindMap(styleBuilder, foo, label, getDefaultStyleDefinitionNode()); return TextBlockUtils.withMargin(box, 0, 0, margin(), margin()); } diff --git a/src/net/sourceforge/plantuml/mindmap/Idea.java b/src/net/sourceforge/plantuml/mindmap/Idea.java index 509ecea93..f8cf6c636 100644 --- a/src/net/sourceforge/plantuml/mindmap/Idea.java +++ b/src/net/sourceforge/plantuml/mindmap/Idea.java @@ -46,10 +46,6 @@ import net.sourceforge.plantuml.style.StyleBuilder; class Idea { - // public StyleDefinition getDefaultStyleDefinition() { - // return StyleDefinition.of(SName.root, SName.element, SName.mindmapDiagram, SName.node); - // } - private final Display label; private final int level; private final Idea parent; @@ -59,8 +55,8 @@ class Idea { private final StyleBuilder styleBuilder; private final String stereotype; - public Idea(StyleBuilder styleBuilder, Display label, IdeaShape shape, String stereotype) { - this(styleBuilder, null, 0, null, label, shape, stereotype); + public Idea(StyleBuilder styleBuilder, HtmlColor backColor, Display label, IdeaShape shape, String stereotype) { + this(styleBuilder, backColor, 0, null, label, shape, stereotype); } public Idea createIdea(StyleBuilder styleBuilder, HtmlColor backColor, int newLevel, Display newDisplay, @@ -70,14 +66,6 @@ class Idea { return result; } - // public Style getStyle(StyleBuilder styleBuilder) { - // Style result = getDefaultStyleDefinition().getMergedStyle(styleBuilder); - // if (backColor != null) { - // result = result.eventuallyOverride(PName.BackGroundColor, backColor); - // } - // return result; - // } - private Idea(StyleBuilder styleBuilder, HtmlColor backColor, int level, Idea parent, Display label, IdeaShape shape, String stereotype) { this.backColor = backColor; diff --git a/src/net/sourceforge/plantuml/mindmap/MindMapDiagram.java b/src/net/sourceforge/plantuml/mindmap/MindMapDiagram.java index ed6df8804..5c12e5456 100644 --- a/src/net/sourceforge/plantuml/mindmap/MindMapDiagram.java +++ b/src/net/sourceforge/plantuml/mindmap/MindMapDiagram.java @@ -181,19 +181,17 @@ public class MindMapDiagram extends UmlDiagram { public CommandExecutionResult addIdea(HtmlColor backColor, int level, Display label, IdeaShape shape, Direction direction) { - final Matcher2 m = WBSDiagram.patternStereotype.matcher(label.get(0)); - String stereotype = null; - if (m.matches()) { - label = Display.getWithNewlines(m.group(1)); - stereotype = m.group(2); + String stereotype = label.getEndingStereotype(); + if (stereotype != null) { + label = label.removeEndingStereotype(); } if (level == 0) { if (this.right.root != null) { return CommandExecutionResult .error("I don't know how to draw multi-root diagram. You should suggest an image so that the PlantUML team implements it :-)"); } - right.initRoot(getSkinParam().getCurrentStyleBuilder(), label, shape, stereotype); - left.initRoot(getSkinParam().getCurrentStyleBuilder(), label, shape, stereotype); + right.initRoot(getSkinParam().getCurrentStyleBuilder(), backColor, label, shape, stereotype); + left.initRoot(getSkinParam().getCurrentStyleBuilder(), backColor, label, shape, stereotype); return CommandExecutionResult.ok(); } if (direction == Direction.LEFT) { @@ -207,8 +205,8 @@ public class MindMapDiagram extends UmlDiagram { private Idea last; private Finger finger; - private void initRoot(StyleBuilder styleBuilder, Display label, IdeaShape shape, String stereotype) { - root = new Idea(styleBuilder, label, shape, stereotype); + private void initRoot(StyleBuilder styleBuilder, HtmlColor backColor, Display label, IdeaShape shape, String stereotype) { + root = new Idea(styleBuilder, backColor, label, shape, stereotype); last = root; } diff --git a/src/net/sourceforge/plantuml/project3/ComplementDayOfWeek.java b/src/net/sourceforge/plantuml/project3/ComplementDayOfWeek.java new file mode 100644 index 000000000..ce2a97577 --- /dev/null +++ b/src/net/sourceforge/plantuml/project3/ComplementDayOfWeek.java @@ -0,0 +1,55 @@ +/* ======================================================================== + * 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.project3; + +import net.sourceforge.plantuml.command.regex.IRegex; +import net.sourceforge.plantuml.command.regex.RegexConcat; +import net.sourceforge.plantuml.command.regex.RegexLeaf; +import net.sourceforge.plantuml.command.regex.RegexResult; + +public class ComplementDayOfWeek implements ComplementPattern { + + public IRegex toRegex(String suffix) { + return new RegexConcat( // + new RegexLeaf("COMPLEMENT" + suffix, "(" + DayOfWeek.getRegexString() + ")")); // + } + + public Failable getComplement(GanttDiagram system, RegexResult arg, String suffix) { + final String s = arg.get("COMPLEMENT" + suffix, 0); + return Failable. ok(DayOfWeek.fromString(s)); + } + +} diff --git a/src/net/sourceforge/plantuml/project3/ComplementSeveralDays.java b/src/net/sourceforge/plantuml/project3/ComplementSeveralDays.java index cb8c44c46..91a1cd021 100644 --- a/src/net/sourceforge/plantuml/project3/ComplementSeveralDays.java +++ b/src/net/sourceforge/plantuml/project3/ComplementSeveralDays.java @@ -45,19 +45,14 @@ public class ComplementSeveralDays implements ComplementPattern { public IRegex toRegex(String suffix) { return new RegexConcat( // new RegexLeaf("COMPLEMENT" + suffix, "(\\d+)[%s]+(days?|weeks?)")); // - // new RegexLeaf("LOAD" + suffix, "([%s]+at[%s]+(\\d+)%)?")); } public Failable getComplement(GanttDiagram system, RegexResult arg, String suffix) { final String number = arg.get("COMPLEMENT" + suffix, 0); final boolean inWeeks = arg.get("COMPLEMENT" + suffix, 1).startsWith("w"); final int factor = inWeeks ? system.daysInWeek() : 1; - // final String load = arg.get("LOAD" + suffix, 1); final int days = Integer.parseInt(number) * factor; - // if (load == null) { return Failable. ok(LoadInDays.inDay(days)); - // } - // return Failable. ok(LoadInDays.inDayWithLoad(days, Integer.parseInt(load))); } } diff --git a/src/net/sourceforge/plantuml/project3/DayOfWeek.java b/src/net/sourceforge/plantuml/project3/DayOfWeek.java index 6f8a09c8c..54af9a75b 100644 --- a/src/net/sourceforge/plantuml/project3/DayOfWeek.java +++ b/src/net/sourceforge/plantuml/project3/DayOfWeek.java @@ -37,7 +37,7 @@ package net.sourceforge.plantuml.project3; import net.sourceforge.plantuml.StringUtils; -public enum DayOfWeek implements Subject { +public enum DayOfWeek implements Subject, Complement { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY; diff --git a/src/net/sourceforge/plantuml/project3/GanttDiagram.java b/src/net/sourceforge/plantuml/project3/GanttDiagram.java index b298e305c..b22f34344 100644 --- a/src/net/sourceforge/plantuml/project3/GanttDiagram.java +++ b/src/net/sourceforge/plantuml/project3/GanttDiagram.java @@ -586,7 +586,7 @@ public class GanttDiagram extends TitledDiagram implements Subject { public Resource getResource(String resourceName) { Resource resource = resources.get(resourceName); if (resource == null) { - resource = new Resource(resourceName, getDefaultPlan()); + resource = new Resource(resourceName, getDefaultPlan(), getCalendarSimple()); } resources.put(resourceName, resource); return resource; diff --git a/src/net/sourceforge/plantuml/project3/GanttDiagramFactory.java b/src/net/sourceforge/plantuml/project3/GanttDiagramFactory.java index e5d9a8446..06ae4948f 100644 --- a/src/net/sourceforge/plantuml/project3/GanttDiagramFactory.java +++ b/src/net/sourceforge/plantuml/project3/GanttDiagramFactory.java @@ -38,7 +38,6 @@ package net.sourceforge.plantuml.project3; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; -import java.util.Collections; import java.util.List; import net.sourceforge.plantuml.command.Command; diff --git a/src/net/sourceforge/plantuml/project3/LoadInDays.java b/src/net/sourceforge/plantuml/project3/LoadInDays.java index 2695cf1c1..7ef804869 100644 --- a/src/net/sourceforge/plantuml/project3/LoadInDays.java +++ b/src/net/sourceforge/plantuml/project3/LoadInDays.java @@ -49,11 +49,6 @@ public class LoadInDays implements Load { return new LoadInDays(days, 100); } -// public static Complement inDayWithLoad(int days, int loadPerDay) { -// final int tmp = (int) Math.ceil(days * 100.0 / loadPerDay); -// return new LoadInDays(tmp, loadPerDay); -// } - public int getFullLoad() { return days * loadPerDay; } diff --git a/src/net/sourceforge/plantuml/project3/Resource.java b/src/net/sourceforge/plantuml/project3/Resource.java index ea95a93aa..668c89d50 100644 --- a/src/net/sourceforge/plantuml/project3/Resource.java +++ b/src/net/sourceforge/plantuml/project3/Resource.java @@ -35,19 +35,25 @@ */ package net.sourceforge.plantuml.project3; +import java.util.Collection; +import java.util.EnumSet; +import java.util.HashSet; import java.util.Set; import java.util.TreeSet; -public class Resource implements Subject /* , LoadPlanable */{ +public class Resource implements Subject { private final String name; private ResourceDraw draw; - // private final LoadPlanable loadPlanable; - private Set closed = new TreeSet(); + private final Set closed = new TreeSet(); + private final Set forcedOn = new TreeSet(); + private final GCalendar calendar; - public Resource(String name, LoadPlanable loadPlanable) { + private final Collection closedDayOfWeek = EnumSet.noneOf(DayOfWeek.class); + + public Resource(String name, LoadPlanable loadPlanable, GCalendar calendar) { this.name = name; - // this.loadPlanable = loadPlanable; + this.calendar = calendar; } @Override @@ -79,17 +85,27 @@ public class Resource implements Subject /* , LoadPlanable */{ } public boolean isClosedAt(Instant instant) { - return this.closed.contains(instant); + if (this.forcedOn.contains(instant)) { + return false; + } + if (closedDayOfWeek.size() > 0 && calendar != null) { + final DayAsDate d = calendar.toDayAsDate((InstantDay) instant); + if (closedDayOfWeek.contains(d.getDayOfWeek())) { + return true; + } + } + return this.closed.contains(instant); } -// public int getLoadAt(Instant instant) { -// if (this.closed.contains(instant)) { -// return 0; -// } -// return loadPlanable.getLoadAt(instant); -// } - public void addCloseDay(Instant instant) { this.closed.add(instant); } + + public void addForceOnDay(Instant instant) { + this.forcedOn.add(instant); + } + + public void addCloseDay(DayOfWeek dayOfWeek) { + closedDayOfWeek.add(dayOfWeek); + } } diff --git a/src/net/sourceforge/plantuml/project3/SubjectResource.java b/src/net/sourceforge/plantuml/project3/SubjectResource.java index e19601dbe..510d074b3 100644 --- a/src/net/sourceforge/plantuml/project3/SubjectResource.java +++ b/src/net/sourceforge/plantuml/project3/SubjectResource.java @@ -46,7 +46,7 @@ import net.sourceforge.plantuml.command.regex.RegexResult; public class SubjectResource implements SubjectPattern { public Collection getVerbs() { - return Arrays. asList(new VerbIsOff()); + return Arrays. asList(new VerbIsOff(), new VerbIsOn()); } public IRegex toRegex() { diff --git a/src/net/sourceforge/plantuml/project3/VerbIsOff.java b/src/net/sourceforge/plantuml/project3/VerbIsOff.java index b2b398ee6..7ce044d75 100644 --- a/src/net/sourceforge/plantuml/project3/VerbIsOff.java +++ b/src/net/sourceforge/plantuml/project3/VerbIsOff.java @@ -42,12 +42,14 @@ import net.sourceforge.plantuml.command.CommandExecutionResult; import net.sourceforge.plantuml.command.regex.IRegex; import net.sourceforge.plantuml.command.regex.RegexConcat; import net.sourceforge.plantuml.command.regex.RegexLeaf; +import net.sourceforge.plantuml.command.regex.RegexOr; import net.sourceforge.plantuml.command.regex.RegexResult; public class VerbIsOff implements VerbPattern { public Collection getComplements() { - return Arrays. asList(new ComplementDate(), new ComplementDates()); + return Arrays + . asList(new ComplementDate(), new ComplementDates(), new ComplementDayOfWeek()); } public IRegex toRegex() { @@ -55,14 +57,21 @@ public class VerbIsOff implements VerbPattern { RegexLeaf.spaceOneOrMore(), // new RegexLeaf("off"), // RegexLeaf.spaceOneOrMore(), // - new RegexLeaf("on")); + new RegexOr(// + new RegexLeaf("on"),// + new RegexLeaf("for"),// + new RegexLeaf("the"),// + new RegexLeaf("at") // + )); } public Verb getVerb(final GanttDiagram project, RegexResult arg) { return new Verb() { public CommandExecutionResult execute(Subject subject, Complement complement) { final Resource resource = (Resource) subject; - if (complement instanceof DaysAsDates) { + if (complement instanceof DayOfWeek) { + resource.addCloseDay(((DayOfWeek) complement)); + } else if (complement instanceof DaysAsDates) { for (DayAsDate when : (DaysAsDates) complement) { resource.addCloseDay(project.convert(when)); } @@ -75,5 +84,4 @@ public class VerbIsOff implements VerbPattern { }; } - } diff --git a/src/net/sourceforge/plantuml/project3/VerbIsOn.java b/src/net/sourceforge/plantuml/project3/VerbIsOn.java new file mode 100644 index 000000000..11e468830 --- /dev/null +++ b/src/net/sourceforge/plantuml/project3/VerbIsOn.java @@ -0,0 +1,85 @@ +/* ======================================================================== + * 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.project3; + +import java.util.Arrays; +import java.util.Collection; + +import net.sourceforge.plantuml.command.CommandExecutionResult; +import net.sourceforge.plantuml.command.regex.IRegex; +import net.sourceforge.plantuml.command.regex.RegexConcat; +import net.sourceforge.plantuml.command.regex.RegexLeaf; +import net.sourceforge.plantuml.command.regex.RegexOr; +import net.sourceforge.plantuml.command.regex.RegexResult; + +public class VerbIsOn implements VerbPattern { + + public Collection getComplements() { + return Arrays. asList(new ComplementDate(), new ComplementDates()); + } + + public IRegex toRegex() { + return new RegexConcat(new RegexLeaf("is"), // + RegexLeaf.spaceOneOrMore(), // + new RegexLeaf("on"), // + RegexLeaf.spaceOneOrMore(), // + new RegexOr(// + new RegexLeaf("on"),// + new RegexLeaf("for"),// + new RegexLeaf("the"),// + new RegexLeaf("at") // + ) // + ); + } + + public Verb getVerb(final GanttDiagram project, RegexResult arg) { + return new Verb() { + public CommandExecutionResult execute(Subject subject, Complement complement) { + final Resource resource = (Resource) subject; + if (complement instanceof DaysAsDates) { + for (DayAsDate when : (DaysAsDates) complement) { + resource.addForceOnDay(project.convert(when)); + } + } else { + final DayAsDate when = (DayAsDate) complement; + resource.addForceOnDay(project.convert(when)); + } + return CommandExecutionResult.ok(); + } + + }; + } +} diff --git a/src/net/sourceforge/plantuml/project3/VerbProjectStarts.java b/src/net/sourceforge/plantuml/project3/VerbProjectStarts.java index 5646c1d73..74350ec20 100644 --- a/src/net/sourceforge/plantuml/project3/VerbProjectStarts.java +++ b/src/net/sourceforge/plantuml/project3/VerbProjectStarts.java @@ -40,8 +40,12 @@ import java.util.Collection; import net.sourceforge.plantuml.command.CommandExecutionResult; import net.sourceforge.plantuml.command.regex.IRegex; +import net.sourceforge.plantuml.command.regex.RegexConcat; import net.sourceforge.plantuml.command.regex.RegexLeaf; +import net.sourceforge.plantuml.command.regex.RegexOptional; +import net.sourceforge.plantuml.command.regex.RegexOr; import net.sourceforge.plantuml.command.regex.RegexResult; +import net.sourceforge.plantuml.descdiagram.command.CommandLinkElement; public class VerbProjectStarts implements VerbPattern { @@ -49,10 +53,23 @@ public class VerbProjectStarts implements VerbPattern { return Arrays. asList(new ComplementDate()); } - public IRegex toRegex() { + public IRegex toRegexOld() { return new RegexLeaf("starts[%s]*(the[%s]*|on[%s]*)*"); } + public IRegex toRegex() { + return new RegexConcat(new RegexLeaf("start"), // + new RegexOptional(new RegexLeaf("s")), // + RegexLeaf.spaceZeroOrMore(), // + new RegexOptional(new RegexOr(// + new RegexLeaf("on"),// + new RegexLeaf("for"),// + new RegexLeaf("the"),// + new RegexLeaf("at") // + )) // + ); + } + public Verb getVerb(final GanttDiagram project, RegexResult arg) { return new Verb() { public CommandExecutionResult execute(Subject subject, Complement complement) { diff --git a/src/net/sourceforge/plantuml/skin/rose/Rose.java b/src/net/sourceforge/plantuml/skin/rose/Rose.java index c56eb9bca..334b6ce0e 100644 --- a/src/net/sourceforge/plantuml/skin/rose/Rose.java +++ b/src/net/sourceforge/plantuml/skin/rose/Rose.java @@ -370,6 +370,16 @@ public class Rose { skinParameter = SkinParameter.PARTICIPANT; } else if (color == ColorParam.actorBorder) { skinParameter = SkinParameter.ACTOR; + } else if (color == ColorParam.boundaryBorder) { + skinParameter = SkinParameter.BOUNDARY; + } else if (color == ColorParam.controlBorder) { + skinParameter = SkinParameter.CONTROL; + } else if (color == ColorParam.entityBorder) { + skinParameter = SkinParameter.ENTITY; + } else if (color == ColorParam.collectionsBorder) { + skinParameter = SkinParameter.COLLECTIONS; + } else if (color == ColorParam.databaseBorder) { + skinParameter = SkinParameter.DATABASE; } final boolean result = skinParameter == null ? param.shadowing(null) : param.shadowing2(null, skinParameter); return result ? 4.0 : 0; @@ -403,9 +413,10 @@ public class Rose { .withDeltaShadow(deltaShadow(skin, color)); } if (color == ColorParam.entityBorder) { + final double tmp = deltaShadow(skin, color); return new SymbolContext(getHtmlColor(skin, ColorParam.entityBackground), getHtmlColor(skin, ColorParam.entityBorder)).withStroke(getStroke(skin, LineParam.sequenceActorBorder, 2)) - .withDeltaShadow(deltaShadow(skin, color)); + .withDeltaShadow(tmp); } if (color == ColorParam.databaseBorder) { return new SymbolContext(getHtmlColor(skin, ColorParam.databaseBackground), getHtmlColor(skin, diff --git a/src/net/sourceforge/plantuml/sudoku/GraphicsSudoku.java b/src/net/sourceforge/plantuml/sudoku/GraphicsSudoku.java index e9a8c167b..2057c135c 100644 --- a/src/net/sourceforge/plantuml/sudoku/GraphicsSudoku.java +++ b/src/net/sourceforge/plantuml/sudoku/GraphicsSudoku.java @@ -88,7 +88,7 @@ public class GraphicsSudoku { public ImageData writeImageSvg(OutputStream os) throws IOException { final UGraphicSvg ug = new UGraphicSvg(true, new Dimension2DDouble(0, 0), new ColorMapperIdentity(), - (String) null, false, 1.0, null, null, 0); + (String) null, false, 1.0, null, null, 0, "none"); drawInternal(ug); ug.createXml(os, null); return ImageDataSimple.ok(); diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCrowfoot.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCrowfoot.java index 838d07d68..0b49f3977 100644 --- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCrowfoot.java +++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCrowfoot.java @@ -50,7 +50,8 @@ public class ExtremityFactoryCrowfoot extends AbstractExtremityFactory implement @Override public UDrawable createUDrawable(Point2D p0, double angle, Side side) { - throw new UnsupportedOperationException(getClass().toString()); + angle -= Math.PI / 2; + return new ExtremityCrowfoot(p0, angle, side); } } \ No newline at end of file diff --git a/src/net/sourceforge/plantuml/svg/SvgGraphics.java b/src/net/sourceforge/plantuml/svg/SvgGraphics.java index f75e291b3..7b4c221b9 100644 --- a/src/net/sourceforge/plantuml/svg/SvgGraphics.java +++ b/src/net/sourceforge/plantuml/svg/SvgGraphics.java @@ -109,6 +109,8 @@ public class SvgGraphics { private int maxX = 10; private int maxY = 10; + private final String preserveAspectRatio; + private final double scale; private final String filterUid; private final String shadowId; @@ -124,17 +126,19 @@ public class SvgGraphics { } } - public SvgGraphics(boolean svgDimensionStyle, Dimension2D minDim, double scale, String hover, long seed) { - this(svgDimensionStyle, minDim, null, scale, hover, seed); + public SvgGraphics(boolean svgDimensionStyle, Dimension2D minDim, double scale, String hover, long seed, + String preserveAspectRatio) { + this(svgDimensionStyle, minDim, null, scale, hover, seed, preserveAspectRatio); } public SvgGraphics(boolean svgDimensionStyle, Dimension2D minDim, String backcolor, double scale, String hover, - long seed) { + long seed, String preserveAspectRatio) { try { this.svgDimensionStyle = svgDimensionStyle; this.scale = scale; this.document = getDocument(); this.backcolor = backcolor; + this.preserveAspectRatio = preserveAspectRatio; ensureVisible(minDim.getWidth(), minDim.getHeight()); this.root = getRootNode(); @@ -594,7 +598,7 @@ public class SvgGraphics { } root.setAttribute("viewBox", "0 0 " + maxXscaled + " " + maxYscaled); root.setAttribute("zoomAndPan", "magnify"); - root.setAttribute("preserveAspectRatio", "none"); + root.setAttribute("preserveAspectRatio", preserveAspectRatio); root.setAttribute("contentScriptType", "application/ecmascript"); root.setAttribute("contentStyleType", "text/css"); diff --git a/src/net/sourceforge/plantuml/syntax/LanguageDescriptor.java b/src/net/sourceforge/plantuml/syntax/LanguageDescriptor.java index 5d2c0f4f9..00e6785ac 100644 --- a/src/net/sourceforge/plantuml/syntax/LanguageDescriptor.java +++ b/src/net/sourceforge/plantuml/syntax/LanguageDescriptor.java @@ -82,6 +82,7 @@ public class LanguageDescriptor { type.add("queue"); type.add("archimate"); type.add("diamond"); + type.add("detach"); keyword.add("@startuml"); keyword.add("@enduml"); diff --git a/src/net/sourceforge/plantuml/tim/TContext.java b/src/net/sourceforge/plantuml/tim/TContext.java index 7724674f6..2a3ddfd40 100644 --- a/src/net/sourceforge/plantuml/tim/TContext.java +++ b/src/net/sourceforge/plantuml/tim/TContext.java @@ -75,6 +75,7 @@ import net.sourceforge.plantuml.tim.stdlib.FileExists; import net.sourceforge.plantuml.tim.stdlib.Filename; import net.sourceforge.plantuml.tim.stdlib.FunctionExists; import net.sourceforge.plantuml.tim.stdlib.GetVariableValue; +import net.sourceforge.plantuml.tim.stdlib.GetVersion; import net.sourceforge.plantuml.tim.stdlib.Getenv; import net.sourceforge.plantuml.tim.stdlib.IntVal; import net.sourceforge.plantuml.tim.stdlib.InvokeVoidFunction; @@ -125,6 +126,7 @@ public class TContext { addFunction(new SetVariableValue()); addFunction(new GetVariableValue()); addFunction(new IntVal()); + addFunction(new GetVersion()); // !exit // !log // %min diff --git a/src/net/sourceforge/plantuml/tim/stdlib/GetVersion.java b/src/net/sourceforge/plantuml/tim/stdlib/GetVersion.java new file mode 100644 index 000000000..1e48a2c56 --- /dev/null +++ b/src/net/sourceforge/plantuml/tim/stdlib/GetVersion.java @@ -0,0 +1,59 @@ +/* ======================================================================== + * 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 net.sourceforge.plantuml.tim.EaterException; +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; +import net.sourceforge.plantuml.version.Version; + +public class GetVersion extends SimpleReturnFunction { + + public TFunctionSignature getSignature() { + return new TFunctionSignature("%version", 1); + } + + public boolean canCover(int nbArg) { + return nbArg == 0; + } + + public TValue executeReturn(TContext context, TMemory memory, List args) throws EaterException { + return TValue.fromString(Version.versionString()); + } +} diff --git a/src/net/sourceforge/plantuml/ugraphic/FontChecker.java b/src/net/sourceforge/plantuml/ugraphic/FontChecker.java index caa03b91d..3767e57c7 100644 --- a/src/net/sourceforge/plantuml/ugraphic/FontChecker.java +++ b/src/net/sourceforge/plantuml/ugraphic/FontChecker.java @@ -157,7 +157,7 @@ public class FontChecker { } private String getSvgImage(char c) throws IOException, TransformerException { - final SvgGraphics svg = new SvgGraphics(true, new Dimension2DDouble(0, 0), 1.0, null, 42); + final SvgGraphics svg = new SvgGraphics(true, new Dimension2DDouble(0, 0), 1.0, null, 42, "none"); svg.setStrokeColor("black"); svg.svgImage(getBufferedImage(c), 0, 0); final ByteArrayOutputStream os = new ByteArrayOutputStream(); diff --git a/src/net/sourceforge/plantuml/ugraphic/ImageBuilder.java b/src/net/sourceforge/plantuml/ugraphic/ImageBuilder.java index f9eba490a..5fabb1ea7 100644 --- a/src/net/sourceforge/plantuml/ugraphic/ImageBuilder.java +++ b/src/net/sourceforge/plantuml/ugraphic/ImageBuilder.java @@ -393,7 +393,7 @@ public class ImageBuilder { return createUGraphicPNG(colorMapper, dpiFactor, dim, mybackcolor, animationArg, dx, dy); case SVG: return createUGraphicSVG(colorMapper, dpiFactor, dim, mybackcolor, fileFormatOption.getSvgLinkTarget(), - fileFormatOption.getHoverColor(), seed); + fileFormatOption.getHoverColor(), seed, fileFormatOption.getPreserveAspectRatio()); case EPS: return new UGraphicEps(colorMapper, EpsStrategy.getDefault2()); case EPS_TEXT: @@ -417,7 +417,7 @@ public class ImageBuilder { } private UGraphic2 createUGraphicSVG(ColorMapper colorMapper, double scale, Dimension2D dim, HtmlColor mybackcolor, - String svgLinkTarget, String hover, long seed) { + String svgLinkTarget, String hover, long seed, String preserveAspectRatio) { Color backColor = Color.WHITE; if (mybackcolor instanceof HtmlColorSimple) { backColor = colorMapper.getMappedColor(mybackcolor); @@ -425,12 +425,12 @@ public class ImageBuilder { final UGraphicSvg ug; if (mybackcolor instanceof HtmlColorGradient) { ug = new UGraphicSvg(svgDimensionStyle, dim, colorMapper, (HtmlColorGradient) mybackcolor, false, scale, - svgLinkTarget, hover, seed); + svgLinkTarget, hover, seed, preserveAspectRatio); } else if (backColor == null || backColor.equals(Color.WHITE)) { - ug = new UGraphicSvg(svgDimensionStyle, dim, colorMapper, false, scale, svgLinkTarget, hover, seed); + ug = new UGraphicSvg(svgDimensionStyle, dim, colorMapper, false, scale, svgLinkTarget, hover, seed, preserveAspectRatio); } else { ug = new UGraphicSvg(svgDimensionStyle, dim, colorMapper, StringUtils.getAsHtml(backColor), false, scale, - svgLinkTarget, hover, seed); + svgLinkTarget, hover, seed, preserveAspectRatio); } return ug; diff --git a/src/net/sourceforge/plantuml/ugraphic/UGraphicUtils.java b/src/net/sourceforge/plantuml/ugraphic/UGraphicUtils.java index ef66b0262..8cbf193e9 100644 --- a/src/net/sourceforge/plantuml/ugraphic/UGraphicUtils.java +++ b/src/net/sourceforge/plantuml/ugraphic/UGraphicUtils.java @@ -65,7 +65,7 @@ public abstract class UGraphicUtils { final Dimension2D size = computeSize(colorMapper, background, image); final UGraphicSvg svg = new UGraphicSvg(true, size, colorMapper, StringUtils.getAsHtml(colorMapper .getMappedColor(background)), false, 1.0, fileFormatOption.getSvgLinkTarget(), - fileFormatOption.getHoverColor(), seed); + fileFormatOption.getHoverColor(), seed, fileFormatOption.getPreserveAspectRatio()); image.drawU(svg); svg.createXml(os, fileFormatOption.isWithMetadata() ? metadata : null); } else if (fileFormat == FileFormat.EPS) { diff --git a/src/net/sourceforge/plantuml/ugraphic/svg/UGraphicSvg.java b/src/net/sourceforge/plantuml/ugraphic/svg/UGraphicSvg.java index 44cea4efe..97aebdc93 100644 --- a/src/net/sourceforge/plantuml/ugraphic/svg/UGraphicSvg.java +++ b/src/net/sourceforge/plantuml/ugraphic/svg/UGraphicSvg.java @@ -88,20 +88,21 @@ public class UGraphicSvg extends AbstractUGraphic implements ClipCo } public UGraphicSvg(boolean svgDimensionStyle, Dimension2D minDim, ColorMapper colorMapper, String backcolor, - boolean textAsPath, double scale, String linkTarget, String hover, long seed) { - this(minDim, colorMapper, new SvgGraphics(svgDimensionStyle, minDim, backcolor, scale, hover, seed), - textAsPath, linkTarget); + boolean textAsPath, double scale, String linkTarget, String hover, long seed, String preserveAspectRatio) { + this(minDim, colorMapper, new SvgGraphics(svgDimensionStyle, minDim, backcolor, scale, hover, seed, + preserveAspectRatio), textAsPath, linkTarget); } public UGraphicSvg(boolean svgDimensionStyle, Dimension2D minDim, ColorMapper colorMapper, boolean textAsPath, - double scale, String linkTarget, String hover, long seed) { - this(minDim, colorMapper, new SvgGraphics(svgDimensionStyle, minDim, scale, hover, seed), textAsPath, - linkTarget); + double scale, String linkTarget, String hover, long seed, String preserveAspectRatio) { + this(minDim, colorMapper, new SvgGraphics(svgDimensionStyle, minDim, scale, hover, seed, preserveAspectRatio), + textAsPath, linkTarget); } public UGraphicSvg(boolean svgDimensionStyle, Dimension2D minDim, ColorMapper mapper, HtmlColorGradient gr, - boolean textAsPath, double scale, String linkTarget, String hover, long seed) { - this(minDim, mapper, new SvgGraphics(svgDimensionStyle, minDim, scale, hover, seed), textAsPath, linkTarget); + boolean textAsPath, double scale, String linkTarget, String hover, long seed, String preserveAspectRatio) { + this(minDim, mapper, new SvgGraphics(svgDimensionStyle, minDim, scale, hover, seed, preserveAspectRatio), + textAsPath, linkTarget); final SvgGraphics svg = getGraphicObject(); svg.paintBackcolorGradient(mapper, gr); diff --git a/src/net/sourceforge/plantuml/utils/CharHidder.java b/src/net/sourceforge/plantuml/utils/CharHidder.java index 5ce1a31a0..beb4ba2f6 100644 --- a/src/net/sourceforge/plantuml/utils/CharHidder.java +++ b/src/net/sourceforge/plantuml/utils/CharHidder.java @@ -46,7 +46,10 @@ public class CharHidder { final StringBuilder result = new StringBuilder(); for (int i = 0; i < s.length(); i++) { final char c = s.charAt(i); - if (c == '~' && i + 1 < s.length()) { + if (c == '\\' && i + 1 < s.length() && s.charAt(i + 1) == '~') { + result.append(hideChar('~')); + i++; + } else if (c == '~' && i + 1 < s.length()) { i++; final char c2 = s.charAt(i); if (isToBeHidden(c2)) { diff --git a/src/net/sourceforge/plantuml/version/Version.java b/src/net/sourceforge/plantuml/version/Version.java index 947113ca7..cdfee3042 100644 --- a/src/net/sourceforge/plantuml/version/Version.java +++ b/src/net/sourceforge/plantuml/version/Version.java @@ -43,7 +43,7 @@ public class Version { private static final int MAJOR_SEPARATOR = 1000000; public static int version() { - return 1201911; + return 1201912; } public static int versionPatched() { @@ -93,7 +93,7 @@ public class Version { } public static long compileTime() { - return 1569146535007L; + return 1572776694309L; } public static String compileTimeString() { diff --git a/stdlib/home.repx b/stdlib/home.repx index 9496900f7..b09566345 100644 --- a/stdlib/home.repx +++ b/stdlib/home.repx @@ -8,3 +8,4 @@ material office c4 osa +kubernetes diff --git a/stdlib/kubernetes-abx.repx b/stdlib/kubernetes-abx.repx new file mode 100644 index 0000000000000000000000000000000000000000..5563efebb96550b1ebb0b1c7527fcb001ab7c93b GIT binary patch literal 587 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

b??Q@i`q!+!iCS31 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 literal 0 HcmV?d00001 diff --git a/stdlib/osa-abx.repx b/stdlib/osa-abx.repx index 95516ae1867b7bcbb93f5d6667cd586c5a44578c..14cbddfdebd40c013c82764b6137678b525bc69e 100644 GIT binary patch delta 2564 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 al*G8GHQoog-k=2_p#Z5DK&}9BFysdM;poi( delta 2597 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 HI2ou1mqPBK diff --git a/stdlib/osa-dex.repx b/stdlib/osa-dex.repx index e0870ae6eb30ca772446bf61695d09598c6417de..d471bdd3d862fab2474d39e7d1dab87de8a88bc8 100644 GIT binary patch literal 40715 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 T9)Hk1w-5Zm9kbyT0Nnrpmw=vM literal 40617 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

+VdmTfrf($#c*urx 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 ZtzJ|$Bse{Nv%A>`e&LSk@Ctxo007=rh{6B>