ASF Bugzilla – Attachment 26164 Details for
Bug 42387
Rendering GraphicsNode onto SVGGraphics2D cannot reproduce gradients
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
A test case to demonstrate the bug
TestSvg.java (text/plain), 4.24 KB, created by
Santosh Tiwari
on 2010-10-12 10:27:07 UTC
(
hide
)
Description:
A test case to demonstrate the bug
Filename:
MIME Type:
Creator:
Santosh Tiwari
Created:
2010-10-12 10:27:07 UTC
Size:
4.24 KB
patch
obsolete
> >public class TestSvg { > > > public static org.apache.batik.gvt.GraphicsNode getSvgIcon(java.net.URL url) { > org.apache.batik.gvt.GraphicsNode svgIcon = null; > try { > String xmlParser = org.apache.batik.util.XMLResourceDescriptor.getXMLParserClassName(); > org.apache.batik.dom.svg.SAXSVGDocumentFactory df = new org.apache.batik.dom.svg.SAXSVGDocumentFactory(xmlParser); > org.w3c.dom.svg.SVGDocument doc = df.createSVGDocument(url.toString()); > org.apache.batik.bridge.UserAgent userAgent = new org.apache.batik.bridge.UserAgentAdapter(); > org.apache.batik.bridge.DocumentLoader loader = new org.apache.batik.bridge.DocumentLoader(userAgent); > org.apache.batik.bridge.BridgeContext ctx = new org.apache.batik.bridge.BridgeContext(userAgent, loader); > ctx.setDynamicState(org.apache.batik.bridge.BridgeContext.DYNAMIC); > org.apache.batik.bridge.GVTBuilder builder = new org.apache.batik.bridge.GVTBuilder(); > svgIcon = builder.build(ctx, doc); > } catch (Exception excp) { > System.err.println("Error in creating the SVG graphics node object."); > System.err.println(excp); > svgIcon = null; > } > return svgIcon; > } > > > public static void paintSvgIcon(java.awt.Graphics2D g, org.apache.batik.gvt.GraphicsNode svgIcon, int x, int y, double scaleX, double scaleY) { > java.awt.geom.AffineTransform transform = new java.awt.geom.AffineTransform(scaleX, 0.0, 0.0, scaleY, x, y); > svgIcon.setTransform(transform); > svgIcon.paint(g); > } > > > public static org.apache.batik.svggen.SVGGraphics2D getSvgPainter() { > org.w3c.dom.DOMImplementation impl = org.apache.batik.dom.GenericDOMImplementation.getDOMImplementation(); > String svgNS = "http://www.w3.org/2000/svg"; > org.w3c.dom.Document document = impl.createDocument(svgNS, "svg", null); > org.apache.batik.svggen.SVGGeneratorContext ctx = org.apache.batik.svggen.SVGGeneratorContext.createDefault(document); > ctx.setComment("SVG Test"); > ctx.setEmbeddedFontsOn(true); > org.apache.batik.svggen.SVGGraphics2D g2D = new org.apache.batik.svggen.SVGGraphics2D(ctx, true); > g2D.addRenderingHints(new java.awt.RenderingHints(java.awt.RenderingHints.KEY_ANTIALIASING, java.awt.RenderingHints.VALUE_ANTIALIAS_ON)); > g2D.setRenderingHint(java.awt.RenderingHints.KEY_TEXT_ANTIALIASING, java.awt.RenderingHints.VALUE_TEXT_ANTIALIAS_ON); > return g2D; > } > > > public static String getSvgFileAsString(org.apache.batik.svggen.SVGGraphics2D svgPainter, int canvasWidth, int canvasHeight) { > svgPainter.setSVGCanvasSize(new java.awt.Dimension(canvasWidth, canvasHeight)); > boolean useCSS = true; > java.io.StringWriter writer = new java.io.StringWriter(100000); > try { > svgPainter.stream(writer, useCSS); > } catch (org.apache.batik.svggen.SVGGraphics2DIOException excp) { > System.err.println("Could not write SVG"); > System.err.println(excp); > return null; > } > return writer.toString(); > } > > > public static void main(String[] args) { > > //Get a SVG icon as a graphics node > java.net.URL url = TestSvg.class.getResource("Process-stop.svg"); > final org.apache.batik.gvt.GraphicsNode icon = getSvgIcon(url); > > //Show the graphics on screen > javax.swing.JFrame frame = new javax.swing.JFrame("SVG"); > frame.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE); > javax.swing.JPanel panel = new javax.swing.JPanel() { > > > public void paintComponent(java.awt.Graphics g) { > java.awt.Graphics2D g2D = (java.awt.Graphics2D)g; > g2D.addRenderingHints(new java.awt.RenderingHints(java.awt.RenderingHints.KEY_ANTIALIASING, java.awt.RenderingHints.VALUE_ANTIALIAS_ON)); > g2D.setRenderingHint(java.awt.RenderingHints.KEY_TEXT_ANTIALIASING, java.awt.RenderingHints.VALUE_TEXT_ANTIALIAS_ON); > paintSvgIcon(g2D, icon, 50, 50, 1.0, 1.0); > } > > > }; > frame.getContentPane().add(panel); > frame.setSize(150, 150); > frame.setVisible(true); > > //Convert the graphics to a String > org.apache.batik.svggen.SVGGraphics2D painter = getSvgPainter(); > frame.paint(painter); > String fileContents = getSvgFileAsString(painter, frame.getWidth(), frame.getHeight()); > > //Save the string to a file > try { > java.io.BufferedWriter writer = new java.io.BufferedWriter(new java.io.FileWriter("/home/stiwari/snap.svg")); > writer.write(fileContents); > writer.flush(); > writer.close(); > } catch (java.io.IOException excp) { > System.err.println(excp); > } > > > } > > >}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 42387
:
20164
| 26164