1
0
mirror of https://github.com/octoleo/plantuml.git synced 2024-12-22 10:59:01 +00:00

Remove imports and push up Pragma to higher in call chain

This commit is contained in:
Martin Ross 2022-02-16 16:18:55 -05:00
parent 61b0f7b138
commit 6d0f6302ef
5 changed files with 44 additions and 27 deletions

View File

@ -43,7 +43,10 @@ import java.io.OutputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import net.sourceforge.plantuml.*; import net.sourceforge.plantuml.Dimension2DDouble;
import net.sourceforge.plantuml.EmptyImageBuilder;
import net.sourceforge.plantuml.FileFormat;
import net.sourceforge.plantuml.SpriteContainerEmpty;
import net.sourceforge.plantuml.api.ImageDataSimple; import net.sourceforge.plantuml.api.ImageDataSimple;
import net.sourceforge.plantuml.core.ImageData; import net.sourceforge.plantuml.core.ImageData;
import net.sourceforge.plantuml.cucadiagram.Display; import net.sourceforge.plantuml.cucadiagram.Display;
@ -87,7 +90,7 @@ public class GraphicsSudoku {
public ImageData writeImageSvg(OutputStream os) throws IOException { public ImageData writeImageSvg(OutputStream os) throws IOException {
final UGraphicSvg ug = new UGraphicSvg(HColorUtils.WHITE, true, new Dimension2DDouble(0, 0), final UGraphicSvg ug = new UGraphicSvg(HColorUtils.WHITE, true, new Dimension2DDouble(0, 0),
new ColorMapperIdentity(), false, 1.0, null, null, 0, "none", FileFormat.SVG.getDefaultStringBounder(), new ColorMapperIdentity(), false, 1.0, null, null, 0, "none", FileFormat.SVG.getDefaultStringBounder(),
LengthAdjust.defaultValue(), new Pragma()); LengthAdjust.defaultValue(), false);
drawInternal(ug); drawInternal(ug);
ug.writeToStream(os, null, -1); // dpi param is not used ug.writeToStream(os, null, -1); // dpi param is not used
return ImageDataSimple.ok(); return ImageDataSimple.ok();

View File

@ -62,7 +62,6 @@ import javax.xml.transform.TransformerException;
import javax.xml.transform.dom.DOMSource; import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamResult;
import net.sourceforge.plantuml.Pragma;
import org.w3c.dom.CDATASection; import org.w3c.dom.CDATASection;
import org.w3c.dom.Comment; import org.w3c.dom.Comment;
import org.w3c.dom.Document; import org.w3c.dom.Document;
@ -130,7 +129,6 @@ public class SvgGraphics {
private final boolean svgDimensionStyle; private final boolean svgDimensionStyle;
private final LengthAdjust lengthAdjust; private final LengthAdjust lengthAdjust;
private final Pragma pragma;
private final boolean INTERACTIVE; private final boolean INTERACTIVE;
final protected void ensureVisible(double x, double y) { final protected void ensureVisible(double x, double y) {
@ -143,7 +141,7 @@ public class SvgGraphics {
} }
public SvgGraphics(String backcolor, boolean svgDimensionStyle, Dimension2D minDim, double scale, String hover, public SvgGraphics(String backcolor, boolean svgDimensionStyle, Dimension2D minDim, double scale, String hover,
long seed, String preserveAspectRatio, LengthAdjust lengthAdjust, DarkStrategy darkStrategy, Pragma pragma) { long seed, String preserveAspectRatio, LengthAdjust lengthAdjust, DarkStrategy darkStrategy, boolean interactive) {
try { try {
this.lengthAdjust = lengthAdjust; this.lengthAdjust = lengthAdjust;
this.svgDimensionStyle = svgDimensionStyle; this.svgDimensionStyle = svgDimensionStyle;
@ -151,7 +149,7 @@ public class SvgGraphics {
this.document = getDocument(); this.document = getDocument();
this.backcolor = backcolor; this.backcolor = backcolor;
this.preserveAspectRatio = preserveAspectRatio; this.preserveAspectRatio = preserveAspectRatio;
this.pragma = pragma; this.INTERACTIVE = interactive;
ensureVisible(minDim.getWidth(), minDim.getHeight()); ensureVisible(minDim.getWidth(), minDim.getHeight());
this.root = getRootNode(); this.root = getRootNode();
@ -167,12 +165,6 @@ public class SvgGraphics {
if (hover != null) if (hover != null)
defs.appendChild(getPathHover(hover)); defs.appendChild(getPathHover(hover));
if (!pragma.isDefine("svginteractive"))
INTERACTIVE = false;
else {
INTERACTIVE = Boolean.valueOf(pragma.getValue("svginteractive"));
}
if (INTERACTIVE) { if (INTERACTIVE) {
final Element styles = getStylesForInteractiveMode(); final Element styles = getStylesForInteractiveMode();
if (styles != null) if (styles != null)

View File

@ -54,7 +54,6 @@ import java.util.Set;
import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerException;
import net.sourceforge.plantuml.Dimension2DDouble; import net.sourceforge.plantuml.Dimension2DDouble;
import net.sourceforge.plantuml.Pragma;
import net.sourceforge.plantuml.graphic.FontConfiguration; import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.UDrawable; import net.sourceforge.plantuml.graphic.UDrawable;
import net.sourceforge.plantuml.security.SImageIO; import net.sourceforge.plantuml.security.SImageIO;
@ -160,7 +159,7 @@ public class FontChecker {
private String getSvgImage(char c) throws IOException, TransformerException { private String getSvgImage(char c) throws IOException, TransformerException {
final SvgGraphics svg = new SvgGraphics(null, true, new Dimension2DDouble(0, 0), 1.0, null, 42, "none", final SvgGraphics svg = new SvgGraphics(null, true, new Dimension2DDouble(0, 0), 1.0, null, 42, "none",
LengthAdjust.defaultValue(), DarkStrategy.IGNORE_DARK_COLOR, new Pragma()); LengthAdjust.defaultValue(), DarkStrategy.IGNORE_DARK_COLOR, false);
svg.setStrokeColor("black"); svg.setStrokeColor("black");
svg.svgImage(getBufferedImage(c), 0, 0); svg.svgImage(getBufferedImage(c), 0, 0);
final ByteArrayOutputStream os = new ByteArrayOutputStream(); final ByteArrayOutputStream os = new ByteArrayOutputStream();

View File

@ -51,7 +51,25 @@ import java.util.Set;
import javax.swing.ImageIcon; import javax.swing.ImageIcon;
import net.sourceforge.plantuml.*; import net.sourceforge.plantuml.AnimatedGifEncoder;
import net.sourceforge.plantuml.AnnotatedWorker;
import net.sourceforge.plantuml.CMapData;
import net.sourceforge.plantuml.ColorParam;
import net.sourceforge.plantuml.CornerParam;
import net.sourceforge.plantuml.Dimension2DDouble;
import net.sourceforge.plantuml.EmptyImageBuilder;
import net.sourceforge.plantuml.FileFormat;
import net.sourceforge.plantuml.FileFormatOption;
import net.sourceforge.plantuml.FileUtils;
import net.sourceforge.plantuml.ISkinParam;
import net.sourceforge.plantuml.LineParam;
import net.sourceforge.plantuml.OptionFlags;
import net.sourceforge.plantuml.Scale;
import net.sourceforge.plantuml.SvgCharSizeHack;
import net.sourceforge.plantuml.Pragma;
import net.sourceforge.plantuml.TitledDiagram;
import net.sourceforge.plantuml.Url;
import net.sourceforge.plantuml.UseStyle;
import net.sourceforge.plantuml.anim.AffineTransformation; import net.sourceforge.plantuml.anim.AffineTransformation;
import net.sourceforge.plantuml.anim.Animation; import net.sourceforge.plantuml.anim.Animation;
import net.sourceforge.plantuml.api.ImageDataComplex; import net.sourceforge.plantuml.api.ImageDataComplex;
@ -389,7 +407,13 @@ public class ImageBuilder {
case PNG: case PNG:
return createUGraphicPNG(scaleFactor, dim, animationArg, dx, dy, option.getWatermark()); return createUGraphicPNG(scaleFactor, dim, animationArg, dx, dy, option.getWatermark());
case SVG: case SVG:
return createUGraphicSVG(scaleFactor, dim, pragma); final boolean interactive;
if (!pragma.isDefine("svginteractive"))
interactive = false;
else {
interactive = Boolean.valueOf(pragma.getValue("svginteractive"));
}
return createUGraphicSVG(scaleFactor, dim, interactive);
case EPS: case EPS:
return new UGraphicEps(backcolor, colorMapper, stringBounder, EpsStrategy.getDefault2()); return new UGraphicEps(backcolor, colorMapper, stringBounder, EpsStrategy.getDefault2());
case EPS_TEXT: case EPS_TEXT:
@ -415,14 +439,14 @@ public class ImageBuilder {
} }
} }
private UGraphic createUGraphicSVG(double scaleFactor, Dimension2D dim, Pragma pragma) { private UGraphic createUGraphicSVG(double scaleFactor, Dimension2D dim, boolean interactive) {
final String hoverPathColorRGB = getHoverPathColorRGB(); final String hoverPathColorRGB = getHoverPathColorRGB();
final LengthAdjust lengthAdjust = skinParam == null ? LengthAdjust.defaultValue() : skinParam.getlengthAdjust(); final LengthAdjust lengthAdjust = skinParam == null ? LengthAdjust.defaultValue() : skinParam.getlengthAdjust();
final String preserveAspectRatio = getPreserveAspectRatio(); final String preserveAspectRatio = getPreserveAspectRatio();
final boolean svgDimensionStyle = skinParam == null || skinParam.svgDimensionStyle(); final boolean svgDimensionStyle = skinParam == null || skinParam.svgDimensionStyle();
final String svgLinkTarget = getSvgLinkTarget(); final String svgLinkTarget = getSvgLinkTarget();
final UGraphicSvg ug = new UGraphicSvg(backcolor, svgDimensionStyle, dim, colorMapper, false, scaleFactor, final UGraphicSvg ug = new UGraphicSvg(backcolor, svgDimensionStyle, dim, colorMapper, false, scaleFactor,
svgLinkTarget, hoverPathColorRGB, seed, preserveAspectRatio, stringBounder, lengthAdjust, pragma); svgLinkTarget, hoverPathColorRGB, seed, preserveAspectRatio, stringBounder, lengthAdjust, interactive);
return ug; return ug;
} }

View File

@ -41,7 +41,6 @@ import java.util.Map;
import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerException;
import net.sourceforge.plantuml.Pragma;
import net.sourceforge.plantuml.Url; import net.sourceforge.plantuml.Url;
import net.sourceforge.plantuml.graphic.StringBounder; import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.posimo.DotPath; import net.sourceforge.plantuml.posimo.DotPath;
@ -71,7 +70,7 @@ public class UGraphicSvg extends AbstractUGraphic<SvgGraphics> implements ClipCo
private final boolean textAsPath2; private final boolean textAsPath2;
private final String target; private final String target;
private final Pragma pragma; private final boolean interactive;
public double dpiFactor() { public double dpiFactor() {
return 1; return 1;
@ -86,17 +85,17 @@ public class UGraphicSvg extends AbstractUGraphic<SvgGraphics> implements ClipCo
super(other); super(other);
this.textAsPath2 = other.textAsPath2; this.textAsPath2 = other.textAsPath2;
this.target = other.target; this.target = other.target;
this.pragma = other.pragma; this.interactive = other.interactive;
register(); register();
} }
public UGraphicSvg(HColor defaultBackground, boolean svgDimensionStyle, Dimension2D minDim, ColorMapper colorMapper, public UGraphicSvg(HColor defaultBackground, boolean svgDimensionStyle, Dimension2D minDim, ColorMapper colorMapper,
boolean textAsPath, double scale, String linkTarget, String hover, long seed, String preserveAspectRatio, boolean textAsPath, double scale, String linkTarget, String hover, long seed, String preserveAspectRatio,
StringBounder stringBounder, LengthAdjust lengthAdjust, Pragma pragma) { StringBounder stringBounder, LengthAdjust lengthAdjust, boolean interactive) {
this(defaultBackground, minDim, colorMapper, this(defaultBackground, minDim, colorMapper,
new SvgGraphics(colorMapper.toSvg(defaultBackground), svgDimensionStyle, minDim, scale, hover, seed, new SvgGraphics(colorMapper.toSvg(defaultBackground), svgDimensionStyle, minDim, scale, hover, seed,
preserveAspectRatio, lengthAdjust, DarkStrategy.IGNORE_DARK_COLOR, pragma), preserveAspectRatio, lengthAdjust, DarkStrategy.IGNORE_DARK_COLOR, interactive),
textAsPath, linkTarget, stringBounder, pragma); textAsPath, linkTarget, stringBounder, interactive);
if (defaultBackground instanceof HColorGradient) { if (defaultBackground instanceof HColorGradient) {
final SvgGraphics svg = getGraphicObject(); final SvgGraphics svg = getGraphicObject();
svg.paintBackcolorGradient(colorMapper, (HColorGradient) defaultBackground); svg.paintBackcolorGradient(colorMapper, (HColorGradient) defaultBackground);
@ -119,11 +118,11 @@ public class UGraphicSvg extends AbstractUGraphic<SvgGraphics> implements ClipCo
} }
private UGraphicSvg(HColor defaultBackground, Dimension2D minDim, ColorMapper colorMapper, SvgGraphics svg, private UGraphicSvg(HColor defaultBackground, Dimension2D minDim, ColorMapper colorMapper, SvgGraphics svg,
boolean textAsPath, String linkTarget, StringBounder stringBounder, Pragma pragma) { boolean textAsPath, String linkTarget, StringBounder stringBounder, boolean interactive) {
super(defaultBackground, colorMapper, stringBounder, svg); super(defaultBackground, colorMapper, stringBounder, svg);
this.textAsPath2 = textAsPath; this.textAsPath2 = textAsPath;
this.target = linkTarget; this.target = linkTarget;
this.pragma = pragma; this.interactive = interactive;
register(); register();
} }
@ -155,7 +154,7 @@ public class UGraphicSvg extends AbstractUGraphic<SvgGraphics> implements ClipCo
if (metadata != null) if (metadata != null)
getGraphicObject().addComment(metadata); getGraphicObject().addComment(metadata);
if (pragma.isDefine("svginteractive") && Boolean.valueOf(pragma.getValue("svginteractive"))) { if (interactive) {
// For performance reasons and also because we want the entire graph DOM to be create so we can register // For performance reasons and also because we want the entire graph DOM to be create so we can register
// the event handlers on them we will append to the end of the document // the event handlers on them we will append to the end of the document
getGraphicObject().addStyle("onmouseinteractivefooter.css"); getGraphicObject().addStyle("onmouseinteractivefooter.css");