1 package org.simantics.diagram.svg.export;
4 import java.awt.RenderingHints;
5 import java.awt.RenderingHints.Key;
6 import java.util.HashMap;
9 import org.apache.batik.svggen.SVGGeneratorContext;
10 import org.apache.batik.svggen.SVGGeneratorContext.GraphicContextDefaults;
11 import org.apache.batik.svggen.SVGGraphics2D;
12 import org.simantics.scenegraph.g2d.G2DPDFRenderingHints;
13 import org.simantics.scenegraph.g2d.G2DRenderingHints;
14 import org.w3c.dom.Document;
16 public class SVGGraphics2DWithPassthruSupport extends SVGGraphics2D {
18 public SVGGraphics2DWithPassthruSupport(Document document) {
19 this(SVGGeneratorContext.createDefault(document));
22 public SVGGraphics2DWithPassthruSupport(SVGGeneratorContext context) {
23 super(updateDefaults(context), false);
25 setRenderingHint(G2DRenderingHints.KEY_TEXT_RENDERING_MODE, G2DRenderingHints.TextRenderingMode.AS_TEXT);
26 setRenderingHint(G2DRenderingHints.KEY_SVG_PASSTHRU, true);
28 this.shapeConverter = new SVGShapeWithPassthruSupport(generatorCtx);
31 private static SVGGeneratorContext updateDefaults(SVGGeneratorContext context) {
32 GraphicContextDefaults gcDefaults = new GraphicContextDefaults();
34 Map<Key, Object> hintMap = new HashMap<Key, Object>();
36 hintMap.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
37 hintMap.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
38 hintMap.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
39 hintMap.put(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
40 hintMap.put(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
42 gcDefaults.setRenderingHints(new RenderingHints(hintMap));
43 gcDefaults.setFont(Font.decode(null));
45 context.setGraphicContextDefaults(gcDefaults);