From 4ca5be551d29aaffe09ac554183f2a98c6571370 Mon Sep 17 00:00:00 2001 From: stepan <stepan.sindelar@oracle.com> Date: Tue, 2 May 2017 15:27:47 +0200 Subject: [PATCH] Fix: append </svg> when generating SVG string --- .../r/library/fastrGrid/device/SVGDevice.java | 17 +++++++++++------ .../r/library/fastrGrid/grDevices/DevOff.java | 2 +- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/fastrGrid/device/SVGDevice.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/fastrGrid/device/SVGDevice.java index 063847725f..baad5ebe41 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/fastrGrid/device/SVGDevice.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/fastrGrid/device/SVGDevice.java @@ -53,7 +53,8 @@ public class SVGDevice implements GridDevice { this.height = height; } - public String getContents() { + public String closeAndGetContents() { + closeSVGDocument(); return data.toString(); } @@ -73,11 +74,7 @@ public class SVGDevice implements GridDevice { @Override public void close() throws DeviceCloseException { - if (cachedCtx != null) { - // see #appendStyle - append("</g>"); - } - append("</svg>"); + closeSVGDocument(); try { Files.write(Paths.get(filename), Collections.singleton(data.toString()), StandardCharsets.UTF_8); } catch (IOException e) { @@ -176,6 +173,14 @@ public class SVGDevice implements GridDevice { data.append("' ").append(attributes).append(" />"); } + private void closeSVGDocument() { + if (cachedCtx != null) { + // see #appendStyle + append("</g>"); + } + append("</svg>"); + } + private void appendStyle(DrawingContext ctx) { if (cachedCtx == null || !DrawingContext.areSame(cachedCtx, ctx)) { if (cachedCtx != null) { diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/fastrGrid/grDevices/DevOff.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/fastrGrid/grDevices/DevOff.java index 87f99d3561..8dc3209f96 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/fastrGrid/grDevices/DevOff.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/fastrGrid/grDevices/DevOff.java @@ -70,7 +70,7 @@ public abstract class DevOff extends RExternalBuiltinNode.Arg1 { GridDevice dev = ctx.getDevice(which); ctx.removeDevice(which); if ((dev instanceof SVGDevice)) { - return ((SVGDevice) dev).getContents(); + return ((SVGDevice) dev).closeAndGetContents(); } else { warning(Message.GENERIC, "The device was not SVG device."); return ""; -- GitLab