2002/07/21 01:00:39
[org.ibex.core.git] / src / org / xwt / PNG.java
index f0d9b7e..03b05f9 100644 (file)
@@ -159,7 +159,11 @@ public class PNG implements ImageDecoder {
     /** handle transparency chunk; modifies palette */
     private void handletRNS() throws IOException {
         int chunkLen = chunkLength;
-               if (palette == null) throw new IOException("tRNS chunk encountered before pLTE");
+        if (palette == null) {
+            if (Log.on) Log.log(this, "warning: tRNS chunk encountered before pLTE; ignoring alpha channel");
+            inputStream.skip(chunkLength);
+            return;
+        }
                int len = palette.length;
         if (colorType == 3) {
             transparency = true;
@@ -255,9 +259,9 @@ public class PNG implements ImageDecoder {
                 } else {
                     data[i] =
                         0xFF000000 |
-                        ((palette[3 * pix[i] + 0] & 0xff) << 16) |
-                        ((palette[3 * pix[i] + 1] & 0xff) << 8) |
-                        (palette[3 * pix[i] + 2] & 0xff);
+                        ((palette[3 * (pix[i] & 0xff) + 0] & 0xff) << 16) |
+                        ((palette[3 * (pix[i] & 0xff) + 1] & 0xff) << 8) |
+                        (palette[3 * (pix[i] & 0xff) + 2] & 0xff);
                 }
             }