Changeset 3918


Ignore:
Timestamp:
04/14/08 08:35:27 (12 years ago)
Author:
melissa
Message:
  • Fixed PerkinElmer file ordering bug.
  • Fixed LSM image count calculation bug.
  • Fixed last of the TIFF endianness bugs.
Location:
trunk/loci/formats
Files:
3 edited

Legend:

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

    r3915 r3918  
    18241824      } 
    18251825      else if (bitsPerSample[0] <= 16) { 
    1826         short[] s = (short[]) DataTools.makeDataArray(input, 2, false, !little); 
     1826        short[] s = (short[]) DataTools.makeDataArray(input, 2, false, little); 
    18271827        for (int b=0; b<s.length; b++) { 
    18281828          if (b / len % width == 0) continue; 
  • trunk/loci/formats/in/PerkinElmerReader.java

    r3842 r3918  
    370370 
    371371    for (int i=0; i<files.length; i++) allFiles.add(files[i]); 
     372    if (isTiff) Arrays.sort(files); 
     373    else { 
     374      Comparator c = new Comparator() { 
     375        public int compare(Object o1, Object o2) { 
     376          String s1 = (String) o1; 
     377          String s2 = (String) o2; 
     378          String prefix1 = s1, prefix2 = s2, suffix1 = s1, suffix2 = s2; 
     379          if (s1.indexOf(".") != -1) { 
     380            prefix1 = s1.substring(0, s1.lastIndexOf(".")); 
     381            suffix1 = s1.substring(s1.lastIndexOf(".") + 1); 
     382          } 
     383          if (s2.indexOf(".") != -1) { 
     384            prefix2 = s2.substring(0, s2.lastIndexOf(".")); 
     385            suffix2 = s2.substring(s2.lastIndexOf(".") + 1); 
     386          } 
     387          int cmp = prefix1.compareTo(prefix2); 
     388          if (cmp != 0) return cmp; 
     389          return Integer.parseInt(suffix1, 16) - Integer.parseInt(suffix2, 16); 
     390        } 
     391      }; 
     392      Arrays.sort(files, c); 
     393    } 
    372394 
    373395    core.imageCount[0] = files.length; 
  • trunk/loci/formats/in/ZeissLSMReader.java

    r3906 r3918  
    117117  public ZeissLSMReader() { super("Zeiss Laser-Scanning Microscopy", "lsm"); } 
    118118 
     119  // -- IFormatHandler API methods -- 
     120 
     121  /* @see loci.formats.IFormatHandler#close() */ 
     122  public void close() throws IOException { 
     123    super.close(); 
     124    pixelSizeX = pixelSizeY = pixelSizeZ = 0f; 
     125    lut = null; 
     126    thumbnailsRemoved = false; 
     127    timestamps = null; 
     128    validChannels = 0; 
     129  } 
     130 
    119131  // -- IFormatReader API methods -- 
    120132 
     
    158170      // check that predictor is set to 1 if anything other 
    159171      // than LZW compression is used 
    160       if (TiffTools.getCompression(ifds[2*no]) != TiffTools.LZW) { 
    161         ifds[2*no].put(new Integer(TiffTools.PREDICTOR), new Integer(1)); 
    162       } 
    163  
    164       TiffTools.getSamples(ifds[2*no], in, buf, x, y, w, h); 
     172      if (TiffTools.getCompression(ifds[no]) != TiffTools.LZW) { 
     173        ifds[no].put(new Integer(TiffTools.PREDICTOR), new Integer(1)); 
     174      } 
     175 
     176      TiffTools.getSamples(ifds[no], in, buf, x, y, w, h); 
    165177    } 
    166178    else { 
     
    173185    return buf; 
    174186  } 
     187 
    175188 
    176189  // -- Internal BaseTiffReader API methods -- 
     
    359372 
    360373      put("ToolbarFlags", ras.readInt()); 
    361       ras.skipBytes(20); 
     374      ras.close(); 
    362375 
    363376      // read referenced structures 
     
    681694      store.setPlaneTheT(new Integer(zct[2]), 0, 0, i); 
    682695 
    683       if (zct[2] < timestamps.size()) { 
     696      if (zct[2] + 1 < timestamps.size()) { 
    684697        float thisStamp = ((Double) timestamps.get(zct[2])).floatValue(); 
    685698        store.setPlaneTimingDeltaT(new Float(thisStamp), 0, 0, i); 
     
    743756 
    744757    initMetadata(); 
    745     ifds = TiffTools.getIFDs(in); 
    746  
    747     if (ifds.length > 1) { 
    748       core.thumbSizeX[0] = TiffTools.getIFDIntValue(ifds[1], 
    749         TiffTools.IMAGE_WIDTH, false, 1); 
    750       core.thumbSizeY[0] = TiffTools.getIFDIntValue(ifds[1], 
    751         TiffTools.IMAGE_LENGTH, false, 1); 
    752     } 
    753  
    754     if (ifds.length == 2 && core.imageCount[0] > ifds.length / 2) { 
     758 
     759    if (ifds.length == 1 && core.imageCount[0] > ifds.length) { 
    755760      core.sizeY[0] = 1; 
    756761    } 
     762    else if (core.imageCount[0] != ifds.length) { 
     763      core.imageCount[0] = ifds.length; 
     764      if (core.sizeZ[0] > 1) { 
     765        core.sizeZ[0] = ifds.length; 
     766        core.sizeT[0] = 1; 
     767      } 
     768      else if (core.sizeT[0] > 1) { 
     769        core.sizeT[0] = ifds.length; 
     770        core.sizeZ[0] = 1; 
     771      } 
     772    } 
     773    core.littleEndian[0] = !core.littleEndian[0]; 
    757774  } 
    758775 
Note: See TracChangeset for help on using the changeset viewer.