Import version 1.2020.15

This commit is contained in:
Arnaud Roques 2020-06-28 14:40:33 +02:00
parent a38685d3ba
commit 55ca84b7c1
20 changed files with 129 additions and 96 deletions

View File

@ -30,7 +30,8 @@
Script Author: Julien Eluard
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.plantuml</groupId>

View File

@ -311,34 +311,37 @@ public class StringUtils {
}
public static boolean isDiagramCacheable(String uml) {
uml = uml.toLowerCase();
if (uml.startsWith("@startuml\nversion\n")) {
if (uml.length() < 35) {
return false;
}
if (uml.startsWith("@startuml\nlicense\n")) {
return false;
}
if (uml.startsWith("@startuml\nlicence\n")) {
return false;
}
if (uml.startsWith("@startuml\nauthor\n")) {
return false;
}
if (uml.startsWith("@startuml\ndonors\n")) {
return false;
}
// if (uml.startsWith("@startuml\ncheckversion")) {
// uml = uml.toLowerCase();
// if (uml.startsWith("@startuml\nversion\n")) {
// return false;
// }
// if (uml.startsWith("@startuml\nlicense\n")) {
// return false;
// }
// if (uml.startsWith("@startuml\nlicence\n")) {
// return false;
// }
// if (uml.startsWith("@startuml\nauthor\n")) {
// return false;
// }
// if (uml.startsWith("@startuml\ndonors\n")) {
// return false;
// }
//// if (uml.startsWith("@startuml\ncheckversion")) {
//// return false;
//// }
// if (uml.startsWith("@startuml\ntestdot\n")) {
// return false;
// }
// if (uml.startsWith("@startuml\nsudoku\n")) {
// return false;
// }
// if (uml.startsWith("@startuml\nstdlib\n")) {
// return false;
// }
if (uml.startsWith("@startuml\ntestdot\n")) {
return false;
}
if (uml.startsWith("@startuml\nsudoku\n")) {
return false;
}
if (uml.startsWith("@startuml\nstdlib\n")) {
return false;
}
return true;
}

View File

@ -64,21 +64,18 @@ public class CommandHideShowByGender extends SingleLineCommand2<UmlDiagram> {
}
static IRegex getRegexConcat() {
return RegexConcat
.build(CommandHideShowByGender.class.getName(),
RegexLeaf.start(), //
new RegexLeaf("COMMAND", "(hide|show)"), //
RegexLeaf.spaceOneOrMore(), //
new RegexLeaf("GENDER",
"(?:(class|object|interface|enum|annotation|abstract|[\\p{L}0-9_.]+|[%g][^%g]+[%g]|\\<\\<.*\\>\\>)[%s]+)*?"), //
new RegexOptional( //
new RegexConcat( //
new RegexLeaf("EMPTY", "(empty)"), //
RegexLeaf.spaceOneOrMore()) //
), //
new RegexLeaf("PORTION",
"(members?|attributes?|fields?|methods?|circles?|circled?|stereotypes?)"), //
RegexLeaf.end());
return RegexConcat.build(CommandHideShowByGender.class.getName(), RegexLeaf.start(), //
new RegexLeaf("COMMAND", "(hide|show)"), //
RegexLeaf.spaceOneOrMore(), //
new RegexLeaf("GENDER",
"(?:(class|object|interface|enum|annotation|abstract|[\\p{L}0-9_.]+|[%g][^%g]+[%g]|\\<\\<.*\\>\\>)[%s]+)*?"), //
new RegexOptional( //
new RegexConcat( //
new RegexLeaf("EMPTY", "(empty)"), //
RegexLeaf.spaceOneOrMore()) //
), //
new RegexLeaf("PORTION", "(members?|attributes?|fields?|methods?|circles?|circled?|stereotypes?)"), //
RegexLeaf.end());
}
private final EntityGender emptyByGender(EntityPortion portion) {
@ -151,7 +148,7 @@ public class CommandHideShowByGender extends SingleLineCommand2<UmlDiagram> {
final EntityPortion portion = getEntityPortion(arg.get("PORTION", 0));
EntityGender gender = null;
final String arg1 = arg.get("GENDER", 0);
String arg1 = arg.get("GENDER", 0);
if (arg1 == null) {
gender = EntityGenderUtils.all();
} else if (arg1.equalsIgnoreCase("class")) {
@ -169,6 +166,7 @@ public class CommandHideShowByGender extends SingleLineCommand2<UmlDiagram> {
} else if (arg1.startsWith("<<")) {
gender = EntityGenderUtils.byStereotype(arg1);
} else {
arg1 = StringUtils.eventuallyRemoveStartingAndEndingDoubleQuote(arg1);
final Ident ident = diagram.buildLeafIdent(arg1);
final Code code = diagram.V1972() ? ident : diagram.buildCode(arg1);
final IEntity entity = diagram.getOrCreateLeaf(ident, code, null, null);

View File

@ -74,7 +74,7 @@ public class CompressionHuffman implements Compression {
baos.close();
return ByteArray.from(baos.toByteArray());
} catch (IOException e) {
System.err.println("Not Huffman");
// System.err.println("Not Huffman");
throw new NoPlantumlCompressionException(e);
}
}

View File

@ -75,8 +75,7 @@ public class CompressionZlib implements Compression {
if (compresser.finished() == false) {
return null;
}
final byte[] result = copyArray(output, compressedDataLength);
return result;
return copyArray(output, compressedDataLength);
}
public ByteArray decompress(byte[] in) throws NoPlantumlCompressionException {
@ -102,7 +101,7 @@ public class CompressionZlib implements Compression {
// }
return ByteArray.from(result);
} catch (IOException e) {
e.printStackTrace();
// e.printStackTrace();
throw new NoPlantumlCompressionException(e);
}

View File

@ -84,7 +84,7 @@ public class TranscoderImpl implements Transcoder {
final String string = format == Format.UTF8 ? data.toUFT8String() : data.toUPF9String();
return stringCompressor.decompress(string);
} catch (Exception e) {
System.err.println("Cannot decode string");
// System.err.println("Cannot decode string");
throw new NoPlantumlCompressionException(e);
}
}

View File

@ -74,26 +74,26 @@ public class PSystemDonors extends AbstractPSystem {
private static final int COLS = 6;
private static final int FREE_LINES = 6;
public static final String DONORS = "6xKB02mFkBap0p4nqLYNlhbPJVbOScQJ29Rd2SLXO15FTmFY3t3lzBZVI7yHNUdUDys8jcnDSPunH2m8"
+ "UZnDhXcskRS7GbifBu8ZbU02Ka1y6oVdVUp8-_H9bI4bYAMIzTjKJ9zqAHiYuxFU2Ds0pdaRtdV6vjbf"
+ "VF7gqGHj17uCxAl_DwULTVUgAin0bzMCcL7H4weOKYCYHVn_LEEoKnlVJNKQI08wTN45DzMfW5SdF0OM"
+ "QGQtZFDgqcHKJ68JAQ7QA24a1ZEqvQJsEVAB31A_r1leqbfTGo9tGF6OAH9TZ-NsxJjeVhd4Y-0Flc2p"
+ "m1nAEOelKFpSY97myw2XPHUziLL7bZmfWA4CMjYRFnJ9aTv3ChiCBH81DL0GyZOEI4QXDaquExOOK6KF"
+ "jkZJ85MN-asuSnsMf_JSQ7WHM0HOS1PGGv3_GI_uZBxobiazDqKj8K-JU5LRZ_gLU2zjCw9l-j4aK3xR"
+ "JyrSVkKfMm_fN7cVyw_E3ddNa9MhFumwCda4TpdCfM5-Qu7w4UYsEL59V4zPM4X0kAxK6-awDrwflGZ7"
+ "R4YfMCTVOijh-X-w8fMDYULqiCXFzzUbfcImXQvCgg4tj2hJhFE9bjHGVt_9ewNpNN1DfTczW_GUQNEU"
+ "_zzrIpD3SO2EJJ4BkaMW6AocLM-nWGXE2vqVSXCW6r2-J6xvo_9B_54V4BovH20A6v9syET7o4CkN9Y1"
+ "LTsKOWGmUqevBn911oBKwX1qAwga8sNk-XacFTkMZPbbqWVNxGPZvCTqGd4HVfaBFCAmKYsQzTtQ9dO9"
+ "hl8wpglkDTglujZUmdlAJMh_aW4_mvmHaN8ZYdrFkoKyr56OnLxoL1VVq-tauA4x5vp1ecNCQBCTCWqA"
+ "Pv9nfZvYzA71y7SKifhT6vjw1U4xOIkucP46pvScrzJa4Wc_xIp7mnQ04dFnYbrHuP92rImxbQjh2PCZ"
+ "Lez2XloEzGaibMdXnjFFvgw5PsIFWZgSTyUgexvDQTuMK5rC4wIbXJ9dI9E7hGKoi5QdPwaDiFkb7GlM"
+ "DZzPiU9GVDj4suqR54o1wIBS1mqYKIvebEWb9ea1lklZL-h9VHriV7TFAyP1qa8I0rN8rLa_E3KDdbje"
+ "6kir-d-ijSEoy-VVwyWcf_Quzrq4qNEG7Fzk2j1HJY22fu6ljtmoUIV1gh58JqhcoZLAJmC92tRIExEe"
+ "HuSPhJjUB3SZ5xry-r2LFvrSWOlvu1jMNAJJvBClSTBQeHvKKTjtlh4uo67WxwBAX4okSlNQ60cTGIzE"
+ "QkmsKt6NLGgmO7PS9h3tgy-QQRnap7t7KjtmE91lZiYGOlJGmfgQriQ5m4RfpEyjR4Coe_yBHlIBQgsV"
+ "U_NGUr9-ZnI1Xczda75691WkaWuCZ9lxd6ZGpJSCyiBKdEXqiVZAHLSCEr-mmdvZFo8B2IziQwQ9iDVH"
+ "hURKnrmyfnt8CRQGVMmscbx8gmWDP66nJgzEB9HoF90YAPYpjumNaNRI6rpQEu1EKJ3-VxSXd5veVaHc"
+ "bNdrHZ6NS-x5FOXqk3-DnAPTDZEowLsdAt9Z10y0";
public static final String DONORS = "6y8B02mFk3cOSJIBSEBLlhdPHgj_M8aA4IpF4uh3m2AUxWR47-3UwN6_aVuYkjAzRveHRVbhZfzd3DL0"
+ "qEFnwshOvdzxy6_EaXV1DrE22qW1-V5gD_8XxyXnUgJAa1B4Kj7zbudRqwtZGcMSg4Oe1ufR6zvtnkRP"
+ "QNpnwj44RGH-3Eoh_pTrbNLvLHMc1TsjC0QZeX4kOoh6dWhScl-V2gXm2lOT2lJqOpfrSHqELLIYkRcy"
+ "LjAS3BZHDSwXmvAg6AE9b5njf90p1pFqv6JqK_gXZzw_j0leq5fTGpndGF6OAJssRdixikzW-hMAWqGw"
+ "n8BD0dSevQWyGV5pqus7j0WIkdQHZMquyfidCHXgO8M--KCpET9xI6IN8SL3HWqKvBoD0TBer6C9Psk_"
+ "1bJVWor6D0ZLvN7ZxhyEorDkDXfU0HOP7jG2MWZoFzW9dz5NNZ8vvwQ85V8snNFOLipNaW_JDXLzYu-c"
+ "G3XjFpIBn5McR3saSUHrpBywEkHTGrPU_MQCKSWZcClBN0hkbnQe7u4UMXEHuckLNnOI4AuZzQ9tdTkl"
+ "r2p2AHqg5UlqIsnvpVr3bpBOZ6Zk3XPp7_svt9K8zj2LIJNqXbPzcdK-KP8Qwk-7lBfqlWkkgLUxTvpM"
+ "PzgSP_zttTBCK0xGcILcGRS21CBLj1ekDX31OQ7BG-u2j07bq-HMF2qVOeyyGV3cCeEki97I2_4y2Nd8"
+ "HGWpqA4xKbG0iwUCUlAGTOE7PXk2RaMLV7gvktw6ISksPMDccRJ1Uhl36CKndT0ySR_C1HvXM6yMpUvk"
+ "xIFi4jpcS9fFtRMQLmbjR-6zu2AqVyY0ds7EY4YbwPhxddQ9UwWZC4kmuAakjfVRmJyFtR_W58jMCADD"
+ "EsGET2uaewRTelIXmV2t2bd7jkr5VO2juJe_X9cH1i-N9hUqv18FQTjPJe8l05NMuXExLE4y8PfMaCpH"
+ "jOJ94Qid8KD-f_e4bgfoOUd6Z-cknZEcHq4UpdjarQs-JIbk2wWbfWdoia9OCwGemjO26RXMqhFS1zZz"
+ "r8u5VvkV7DXoABvjekt63HQcm7GNxeq4aMXs92LwYIbHmFV-U4ezCzV1ndVtj68Sf1QI6AZ27Cx_mHXf"
+ "l6vJqrYlqVzjhRqiEt_-lOviSkhrUrzT43q7cV4VfG0TvGHcy3RmDUGpoTiBArcX76IuSgtIqq1XmNvw"
+ "vqVKrJAZVoUAvPRaebMq3rN_tOzo39oD3IikyYcAsPSOQUsb7bIgxVk_M2no4Folg38dawktRZL6GcUG"
+ "nRaRkyrKp7sj3YnO7PC9WZtrsUaQJnbpRv4g3JU0VBz7GvBHGmjRQjeyJmIsg_Fpti8s93BwRp2Ydwgr"
+ "UtohX-63z76g23HyXqCQ5ym4mqNoWGAvEUT4Wsw-yP0NrK8DBEsOOPSANkXlvaT48U6ORNmWo6qkbhkz"
+ "a4Fsa7rcDOeEAAeB3RIms69d4WjLZWSgae8visKyZzf1ct1rxm0wHS7vVzw6S6wY-GMPLURP6ybSuRaN"
+ "Pn3fS7ucYLrJjcwqOTzekMphYjoHjKY7jVzt0000";
/*
* Special thanks to our sponsors and donors:

View File

@ -76,6 +76,7 @@ import net.sourceforge.plantuml.graphic.TextBlockRaw;
import net.sourceforge.plantuml.graphic.TextBlockUtils;
import net.sourceforge.plantuml.graphic.VerticalAlignment;
import net.sourceforge.plantuml.security.SecurityUtils;
import net.sourceforge.plantuml.svek.GraphvizCrash;
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
import net.sourceforge.plantuml.ugraphic.AffineTransformType;
import net.sourceforge.plantuml.ugraphic.PixelImage;
@ -93,6 +94,7 @@ import net.sourceforge.plantuml.ugraphic.color.HColorUtils;
import net.sourceforge.plantuml.ugraphic.txt.UGraphicTxt;
import net.sourceforge.plantuml.version.LicenseInfo;
import net.sourceforge.plantuml.version.PSystemVersion;
import net.sourceforge.plantuml.version.Version;
public abstract class PSystemError extends AbstractPSystem {
@ -127,6 +129,7 @@ public abstract class PSystemError extends AbstractPSystem {
final FontConfiguration fc0 = GraphicStrings.sansSerif14(HColorUtils.BLACK).bold();
final FontConfiguration fc1 = GraphicStrings.sansSerif14(HColorUtils.MY_GREEN).bold();
final FontConfiguration fc2 = GraphicStrings.sansSerif14(HColorUtils.RED).bold();
final FontConfiguration fc4 = GraphicStrings.sansSerif12(HColorUtils.MY_GREEN).bold().italic();
final List<String> fullBody = getTextFullBody();
final TextBlock result0 = TextBlockUtils.addBackcolor(
@ -134,14 +137,23 @@ public abstract class PSystemError extends AbstractPSystem {
final TextBlock result1 = new TextBlockRaw(allButLast(fullBody), fc1);
final TextBlock result2 = new TextBlockRaw(onlyLast(fullBody), fc1.wave(HColorUtils.RED));
final TextBlock result3 = new TextBlockRaw(getTextError(), fc2);
final TextBlock result4 = TextBlockUtils.withMargin(new TextBlockRaw(header(), fc4), 0, 2, 0, 8);
TextBlock result = result0;
result = TextBlockUtils.mergeTB(result, result1, HorizontalAlignment.LEFT);
result = TextBlockUtils.mergeTB(result, result2, HorizontalAlignment.LEFT);
result = TextBlockUtils.mergeTB(result, result3, HorizontalAlignment.LEFT);
result = TextBlockUtils.mergeTB(result4, result, HorizontalAlignment.LEFT);
result = TextBlockUtils.withMargin(result, 5, 5);
return TextBlockUtils.addBackcolor(result, HColorUtils.BLACK);
}
private List<String> header() {
final List<String> result = new ArrayList<String>();
result.add("PlantUML " + Version.versionString());
GraphvizCrash.checkOldVersionWarning(result);
return result;
}
private List<String> getPureAsciiFormatted() {
final List<String> result = getTextFromStack();
result.addAll(getTextFullBody());
@ -326,8 +338,7 @@ public abstract class PSystemError extends AbstractPSystem {
if (qrcode == null) {
result = text;
} else {
final UImage qr = new UImage(
new PixelImage(qrcode, AffineTransformType.TYPE_NEAREST_NEIGHBOR)).scale(3);
final UImage qr = new UImage(new PixelImage(qrcode, AffineTransformType.TYPE_NEAREST_NEIGHBOR)).scale(3);
result = TextBlockUtils.mergeLR(text, TextBlockUtils.fromUImage(qr), VerticalAlignment.CENTER);
}
return TextBlockUtils.addBackcolor(result, backColor);
@ -371,9 +382,8 @@ public abstract class PSystemError extends AbstractPSystem {
if (qrcode == null) {
ug.apply(new UTranslate(1, 1)).draw(message);
} else {
final UImage qr = new UImage(
new PixelImage(qrcode, AffineTransformType.TYPE_NEAREST_NEIGHBOR))
.scale(scale);
final UImage qr = new UImage(new PixelImage(qrcode, AffineTransformType.TYPE_NEAREST_NEIGHBOR))
.scale(scale);
ug.apply(new UTranslate(1, (imHeight - message.getHeight()) / 2)).draw(message);
ug.apply(new UTranslate(1 + message.getWidth(), (imHeight - qr.getHeight()) / 2)).draw(qr);
}
@ -418,9 +428,8 @@ public abstract class PSystemError extends AbstractPSystem {
if (qrcode == null) {
ug.apply(new UTranslate(1, 1)).draw(message);
} else {
final UImage qr = new UImage(
new PixelImage(qrcode, AffineTransformType.TYPE_NEAREST_NEIGHBOR))
.scale(scale);
final UImage qr = new UImage(new PixelImage(qrcode, AffineTransformType.TYPE_NEAREST_NEIGHBOR))
.scale(scale);
ug.apply(new UTranslate(1, (imHeight - message.getHeight()) / 2)).draw(message);
ug.apply(new UTranslate(1 + message.getWidth(), (imHeight - qr.getHeight()) / 2)).draw(qr);
}

View File

@ -115,7 +115,7 @@ public class GraphicStrings extends AbstractTextBlock implements IEntityImage {
CreoleMode.FULL);
}
private static FontConfiguration sansSerif12(HColor color) {
public static FontConfiguration sansSerif12(HColor color) {
return new FontConfiguration(UFont.sansSerif(12), color, hyperlinkColor, useUnderlineForHyperlink);
}

View File

@ -56,6 +56,10 @@ class USymbolStack extends USymbol {
private void drawQueue(UGraphic ug, double width, double height, boolean shadowing, double roundCorner) {
final double border = 15;
final URectangle rect = new URectangle(width - 2 * border, height).rounded(roundCorner);
ug.apply(new HColorNone()).apply(UTranslate.dx(border)).draw(rect);
final UPath path = new UPath();
if (roundCorner == 0) {
path.moveTo(0, 0);
@ -80,8 +84,6 @@ class USymbolStack extends USymbol {
path.setDeltaShadow(3.0);
}
ug.apply(new HColorNone().bg()).draw(path);
final URectangle rect = new URectangle(width - 2 * border, height).rounded(roundCorner);
ug.apply(new HColorNone()).apply(UTranslate.dx(border)).draw(rect);
}
private Margin getMargin() {

View File

@ -49,6 +49,7 @@ import net.sourceforge.plantuml.cucadiagram.Stereotype;
import net.sourceforge.plantuml.graphic.SymbolContext;
import net.sourceforge.plantuml.graphic.color.ColorType;
import net.sourceforge.plantuml.graphic.color.Colors;
import net.sourceforge.plantuml.skin.ComponentType;
import net.sourceforge.plantuml.style.Style;
import net.sourceforge.plantuml.style.StyleBuilder;
import net.sourceforge.plantuml.style.StyleSignature;
@ -89,8 +90,8 @@ public class Participant implements SpecificBackcolorable, WithStyle {
return new Style[] { tmp, stereo };
}
public Participant(ParticipantType type, String code, Display display, Set<EntityPortion> hiddenPortions,
int order, StyleBuilder styleBuilder) {
public Participant(ParticipantType type, String code, Display display, Set<EntityPortion> hiddenPortions, int order,
StyleBuilder styleBuilder) {
this.hiddenPortions = hiddenPortions;
this.styleBuilder = styleBuilder;
this.order = order;
@ -203,6 +204,7 @@ public class Participant implements SpecificBackcolorable, WithStyle {
}
public SkinParamBackcolored getSkinParamBackcolored(ISkinParam skinParam) {
final ColorParam param = getColorParam();
HColor specificBackColor = getColors(skinParam).getColor(ColorType.BACK);
final boolean clickable = getUrl() != null;
final HColor stereoBackColor = skinParam.getHtmlColor(getBackgroundColorParam(), getStereotype(), clickable);
@ -210,10 +212,9 @@ public class Participant implements SpecificBackcolorable, WithStyle {
specificBackColor = stereoBackColor;
}
final SkinParamBackcolored result = new SkinParamBackcolored(skinParam, specificBackColor, clickable);
final HColor stereoBorderColor = skinParam.getHtmlColor(ColorParam.participantBorder, getStereotype(),
clickable);
final HColor stereoBorderColor = skinParam.getHtmlColor(param, getStereotype(), clickable);
if (stereoBorderColor != null) {
result.forceColor(ColorParam.participantBorder, stereoBorderColor);
result.forceColor(param, stereoBorderColor);
}
return result;
}
@ -222,4 +223,25 @@ public class Participant implements SpecificBackcolorable, WithStyle {
return order;
}
private ColorParam getColorParam() {
if (getType() == ParticipantType.PARTICIPANT) {
return ColorParam.participantBorder;
} else if (getType() == ParticipantType.ACTOR) {
return ColorParam.actorBorder;
} else if (getType() == ParticipantType.BOUNDARY) {
return ColorParam.boundaryBorder;
} else if (getType() == ParticipantType.CONTROL) {
return ColorParam.controlBorder;
} else if (getType() == ParticipantType.ENTITY) {
return ColorParam.entityBorder;
} else if (getType() == ParticipantType.QUEUE) {
return ColorParam.queueBorder;
} else if (getType() == ParticipantType.DATABASE) {
return ColorParam.databaseBorder;
} else if (getType() == ParticipantType.COLLECTIONS) {
return ColorParam.collectionsBorder;
}
return ColorParam.participantBorder;
}
}

View File

@ -38,6 +38,7 @@ package net.sourceforge.plantuml.sequencediagram.graphic;
import java.util.ArrayList;
import java.util.List;
import net.sourceforge.plantuml.ColorParam;
import net.sourceforge.plantuml.Dimension2DDouble;
import net.sourceforge.plantuml.ISkinParam;
import net.sourceforge.plantuml.OptionFlags;

View File

@ -106,19 +106,19 @@ public class GraphvizCrash extends AbstractTextBlock implements IEntityImage {
final long days = (System.currentTimeMillis() - Version.compileTime()) / 1000L / 3600 / 24;
if (days >= 90) {
strings.add("This version of PlantUML is " + days + " days old, so you should");
strings.add(" consider upgrading from http://plantuml.com/download");
strings.add(" consider upgrading from https://plantuml.com/download");
}
}
public static void pleaseGoTo(final List<String> strings) {
strings.add(" ");
strings.add("Please go to http://plantuml.com/graphviz-dot to check your GraphViz version.");
strings.add("Please go to https://plantuml.com/graphviz-dot to check your GraphViz version.");
strings.add(" ");
}
public static void youShouldSendThisDiagram(final List<String> strings) {
strings.add("You should send this diagram and this image to <b>plantuml@gmail.com</b> or");
strings.add("post to <b>http://plantuml.com/qa</b> to solve this issue.");
strings.add("post to <b>https://plantuml.com/qa</b> to solve this issue.");
strings.add("You can try to turn arround this issue by simplifing your diagram.");
}

View File

@ -51,16 +51,12 @@ import net.sourceforge.plantuml.Log;
public class DriverShadowedG2d {
private ConvolveOp getConvolveOp(int blurRadius, double dpiFactor) {
blurRadius = (int) (blurRadius * dpiFactor);
final int blurRadius2 = blurRadius * blurRadius;
final float blurRadius2F = blurRadius2;
// final float weight = (float) (1.0 / blurRadius2F / dpiFactor);
final float weight = (float) (1.0 / blurRadius2F);
final float[] elements = new float[blurRadius2];
for (int k = 0; k < blurRadius2; k++) {
elements[k] = weight;
final float[] elements = new float[(int) (blurRadius * blurRadius * dpiFactor)];
for (int k = 0; k < elements.length; k++) {
elements[k] = (float) (1.0 / elements.length);
}
final Kernel myKernel = new Kernel(blurRadius, blurRadius, elements);
final Kernel myKernel = new Kernel((int) (blurRadius * Math.sqrt(dpiFactor)),
(int) (blurRadius * Math.sqrt(dpiFactor)), elements);
// if EDGE_NO_OP is not selected, EDGE_ZERO_FILL is the default which
// creates a black border

View File

@ -60,6 +60,7 @@ import net.sourceforge.plantuml.security.ImageIO;
import net.sourceforge.plantuml.security.SFile;
import net.sourceforge.plantuml.security.SecurityProfile;
import net.sourceforge.plantuml.security.SecurityUtils;
import net.sourceforge.plantuml.svek.GraphvizCrash;
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
import net.sourceforge.plantuml.ugraphic.ImageBuilder;
import net.sourceforge.plantuml.ugraphic.color.ColorMapperIdentity;
@ -170,6 +171,7 @@ public class PSystemVersion extends AbstractPSystem {
final List<String> strings = new ArrayList<String>();
strings.add("<b>PlantUML version " + Version.versionString() + "</b> (" + Version.compileTimeString() + ")");
strings.add("(" + License.getCurrent() + " source distribution)");
GraphvizCrash.checkOldVersionWarning(strings);
if (OptionFlags.ALLOW_INCLUDE) {
if (SecurityUtils.getSecurityProfile() == SecurityProfile.UNSECURE) {
strings.add("Loaded from " + Version.getJarPath());

View File

@ -44,7 +44,7 @@ public class Version {
private static final int MAJOR_SEPARATOR = 1000000;
public static int version() {
return 1202014;
return 1202015;
}
public static int versionPatched() {
@ -93,7 +93,7 @@ public class Version {
}
public static long compileTime() {
return 1592662474056L;
return 1593344385646L;
}
public static String compileTimeString() {

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.