diff --git a/src/net/sourceforge/plantuml/sudoku/GraphicsSudoku.java b/src/net/sourceforge/plantuml/sudoku/GraphicsSudoku.java index 1cc90e9ca..87ecca042 100644 --- a/src/net/sourceforge/plantuml/sudoku/GraphicsSudoku.java +++ b/src/net/sourceforge/plantuml/sudoku/GraphicsSudoku.java @@ -5,12 +5,12 @@ * (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 @@ -30,7 +30,7 @@ * * * Original Author: Arnaud Roques - * + * * */ package net.sourceforge.plantuml.sudoku; @@ -43,10 +43,7 @@ import java.io.OutputStream; import java.util.ArrayList; import java.util.List; -import net.sourceforge.plantuml.Dimension2DDouble; -import net.sourceforge.plantuml.EmptyImageBuilder; -import net.sourceforge.plantuml.FileFormat; -import net.sourceforge.plantuml.SpriteContainerEmpty; +import net.sourceforge.plantuml.*; import net.sourceforge.plantuml.api.ImageDataSimple; import net.sourceforge.plantuml.core.ImageData; import net.sourceforge.plantuml.cucadiagram.Display; @@ -90,7 +87,7 @@ public class GraphicsSudoku { public ImageData writeImageSvg(OutputStream os) throws IOException { final UGraphicSvg ug = new UGraphicSvg(HColorUtils.WHITE, true, new Dimension2DDouble(0, 0), new ColorMapperIdentity(), false, 1.0, null, null, 0, "none", FileFormat.SVG.getDefaultStringBounder(), - LengthAdjust.defaultValue()); + LengthAdjust.defaultValue(), new Pragma()); drawInternal(ug); ug.writeToStream(os, null, -1); // dpi param is not used return ImageDataSimple.ok(); diff --git a/src/net/sourceforge/plantuml/svg/SvgGraphics.java b/src/net/sourceforge/plantuml/svg/SvgGraphics.java index c1b7d6d87..d66bd4dff 100644 --- a/src/net/sourceforge/plantuml/svg/SvgGraphics.java +++ b/src/net/sourceforge/plantuml/svg/SvgGraphics.java @@ -62,6 +62,7 @@ import javax.xml.transform.TransformerException; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; +import net.sourceforge.plantuml.Pragma; import org.w3c.dom.CDATASection; import org.w3c.dom.Comment; import org.w3c.dom.Document; @@ -129,7 +130,8 @@ public class SvgGraphics { private final boolean svgDimensionStyle; private final LengthAdjust lengthAdjust; - private final boolean INTERACTIVE = false; + private final Pragma pragma; + private final boolean INTERACTIVE; final protected void ensureVisible(double x, double y) { if (x > maxX) { @@ -141,7 +143,7 @@ public class SvgGraphics { } public SvgGraphics(String backcolor, boolean svgDimensionStyle, Dimension2D minDim, double scale, String hover, - long seed, String preserveAspectRatio, LengthAdjust lengthAdjust, DarkStrategy darkStrategy) { + long seed, String preserveAspectRatio, LengthAdjust lengthAdjust, DarkStrategy darkStrategy, Pragma pragma) { try { this.lengthAdjust = lengthAdjust; this.svgDimensionStyle = svgDimensionStyle; @@ -149,6 +151,7 @@ public class SvgGraphics { this.document = getDocument(); this.backcolor = backcolor; this.preserveAspectRatio = preserveAspectRatio; + this.pragma = pragma; ensureVisible(minDim.getWidth(), minDim.getHeight()); this.root = getRootNode(); @@ -164,6 +167,12 @@ public class SvgGraphics { if (hover != null) defs.appendChild(getPathHover(hover)); + if (!pragma.isDefine("svginteractive")) + INTERACTIVE = false; + else { + INTERACTIVE = Boolean.valueOf(pragma.getValue("svginteractive")); + } + if (INTERACTIVE) { final Element styles = getStylesForInteractiveMode(); if (styles != null) diff --git a/src/net/sourceforge/plantuml/ugraphic/FontChecker.java b/src/net/sourceforge/plantuml/ugraphic/FontChecker.java index 0863e0b0f..14ed2ca71 100644 --- a/src/net/sourceforge/plantuml/ugraphic/FontChecker.java +++ b/src/net/sourceforge/plantuml/ugraphic/FontChecker.java @@ -5,12 +5,12 @@ * (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 @@ -30,7 +30,7 @@ * * * Original Author: Arnaud Roques - * + * * */ package net.sourceforge.plantuml.ugraphic; @@ -54,6 +54,7 @@ import java.util.Set; import javax.xml.transform.TransformerException; import net.sourceforge.plantuml.Dimension2DDouble; +import net.sourceforge.plantuml.Pragma; import net.sourceforge.plantuml.graphic.FontConfiguration; import net.sourceforge.plantuml.graphic.UDrawable; import net.sourceforge.plantuml.security.SImageIO; @@ -159,7 +160,7 @@ public class FontChecker { private String getSvgImage(char c) throws IOException, TransformerException { final SvgGraphics svg = new SvgGraphics(null, true, new Dimension2DDouble(0, 0), 1.0, null, 42, "none", - LengthAdjust.defaultValue(), DarkStrategy.IGNORE_DARK_COLOR); + LengthAdjust.defaultValue(), DarkStrategy.IGNORE_DARK_COLOR, new Pragma()); 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 fa18d6c14..90e7f6fd1 100644 --- a/src/net/sourceforge/plantuml/ugraphic/ImageBuilder.java +++ b/src/net/sourceforge/plantuml/ugraphic/ImageBuilder.java @@ -5,12 +5,12 @@ * (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 @@ -30,7 +30,7 @@ * * * Original Author: Matthew Leather - * + * * */ package net.sourceforge.plantuml.ugraphic; @@ -51,24 +51,7 @@ import java.util.Set; import javax.swing.ImageIcon; -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.TitledDiagram; -import net.sourceforge.plantuml.Url; -import net.sourceforge.plantuml.UseStyle; +import net.sourceforge.plantuml.*; import net.sourceforge.plantuml.anim.AffineTransformation; import net.sourceforge.plantuml.anim.Animation; import net.sourceforge.plantuml.api.ImageDataComplex; @@ -272,7 +255,7 @@ public class ImageBuilder { / 96.0; if (scaleFactor <= 0) throw new IllegalStateException("Bad scaleFactor"); - UGraphic ug = createUGraphic(fileFormatOption, dim, animationArg, dx, dy, scaleFactor); + UGraphic ug = createUGraphic(fileFormatOption, dim, animationArg, dx, dy, scaleFactor, titledDiagram.getPragma()); maybeDrawBorder(ug, dim); if (randomPixel) { drawRandomPoint(ug); @@ -401,12 +384,12 @@ public class ImageBuilder { } private UGraphic createUGraphic(FileFormatOption option, final Dimension2D dim, Animation animationArg, double dx, - double dy, double scaleFactor) { + double dy, double scaleFactor, Pragma pragma) { switch (option.getFileFormat()) { case PNG: return createUGraphicPNG(scaleFactor, dim, animationArg, dx, dy, option.getWatermark()); case SVG: - return createUGraphicSVG(scaleFactor, dim); + return createUGraphicSVG(scaleFactor, dim, pragma); case EPS: return new UGraphicEps(backcolor, colorMapper, stringBounder, EpsStrategy.getDefault2()); case EPS_TEXT: @@ -432,14 +415,14 @@ public class ImageBuilder { } } - private UGraphic createUGraphicSVG(double scaleFactor, Dimension2D dim) { + private UGraphic createUGraphicSVG(double scaleFactor, Dimension2D dim, Pragma pragma) { final String hoverPathColorRGB = getHoverPathColorRGB(); final LengthAdjust lengthAdjust = skinParam == null ? LengthAdjust.defaultValue() : skinParam.getlengthAdjust(); final String preserveAspectRatio = getPreserveAspectRatio(); final boolean svgDimensionStyle = skinParam == null || skinParam.svgDimensionStyle(); final String svgLinkTarget = getSvgLinkTarget(); final UGraphicSvg ug = new UGraphicSvg(backcolor, svgDimensionStyle, dim, colorMapper, false, scaleFactor, - svgLinkTarget, hoverPathColorRGB, seed, preserveAspectRatio, stringBounder, lengthAdjust); + svgLinkTarget, hoverPathColorRGB, seed, preserveAspectRatio, stringBounder, lengthAdjust, pragma); return ug; } diff --git a/src/net/sourceforge/plantuml/ugraphic/svg/UGraphicSvg.java b/src/net/sourceforge/plantuml/ugraphic/svg/UGraphicSvg.java index a594404d5..4a98bcdd5 100644 --- a/src/net/sourceforge/plantuml/ugraphic/svg/UGraphicSvg.java +++ b/src/net/sourceforge/plantuml/ugraphic/svg/UGraphicSvg.java @@ -41,6 +41,7 @@ import java.util.Map; import javax.xml.transform.TransformerException; +import net.sourceforge.plantuml.Pragma; import net.sourceforge.plantuml.Url; import net.sourceforge.plantuml.graphic.StringBounder; import net.sourceforge.plantuml.posimo.DotPath; @@ -89,10 +90,10 @@ public class UGraphicSvg extends AbstractUGraphic implements ClipCo public UGraphicSvg(HColor defaultBackground, boolean svgDimensionStyle, Dimension2D minDim, ColorMapper colorMapper, boolean textAsPath, double scale, String linkTarget, String hover, long seed, String preserveAspectRatio, - StringBounder stringBounder, LengthAdjust lengthAdjust) { + StringBounder stringBounder, LengthAdjust lengthAdjust, Pragma pragma) { this(defaultBackground, minDim, colorMapper, new SvgGraphics(colorMapper.toSvg(defaultBackground), svgDimensionStyle, minDim, scale, hover, seed, - preserveAspectRatio, lengthAdjust, DarkStrategy.IGNORE_DARK_COLOR), + preserveAspectRatio, lengthAdjust, DarkStrategy.IGNORE_DARK_COLOR, pragma), textAsPath, linkTarget, stringBounder); if (defaultBackground instanceof HColorGradient) { final SvgGraphics svg = getGraphicObject();