Changeset 3297


Ignore:
Timestamp:
10/18/07 08:27:58 (12 years ago)
Author:
melissa
Message:

Fixed openBytes(int, byte[]) so it no longer returns all zeros.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/formats/ChannelFiller.java

    r3278 r3297  
    8181    throws FormatException, IOException 
    8282  { 
    83     buf = openBytes(no); 
    84     return buf; 
    85   } 
    86  
    87   /* @see IFormatReader#openBytes(int) */ 
    88   public byte[] openBytes(int no) throws FormatException, IOException { 
    8983    if (reader.isIndexed() && !reader.isFalseColor()) { 
    9084      if (getPixelType() == FormatTools.UINT8) { 
    9185        byte[][] b = ImageTools.indexedToRGB(reader.get8BitLookupTable(), 
    9286          reader.openBytes(no)); 
    93         byte[] rtn = new byte[b.length * b[0].length]; 
    9487        if (isInterleaved()) { 
    9588          int pt = 0; 
    9689          for (int i=0; i<b[0].length; i++) { 
    9790            for (int j=0; j<b.length; j++) { 
    98               rtn[pt++] = b[j][i]; 
     91              buf[pt++] = b[j][i]; 
    9992            } 
    10093          } 
     
    10295        else { 
    10396          for (int i=0; i<b.length; i++) { 
    104             System.arraycopy(b[i], 0, rtn, i*b[i].length, b[i].length); 
     97            System.arraycopy(b[i], 0, buf, i*b[i].length, b[i].length); 
    10598          } 
    10699        } 
    107         return rtn; 
     100        return buf; 
    108101      } 
    109102      else { 
    110103        short[][] s = ImageTools.indexedToRGB(reader.get16BitLookupTable(), 
    111104          reader.openBytes(no), isLittleEndian()); 
    112         byte[] rtn = new byte[s.length * s[0].length * 2]; 
    113105 
    114106        if (isInterleaved()) { 
     
    116108          for (int i=0; i<s[0].length; i++) { 
    117109            for (int j=0; j<s.length; j++) { 
    118               rtn[pt++] = (byte) (isLittleEndian() ? 
     110              buf[pt++] = (byte) (isLittleEndian() ? 
    119111                (s[j][i] & 0xff) : (s[j][i] >> 8)); 
    120               rtn[pt++] = (byte) (isLittleEndian() ? 
     112              buf[pt++] = (byte) (isLittleEndian() ? 
    121113                (s[j][i] >> 8) : (s[j][i] & 0xff)); 
    122114            } 
     
    127119          for (int i=0; i<s.length; i++) { 
    128120            for (int j=0; j<s[i].length; j++) { 
    129               rtn[pt++] = (byte) (isLittleEndian() ? 
     121              buf[pt++] = (byte) (isLittleEndian() ? 
    130122                (s[j][i] & 0xff) : (s[j][i] >> 8)); 
    131               rtn[pt++] = (byte) (isLittleEndian() ? 
     123              buf[pt++] = (byte) (isLittleEndian() ? 
    132124                (s[j][i] >> 8) : (s[j][i] & 0xff)); 
    133125            } 
    134126          } 
    135127        } 
    136         return rtn; 
     128        return buf; 
    137129      } 
    138130    } 
    139     return reader.openBytes(no); 
     131    return reader.openBytes(no, buf); 
     132  } 
     133 
     134  /* @see IFormatReader#openBytes(int) */ 
     135  public byte[] openBytes(int no) throws FormatException, IOException { 
     136    byte[] buf = new byte[getSizeX() * getSizeY() * getRGBChannelCount() * 
     137      FormatTools.getBytesPerPixel(getPixelType())]; 
     138    return openBytes(no, buf); 
    140139  } 
    141140 
Note: See TracChangeset for help on using the changeset viewer.