Hi,
 I have the same problem as Renaud (see the mails below) , that is to avoid
copying data to a BufferedImage but rather passing to it an already existing
int array that is animated.
I have read the Jeannette's answer and written the following method.

/**
       This function creates the BufferedImage from the so called bitmap.
     */
    protected void updateImage() {
    // get the image data
    int[]       bm              = m_bitmap.getPixels();         // array of
0xAARRGGBB pixels
    int bmWidth = m_bitmap.getWidth();          // width of the image
    int bmHeight        = m_bitmap.getHeight();         // height of the
image

    // build the Raster and the ColorModel
    DataBufferInt               dataBuffer      = new DataBufferInt(bm,
bmWidth * bmHeight);
    WritableRaster      raster          =
Raster.createPackedRaster(dataBuffer, bmWidth, bmHeight, bmWidth,
                                                                        new
int[] {16, 8, 0, 24}, null);
    DirectColorModel    colorModel      = new DirectColorModel(32,
0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000);

    // create the BufferedImage
        m_image = new BufferedImage(colorModel, raster, false, null);
    }

Unfortunately, it doesn't work. Particularly I do not understand why after
creating a "Raster based on a SinglePixelPackedSampleModel" I got an
exception saying "Raster IntegerInterleavedRaster" is incompatible with a
DirectColorModel.

Exception occurred during event dispatching:
java.lang.IllegalArgumentException: Raster IntegerInterleavedRaster: width =
176 height = 144 #Bands = 4
#DataElements 1 xOff = 0 yOff = 0 dataOffset[0] 0 is incompatible with
ColorModel DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=ff000000
        at mpw.renderer.AnimatedBitmap.updateImage(Compiled Code)
        at mpw.renderer.AnimatedBitmap.render(Texture.java:212)


Thank you in advance

Paul



> -----Original Message-----
> From: Jeannette Hung [SMTP:[EMAIL PROTECTED]]
> Sent: Tuesday, September 28, 1999 12:56 AM
> To:   [EMAIL PROTECTED]
> Subject:      Re: [JAVA2D] Fast data copy
>
> Hi Renaud,
>    If you know what you are doing, you can construct a DataBuffer with
> the array.  For instance,
>         new DataBufferInt(yourData, yourDataSize)
> Then you can create a Raster that uses the DataBuffer and a ColorModel
> to create a BufferedImage.
>
> jeannette
>
> > MIME-Version: 1.0
> > Date: Tue, 28 Sep 1999 00:32:23 +0200
> > From: CAZOULAT Renaud CNET/DIH/REN
> <[EMAIL PROTECTED]>
> > Subject: [JAVA2D] Fast data copy
> > To: [EMAIL PROTECTED]
> >
> > Hi,
> >
> > Does someone know if there is a mean to set new data in a buffer
> *without*
> > data
> > copying ? (i.e. by reference).
> > The BufferedImage.setRGB as well as the
> BufferedImage.getRaster().setPixels
> > seems
> > to copy the data even if the colormodel and the data types are the same.
> >
> > renaud cazoulat
> >
> >
> ==========================================================================
> =
> > To unsubscribe, send email to [EMAIL PROTECTED] and include in the
> body
> > of the message "signoff JAVA2D-INTEREST".  For general help, send email
> to
> > [EMAIL PROTECTED] and include in the body of the message "help".
>
> ==========================================================================
> =
> To unsubscribe, send email to [EMAIL PROTECTED] and include in the
> body
> of the message "signoff JAVA2D-INTEREST".  For general help, send email to
> [EMAIL PROTECTED] and include in the body of the message "help".

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA2D-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to