From 2ca20f49d73ba5364e6a0ab3eeee7c83b49a6790 Mon Sep 17 00:00:00 2001 From: apvrille <ludovic.apvrille@eurecom.fr> Date: Wed, 20 Jun 2018 15:39:04 +0200 Subject: [PATCH] Improving SVG generator --- src/main/java/myutil/SVGGeneration.java | 29 +++++++++++++++---- src/main/java/ui/TDiagramPanel.java | 12 ++++---- .../JFrameAvatarInteractiveSimulation.java | 2 +- 3 files changed, 30 insertions(+), 13 deletions(-) diff --git a/src/main/java/myutil/SVGGeneration.java b/src/main/java/myutil/SVGGeneration.java index 4aae75ad0f..592ce91cb4 100644 --- a/src/main/java/myutil/SVGGeneration.java +++ b/src/main/java/myutil/SVGGeneration.java @@ -53,6 +53,7 @@ import java.io.OutputStreamWriter; import java.io.Writer; import javax.swing.*; +import java.io.*; /** * Class SVGGeneration @@ -68,8 +69,8 @@ public class SVGGeneration { } - public void saveInSVG(JPanel panel, String fileName) { - TraceManager.addDev("New SVG save in " + fileName); + + public SVGGraphics2D getSVGGenerator(JPanel panel) { // Get a DOMImplementation. DOMImplementation domImpl = GenericDOMImplementation.getDOMImplementation(); @@ -83,11 +84,12 @@ public class SVGGeneration { // Ask the test to render into the SVG Graphics2D implementation. panel.paint(svgGenerator); - /*TestSVGGen test = new TestSVGGen(); - test.paint(svgGenerator);*/ - // Finally, stream out SVG to the standard output using - // UTF-8 encoding. + return svgGenerator; + } + + public void saveInSVG(JPanel panel, String fileName) { + SVGGraphics2D svgGenerator = getSVGGenerator(panel); boolean useCSS = true; // we want to use CSS style attributes try { File fileSave = new File(fileName); @@ -99,5 +101,20 @@ public class SVGGeneration { } } + public String getSVGString(JPanel panel) { + SVGGraphics2D svgGenerator = getSVGGenerator(panel); + + boolean useCSS = true; // we want to use CSS style attributes + try { + StringWriter ouS = new StringWriter(); + svgGenerator.stream(ouS, useCSS); + String tmp = ouS.toString(); + return tmp; + } catch (Exception e) { + TraceManager.addDev("SVG generation failed: " + e.getMessage()); + return null; + } + } + } diff --git a/src/main/java/ui/TDiagramPanel.java b/src/main/java/ui/TDiagramPanel.java index e6db003c23..2a3a47b09a 100755 --- a/src/main/java/ui/TDiagramPanel.java +++ b/src/main/java/ui/TDiagramPanel.java @@ -38,10 +38,7 @@ package ui; -import myutil.GenericTree; -import myutil.GraphicLib; -import myutil.SVGGraphics; -import myutil.TraceManager; +import myutil.*; import ui.atd.ATDAttack; import ui.atd.ATDBlock; import ui.avatarad.AvatarADActivity; @@ -3576,7 +3573,7 @@ public abstract class TDiagramPanel extends JPanel implements GenericTree { h = Math.min(h, getHeight() - y); - StringBuffer sb = new StringBuffer("<?xml version=\"1.0\" standalone=\"no\"?>\n"); + /*StringBuffer sb = new StringBuffer("<?xml version=\"1.0\" standalone=\"no\"?>\n"); sb.append("<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n"); //sb.append(" width=\"" + (w+x) + "\" height=\"" + (h+y) + "\" viewbox=\"" + x + " " + y + " " + w + " " + h + "\">\n"); sb.append("<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\""); @@ -3597,7 +3594,10 @@ public abstract class TDiagramPanel extends JPanel implements GenericTree { sb.append("</svg>"); - return sb.toString(); + return sb.toString();*/ + + SVGGeneration gen = new SVGGeneration(); + return gen.getSVGString(this); } public String oldSvgCapture() { diff --git a/src/main/java/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java b/src/main/java/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java index 91c2ac43c2..864ac4729a 100755 --- a/src/main/java/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java +++ b/src/main/java/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java @@ -1902,7 +1902,7 @@ public class JFrameAvatarInteractiveSimulation extends JFrame implements AvatarS // Ask the test to render into the SVG Graphics2D implementation. sdpanel.paint(svgGenerator); - + // Finally, stream out SVG to the standard output using // UTF-8 encoding. -- GitLab