diff options
Diffstat (limited to 'src/net/sourceforge/plantuml/ugraphic/ImageBuilder.java')
-rw-r--r-- | src/net/sourceforge/plantuml/ugraphic/ImageBuilder.java | 45 |
1 files changed, 36 insertions, 9 deletions
diff --git a/src/net/sourceforge/plantuml/ugraphic/ImageBuilder.java b/src/net/sourceforge/plantuml/ugraphic/ImageBuilder.java index 78ebeed..5fabb1e 100644 --- a/src/net/sourceforge/plantuml/ugraphic/ImageBuilder.java +++ b/src/net/sourceforge/plantuml/ugraphic/ImageBuilder.java @@ -2,7 +2,7 @@ * PlantUML : a free UML diagram generator * ======================================================================== * - * (C) Copyright 2009-2017, Arnaud Roques + * (C) Copyright 2009-2020, Arnaud Roques * * Project Info: http://plantuml.com * @@ -46,6 +46,7 @@ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.OutputStream; +import java.util.Random; import java.util.Set; import java.util.concurrent.Semaphore; @@ -113,6 +114,7 @@ public class ImageBuilder { private double borderCorner; private boolean svgDimensionStyle; + private boolean randomPixel; public ImageBuilder(ColorMapper colorMapper, double dpiFactor, HtmlColor mybackcolor, String metadata, String warningOrError, double margin1, double margin2, Animation animation, boolean useHandwritten) { @@ -246,6 +248,9 @@ public class ImageBuilder { - externalMargin() - borderStroke.getThickness(), borderCorner, borderCorner); ug2.apply(new UChangeColor(color)).apply(borderStroke).draw(shape); } + if (randomPixel) { + drawRandomPoint(ug2); + } if (externalMargin1 > 0) { ug2 = ug2.apply(new UTranslate(externalMargin2, externalMargin2)); } @@ -272,16 +277,32 @@ public class ImageBuilder { } + private void drawRandomPoint(UGraphic ug2) { + final Random rnd = new Random(); + final int red = rnd.nextInt(40); + final int green = rnd.nextInt(40); + final int blue = rnd.nextInt(40); + final Color c = new Color(red, green, blue); + final HtmlColor color = new HtmlColorSimple(c, false); + ug2.apply(new UChangeColor(color)).apply(new UChangeBackColor(color)).draw(new URectangle(1, 1)); + + } + private double externalMargin() { return 2 * (externalMargin1 + externalMargin2); } public Dimension2D getFinalDimension(StringBounder stringBounder) { + final Dimension2D dim; + // if (udrawable instanceof TextBlock) { + // dim = ((TextBlock) udrawable).calculateDimension(stringBounder); + // } else { final LimitFinder limitFinder = new LimitFinder(stringBounder, true); udrawable.drawU(limitFinder); - Dimension2D dim = new Dimension2DDouble(limitFinder.getMaxX() + 1 + margin1 + margin2 + externalMargin(), - limitFinder.getMaxY() + 1 + margin1 + margin2 + externalMargin()); - return dim; + dim = new Dimension2DDouble(limitFinder.getMaxX(), limitFinder.getMaxY()); + // } + return new Dimension2DDouble(dim.getWidth() + 1 + margin1 + margin2 + externalMargin(), dim.getHeight() + 1 + + margin1 + margin2 + externalMargin()); } private UGraphic handwritten(UGraphic ug) { @@ -372,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: @@ -387,6 +408,7 @@ public class ImageBuilder { return new UGraphicTikz(colorMapper, dpiFactor, false, fileFormatOption.getTikzFontDistortion()); case BRAILLE_PNG: return new UGraphicBraille(colorMapper, fileFormat); + case UTXT: case ATXT: return new UGraphicTxt(); default: @@ -395,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); @@ -403,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; @@ -445,4 +467,9 @@ public class ImageBuilder { return ug; } + public void setRandomPixel(boolean randomPixel) { + this.randomPixel = randomPixel; + + } + } |