Hi, RectListManager throws NullPointerException
on method RectListManager.mergeRects(int overhead, int lineOverhead) on the last few line somehow if variable j or size == 0 then RectListManager.getBounds() will return null, in that case the line following will throw NullPointerException. This is not happen before. Only happen on recent cvs. I attached the file to reproduced it. Regards Tonny Kohar
/* * BugRectListManager.java * * Created on November 7, 2003, 5:11 PM */ package kiyut.bug; import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import java.awt.image.*; import java.io.*; import javax.swing.*; import org.apache.batik.bridge.*; import org.apache.batik.dom.svg.*; import org.apache.batik.gvt.*; import org.apache.batik.gvt.renderer.*; import org.apache.batik.util.*; import org.w3c.dom.*; import org.w3c.dom.css.*; import org.w3c.dom.svg.*; /** * * @author Tonny Kohar */ public class BugRectListManager { File file = null; SVGDocument doc; Display display; ImageRenderer renderer; UserAgent userAgent; DocumentLoader loader; BridgeContext ctx; public static void main(String[] args) { BugRectListManager bug = new BugRectListManager(args); bug.run(); } /** Creates a new instance of BugRectListManager */ public BugRectListManager(String[] args) { if (args[0] == null) { System.out.println("Please enter the svg filename as argument"); System.exit(1); } System.out.println(args[0]); //just checking args file = new File(args[0]); } public void run() { doc = loadSVGDocument(file); buildGVT(); JFrame frame = createFrame(); frame.pack(); frame.setVisible(true); } public SVGDocument loadSVGDocument(File file) { try { String url = file.toURL().toString(); String parser = XMLResourceDescriptor.getXMLParserClassName(); SAXSVGDocumentFactory f = new SAXSVGDocumentFactory(parser); SVGDocument svgDocument = f.createSVGDocument(url); return svgDocument; } catch (Exception e) { e.printStackTrace(); return null; } } private void buildGVT() { renderer = new DynamicRenderer(); userAgent = new UserAgentAdapter(); loader = new DocumentLoader(userAgent); ctx = new BridgeContext(userAgent, loader); GraphicsNode gvtRoot = null; GVTBuilder builder = new GVTBuilder(); try { gvtRoot = builder.build(ctx, doc); System.out.println("Rendering..."); renderer.setTree(gvtRoot); renderer.setDoubleBuffered(true); renderer.updateOffScreen(400,200); renderer.repaint(new Rectangle(400,200)); } catch (Exception ex) { ex.printStackTrace(); } } private JFrame createFrame() { ActionListener actionListener = new ActionListener() { public void actionPerformed(ActionEvent e) { buttonActionPerformed(e); } }; JButton button = new JButton("error"); button.setActionCommand("error"); button.addActionListener(actionListener); JPanel buttonPane = new JPanel(); buttonPane.add(button); display = new Display(); display.setPreferredSize(new Dimension(400,200)); display.setImage(renderer.getOffScreen()); JPanel contentPane = new JPanel(); contentPane.setLayout(new BorderLayout()); contentPane.add(display,BorderLayout.CENTER); contentPane.add(buttonPane,BorderLayout.SOUTH); JFrame frame = new JFrame(); frame.setContentPane(contentPane); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); return frame; } private void buttonActionPerformed(ActionEvent e) { String command = e.getActionCommand(); if (command.equalsIgnoreCase("error")) { Node node = doc.getElementById("rect1"); if (node instanceof SVGRectElement) { SVGRectElement rect = (SVGRectElement)node; rect.getX().getBaseVal().setValue(10); rect.getY().getBaseVal().setValue(10); rect.getWidth().getBaseVal().setValue(100); rect.getHeight().getBaseVal().setValue(50); renderer.repaint(new Rectangle(400,200)); display.setImage(renderer.getOffScreen()); display.repaint(); } } } private class Display extends JPanel { private BufferedImage image = null; public Display() { setBackground(Color.WHITE); } public void paintComponent(Graphics g) { super.paintComponent(g); if (image == null) return; Graphics2D g2d = (Graphics2D)g; g2d.setComposite(AlphaComposite.SrcOver); g2d.drawRenderedImage(image, null); } public void setImage(BufferedImage img) { image = img; } } }
<<attachment: bug_rect_list_manager.svg>>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]