When painting org.apache.batik.gvt.GraphicsNode uses utility class org.apache.batik.ext.awt.image.GraphicsUtil. This utility fails to check for null return values from Graphics2D.getDeviceConfiguration in at least two places. Steps two reproduce: Create a GraphicsNode from a SVGDocument, paint onto SVGGraphics2D (or any other Graphics2D impl whose getDeviceConfiguration returns null) java.lang.NullPointerException at org.apache.batik.ext.awt.image.GraphicsUtil.getDestination(GraphicsUtil.java:498) at org.apache.batik.ext.awt.image.GraphicsUtil.getDestinationColorModel(GraphicsUtil.java:511) at org.apache.batik.ext.awt.image.GraphicsUtil.getDestinationColorSpace(GraphicsUtil.java:533) at org.apache.batik.ext.awt.image.GraphicsUtil.drawImage(GraphicsUtil.java:131) at org.apache.batik.ext.awt.image.GraphicsUtil.drawImage(GraphicsUtil.java:451) at org.apache.batik.gvt.AbstractGraphicsNode.paint(AbstractGraphicsNode.java:522) at org.apache.batik.gvt.CompositeGraphicsNode.primitivePaint(CompositeGraphicsNode.java:159) at org.apache.batik.gvt.AbstractGraphicsNode.paint(AbstractGraphicsNode.java:488) at org.apache.batik.gvt.CompositeGraphicsNode.primitivePaint(CompositeGraphicsNode.java:159) at org.apache.batik.gvt.CanvasGraphicsNode.primitivePaint(CanvasGraphicsNode.java:158) at org.apache.batik.gvt.AbstractGraphicsNode.paint(AbstractGraphicsNode.java:488) at org.apache.batik.gvt.CompositeGraphicsNode.primitivePaint(CompositeGraphicsNode.java:159) at org.apache.batik.gvt.AbstractGraphicsNode.paint(AbstractGraphicsNode.java:488)
Created attachment 20163 [details] bug fix: added relevant null checking Although this fixes the NPE, it would probably be a good idea to change SVGGraphics2D's implementation of getDeviceConfiguration
Hi Thomas. Yes there should be checks in there, I think. I'm not sure what behaviour makes sense for a GraphicsConfiguration on SVGGraphics2D, since it doesn't work on a raster image. So for now I'll leave getDeviceConfiguration() returning null. I've added the null checks into GraphicsUtil. BTW I met your colleague Michael Kaufmann last week when he was visiting us at Monash Uni.