David,

I reported a similar problem to Sun  (see earlier post on ColorModel
exception).  Their response is given below.

Cynthia Jeness

>>>>>Response from [EMAIL PROTECTED] (Jerry Evans)>>>>>>>>>>>>>>>>>>>

It looks like the IllegalArgumentException comes from a BufferedImage
constructor:

    public BufferedImage (ColorModel cm,
                          WritableRaster raster,
                          boolean isRasterPremultiplied,
                          Hashtable properties)

This constructor calls cm.isCompatibleRaster(raster), which must be
returning false.  The code in
DirectColorModel.isCompatibleRaster(Raster)
looks OK to me, so possibly the Linux port has somehow constructed
an IntegerInterleavedRaster or a DirectColorModel with inconsistent
arguments when running on your framebuffer.  We've certainly run
SwingSet
on 32 bpp cards and haven't seen this.  Without more detail on the
IntegerInterleavedRaster and DirectColorModel than is printed out in
the error message, I can't tell for sure why isCompatibleRaster() is
failing.


"David A. Green" wrote:

> First, let me express my gratitude and congratulations to the blackdown
> porting team.  Great job!
>
> Second, I have run into a bug/issue regarding the createImage(int, int)
> function in java.awt.component.  I call this function to create an
> off-screen image to be used for double-buffering.  I get the following
> exception:
>
> Exception occurred during event dispatching:
> java.lang.IllegalArgumentException: Raster IntegerInterleavedRaster:
> width = 300 height = 200 #Bands = 3 #DataElements 1 xOff = 0 yOff = 0
> dataOffset[0] 0 is incompatible with ColorModel DirectColorModel:
> rmask=ff0000 gmask=ff00 bmask=ff amask=0
>         at sun.awt.motif.MComponentPeer.createImage(Compiled Code)
>         at java.awt.Component.createImage(Compiled Code)
>         at ImageTest.update(Compiled Code)
>         at sun.awt.motif.MComponentPeer.handleEvent(Compiled Code)
>         at java.awt.Component.dispatchEventImpl(Compiled Code)
>         at java.awt.Container.dispatchEventImpl(Compiled Code)
>         at java.awt.Component.dispatchEvent(Compiled Code)
>         at java.awt.EventQueue.dispatchEvent(Compiled Code)
>         at java.awt.EventDispatchThread.run(Compiled Code)
>
> I also get the following exception whenever I try to use a swing
> component.  This particular one was from the SampleTree demo app
> included in the jdk1.2:
>
> Error loading L&F: java.lang.IllegalArgumentException: Raster
> IntegerInterleavedRaster: width = 64 height = 64 #Bands = 3
> #DataElements 1 xOff = 0 yOff = 0 dataOffset[0] 0 is incompatible with
> ColorModel DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0
> Exception in thread "main" java.lang.NullPointerException
>         at java.util.Hashtable.get(Compiled Code)
>         at javax.swing.UIDefaults.get(Compiled Code)
>         at javax.swing.MultiUIDefaults.get(Compiled Code)
>         at javax.swing.UIDefaults.getUIClass(Compiled Code)
>         at javax.swing.UIDefaults.getUI(Compiled Code)
>         at javax.swing.UIManager.getUI(Compiled Code)
>         at javax.swing.JMenuBar.updateUI(Compiled Code)
>         at javax.swing.JMenuBar.<init>(Compiled Code)
>         at SampleTree.constructMenuBar(Compiled Code)
>         at SampleTree.<init>(Compiled Code)
>         at SampleTree.main(Compiled Code)
>
> All of the code that generates these exceptions works just fine using
> java 1.1 or java 1.2 on both the Win32 and Solaris versions of the jdk.
> I am running Debian 2.0, with some libraries upgraded to 2.1 (slink).
> My only thought is that I am running in 32bpp mode in X windows and that
> may be causing problems with the offscreen images being incompatible
> with the DirectColorModel used to decode the pixels (which assumes 24bpp
> color and 8b of alpha).  Also, despite the exceptions, the image still
> loads.  This, however, is not true for the swing exception, which kills
> whichever thread is creating the swing component.  I have tried in 24bpp
> mode, but I just get a jvm crash whenever it loads the image.  I have
> attached my test program which creates a simple double-buffered panel
> with an image painted on it.  Does anyone have any thoughts?  Is this a
> bug in the java classes or in the jvm?  Should I report it to sun?
> Thanks.
>
> -Dave Green
>
> import java.awt.*;
> import java.awt.event.*;
> import pong.common.ImageServer;
> import honors.frame.ImagePanel;
>
> public class ImageTest extends Panel {
>
>   private Image myImage = null;
>   private Image buffer = null;
>   private Graphics pad = null;
>   private boolean buffered = true;
>
>   public ImageTest(String filename) {
>     try {
>       int n = Integer.parseInt(filename);
>       myImage = ImageServer.getImage(n);
>     } catch (Exception x) {
>       myImage = Toolkit.getDefaultToolkit().getImage(filename);
>     }
>   }
>
>   public void update(Graphics g) {
>           if (buffered) {
>       if (buffer == null) {
>                buffer = this.createImage(this.getSize().width,
> this.getSize().height);
>                pad = buffer.getGraphics();
>           }
>           paint(pad);
>             g.drawImage(buffer, 0, 0, this);
>     } else {
>       paint(g);
>     }
>      }
>
>   public void paint(Graphics g) {
>     g.setColor(Color.gray);
>     g.fillRect(0, 0, 300, 200);
>     g.drawImage(myImage, 0, 0, this);
>   }
>
>   public Dimension getPreferredSize() {
>     return new Dimension(300, 200);
>   }
>
>   public static void main(String[] args) {
>     if (args.length < 1) {
>       System.out.println("please provide a file name");
>       return;
>     }
>     Frame f = new Frame("ImageTest");
>     f.add(new ImageTest(args[0]));
>     f.addWindowListener( new WindowAdapter() {
>       public void windowClosing (WindowEvent w) { System.exit(0); } });
>     f.pack();
>     f.setVisible(true);
>     f.repaint();
>   }
>
> }


----------------------------------------------------------------------
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to