Hi Roman,

I just committed a further adjustment to the scanlineStride calculation that fixes a number of failing test cases in Mauve (and also Intel's test suite). Can you check that your GIF decoding still works...

Regards,

Dave

Roman Kennke wrote:

The GIF decoding didn't work for some strange formats. This was caused by the MPPSM rounding wrong in an integer division (it rounds down but should round up really). I added a -1, so that it rounds up instead and now it works.

2006-07-11  Roman Kennke  <[EMAIL PROTECTED]>

        * java/awt/image/MultiPixelPackedSampleModel.java
        (MultiPixelPackedSampleModel): Substract -1 so that the integer
        division gets rounded up.

/Roman

------------------------------------------------------------------------

Index: java/awt/image/MultiPixelPackedSampleModel.java
===================================================================
RCS file: 
/cvsroot/classpath/classpath/java/awt/image/MultiPixelPackedSampleModel.java,v
retrieving revision 1.4
diff -u -1 -2 -r1.4 MultiPixelPackedSampleModel.java
--- java/awt/image/MultiPixelPackedSampleModel.java     2 Jul 2005 20:32:36 
-0000       1.4
+++ java/awt/image/MultiPixelPackedSampleModel.java     11 Jul 2006 21:31:01 
-0000
@@ -92,25 +92,25 @@
                                      + " larger than dataType");
    switch (numberOfBits)
      {
      case 1: case 2: case 4: case 8: case 16: case 32: break;
      default:
        throw new RasterFormatException("MultiPixelPackedSampleModel pixel"
                                        + " size not 2^n bits");
      }
    numElems = elemBits / numberOfBits;

    // Compute scan line large enough for w pixels.
    if (scanlineStride == 0)
-      scanlineStride = ((dataBitOffset + w * numberOfBits) / elemBits);
+      scanlineStride = (((dataBitOffset + w * numberOfBits) - 1) / elemBits);
    this.scanlineStride = scanlineStride;

sampleSize = new int[1];
    sampleSize[0] = numberOfBits;

    bitMasks = new int[numElems];
    bitOffsets = new int[numElems];
    for (int i=0; i < numElems; i++)
      {
        bitOffsets[numElems - i- 1] = numberOfBits * i;
bitMasks[numElems - i - 1] = ((1 << numberOfBits) - 1) <<


Reply via email to