Index: java/awt/image/IndexColorModel.java =================================================================== RCS file: /cvs/gcc/gcc/libjava/java/awt/image/IndexColorModel.java,v retrieving revision 1.6.14.6 diff -u -r1.6.14.6 IndexColorModel.java --- java/awt/image/IndexColorModel.java 6 Nov 2004 05:59:20 -0000 1.6.14.6 +++ java/awt/image/IndexColorModel.java 29 Nov 2004 13:24:26 -0000 @@ -125,7 +125,9 @@ public IndexColorModel(int bits, int size, byte[] reds, byte[] greens, byte[] blues, byte[] alphas) { - super (bits); + // FIXME: This super() constructor should not be used since it can give + // the wrong value for hasAlpha() which is final and cannot be overloaded + super(bits); map_size = size; opaque = (alphas == null); @@ -416,10 +418,10 @@ */ public final int getAlpha (int pixel) { - if (pixel < map_size) - return (int) ((generateMask (3) & rgb[pixel]) >> (3 * pixel_bits)); - - return 0; + if (opaque || pixel >= map_size) + return 255; + + return (int) ((generateMask (3) & rgb[pixel]) >> (3 * pixel_bits)); } /** Index: java/awt/image/MultiPixelPackedSampleModel.java =================================================================== RCS file: /cvs/gcc/gcc/libjava/java/awt/image/Attic/MultiPixelPackedSampleModel.java,v retrieving revision 1.1.2.1 diff -u -r1.1.2.1 MultiPixelPackedSampleModel.java --- java/awt/image/MultiPixelPackedSampleModel.java 21 Sep 2004 05:30:42 -0000 1.1.2.1 +++ java/awt/image/MultiPixelPackedSampleModel.java 29 Nov 2004 13:24:26 -0000 @@ -59,7 +59,7 @@ public MultiPixelPackedSampleModel(int dataType, int w, int h, int numberOfBits) { - this(dataType, w, h, 0, numberOfBits, 0); + this(dataType, w, h, numberOfBits, 0, 0); } public MultiPixelPackedSampleModel(int dataType, int w, int h, @@ -101,7 +101,7 @@ // Compute scan line large enough for w pixels. if (scanlineStride == 0) - scanlineStride = ((dataBitOffset + w * numberOfBits) / elemBits) + 1; + scanlineStride = ((dataBitOffset + w * numberOfBits) / elemBits); this.scanlineStride = scanlineStride; @@ -112,8 +112,9 @@ bitOffsets = new int[numElems]; for (int i=0; i < numElems; i++) { - bitOffsets[i] = numberOfBits * i; - bitMasks[i] = ((1 << numberOfBits) - 1) << bitOffsets[i]; + bitOffsets[numElems - i- 1] = numberOfBits * i; + bitMasks[numElems - i - 1] = ((1 << numberOfBits) - 1) << + bitOffsets[numElems - i - 1]; } }