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]
