Changeset 3973


Ignore:
Timestamp:
04/24/08 10:15:10 (12 years ago)
Author:
melissa
Message:

Parse channel names.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/formats/in/SlidebookReader.java

    r3963 r3973  
    283283 
    284284    if (pixelOffsets.size() > 1) { 
     285      if (pixelOffsets.size() > 2) { 
     286        int size = pixelOffsets.size(); 
     287        long last = ((Long) pixelOffsets.get(size - 1)).longValue(); 
     288        long nextToLast = ((Long) pixelOffsets.get(size - 2)).longValue(); 
     289        long diff = in.length() - last; 
     290        if (last - nextToLast > 2*diff && diff < (256 * 256 * 2)) { 
     291          pixelOffsets.removeElementAt(size - 1); 
     292        } 
     293      } 
    285294      boolean little = core.littleEndian[0]; 
    286295      core = new CoreMetadata(pixelOffsets.size()); 
     
    298307 
    299308    String[] imageNames = new String[core.sizeX.length]; 
     309    Vector channelNames = new Vector(); 
    300310    int nextName = 0; 
    301311 
     
    306316    int prevSeries = -1; 
    307317    int prevSeriesU = -1; 
     318    int nextChannel = 0; 
    308319    for (int i=0; i<metadataOffsets.size(); i++) { 
    309320      long off = ((Long) metadataOffsets.get(i)).longValue(); 
     
    328339              int checkY = in.readShort(); 
    329340              int div = in.readShort(); 
    330               //if (checkX >= 128 && div == 1) div = 2; 
    331341              core.sizeX[j - start] /= div; 
    332342              div = in.readShort(); 
    333               //if (checkY>= 128 && div == 1) div = 2; 
    334343              core.sizeY[j - start] /= div; 
    335344            } 
     
    367376        // this block should contain an image name 
    368377        in.skipBytes(14); 
    369         imageNames[nextName++] = in.readCString().trim(); 
     378        if (nextName < imageNames.length) { 
     379          imageNames[nextName++] = in.readCString().trim(); 
     380        } 
     381      } 
     382      else if (n == 'm') { 
     383        // this block should contain a channel name 
     384        if (in.getFilePointer() > ((Long) pixelOffsets.get(0)).longValue()) { 
     385          in.skipBytes(14); 
     386          channelNames.add(in.readCString().trim()); 
     387        } 
    370388      } 
    371389    } 
     
    397415    MetadataTools.populatePixels(store, this); 
    398416 
     417    int index = 0; 
     418 
    399419    for (int i=0; i<core.sizeX.length; i++) { 
    400420      store.setImageName(imageNames[i], i); 
    401421      store.setImageCreationDate( 
    402422        DataTools.convertDate(System.currentTimeMillis(), DataTools.UNIX), i); 
     423      for (int c=0; c<core.sizeC[i]; c++) { 
     424        if (index < channelNames.size()) { 
     425          store.setLogicalChannelName((String) channelNames.get(index++), i, c); 
     426          addMeta(imageNames[i] + " channel " + c, channelNames.get(index - 1)); 
     427        } 
     428      } 
    403429    } 
    404430  } 
Note: See TracChangeset for help on using the changeset viewer.