X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.diagram.svg%2Fsrc%2Forg%2Fsimantics%2Fdiagram%2Fsvg%2Fexport%2FSVGGraphics2DWithPassthruSupport.java;fp=bundles%2Forg.simantics.diagram.svg%2Fsrc%2Forg%2Fsimantics%2Fdiagram%2Fsvg%2Fexport%2FSVGGraphics2DWithPassthruSupport.java;h=a9f3f2a04dbdd12a9f798438dcf691af5a736fcf;hb=e75a2a68817ab088db4f84419c2e988ec83fbd39;hp=0000000000000000000000000000000000000000;hpb=2318f67fbf458ee97fd438678be1bc5a636c9fa7;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.diagram.svg/src/org/simantics/diagram/svg/export/SVGGraphics2DWithPassthruSupport.java b/bundles/org.simantics.diagram.svg/src/org/simantics/diagram/svg/export/SVGGraphics2DWithPassthruSupport.java new file mode 100644 index 000000000..a9f3f2a04 --- /dev/null +++ b/bundles/org.simantics.diagram.svg/src/org/simantics/diagram/svg/export/SVGGraphics2DWithPassthruSupport.java @@ -0,0 +1,48 @@ +package org.simantics.diagram.svg.export; + +import java.awt.Font; +import java.awt.RenderingHints; +import java.awt.RenderingHints.Key; +import java.util.HashMap; +import java.util.Map; + +import org.apache.batik.svggen.SVGGeneratorContext; +import org.apache.batik.svggen.SVGGeneratorContext.GraphicContextDefaults; +import org.apache.batik.svggen.SVGGraphics2D; +import org.simantics.scenegraph.g2d.G2DPDFRenderingHints; +import org.simantics.scenegraph.g2d.G2DRenderingHints; +import org.w3c.dom.Document; + +public class SVGGraphics2DWithPassthruSupport extends SVGGraphics2D { + + public SVGGraphics2DWithPassthruSupport(Document document) { + this(SVGGeneratorContext.createDefault(document)); + } + + public SVGGraphics2DWithPassthruSupport(SVGGeneratorContext context) { + super(updateDefaults(context), false); + + setRenderingHint(G2DRenderingHints.KEY_TEXT_RENDERING_MODE, G2DRenderingHints.TextRenderingMode.AS_TEXT); + setRenderingHint(G2DRenderingHints.KEY_SVG_PASSTHRU, true); + + this.shapeConverter = new SVGShapeWithPassthruSupport(generatorCtx); + } + + private static SVGGeneratorContext updateDefaults(SVGGeneratorContext context) { + GraphicContextDefaults gcDefaults = new GraphicContextDefaults(); + + Map hintMap = new HashMap(); + + hintMap.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); + hintMap.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + hintMap.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); + hintMap.put(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY); + hintMap.put(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC); + + gcDefaults.setRenderingHints(new RenderingHints(hintMap)); + gcDefaults.setFont(Font.decode(null)); + + context.setGraphicContextDefaults(gcDefaults); + return context; + } +} \ No newline at end of file