public void next(byte[] dest) {
      iter.next(incomingRow);

      if (isOpaque()) {

        for (int x = 0; x < iter.getWidth(); x++) {
          int r = (incomingRow[x] >> 16) & 0xff;
          int g = (incomingRow[x] >> 8) & 0xff;
          int b = (incomingRow[x] >> 0) & 0xff;

          int index = lut.getIndexMatch(r, g, b);

          dest[x] = (byte) (index);
        }
      } else {
        int t = icm.getTransparentPixel();
        for (int x = 0; x < iter.getWidth(); x++) {
          int index;
          int a = (incomingRow[x] >> 24) & 0xff;
          if (a < 128) {
            index = t;
          } else {
            int r = (incomingRow[x] >> 16) & 0xff;
            int g = (incomingRow[x] >> 8) & 0xff;
            int b = (incomingRow[x] >> 0) & 0xff;

            index = lut.getIndexMatch(r, g, b);
          }

          dest[x] = (byte) (index);
        }
      }
      y++;
    }
 public void skip() {
   iter.skip();
   y++;
 }