Roman Kennke wrote:
Hi David,

I checked in the attached patch to HeadlessGraphicsEnvironment. It now
tries to get hold of a CairoGraphics2D if available. It falls back to
the (Java-only) RasterGraphics only when nothing else works. David, can
you please test if this works?

Unfortunately your patch didn't change the outcome...

Strange. I suppose something goes wrong in the magic reflection code
that I added. Could you please add ex.printStackTrace() in the catch
block in HeadlessGraphicsEnvironment.createGraphics() to see what
exactly goes wrong and post this trace?

/Roman
Hi Roman,

The mailing list seems slow, so hopefully this gets through...

I did that, then fixed the reflection code as attached. That results in a NullPointerException fetching the name for a font (see below), I think because the HeadlessToolkit is mostly stubs:

[EMAIL PROTECTED]:~/mauve-cvs$ ~/jamvm-1.4.4/src/jamvm -Xmx300m -jar ~/statcvs-0.2.3/statcvs.jar -output-dir output/ logfile.log mauve
StatCVS - CVS statistics generation

Revision of install-sh does not match expected revision
Revision of mkinstalldirs does not match expected revision
java.lang.reflect.InvocationTargetException
  at java.lang.reflect.Constructor.constructNative(Native Method)
  at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
at gnu.java.awt.peer.headless.HeadlessGraphicsEnvironment.createGraphics(HeadlessGraphicsEnvironment.java:79)
  at java.awt.image.BufferedImage.createGraphics(BufferedImage.java:397)
  at org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1212)
  at org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1193)
at org.jfree.chart.ChartUtilities.writeChartAsPNG(ChartUtilities.java:174)
  at org.jfree.chart.ChartUtilities.saveChartAsPNG(ChartUtilities.java:329)
  at org.jfree.chart.ChartUtilities.saveChartAsPNG(ChartUtilities.java:300)
  at net.sf.statcvs.renderer.Chart.saveChart(Chart.java:93)
  at net.sf.statcvs.renderer.LOCChart.<init>(LOCChart.java:78)
  at net.sf.statcvs.output.HTMLOutput.createLOCChart(HTMLOutput.java:298)
  at net.sf.statcvs.output.HTMLOutput.createHTMLSuite(HTMLOutput.java:180)
  at net.sf.statcvs.Main.generateDefaultHTMLSuite(Main.java:193)
  at net.sf.statcvs.Main.main(Main.java:75)
  at java.lang.reflect.Method.invokeNative(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:372)
  at jamvm.java.lang.JarLauncher.main(JarLauncher.java:49)
Caused by: java.lang.NullPointerException
  at java.awt.Font.getName(Font.java:391)
at gnu.java.awt.peer.gtk.CairoGraphics2D.setFont(CairoGraphics2D.java:1732)
  at gnu.java.awt.peer.gtk.CairoGraphics2D.setup(CairoGraphics2D.java:225)
at gnu.java.awt.peer.gtk.BufferedImageGraphics.<init>(BufferedImageGraphics.java:160)
  at java.lang.reflect.Constructor.constructNative(Native Method)
  ...17 more
java.lang.reflect.InvocationTargetException
  at java.lang.reflect.Method.invokeNative(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:372)
  at jamvm.java.lang.JarLauncher.main(JarLauncher.java:49)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 307200
  at java.awt.image.DataBufferInt.getElem(DataBufferInt.java:200)
  at gnu.java.awt.Buffers.getData(Buffers.java:184)
at java.awt.image.SinglePixelPackedSampleModel.getDataElements(SinglePixelPackedSampleModel.java:258)
  at java.awt.image.Raster.getDataElements(Raster.java:651)
at gnu.java.awt.java2d.AlphaCompositeContext.compose(AlphaCompositeContext.java:217) at gnu.java.awt.java2d.AbstractGraphics2D.fillScanlineAA(AbstractGraphics2D.java:2109) at gnu.java.awt.java2d.AbstractGraphics2D.fillShapeAntialias(AbstractGraphics2D.java:2049) at gnu.java.awt.java2d.AbstractGraphics2D.fillShape(AbstractGraphics2D.java:1570) at gnu.java.awt.java2d.AbstractGraphics2D.fill(AbstractGraphics2D.java:545)
  at org.jfree.chart.JFreeChart.draw(JFreeChart.java:974)
  at org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1213)
  at org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1193)
at org.jfree.chart.ChartUtilities.writeChartAsPNG(ChartUtilities.java:174)
  at org.jfree.chart.ChartUtilities.saveChartAsPNG(ChartUtilities.java:329)
  at org.jfree.chart.ChartUtilities.saveChartAsPNG(ChartUtilities.java:300)
  at net.sf.statcvs.renderer.Chart.saveChart(Chart.java:93)
  at net.sf.statcvs.renderer.LOCChart.<init>(LOCChart.java:78)
  at net.sf.statcvs.output.HTMLOutput.createLOCChart(HTMLOutput.java:298)
  at net.sf.statcvs.output.HTMLOutput.createHTMLSuite(HTMLOutput.java:180)
  at net.sf.statcvs.Main.generateDefaultHTMLSuite(Main.java:193)
  at net.sf.statcvs.Main.main(Main.java:75)
  at java.lang.reflect.Method.invokeNative(Native Method)
  ...2 more


Regards,

Dave
Index: gnu/java/awt/peer/headless/HeadlessGraphicsEnvironment.java
===================================================================
RCS file: 
/sources/classpath/classpath/gnu/java/awt/peer/headless/HeadlessGraphicsEnvironment.java,v
retrieving revision 1.2
diff -u -r1.2 HeadlessGraphicsEnvironment.java
--- gnu/java/awt/peer/headless/HeadlessGraphicsEnvironment.java 23 Nov 2006 
08:45:08 -0000      1.2
+++ gnu/java/awt/peer/headless/HeadlessGraphicsEnvironment.java 23 Nov 2006 
10:55:50 -0000
@@ -76,11 +76,12 @@
               Class.forName("gnu.java.awt.peer.gtk.BufferedImageGraphics");
             Constructor bigC =
               bigCl.getConstructor(new Class[]{BufferedImage.class });
-            g2d = (Graphics2D) bigCl.newInstance();
+            g2d = (Graphics2D) bigC.newInstance(new Object[] {image});
           }
       }
     catch (Exception ex)
       {
+         ex.printStackTrace();
         g2d = new RasterGraphics(image.getRaster(), image.getColorModel());
       }
     return g2d;

Reply via email to