diff --git a/pom.xml b/pom.xml index 5515d7f5b..38b7ce841 100644 --- a/pom.xml +++ b/pom.xml @@ -35,7 +35,7 @@ net.sourceforge.plantuml plantuml - 1.2020.25-SNAPSHOT + 1.2020.27-SNAPSHOT jar PlantUML @@ -106,6 +106,7 @@ sprites/archimate/*.png net/sourceforge/plantuml/dedication/*.png net/sourceforge/plantuml/math/*.js + net/sourceforge/plantuml/windowsdot/*.dat diff --git a/src/net/sourceforge/plantuml/TitledDiagram.java b/src/net/sourceforge/plantuml/TitledDiagram.java index 8cae8fc60..8c32b482b 100644 --- a/src/net/sourceforge/plantuml/TitledDiagram.java +++ b/src/net/sourceforge/plantuml/TitledDiagram.java @@ -49,7 +49,7 @@ import net.sourceforge.plantuml.style.StyleBuilder; public abstract class TitledDiagram extends AbstractPSystem implements Diagram, Annotated { - public static final boolean FORCE_JDOT = false; + public static final boolean FORCE_SMETANA = false; private DisplayPositionned title = DisplayPositionned.none(HorizontalAlignment.CENTER, VerticalAlignment.TOP); @@ -189,16 +189,16 @@ public abstract class TitledDiagram extends AbstractPSystem implements Diagram, return mainFrame; } - private boolean useJDot; + private boolean useSmetana; - public void setUseJDot(boolean useJDot) { - this.useJDot = useJDot; + public void setUseSmetana(boolean useSmetana) { + this.useSmetana = useSmetana; } - public boolean isUseJDot() { - if (FORCE_JDOT) + public boolean isUseSmetana() { + if (FORCE_SMETANA) return true; - return useJDot; + return useSmetana; } public final double getScaleCoef(FileFormatOption fileFormatOption) { diff --git a/src/net/sourceforge/plantuml/command/CommandPragma.java b/src/net/sourceforge/plantuml/command/CommandPragma.java index 4be208abe..068ff9768 100644 --- a/src/net/sourceforge/plantuml/command/CommandPragma.java +++ b/src/net/sourceforge/plantuml/command/CommandPragma.java @@ -76,11 +76,11 @@ public class CommandPragma extends SingleLineCommand2 { } } else { system.getPragma().define(name, value); - if (name.equalsIgnoreCase("graphviz_dot") && value.equalsIgnoreCase("smetana")) { - system.setUseJDot(true); - } if (name.equalsIgnoreCase("graphviz_dot") && value.equalsIgnoreCase("jdot")) { - system.setUseJDot(true); + return CommandExecutionResult.error("This directive has been renamed to '!pragma graphviz_dot smetana'. Please update your diagram."); + } + if (name.equalsIgnoreCase("graphviz_dot") && value.equalsIgnoreCase("smetana")) { + system.setUseSmetana(true); } if (name.equalsIgnoreCase("graphviz_dot") && value.equalsIgnoreCase(GraphvizUtils.VIZJS)) { system.getSkinParam().setUseVizJs(true); diff --git a/src/net/sourceforge/plantuml/cucadiagram/CucaDiagram.java b/src/net/sourceforge/plantuml/cucadiagram/CucaDiagram.java index 56d1afe16..289c4c790 100644 --- a/src/net/sourceforge/plantuml/cucadiagram/CucaDiagram.java +++ b/src/net/sourceforge/plantuml/cucadiagram/CucaDiagram.java @@ -58,7 +58,7 @@ import net.sourceforge.plantuml.creole.CreoleMode; import net.sourceforge.plantuml.cucadiagram.dot.CucaDiagramTxtMaker; import net.sourceforge.plantuml.cucadiagram.entity.EntityFactory; import net.sourceforge.plantuml.graphic.USymbol; -import net.sourceforge.plantuml.jdot.CucaDiagramFileMakerJDot; +import net.sourceforge.plantuml.sdot.CucaDiagramFileMakerSmetana; import net.sourceforge.plantuml.security.SecurityUtils; import net.sourceforge.plantuml.skin.VisibilityModifier; import net.sourceforge.plantuml.statediagram.StateDiagram; @@ -649,8 +649,8 @@ public abstract class CucaDiagram extends UmlDiagram implements GroupHierarchy, entityFactory.buildSuperGroups(); - final CucaDiagramFileMaker maker = this.isUseJDot() - ? new CucaDiagramFileMakerJDot(this, fileFormatOption.getDefaultStringBounder(getSkinParam())) + final CucaDiagramFileMaker maker = this.isUseSmetana() + ? new CucaDiagramFileMakerSmetana(this, fileFormatOption.getDefaultStringBounder(getSkinParam())) : new CucaDiagramFileMakerSvek(this); final ImageData result = maker.createFile(os, getDotStrings(), fileFormatOption); diff --git a/src/net/sourceforge/plantuml/cucadiagram/dot/GraphvizUtils.java b/src/net/sourceforge/plantuml/cucadiagram/dot/GraphvizUtils.java index e0f2a5467..223892500 100644 --- a/src/net/sourceforge/plantuml/cucadiagram/dot/GraphvizUtils.java +++ b/src/net/sourceforge/plantuml/cucadiagram/dot/GraphvizUtils.java @@ -70,6 +70,25 @@ public class GraphvizUtils { dotExecutable = value == null ? null : value.trim(); } + public static Graphviz createForSystemDot(ISkinParam skinParam, String dotString, String... type) { + if (useVizJs(skinParam)) { + Log.info("Using " + VIZJS); + return new GraphvizJs(dotString); + } + final AbstractGraphviz result; + if (isWindows()) { + result = new GraphvizWindowsOld(skinParam, dotString, type); + } else { + result = new GraphvizLinux(skinParam, dotString, type); + } + if (result.getExeState() != ExeState.OK && VizJsEngine.isOk()) { + Log.info("Error with file " + result.getDotExe() + ": " + result.getExeState().getTextMessage()); + Log.info("Using " + VIZJS); + return new GraphvizJs(dotString); + } + return result; + } + public static Graphviz create(ISkinParam skinParam, String dotString, String... type) { if (useVizJs(skinParam)) { Log.info("Using " + VIZJS); @@ -77,7 +96,7 @@ public class GraphvizUtils { } final AbstractGraphviz result; if (isWindows()) { - result = new GraphvizWindows(skinParam, dotString, type); + result = new GraphvizWindowsLite(skinParam, dotString, type); } else { result = new GraphvizLinux(skinParam, dotString, type); } diff --git a/src/net/sourceforge/plantuml/cucadiagram/dot/GraphvizWindows.java b/src/net/sourceforge/plantuml/cucadiagram/dot/GraphvizWindowsLite.java similarity index 91% rename from src/net/sourceforge/plantuml/cucadiagram/dot/GraphvizWindows.java rename to src/net/sourceforge/plantuml/cucadiagram/dot/GraphvizWindowsLite.java index 8314339af..7b55b5bab 100644 --- a/src/net/sourceforge/plantuml/cucadiagram/dot/GraphvizWindows.java +++ b/src/net/sourceforge/plantuml/cucadiagram/dot/GraphvizWindowsLite.java @@ -41,7 +41,7 @@ import java.io.IOException; import net.sourceforge.plantuml.ISkinParam; import net.sourceforge.plantuml.windowsdot.WindowsDotArchive; -class GraphvizWindows extends AbstractGraphviz { +class GraphvizWindowsLite extends AbstractGraphviz { static private File specificDotExe; @@ -52,7 +52,7 @@ class GraphvizWindows extends AbstractGraphviz { @Override protected File specificDotExe() { - synchronized (GraphvizWindows.class) { + synchronized (GraphvizWindowsLite.class) { if (specificDotExe == null) try { specificDotExe = new WindowsDotArchive().getWindowsExeLite(); @@ -68,7 +68,7 @@ class GraphvizWindows extends AbstractGraphviz { return false; } - GraphvizWindows(ISkinParam skinParam, String dotString, String... type) { + GraphvizWindowsLite(ISkinParam skinParam, String dotString, String... type) { super(skinParam, dotString, type); } diff --git a/src/net/sourceforge/plantuml/directdot/PSystemDot.java b/src/net/sourceforge/plantuml/directdot/PSystemDot.java index 1a40bbdda..292e23c8f 100644 --- a/src/net/sourceforge/plantuml/directdot/PSystemDot.java +++ b/src/net/sourceforge/plantuml/directdot/PSystemDot.java @@ -70,11 +70,11 @@ public class PSystemDot extends AbstractPSystem { @Override final protected ImageData exportDiagramNow(OutputStream os, int num, FileFormatOption fileFormat, long seed) throws IOException { - final Graphviz graphviz = GraphvizUtils.create(null, data, + final Graphviz graphviz = GraphvizUtils.createForSystemDot(null, data, StringUtils.goLowerCase(fileFormat.getFileFormat().name())); if (graphviz.getExeState() != ExeState.OK) { - final TextBlock result = GraphicStrings.createForError( - Arrays.asList("There is an issue with your Dot/Graphviz installation"), false); + final TextBlock result = GraphicStrings + .createForError(Arrays.asList("There is an issue with your Dot/Graphviz installation"), false); UGraphicUtils.writeImage(os, null, fileFormat, seed(), new ColorMapperIdentity(), HColorUtils.WHITE, result); return ImageDataSimple.error(); diff --git a/src/net/sourceforge/plantuml/donors/PSystemDonors.java b/src/net/sourceforge/plantuml/donors/PSystemDonors.java index 406556871..caa8299d7 100644 --- a/src/net/sourceforge/plantuml/donors/PSystemDonors.java +++ b/src/net/sourceforge/plantuml/donors/PSystemDonors.java @@ -77,27 +77,27 @@ public class PSystemDonors extends AbstractPSystem { private static final int COLS = 6; private static final int FREE_LINES = 6; - public static final String DONORS = "6wCC0AmFkBap0wp4H6CjU-RENbb-8cPf4i7oFA4uiOZJNK3y0UwT7lSRwI-YAxltJJEYrckJSWPHVH3q" + public static final String DONORS = "6wyC0AmFkBap0wp4H6CjU-RENbb-8cPf4i7oFA4uiOZJNK3y0UwT7lSRwI-YAxltJJEYrckJSWPHVH3q" + "W7UtXVQXzBy-27EYV0Z-tGWU80D4ITH6ZIpt9Djjcof3Il3lEr_v9UWTth51ehbAgiMHwq-_8GFlEsFp" - + "x3I-UFLeWZO2FmRsrQ4rLzSG2yNoF54A9IqJsjIaONRtQP2UJ-3_u5cxQ4k_PeqqL6171HxxoYzdEnzs" - + "JLR525Eai5iX1RRUcC6TazxBPACF2h_K3w7DvWfBMSu4ucX3FRg-NXlUDcBu6ecF0HWX5cGyC0TIZfb5" - + "575kkb5WYC31EOlPM7t9aIUJ4Cn32tdpXtfIuf7opEbmKM1w10ZOdaO1ajR8hGbdymy3qaMoHTWILvqp" - + "Rio-SLYUaesauTF4Wic2Me0QWlmFkg3JOesF9cUx6cn9FKroxzQ2-lE0XxWsA_eAIvE4-LfxQJOKLv-o" - + "HAgnZS_HNlC8mDrIAqTy6NrqSWJrVlCgnEf72yYFG0_LX2Nvi-m72v4GrJRiG-ywsquUimW7PCWqiGxU" - + "nPRNP2zqSJjBIx82BABtYQzpck21BNJ5vM7W2IrTBkjy0fEMLkyNFHhMxXEkqOdTg-IUw5gmbFxxLHzc" - + "1iK1cYun2xhJm22CfbMes404TWlT7t1J85T2kRiknUxZ8dta9m3UXFIWAsm6ue5uVf5oqo54DAHhUueL" - + "mFXJIbqKM1POC6aJT3MgjDFBQhN7wMgPlcoCkq_Qu7cjmHYAOpfIVM6-UrMuXQ5EDPfbcxLtCQVW4ZuE" - + "yghtpCjL09SMtdaVNFEF38WplJ8YKc-w-hOD_yZShC8mIslEpQfqL_M3cuVs7RYBHGtCA9E7J0gDEuce" - + "gLy9Vbeo_Cs3hDHVRIZlO7Mw3WrXPiI2sqkJ2sfoH85XEikXia70h5gyuXHFkAPW3QkLp1OsHUGPg_iX" - + "Gtu7V1AMQcQXSMFNS1VW6P57WJoSzyYgPVNQXCu5PCvcWhQqOAgbK96-5iY0iIOzzTQ8xKyBBA1BUuoE" - + "nGw5BvjehNA365F0T1F2Bnn4egWXKg8NEKa4y3z_xb9FDDU17zyPmoVZGBA790HK8UuEFL5wYjMZsp3M" - + "Q_JzUYat7y6VV-tH9YUFtVFJ1A9ra2Z-9o00HpaIFNWQ-6loYSYx6TPa1UCYmvMBbHuB92pempkxgFEM" - + "6T4xCLckA1Uj8Z-KxhUu5YucXjYGug8TLBHOKjBBpMfGyMplUzVX8WU2VuagMP5Srieo6GasWLcSksDV" - + "RHZgjk86U50TbGbQk-ktqontZJbV8Qbfk138zrlaLD8Yj61DJKrz8T0cnlxUfFsKfyL_Cg8VJslPSLKF" - + "xeCSNN8NqV1DYO5sJ4zYk8Yp8O1yUSu92znyqqHUL0jAmzAw6NRqO8NyqY_XXOGzjl41IPPNQLQv8GVP" - + "GlPqDL0VK5GJB921HREkIImevNX0YgJ0dBDbH1Of1st0Spq3u1G5zlVt6eIJ9PfVqAozFQEGp4MPc_4C" - + "8ZQSdq729bCs5t9WNvYvRFMAt70jqc47lXtVSRx-4NNr809n80gJu0LSfCEDMMPfs1JFRogvZqj5tao-" - + "calHLYe3ssKckm4s0qeyEGvYbaQ5ujU1d_q3MyxlbN_lD-3vQG00"; + + "x3I-UFLeWZO2FmRsrVcVQ_NQ7kb2GV9veXHAkanefoODi_-N3j9O0j_0itRHbhPsqaY72koem6DV-ULh" + + "vyEZoQeOMOeKGIka8D0RCmHoqdk3RFH1uPVw8RJPN64fovb076seHzVNQnFRHWpVAF61m0sn81E1EP1o" + + "p2oYo7FJZG9N10w-MSp6MagEF9c4O1vQo9i_r9CIZvHdJeUB0iyZG23mD0gGj4O1JJXRSXYGEP8j4fQu" + + "wi9nOmwFm_AKUYGDdoOMF1RK0jGGv7_G1PqMQtmqETlLO4lgQP9xjqxKdn6FSsrMz5MN9WdpjVRIR2Ak" + + "CMM9L6CRdwEzvX60kwLMZlWo-XZa2EhzvbM8rOyMa1-17ge9I_9dsGyMeY2gRTY7tdLsdpnc4Gx8a6bY" + + "7RoBBQ-fN-WITLQGP0LOvE_ChmkRu84jT2NaOU09BNCkwtm2avPMxnSz6jRk4wunYzshuvxeQ5XA__sg" + + "3pE3uW0jb9W5tMbWK4RJAbvi80AxXHuFk2cGAw7SNPTYzt6HFl8J06zIUj0LDaY24CylIcuwX8Y6TEr9" + + "iGAOU4gfYmBV0WjsROAkHfL-UbcjzZXTBTENZGdtIHiyhpKOGt5CHwalp7Ul2hSmDAj6itgpzYxc55p9" + + "nq5UzPx5kGhWqiAxueDh_f41UQPNHaGQJLVVjk4VcPjL66QXvzoiIdTLFxXvwF21krZKnOmoUSXKq7YG" + + "Y9hwbU2d9SFVOiYg_DMDyWvMf-km46P6FBYzDBcW9aSKkAQp71OR1CognIjEYONh2TQmw6Isi2aYprZT" + + "3ndoE-2Ji5Gp2qq0kuQx0C_8FGhauRn7LYshroPqBY17DXFqfGLJBOMAzBL01emrwUcqHcn_Mc01MzfZ" + + "TAnmA7pPH6kL6nIO0gQRa7xX81Bb3T4IlQX98e3_-NENUlAv3kBupXW-6GUIFIGXe0f5TzY9qbEw7js6" + + "iLwZxzTBkVa8_lnhZpOv1UsUdoOGhOFayS-401pbAFJWQU2loISdxrvOanMSYmnNBbPwF92mO1ZlxA8k" + + "NcR4xiHakPfSj8hyKERVubguc1nYGugBVb3HOab9BpUhGIMsVVXTXuiSAFubgfH4SbchpcGa-0HcSUwE" + + "VRLXgDig6X11TLGce7VNRwTPxXfpla9Iqt0PaE-toAcaHMZ1cfhQ-qAWMupzlIdxAK-B_sH4Fx7MwkEg" + + "7W87ERhSBgBXcn58EwOdCLmat110lppdX0TklkaXBwe5fM5ftGmxJh12VeMNy4B27jluW2BBgpIht923" + + "RY5xeHge3oYg2Hx8mA93roGMb78y84LIOCxPCZABb8CsuBcU0N2A0llxUmt2gHFDBsZMtfvHIEPYpCru" + + "1X4VpiyWOPCfcnyvi2_BNBPwHMwY5kcm0z-ExpXV_uYwUX218X1bIV2YBjBXndopD6mgvZTrtCUbDcyc" + + "ty2bQEkKWUqoazq0cm4bdWH0xA2WGiKhylDyOCivYVnxlp4LDcl2KsOyim00"; /* * Special thanks to our sponsors and donors: @@ -111,7 +111,7 @@ public class PSystemDonors extends AbstractPSystem { final UDrawable result = getGraphicStrings(); HColor backcolor = HColorUtils.WHITE; final ImageParameter imageParameter = new ImageParameter(new ColorMapperIdentity(), false, null, 1.0, - getMetadata(), null, ClockwiseTopRightBottomLeft.none(), backcolor); + getMetadata(), null, ClockwiseTopRightBottomLeft.none(), backcolor); final ImageBuilder imageBuilder = ImageBuilder.build(imageParameter); imageBuilder.setUDrawable(result); return imageBuilder.writeImageTOBEMOVED(fileFormat, seed, os); diff --git a/src/net/sourceforge/plantuml/jdot/CucaDiagramFileMakerJDot.java b/src/net/sourceforge/plantuml/sdot/CucaDiagramFileMakerSmetana.java similarity index 98% rename from src/net/sourceforge/plantuml/jdot/CucaDiagramFileMakerJDot.java rename to src/net/sourceforge/plantuml/sdot/CucaDiagramFileMakerSmetana.java index 5c67fc804..d72e65d66 100644 --- a/src/net/sourceforge/plantuml/jdot/CucaDiagramFileMakerJDot.java +++ b/src/net/sourceforge/plantuml/sdot/CucaDiagramFileMakerSmetana.java @@ -33,7 +33,7 @@ * * */ -package net.sourceforge.plantuml.jdot; +package net.sourceforge.plantuml.sdot; import static gen.lib.cgraph.attr__c.agsafeset; import static gen.lib.cgraph.edge__c.agedge; @@ -115,7 +115,7 @@ import smetana.core.Macro; import smetana.core.Z; import smetana.core.debug.SmetanaDebug; -public class CucaDiagramFileMakerJDot implements CucaDiagramFileMaker { +public class CucaDiagramFileMakerSmetana implements CucaDiagramFileMaker { private final CucaDiagram diagram; @@ -158,7 +158,7 @@ public class CucaDiagramFileMakerJDot implements CucaDiagramFileMaker { continue; } final ST_Agedge_s edge = ent.getValue(); - new JDotPath(link, edge, ymirror, diagram, getLabel(link), getQualifier(link, 1), getQualifier(link, 2)) + new SmetanaPath(link, edge, ymirror, diagram, getLabel(link), getQualifier(link, 1), getQualifier(link, 2)) .drawU(ug); } } @@ -189,7 +189,7 @@ public class CucaDiagramFileMakerJDot implements CucaDiagramFileMaker { } - public CucaDiagramFileMakerJDot(CucaDiagram diagram, StringBounder stringBounder) { + public CucaDiagramFileMakerSmetana(CucaDiagram diagram, StringBounder stringBounder) { this.diagram = diagram; this.stringBounder = stringBounder; this.dotStringFactory = new DotStringFactory(stringBounder, diagram); diff --git a/src/net/sourceforge/plantuml/jdot/DebugUtils.java b/src/net/sourceforge/plantuml/sdot/DebugUtils.java similarity index 99% rename from src/net/sourceforge/plantuml/jdot/DebugUtils.java rename to src/net/sourceforge/plantuml/sdot/DebugUtils.java index d7553c40c..7ca4af4f4 100644 --- a/src/net/sourceforge/plantuml/jdot/DebugUtils.java +++ b/src/net/sourceforge/plantuml/sdot/DebugUtils.java @@ -32,7 +32,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package net.sourceforge.plantuml.jdot; +package net.sourceforge.plantuml.sdot; import h.ST_Agedge_s; import h.ST_Agedgeinfo_t; diff --git a/src/net/sourceforge/plantuml/jdot/JDotPath.java b/src/net/sourceforge/plantuml/sdot/SmetanaPath.java similarity index 97% rename from src/net/sourceforge/plantuml/jdot/JDotPath.java rename to src/net/sourceforge/plantuml/sdot/SmetanaPath.java index 28370f70c..ed2ea0442 100644 --- a/src/net/sourceforge/plantuml/jdot/JDotPath.java +++ b/src/net/sourceforge/plantuml/sdot/SmetanaPath.java @@ -33,7 +33,7 @@ * * */ -package net.sourceforge.plantuml.jdot; +package net.sourceforge.plantuml.sdot; import java.awt.geom.Point2D; @@ -65,7 +65,7 @@ import net.sourceforge.plantuml.ugraphic.color.HColorNone; import net.sourceforge.plantuml.ugraphic.color.HColorUtils; import smetana.core.Macro; -public class JDotPath implements UDrawable { +public class SmetanaPath implements UDrawable { private final Link link; private final ST_Agedge_s edge; @@ -76,7 +76,7 @@ public class JDotPath implements UDrawable { private final TextBlock tailLabel; private final Rose rose = new Rose(); - public JDotPath(Link link, ST_Agedge_s edge, YMirror ymirror, CucaDiagram diagram, TextBlock label, + public SmetanaPath(Link link, ST_Agedge_s edge, YMirror ymirror, CucaDiagram diagram, TextBlock label, TextBlock tailLabel, TextBlock headLabel) { this.link = link; this.edge = edge; @@ -104,6 +104,10 @@ public class JDotPath implements UDrawable { public void drawU(UGraphic ug) { + if (link.isHidden()) { + return; + } + HColor color = rose.getHtmlColor(diagram.getSkinParam(), null, getArrowColorParam()); if (this.link.getColors() != null) { diff --git a/src/net/sourceforge/plantuml/jdot/YMirror.java b/src/net/sourceforge/plantuml/sdot/YMirror.java similarity index 98% rename from src/net/sourceforge/plantuml/jdot/YMirror.java rename to src/net/sourceforge/plantuml/sdot/YMirror.java index aba5e1994..327012e3b 100644 --- a/src/net/sourceforge/plantuml/jdot/YMirror.java +++ b/src/net/sourceforge/plantuml/sdot/YMirror.java @@ -33,7 +33,7 @@ * * */ -package net.sourceforge.plantuml.jdot; +package net.sourceforge.plantuml.sdot; import java.awt.geom.CubicCurve2D; import java.awt.geom.Point2D; diff --git a/src/net/sourceforge/plantuml/version/Version.java b/src/net/sourceforge/plantuml/version/Version.java index fd91bf46e..7f1582918 100644 --- a/src/net/sourceforge/plantuml/version/Version.java +++ b/src/net/sourceforge/plantuml/version/Version.java @@ -44,7 +44,7 @@ public class Version { private static final int MAJOR_SEPARATOR = 1000000; public static int version() { - return 1202024; + return 1202026; } public static int versionPatched() { @@ -93,7 +93,7 @@ public class Version { } public static long compileTime() { - return 1608310836208L; + return 1608572707669L; } public static String compileTimeString() {