Changeset 2616


Ignore:
Timestamp:
04/13/07 11:03:20 (13 years ago)
Author:
melissa
Message:

Uncommented metadata collection toggle; fixed readers that broke as a result.

Location:
trunk/loci/formats
Files:
37 edited

Legend:

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

    r2608 r2616  
    145145  /** Adds an entry to the metadata table. */ 
    146146  protected void addMeta(String key, Object value) { 
    147     if (key == null || value == null/* || !collectMetadata*/) return; 
     147    if (key == null || value == null || !collectMetadata) return; 
    148148    if (filterMetadata) { 
    149149      // verify key & value are not empty 
     
    341341  } 
    342342 
     343  /* @see IFormatReader#close(boolean) */ 
     344  public void close(boolean fileOnly) throws FormatException, IOException { 
     345    if (fileOnly) { 
     346      if (in != null) in.close(); 
     347    } 
     348    else close(); 
     349  } 
     350 
    343351  /* @see IFormatReader#close() */ 
    344352  public void close() throws FormatException, IOException { 
  • trunk/loci/formats/in/AVIReader.java

    r2601 r2616  
    118118    return ImageTools.makeImage(openBytes(no), 
    119119      core.sizeX[0], core.sizeY[0], core.sizeC[0], true); 
    120   } 
    121  
    122   /* @see loci.formats.IFormatReader#close(boolean) */ 
    123   public void close(boolean fileOnly) throws FormatException, IOException { 
    124     if (fileOnly) { 
    125       if (in != null) in.close(); 
    126     } 
    127     else close(); 
    128120  } 
    129121 
     
    420412    core.littleEndian[0] = true; 
    421413 
    422     int bitsPerPixel = ((Integer) getMeta("Bits per pixel")).intValue(); 
    423     int bytesPerPixel = bitsPerPixel / 8; 
    424  
    425     if (bitsPerPixel == 8) core.pixelType[0] = FormatTools.UINT8; 
    426     else if (bitsPerPixel == 16) core.pixelType[0] = FormatTools.UINT16; 
    427     else if (bitsPerPixel == 32) core.pixelType[0] = FormatTools.UINT32; 
    428     else if (bitsPerPixel == 24) core.pixelType[0] = FormatTools.UINT8; 
     414    int bytesPerPixel = bmpBitsPerPixel / 8; 
     415 
     416    if (bmpBitsPerPixel == 8) core.pixelType[0] = FormatTools.UINT8; 
     417    else if (bmpBitsPerPixel == 16) core.pixelType[0] = FormatTools.UINT16; 
     418    else if (bmpBitsPerPixel == 32) core.pixelType[0] = FormatTools.UINT32; 
     419    else if (bmpBitsPerPixel == 24) core.pixelType[0] = FormatTools.UINT8; 
    429420    else 
    430421      throw new FormatException( 
    431           "Unknown matching for pixel bit width of: " + bitsPerPixel); 
     422          "Unknown matching for pixel bit width of: " + bmpBitsPerPixel); 
    432423 
    433424    MetadataStore store = getMetadataStore(); 
  • trunk/loci/formats/in/AliconaReader.java

    r2601 r2616  
    9090  } 
    9191 
    92   /* @see loci.formats.IFormatReader#close(boolean) */ 
    93   public void close(boolean fileOnly) throws FormatException, IOException { 
    94     if (fileOnly && in != null) in.close(); 
    95     else if (!fileOnly) close(); 
    96   } 
    97  
    9892  /** Initializes the given Alicona file. */ 
    9993  protected void initFile(String id) throws FormatException, IOException { 
     
    122116    int count = 2; 
    123117 
     118    boolean hasC = false; 
     119    String voltage = null, magnification = null; 
     120    String pntX = null, pntY = null, pntZ = null; 
     121 
    124122    for (int i=0; i<count; i++) { 
    125123      in.read(keyBytes); 
     
    143141        textureOffset = Integer.parseInt(value); 
    144142      } 
     143      else if (key.equals("TexturePtr") && !value.equals("7")) hasC = true;  
     144      else if (key.equals("Voltage")) voltage = value; 
     145      else if (key.equals("Magnification")) magnification = value; 
     146      else if (key.equals("PlanePntX")) pntX = value;  
     147      else if (key.equals("PlanePntY")) pntY = value;  
     148      else if (key.equals("PlanePntZ")) pntZ = value;  
    145149    } 
    146150 
     
    149153    numBytes = (int) (in.length() - textureOffset) / 
    150154      (core.sizeX[0] * core.sizeY[0] * core.imageCount[0]); 
    151  
    152     boolean hasC = !((String) getMeta("TexturePtr")).trim().equals("7"); 
    153155 
    154156    core.sizeC[0] = hasC ? 3 : 1; 
     
    176178    ); 
    177179 
    178     if (getMeta("Voltage") != null) { 
    179       store.setDetector(null, null, null, null, null, 
    180         new Float((String) getMeta("Voltage")), null, null, null); 
     180    if (voltage != null) { 
     181      store.setDetector(null, null, null, null, null, new Float(voltage),  
     182        null, null, null); 
    181183    } 
    182     if (getMeta("Magnification") != null) { 
    183       store.setObjective(null, null, null, null, 
    184         new Float((String) getMeta("Magnification")), null, null); 
     184    if (magnification != null) { 
     185      store.setObjective(null, null, null, null, new Float(magnification),  
     186        null, null); 
    185187    } 
    186188 
    187     if (getMeta("PlanePntX") != null && getMeta("PlanePntY") != null && 
    188       getMeta("PlanePntZ") != null) 
    189     { 
    190       store.setDimensions( 
    191         new Float(((String) getMeta("PlanePntX")).trim()), 
    192         new Float(((String) getMeta("PlanePntY")).trim()), 
    193         new Float(((String) getMeta("PlanePntZ")).trim()), null, null, null); 
     189    if (pntX != null && pntY != null && pntZ != null) { 
     190      store.setDimensions(new Float(pntX.trim()), new Float(pntY.trim()), 
     191        new Float(pntZ.trim()), null, null, null); 
    194192    } 
    195193 
  • trunk/loci/formats/in/BMPReader.java

    r2601 r2616  
    143143  } 
    144144 
    145   /* @see loci.formats.IFormatReader#close(boolean) */ 
    146   public void close(boolean fileOnly) throws FormatException, IOException { 
    147     if (fileOnly && in != null) in.close(); 
    148     else if (!fileOnly) close(); 
    149   } 
    150  
    151145  /** Initializes the given BMP file. */ 
    152146  protected void initFile(String id) throws FormatException, IOException { 
     
    212206 
    213207    in.skipBytes(4); 
    214     addMeta("X resolution", "" + in.readInt()); 
    215     addMeta("Y resolution", "" + in.readInt()); 
     208    int pixelSizeX = in.readInt(); 
     209    int pixelSizeY = in.readInt(); 
     210    addMeta("X resolution", "" + pixelSizeX); 
     211    addMeta("Y resolution", "" + pixelSizeY); 
    216212    int nColors = in.readInt(); 
    217213    in.skipBytes(4); 
     
    281277    // microns per pixel 
    282278 
    283     int pixSizeX = Integer.parseInt((String) getMeta("X resolution")); 
    284     int pixSizeY = Integer.parseInt((String) getMeta("Y resolution")); 
    285  
    286     float correctedX = (1 / (float) pixSizeX) * 1000000; 
    287     float correctedY = (1 / (float) pixSizeY) * 1000000; 
     279    float correctedX = (1 / (float) pixelSizeX) * 1000000; 
     280    float correctedY = (1 / (float) pixelSizeY) * 1000000; 
    288281 
    289282    store.setDimensions(new Float(correctedX), new Float(correctedY), null, 
  • trunk/loci/formats/in/BaseTiffReader.java

    r2604 r2616  
    727727 
    728728    return TiffTools.getImage(ifds[no], in); 
    729   } 
    730  
    731   /* @see loci.formats.IFormatReader#close(boolean) */ 
    732   public void close(boolean fileOnly) throws FormatException, IOException { 
    733     if (fileOnly && in != null) in.close(); 
    734     else if (!fileOnly) close(); 
    735729  } 
    736730 
  • trunk/loci/formats/in/BioRadReader.java

    r2613 r2616  
    109109      core.sizeY[0], 1, false, byteFormat ? 1 : 2, LITTLE_ENDIAN); 
    110110    return b; 
    111   } 
    112  
    113   /* @see loci.formats.IFormatReader#close(boolean) */ 
    114   public void close(boolean fileOnly) throws FormatException, IOException { 
    115     if (fileOnly && in != null) in.close(); 
    116     else if (!fileOnly) close(); 
    117111  } 
    118112 
     
    192186 
    193187    status("Reading notes"); 
     188 
     189    String zoom = null, zstart = null, zstop = null, mag = null; 
     190    String gain1 = null, gain2 = null, gain3 = null; 
     191    String offset1 = null, offset2 = null, offset3 = null; 
     192    String ex1 = null, ex2 = null, ex3 = null; 
     193    String em1 = null, em2 = null, em3 = null; 
    194194 
    195195    // read notes 
     
    422422              break; 
    423423          } 
     424           
     425          String value;  
    424426          while (st.hasMoreTokens() && idx < keys.length) { 
    425             addMeta(keys[idx], st.nextToken()); 
     427            value = st.nextToken();  
     428            addMeta(keys[idx], value); 
     429            if (keys[idx].equals("Zoom factor (user selected)")) zoom = value; 
     430            else if (keys[idx].equals("Z start")) zstart = value; 
     431            else if (keys[idx].equals("Z stop")) zstop = value; 
     432            else if (keys[idx].equals("Transmission detector 1 - gain")) { 
     433              gain1 = value; 
     434            }  
     435            else if (keys[idx].equals("Transmission detector 2 - gain")) { 
     436              gain2 = value; 
     437            }  
     438            else if (keys[idx].equals("Transmission detector 3 - gain")) { 
     439              gain3 = value; 
     440            }  
     441            else if (keys[idx].equals("Transmission detector 1 - offset")) { 
     442              offset1 = value; 
     443            }  
     444            else if (keys[idx].equals("Transmission detector 2 - offset")) { 
     445              offset2 = value; 
     446            }  
     447            else if (keys[idx].equals("Transmission detector 3 - offset")) { 
     448              offset3 = value; 
     449            }  
     450            else if (keys[idx].equals( 
     451              "Part number of excitation filter for laser 1"))  
     452            { 
     453              ex1 = value; 
     454            } 
     455            else if (keys[idx].equals( 
     456              "Part number of excitation filter for laser 2"))  
     457            { 
     458              ex2 = value; 
     459            } 
     460            else if (keys[idx].equals( 
     461              "Part number of excitation filter for laser 3"))  
     462            { 
     463              ex3 = value; 
     464            } 
     465            else if (keys[idx].equals( 
     466              "Part number of emission filter for laser 1")) 
     467            { 
     468              em1 = value; 
     469            } 
     470            else if (keys[idx].equals( 
     471              "Part number of emission filter for laser 2")) 
     472            { 
     473              em2 = value; 
     474            } 
     475            else if (keys[idx].equals( 
     476              "Part number of emission filter for laser 3")) 
     477            { 
     478              em3 = value; 
     479            } 
     480            else if (keys[idx].equals("Objective lens magnification")) { 
     481              mag = value; 
     482            } 
     483 
    426484            idx++; 
    427485          } 
     
    636694      store.setLogicalChannel(i, null, null, null, null, null, null, null); 
    637695       
    638       double white = Double.parseDouble(getMeta("ramp1_max").toString());  
    639       double black = Double.parseDouble(getMeta("ramp1_min").toString());  
     696      double white = ramp1max;  
     697      double black = ramp1min;  
    640698       
    641699      store.setDisplayChannel(new Integer(i),  new Double(black), 
    642700        new Double(white), null, null); 
    643701    } 
    644     String zoom = (String) getMeta("Zoom factor (user selected)"); 
    645     String zstart = (String) getMeta("Z start"); 
    646     String zstop = (String) getMeta("Z stop"); 
    647702    store.setDisplayOptions(zoom == null ? null : new Float(zoom), 
    648703      new Boolean(core.sizeC[0] > 1), new Boolean(core.sizeC[0] >= 2), 
     
    656711 
    657712    for (int i=0; i<3; i++) { 
    658       String prefix = "Transmission detector " + (i+1) + " - "; 
    659       String gain = (String) getMeta(prefix + "gain"); 
    660       String offset = (String) getMeta(prefix + "offset"); 
     713      String gain = i == 0 ? gain1 : i == 1 ? gain2 : gain3; 
     714      String offset = i == 0 ? offset1 : i == 1 ? gain2 : gain3; 
    661715      if (gain != null || offset != null) {  
    662716        store.setDetector(null, null, null, null, gain == null ? null : 
     
    665719      } 
    666720 
    667       String exc = (String) getMeta("Part number of excitation filter for " + 
    668         "laser " + (i+1)); 
    669       String ems = (String) getMeta("Part number of emission filter for " + 
    670         "laser " + (i+1)); 
    671       String excName = (String) getMeta("Excitation filter name - laser " + i); 
    672       String emsName = (String) getMeta("Emission filter name - laser " + i); 
     721      String exc = i == 0 ? ex1 : i == 1 ? ex2 : ex3;  
     722      String ems = i == 0 ? em1 : i == 1 ? em2 : em3;  
    673723      if (exc != null) store.setExcitationFilter(null, null, exc, null, null); 
    674724      if (ems != null) store.setEmissionFilter(null, null, ems, null, null); 
    675725    } 
    676     String mag = (String) getMeta("Objective lens magnification"); 
    677726    if (mag != null) { 
    678727      store.setObjective(null, null, null, null, new Float(mag), null, null); 
  • trunk/loci/formats/in/DeltavisionReader.java

    r2601 r2616  
    117117    return ImageTools.makeImage(openBytes(no), core.sizeX[0], 
    118118      core.sizeY[0], 1, false, bytesPerPixel, core.littleEndian[0]); 
    119   } 
    120  
    121   /* @see loci.formats.IFormatReader#close(boolean) */ 
    122   public void close(boolean fileOnly) throws FormatException, IOException { 
    123     if (fileOnly && in != null) in.close(); 
    124     else if (!fileOnly) close(); 
    125119  } 
    126120 
     
    207201    addMeta("Pixel sampling size (Y)", new Integer(hstream.readInt())); 
    208202    addMeta("Pixel sampling size (Z)", new Integer(hstream.readInt())); 
    209     addMeta("X element length (in um)", new Float(hstream.readFloat())); 
    210     addMeta("Y element length (in um)", new Float(hstream.readFloat())); 
    211     addMeta("Z element length (in um)", new Float(hstream.readFloat())); 
     203     
     204    float pixX = hstream.readFloat(); 
     205    float pixY = hstream.readFloat(); 
     206    float pixZ = hstream.readFloat(); 
     207     
     208    addMeta("X element length (in um)", new Float(pixX)); 
     209    addMeta("Y element length (in um)", new Float(pixY)); 
     210    addMeta("Z element length (in um)", new Float(pixZ)); 
    212211    addMeta("X axis angle", new Float(hstream.readFloat())); 
    213212    addMeta("Y axis angle", new Float(hstream.readFloat())); 
     
    310309    core.interleaved[0] = false; 
    311310 
    312     addMeta("Wavelength 1 (in nm)", new Integer(hstream.readShort())); 
    313     addMeta("Wavelength 2 (in nm)", new Integer(hstream.readShort())); 
    314     addMeta("Wavelength 3 (in nm)", new Integer(hstream.readShort())); 
    315     addMeta("Wavelength 4 (in nm)", new Integer(hstream.readShort())); 
    316     addMeta("Wavelength 5 (in nm)", new Integer(hstream.readShort())); 
     311    short[] waves = new short[5]; 
     312    for (int i=0; i<waves.length; i++) waves[i] = hstream.readShort(); 
     313 
     314    addMeta("Wavelength 1 (in nm)", new Integer(waves[0])); 
     315    addMeta("Wavelength 2 (in nm)", new Integer(waves[1])); 
     316    addMeta("Wavelength 3 (in nm)", new Integer(waves[2])); 
     317    addMeta("Wavelength 4 (in nm)", new Integer(waves[3])); 
     318    addMeta("Wavelength 5 (in nm)", new Integer(waves[4])); 
    317319    addMeta("X origin (in um)", new Float(hstream.readFloat())); 
    318320    addMeta("Y origin (in um)", new Float(hstream.readFloat())); 
     
    322324    MetadataStore store = getMetadataStore(); 
    323325 
    324     String title; 
    325     for (int i=1; i<=10; i++) { 
     326    String title = null; 
     327    for (int i=10; i>=1; i--) { 
    326328      // Make sure that "null" characters are stripped out 
    327329      title = new String(header, 224 + 80*(i-1), 80).replaceAll("\0", ""); 
     
    345347      new Boolean(!core.littleEndian[0]), core.currentOrder[0], null, null); 
    346348 
    347     store.setDimensions( 
    348       (Float) getMeta("X element length (in um)"), 
    349       (Float) getMeta("Y element length (in um)"), 
    350       (Float) getMeta("Z element length (in um)"), 
     349    store.setDimensions(new Float(pixX), new Float(pixY), new Float(pixZ), 
    351350      null, null, null); 
    352351 
    353     String description = (String) getMeta("Title 1"); 
    354     if (description == null) description = ""; 
    355     description = description.length() == 0 ? null : description; 
    356     store.setImage(id, null, description, null); 
     352    if (title == null) title = ""; 
     353    title = title.length() == 0 ? null : title; 
     354    store.setImage(id, null, title, null); 
    357355 
    358356    // Run through every timeslice, for each wavelength, for each z section 
     
    375373    for (int w=0; w<core.sizeC[0]; w++) { 
    376374      store.setLogicalChannel(w, null, 
    377         new Float(extHdrFields[0][w][0].getNdFilter()), 
    378         (Integer) getMeta("Wavelength " + (w+1) + " (in nm)"), 
     375        new Float(extHdrFields[0][w][0].getNdFilter()), new Integer(waves[w]),  
    379376        new Integer((int) extHdrFields[0][w][0].getExFilter()), 
    380377        "Monochrome", "Wide-field", null); 
  • trunk/loci/formats/in/DicomReader.java

    r2601 r2616  
    132132    return ImageTools.makeImage(openBytes(no), core.sizeX[0], core.sizeY[0], 
    133133      1, false, bitsPerPixel / 8, core.littleEndian[0]); 
    134   } 
    135  
    136   /* @see loci.formats.IFormatReader#close(boolean) */ 
    137   public void close(boolean fileOnly) throws FormatException, IOException { 
    138     if (fileOnly && in != null) in.close(); 
    139     else if (!fileOnly) close(); 
    140134  } 
    141135 
  • trunk/loci/formats/in/EPSReader.java

    r2601 r2616  
    117117    return ImageTools.makeImage(openBytes(no), core.sizeX[0], core.sizeY[0], 
    118118      isRGB() ? 3 : 1, true); 
    119   } 
    120  
    121   /* @see loci.formats.IFormatReader#close(boolean) */ 
    122   public void close(boolean fileOnly) throws FormatException, IOException { 
    123     if (fileOnly && in != null) in.close(); 
    124     else if (!fileOnly) close(); 
    125119  } 
    126120 
  • trunk/loci/formats/in/FluoviewReader.java

    r2601 r2616  
    154154    byte[] dimNameBytes = new byte[16]; 
    155155    byte[] dimCalibrationUnits = new byte[64]; 
     156    String[] names = new String[10]; 
     157    int[] sizes = new int[10]; 
     158    double[] resolutions = new double[10]; 
    156159    for (int i=0; i<10; i++) { 
    157160      ras.read(dimNameBytes); 
    158       int size = ras.readInt(); 
     161      names[i] = new String(dimNameBytes); 
     162      sizes[i] = ras.readInt(); 
    159163      double origin = ras.readDouble(); 
    160       double resolution = ras.readDouble(); 
     164      resolutions[i] = ras.readDouble(); 
    161165      ras.read(dimCalibrationUnits); 
    162166 
    163       put("Dimension " + (i+1) + " Name", new String(dimNameBytes)); 
    164       put("Dimension " + (i+1) + " Size", size); 
     167      put("Dimension " + (i+1) + " Name", names[i]); 
     168      put("Dimension " + (i+1) + " Size", sizes[i]); 
    165169      put("Dimension " + (i+1) + " Origin", origin); 
    166       put("Dimension " + (i+1) + " Resolution", resolution); 
     170      put("Dimension " + (i+1) + " Resolution", resolutions[i]); 
    167171      put("Dimension " + (i+1) + " Units", new String(dimCalibrationUnits)); 
    168172    } 
     
    219223 
    220224    for (int i=0; i<10; i++) { 
    221       String name = (String) getMeta("Dimension " + (i+1) + " Name"); 
    222       Integer size = (Integer) getMeta("Dimension " + (i+1) + " Size"); 
    223       Double voxel = (Double) getMeta("Dimension " + (i+1) + " Resolution"); 
    224       if (name == null || size == null || size.intValue() == 0) continue; 
     225      String name = names[i]; 
     226      int size = sizes[i]; 
     227      float voxel = (float) resolutions[i]; 
     228      if (name == null || size == 0) continue; 
    225229      name = name.toLowerCase().trim(); 
    226230      if (name.length() == 0) continue; 
    227231 
    228232      if (name.equals("x")) { 
    229         core.sizeX[0] = size.intValue(); 
    230         if (voxel != null) voxelX = voxel.floatValue(); 
     233        core.sizeX[0] = size; 
     234        voxelX = voxel; 
    231235      } 
    232236      else if (name.equals("y")) { 
    233         core.sizeY[0] = size.intValue(); 
    234         if (voxel != null) voxelY = voxel.floatValue(); 
     237        core.sizeY[0] = size; 
     238        voxelY = voxel; 
    235239      } 
    236240      else if (name.equals("z") || name.equals("event")) { 
    237         core.sizeZ[0] *= size.intValue(); 
     241        core.sizeZ[0] *= size; 
    238242        if (core.currentOrder[0].indexOf("Z") == -1) { 
    239243          core.currentOrder[0] += "Z"; 
    240244        } 
    241         if (voxel != null) voxelZ = voxel.floatValue(); 
     245        voxelZ = voxel; 
    242246      } 
    243247      else if (name.equals("ch") || name.equals("wavelength")) { 
    244         core.sizeC[0] *= size.intValue(); 
     248        core.sizeC[0] *= size; 
    245249        if (core.currentOrder[0].indexOf("C") == -1) { 
    246250          core.currentOrder[0] += "C"; 
    247251        } 
    248         if (voxel != null) voxelC = voxel.floatValue(); 
     252        voxelC = voxel; 
    249253      } 
    250254      else { 
    251         core.sizeT[0] *= size.intValue(); 
     255        core.sizeT[0] *= size; 
    252256        if (core.currentOrder[0].indexOf("T") == -1) { 
    253257          core.currentOrder[0] += "T"; 
    254258        } 
    255         if (voxel != null) voxelT = voxel.floatValue(); 
     259        voxelT = voxel; 
    256260      } 
    257261    } 
  • trunk/loci/formats/in/GIFReader.java

    r2601 r2616  
    169169    return ImageTools.makeImage(bytes, core.sizeX[0], core.sizeY[0], 
    170170      bytes.length / (core.sizeX[0] * core.sizeY[0]), false, 1, true); 
    171   } 
    172  
    173   /* @see loci.formats.IFormatReader#close(boolean) */ 
    174   public void close(boolean fileOnly) throws FormatException, IOException { 
    175     if (fileOnly && in != null) in.close(); 
    176     else if (!fileOnly) close(); 
    177171  } 
    178172 
  • trunk/loci/formats/in/GatanReader.java

    r2607 r2616  
    5252 
    5353  protected int pixelDataNum = 0; 
     54  protected int datatype; 
    5455 
    5556  // -- Constructor -- 
     
    102103  } 
    103104 
    104   /* @see loci.formats.IFormatReader#close(boolean) */ 
    105   public void close(boolean fileOnly) throws FormatException, IOException { 
    106     if (fileOnly && in != null) in.close(); 
    107     else if (!fileOnly) close(); 
    108   } 
    109  
    110105  /** Initializes the given Gatan file. */ 
    111106  protected void initFile(String id) throws FormatException, IOException { 
     
    138133    in.read(tmp); 
    139134    parseTags(DataTools.bytesToInt(tmp, !core.littleEndian[0]), "initFile"); 
    140  
    141     int datatype = Integer.parseInt((String) getMeta("DataType")); 
    142135 
    143136    status("Populating metadata"); 
     
    327320          } 
    328321          addMeta(labelString, data); 
     322          if (labelString.equals("DataType")) datatype = Integer.parseInt(data); 
    329323        } 
    330324        else if (n == 2) { 
  • trunk/loci/formats/in/ICSReader.java

    r2601 r2616  
    175175  } 
    176176 
    177   /* @see loci.formats.IFormatReader#close(boolean) */ 
    178   public void close(boolean fileOnly) throws FormatException, IOException { 
    179     if (fileOnly && in != null) in.close(); 
    180     else if (!fileOnly) close(); 
    181   } 
    182  
    183177  /* @see loci.formats.IFormatReader#close() */ 
    184178  public void close() throws FormatException, IOException { 
     
    241235 
    242236    status("Reading metadata"); 
     237 
     238    String layoutSizes = null, layoutOrder = null, byteOrder = null; 
     239    String rFormat = null, compression = null, scale = null; 
    243240 
    244241    RandomAccessStream reader = new RandomAccessStream(icsIn.getAbsolutePath()); 
     
    275272            value.append(t.nextToken()); 
    276273          } 
    277           addMeta(key.toString().trim(), value.toString().trim()); 
     274          String k = key.toString().trim(); 
     275          String v = value.toString().trim(); 
     276          addMeta(k, v); 
     277         
     278          if (k.equals("layout sizes")) layoutSizes = v; 
     279          else if (k.equals("layout order")) layoutOrder = v; 
     280          else if (k.equals("representation byte_order")) byteOrder = v; 
     281          else if (k.equals("representation format")) rFormat = v; 
     282          else if (k.equals("representation compression")) compression = v; 
     283          else if (k.equals("parameter scale")) scale = v; 
    278284        } 
    279285        else { 
     
    288294    status("Populating metadata"); 
    289295 
    290     String images = (String) getMeta("layout sizes"); 
    291     String ord = (String) getMeta("layout order"); 
    292     ord = ord.trim(); 
     296    layoutOrder = layoutOrder.trim(); 
    293297    // bpp, width, height, z, channels 
    294     StringTokenizer t1 = new StringTokenizer(images); 
    295     StringTokenizer t2 = new StringTokenizer(ord); 
    296  
    297     core.rgb[0] = 
    298       ord.indexOf("ch") >= 0 && ord.indexOf("ch") < ord.indexOf("x"); 
     298    StringTokenizer t1 = new StringTokenizer(layoutSizes); 
     299    StringTokenizer t2 = new StringTokenizer(layoutOrder); 
     300 
     301    core.rgb[0] = layoutOrder.indexOf("ch") >= 0 &&  
     302      layoutOrder.indexOf("ch") < layoutOrder.indexOf("x"); 
    299303 
    300304    String imageToken; 
     
    334338    if (!core.rgb[0]) core.imageCount[0] *= core.sizeC[0]; 
    335339 
    336     String endian = (String) getMeta("representation byte_order"); 
     340    String endian = byteOrder; 
    337341    core.littleEndian[0] = true; 
    338342 
     
    341345      String firstByte = endianness.nextToken(); 
    342346      int first = Integer.parseInt(firstByte); 
    343       core.littleEndian[0] = 
    344         ((String) getMeta("representation format")).equals("real") ? 
    345         first == 1 : first != 1; 
    346     } 
    347  
    348     String test = (String) getMeta("representation compression"); 
     347      core.littleEndian[0] = rFormat.equals("real") ? first == 1 : first != 1; 
     348    } 
     349 
     350    String test = compression; 
    349351    boolean gzip = (test == null) ? false : test.equals("gzip"); 
    350352 
     
    391393    // populate Pixels element 
    392394 
    393     String o = (String) getMeta("layout order"); 
     395    String o = layoutOrder; 
    394396    o = o.trim(); 
    395397    o = o.substring(o.indexOf("x")).trim(); 
     
    405407    if (o.indexOf("C") == -1) o = o + "C"; 
    406408 
    407     String fmt = (String) getMeta("representation format"); 
    408     String sign = (String) getMeta("representation sign"); 
     409    String fmt = rFormat; 
    409410 
    410411    if (bitsPerPixel < 32) core.littleEndian[0] = !core.littleEndian[0]; 
     
    445446      null); // Use pixels index 0 
    446447 
    447     String pixelSizes = (String) getMeta("parameter scale"); 
    448     o = (String) getMeta("layout order"); 
     448    String pixelSizes = scale; 
     449    o = layoutOrder; 
    449450    if (pixelSizes != null) { 
    450451      StringTokenizer pixelSizeTokens = new StringTokenizer(pixelSizes); 
  • trunk/loci/formats/in/IPLabReader.java

    r2601 r2616  
    9696  } 
    9797 
    98   /* @see loci.formats.IFormatReader#close(boolean) */ 
    99   public void close(boolean fileOnly) throws FormatException, IOException { 
    100     if (fileOnly && in != null) in.close(); 
    101     else if (!fileOnly) close(); 
    102   } 
    103  
    10498  /** Initializes the given IPLab file. */ 
    10599  protected void initFile(String id) throws FormatException, IOException { 
  • trunk/loci/formats/in/IPWReader.java

    r2601 r2616  
    151151  } 
    152152 
    153   /* @see loci.formats.IFormatReader#close(boolean) */ 
    154   public void close(boolean fileOnly) throws FormatException, IOException { 
    155     if (fileOnly && in != null) in.close(); 
    156     else if (!fileOnly) close(); 
    157   } 
    158  
    159153  /* @see loci.formats.IFormatReader#close() */ 
    160154  public void close() throws FormatException, IOException { 
     
    251245 
    252246    // default values 
     247     
     248    core.sizeZ[0] = 1; 
     249    core.sizeC[0] = 1; 
     250    core.sizeT[0] = getImageCount(); 
    253251    addMeta("slices", "1"); 
    254252    addMeta("channels", "1"); 
     
    271269        } 
    272270        addMeta(label, data); 
     271        if (label.equals("frames")) core.sizeZ[0] = Integer.parseInt(data);  
     272        else if (label.equals("slices")) core.sizeT[0] = Integer.parseInt(data); 
     273        else if (label.equals("channels")) { 
     274          core.sizeC[0] = Integer.parseInt(data);  
     275        }  
    273276      } 
    274277    } 
     
    279282    core.sizeX[0] = TiffTools.getIFDIntValue(h, TiffTools.IMAGE_WIDTH); 
    280283    core.sizeY[0] = TiffTools.getIFDIntValue(h, TiffTools.IMAGE_LENGTH); 
    281     core.sizeZ[0] = Integer.parseInt(getMeta("frames").toString()); 
    282     core.sizeC[0] = Integer.parseInt(getMeta("channels").toString()); 
    283     core.sizeT[0] = Integer.parseInt(getMeta("slices").toString()); 
    284284    core.currentOrder[0] = "XY"; 
    285285 
  • trunk/loci/formats/in/ImarisReader.java

    r2601 r2616  
    208208  } 
    209209 
    210   /* @see loci.formats.IFormatReader#close(boolean) */ 
    211   public void close(boolean fileOnly) throws FormatException, IOException { 
    212     if (fileOnly && in != null) in.close(); 
    213     else if (!fileOnly) close(); 
    214   } 
    215  
    216210  // -- IFormatHandler API methods -- 
    217211 
  • trunk/loci/formats/in/LIFReader.java

    r2601 r2616  
    115115      core.sizeY[series], isRGB() ? core.sizeC[series] : 1, false, bpp / 8, 
    116116      core.littleEndian[series], validBits[series]); 
    117   } 
    118  
    119   /* @see loci.formats.IFormatReader#close(boolean) */ 
    120   public void close(boolean fileOnly) throws FormatException, IOException { 
    121     if (fileOnly && in != null) in.close(); 
    122     else if (!fileOnly) close(); 
    123117  } 
    124118 
  • trunk/loci/formats/in/LegacyZVIReader.java

    r2601 r2616  
    128128    ZVIBlock zviBlock = (ZVIBlock) blockList.elementAt(no); 
    129129    return zviBlock.readImage(in); 
    130   } 
    131  
    132   /* @see loci.formats.IFormatReader#close(boolean) */ 
    133   public void close(boolean fileOnly) throws FormatException, IOException { 
    134     if (fileOnly && in != null) in.close(); 
    135     else if (!fileOnly) close(); 
    136130  } 
    137131 
  • trunk/loci/formats/in/LeicaReader.java

    r2601 r2616  
    6666  /** Name of current LEI file */ 
    6767  private String leiFilename; 
     68 
     69  private int bpp; 
    6870 
    6971  // -- Constructor -- 
     
    602604        addMeta("Length of filename", 
    603605          new Integer(DataTools.bytesToInt(temp, 8, 4, core.littleEndian[0]))); 
    604         addMeta("Length of file extension", 
    605           new Integer(DataTools.bytesToInt(temp, 12, 4, core.littleEndian[0]))); 
    606         Integer fileExtLen = (Integer) getMeta("Length of file extension"); 
     606        Integer fileExtLen =  
     607          new Integer(DataTools.bytesToInt(temp, 12, 4, core.littleEndian[0]));  
     608        addMeta("Length of file extension", fileExtLen); 
    607609        addMeta("Image file extension", 
    608610          DataTools.stripString(new String(temp, 16, fileExtLen.intValue()))); 
     
    650652        addMeta("VoxelType", type); 
    651653 
    652         addMeta("Bytes per pixel", 
    653           new Integer(DataTools.bytesToInt(temp, 8, 4, core.littleEndian[0]))); 
     654        bpp = DataTools.bytesToInt(temp, 8, 4, core.littleEndian[0]); 
     655        addMeta("Bytes per pixel", new Integer(bpp)); 
    654656        addMeta("Real world resolution", 
    655657          new Integer(DataTools.bytesToInt(temp, 12, 4, core.littleEndian[0]))); 
     
    10151017      if (core.sizeZ[i] == 0) core.sizeZ[i] = 1; 
    10161018 
    1017       int tPixelType = ((Integer) getMeta("Bytes per pixel")).intValue(); 
    1018       switch (tPixelType) { 
     1019      switch (bpp) { 
    10191020        case 1: 
    10201021          core.pixelType[i] = FormatTools.UINT8; 
  • trunk/loci/formats/in/MNGReader.java

    r2601 r2616  
    8686 
    8787    return ImageIO.read(new ByteArrayInputStream(b)); 
    88   } 
    89  
    90   /* @see loci.formats.IFormatReader#close(boolean) */ 
    91   public void close(boolean fileOnly) throws FormatException, IOException { 
    92     if (fileOnly && in != null) in.close(); 
    93     else if (!fileOnly) close(); 
    9488  } 
    9589 
  • trunk/loci/formats/in/MRCReader.java

    r2601 r2616  
    8686    return ImageTools.makeImage(openBytes(no), core.sizeX[0], 
    8787      core.sizeY[0], 1, true, bpp, core.littleEndian[0]); 
    88   } 
    89  
    90   /* @see loci.formats.IFormatReader#close(boolean) */ 
    91   public void close(boolean fileOnly) throws FormatException, IOException { 
    92     if (fileOnly && in != null) in.close(); 
    93     else if (!fileOnly) close(); 
    9488  } 
    9589 
  • trunk/loci/formats/in/MicromanagerReader.java

    r2601 r2616  
    154154        if (!open && !closed) { 
    155155          String value = token.substring(token.indexOf(":") + 1).trim(); 
    156           addMeta(key, value.substring(0, value.length() - 1)); 
     156          value = value.substring(0, value.length() - 1);  
     157          addMeta(key, value); 
     158          if (key.equals("Channels")) core.sizeC[0] = Integer.parseInt(value);   
    157159        } 
    158160        else if (!closed){ 
     
    165167          String value = valueBuffer.toString(); 
    166168          value.replaceAll("\n", "").trim(); 
    167           addMeta(key, value.substring(0, value.length() - 1)); 
     169          value = value.substring(0, value.length() - 1);  
     170          addMeta(key, value); 
     171          if (key.equals("Channels")) core.sizeC[0] = Integer.parseInt(value);   
    168172        } 
    169173        else { 
    170174          String value = 
    171175            token.substring(token.indexOf("[") + 1, token.indexOf("]")).trim(); 
    172           addMeta(key, value.substring(0, value.length() - 1)); 
     176          value = value.substring(0, value.length() - 1);  
     177          addMeta(key, value); 
     178          if (key.equals("Channels")) core.sizeC[0] = Integer.parseInt(value);   
    173179        } 
    174180      } 
    175181    } 
    176182    tiffReader.setId((String) tiffs.get(0)); 
    177     core.sizeC[0] = Integer.parseInt((String) getMeta("Channels")); 
    178183    core.sizeZ[0] = 1; 
    179184    core.sizeT[0] = tiffs.size() / core.sizeC[0]; 
  • trunk/loci/formats/in/ND2Reader.java

    r2601 r2616  
    117117  /** Number of valid bits per pixel */ 
    118118  private int[] validBits; 
     119 
     120  private Vector zs = new Vector(); 
     121  private Vector ts = new Vector(); 
    119122 
    120123  // -- Constructor -- 
     
    214217  } 
    215218 
    216   /* @see loci.formats.IFormatReader#close(boolean) */ 
    217   public void close(boolean fileOnly) throws FormatException, IOException { 
    218     if (fileOnly && in != null) in.close(); 
    219     else if (!fileOnly) close(); 
    220   } 
    221  
    222   /* @see loci.formats.IFormatReader#close() */ 
    223   public void close() throws FormatException, IOException { 
    224     if (in != null) in.close(); 
    225     in = null; 
    226     currentId = null; 
    227   } 
    228  
    229219  /** Initializes the given ND2 file. */ 
    230220  protected void initFile(String id) throws FormatException, IOException { 
     
    350340                  if (!metadata.containsKey(effectiveKey)) { 
    351341                    addMeta(effectiveKey, value); 
     342                   
     343                    if (effectiveKey.equals( 
     344                      "MetadataSeq _SEQUENCE_INDEX=\"0\" uiCompCount value")) 
     345                    { 
     346                      if (value != null) { 
     347                        core.sizeC[0] = Integer.parseInt(value); 
     348                      }  
     349                    } 
     350                    else if (effectiveKey.endsWith("dTimeMSec value")) { 
     351                      long v = (long) Double.parseDouble(value);  
     352                      if (!zs.contains(new Long(v))) { 
     353                        core.sizeZ[0]++; 
     354                        zs.add(new Long(v)); 
     355                      } 
     356                    } 
     357                    else if (effectiveKey.endsWith("dZPos value")) { 
     358                      long v = (long) Double.parseDouble(value);  
     359                      if (!ts.contains(new Long(v))) { 
     360                        core.sizeT[0]++; 
     361                        ts.add(new Long(v)); 
     362                      } 
     363                    } 
    352364                  } 
    353365                  else { 
    354366                    String v = (String) getMeta(effectiveKey); 
    355                     boolean parse = true; 
    356                     for (int i=0; i<v.length(); i++) { 
    357                       if (Character.isLetter(v.charAt(i)) || 
    358                         Character.isWhitespace(v.charAt(i))) 
    359                       { 
    360                         parse = false; 
    361                         break; 
     367                    boolean parse = v != null; 
     368                    if (parse) { 
     369                      for (int i=0; i<v.length(); i++) { 
     370                        if (Character.isLetter(v.charAt(i)) || 
     371                          Character.isWhitespace(v.charAt(i))) 
     372                        { 
     373                          parse = false; 
     374                          break; 
     375                        } 
    362376                      } 
    363377                    } 
     
    424438    } 
    425439 
    426     String c = (String) 
    427       getMeta("MetadataSeq _SEQUENCE_INDEX=\"0\" uiCompCount value"); 
    428     if (c != null) core.sizeC[0] = Integer.parseInt(c); 
    429     else core.sizeC[0] = openImage(0).getRaster().getNumBands(); 
     440    if (core.sizeC[0] == 0) { 
     441      core.sizeC[0] = openImage(0).getRaster().getNumBands(); 
     442    }  
    430443    if (core.sizeC[0] == 2) core.sizeC[0] = 1; 
    431444 
    432     long[] timestamps = new long[core.imageCount[0]]; 
    433     long[] zstamps = new long[core.imageCount[0]]; 
    434  
    435     for (int i=0; i<core.imageCount[0]; i++) { 
    436       String pre = "MetadataSeq _SEQUENCE_INDEX=\"" + i + "\" "; 
    437       String tstamp = (String) getMeta(pre + "dTimeMSec value"); 
    438       String zstamp = (String) getMeta(pre + "dZPos value"); 
    439       if (tstamp != null) timestamps[i] = (long) Float.parseFloat(tstamp); 
    440       if (zstamp != null) zstamps[i] = (long) Float.parseFloat(zstamp); 
    441     } 
    442  
    443     Vector zs = new Vector(); 
    444     Vector ts = new Vector(); 
    445     for (int i=0; i<core.imageCount[0]; i++) { 
    446       if (!zs.contains(new Long(zstamps[i]))) { 
    447         core.sizeZ[0]++; 
    448         zs.add(new Long(zstamps[i])); 
    449       } 
    450       if (!ts.contains(new Long(timestamps[i]))) { 
    451         core.sizeT[0]++; 
    452         ts.add(new Long(timestamps[i])); 
    453       } 
    454     } 
    455  
    456445    core.currentOrder[0] = "XY"; 
    457     long deltaT = timestamps.length > 1 ? timestamps[1] - timestamps[0] : 1; 
    458     long deltaZ = zstamps.length > 1 ? zstamps[1] - zstamps[0] : 1; 
     446    long deltaT = ts.size() > 1 ?  
     447      ((Long) ts.get(1)).longValue() - ((Long) ts.get(0)).longValue() : 1; 
     448    long deltaZ = zs.size() > 1 ?  
     449      ((Long) zs.get(1)).longValue() - ((Long) zs.get(0)).longValue() : 1; 
    459450 
    460451    if (deltaT < deltaZ || deltaZ == 0) core.currentOrder[0] += "CTZ"; 
  • trunk/loci/formats/in/NikonReader.java

    r2601 r2616  
    257257 
    258258    byte[] offsets = (byte[]) getMeta("Offset to maker note"); 
    259     makerNoteOffset = offsets[0]; 
     259    if (offsets != null) makerNoteOffset = offsets[0]; 
    260260    try { 
    261261      if (makerNoteOffset >= in.length() || makerNoteOffset == 0) return; 
  • trunk/loci/formats/in/OIBReader.java

    r2601 r2616  
    116116 
    117117  private Vector rgb; 
     118 
     119  /** Axis data. */ 
     120  private String[] labels = new String[9]; 
     121  private String[] dims = new String[9]; 
     122  private String[] starts = new String[9]; 
     123  private String[] stops = new String[9]; 
    118124 
    119125  // -- Constructor -- 
     
    187193      getRGBChannelCount(), false, bytes, core.littleEndian[series], 
    188194      validBits[series]); 
    189   } 
    190  
    191   /* @see loci.formats.IFormatReader#close(boolean) */ 
    192   public void close(boolean fileOnly) throws FormatException, IOException { 
    193     if (fileOnly && in != null) in.close(); 
    194     else if (!fileOnly) close(); 
    195195  } 
    196196 
     
    278278      status("Populating metadata"); 
    279279 
    280       String[] labels = new String[9]; 
    281       String[] dims = new String[9]; 
    282       String[] starts = new String[9]; 
    283       String[] stops = new String[9]; 
    284  
    285280      for (int i=0; i<labels.length; i++) { 
    286         String pre = "[Axis " + i + " Parameters Common] - "; 
    287         labels[i] = (String) getMeta(pre + "AxisCode"); 
    288         dims[i] = (String) getMeta(pre + "MaxSize"); 
    289         starts[i] = (String) getMeta(pre + "StartPosition"); 
    290         stops[i] = (String) getMeta(pre + "EndPosition"); 
    291281        if (labels[i] == null) labels[i] = ""; 
    292282        if (dims[i] == null) dims[i] = "0"; 
     
    296286 
    297287      for (int i=0; i<labels.length; i++) { 
     288        System.out.println("label: " + labels[i]); 
     289        System.out.println("dim: " + dims[i]); 
     290        System.out.println("start: " + starts[i]); 
     291        System.out.println("stop: " + stops[i]); 
     292        System.out.println(); 
     293 
    298294        if (labels[i].equals("\"X\"") || labels[i].equals("\"Y\"")) { } 
    299295        else if (labels[i].equals("\"C\"")) { 
     
    654650              { 
    655651                addMeta(prefix + key, value); 
     652               
     653                if (prefix.startsWith("[Axis ") && 
     654                  prefix.endsWith("Parameters Common] - ")) 
     655                { 
     656                  int ndx = Integer.parseInt( 
     657                    prefix.substring(6, prefix.indexOf("P")).trim()); 
     658                  if (key.equals("AxisCode")) labels[ndx] = value; 
     659                  else if (key.equals("MaxSize")) dims[ndx] = value; 
     660                  else if (key.equals("StartPosition")) starts[ndx] = value; 
     661                  else if (key.equals("EndPosition")) stops[ndx] = value; 
     662                } 
    656663              } 
    657664            } 
  • trunk/loci/formats/in/OIFReader.java

    r2601 r2616  
    5454  /** List of files in the current OIF dataset. */ 
    5555  protected Vector usedFiles; 
     56 
     57  protected String[] size = new String[9], code = new String[9]; 
     58  protected int imageDepth; 
    5659 
    5760  // -- Constructor -- 
     
    228231        } 
    229232        addMeta(prefix + key, value); 
     233       
     234        if (prefix.startsWith("[Axis ") &&  
     235          prefix.endsWith("Parameters Common] - "))  
     236        { 
     237          int ndx =  
     238            Integer.parseInt(prefix.substring(6, prefix.indexOf("P")).trim()); 
     239          if (key.equals("AxisCode")) code[ndx] = value; 
     240          else if (key.equals("MaxSize")) size[ndx] = value; 
     241        } 
     242        else if ((prefix + key).equals("[Axis Parameter Common] - AxisOrder")) { 
     243          core.currentOrder[0] = value; 
     244        } 
     245        else if ((prefix + key).equals( 
     246          "[Reference Image Parameter] - ImageDepth")) 
     247        { 
     248          imageDepth = Integer.parseInt(value); 
     249        } 
    230250      } 
    231251      else if (line.length() > 0) { 
     
    299319 
    300320    for (int i=0; i<9; i++) { 
    301       String pre = "[Axis " + i + " Parameters Common] - "; 
    302       String code = (String) getMeta(pre + "AxisCode"); 
    303       String size = (String) getMeta(pre + "MaxSize"); 
    304       if (code.equals("\"X\"")) core.sizeX[0] = Integer.parseInt(size); 
    305       else if (code.equals("\"Y\"")) core.sizeY[0] = Integer.parseInt(size); 
    306       else if (code.equals("\"C\"")) core.sizeC[0] = Integer.parseInt(size); 
    307       else if (code.equals("\"T\"")) core.sizeT[0] = Integer.parseInt(size); 
    308       else if (code.equals("\"Z\"")) core.sizeZ[0] = Integer.parseInt(size); 
     321      if (code[i].equals("\"X\"")) core.sizeX[0] = Integer.parseInt(size[i]); 
     322      else if (code[i].equals("\"Y\"")) { 
     323        core.sizeY[0] = Integer.parseInt(size[i]); 
     324      }  
     325      else if (code[i].equals("\"C\"")) { 
     326        core.sizeC[0] = Integer.parseInt(size[i]); 
     327      }  
     328      else if (code[i].equals("\"T\"")) { 
     329        core.sizeT[0] = Integer.parseInt(size[i]); 
     330      }  
     331      else if (code[i].equals("\"Z\"")) { 
     332        core.sizeZ[0] = Integer.parseInt(size[i]); 
     333      }  
    309334    } 
    310335 
     
    320345    } 
    321346 
    322     String metadataOrder = (String) 
    323       getMeta("[Axis Parameter Common] - AxisOrder"); 
    324     metadataOrder = metadataOrder.substring(1, metadataOrder.length() - 1); 
    325     if (metadataOrder == null) metadataOrder = "XYZTC"; 
     347    core.currentOrder[0] =  
     348      core.currentOrder[0].substring(1, core.currentOrder[0].length() - 1); 
     349    if (core.currentOrder[0] == null) core.currentOrder[0] = "XYZTC"; 
    326350    else { 
    327351      String[] names = new String[] {"X", "Y", "Z", "C", "T"}; 
    328       if (metadataOrder.length() < 5) { 
     352      if (core.currentOrder[0].length() < 5) { 
    329353        for (int i=0; i<names.length; i++) { 
    330           if (metadataOrder.indexOf(names[i]) == -1) metadataOrder += names[i]; 
    331         } 
    332       } 
    333     } 
    334     core.currentOrder[0] = metadataOrder; 
     354          if (core.currentOrder[0].indexOf(names[i]) == -1) { 
     355            core.currentOrder[0] += names[i]; 
     356          }  
     357        } 
     358      } 
     359    } 
    335360 
    336361    // The metadata store we're working with. 
    337362    MetadataStore store = getMetadataStore(); 
    338363 
    339     int imageDepth = Integer.parseInt((String) 
    340       getMeta("[Reference Image Parameter] - ImageDepth")); 
    341364    switch (imageDepth) { 
    342365      case 1: 
     
    368391    int len = validBits.length; 
    369392    for (int i=0; i<len; i++) { 
    370       if (validBits[i] == 0) validBits = null; 
     393      if (validBits[i] == 0) { 
     394        validBits = null; 
     395        break;  
     396      }  
    371397    } 
    372398 
     
    387413      null); 
    388414 
    389     Float pixX = new Float((String) 
    390       getMeta("[Reference Image Parameter] - WidthConvertValue")); 
    391     Float pixY = new Float((String) 
    392       getMeta("[Reference Image Parameter] - HeightConvertValue")); 
    393  
     415    prefix = "[Reference Image Parameter] - "; 
     416    String px = (String) getMeta(prefix + "WidthConvertValue"); 
     417    String py = (String) getMeta(prefix + "HeightConvertValue"); 
     418    Float pixX = null, pixY = null; 
     419    if (px != null) pixX = new Float(px); 
     420    if (py != null) pixY = new Float(py); 
    394421    store.setDimensions(pixX, pixY, null, null, null, null); 
     422     
    395423    for (int i=0; i<core.sizeC[0]; i++) { 
    396424      prefix = "[Channel " + (i+1) + " Parameters] - "; 
  • trunk/loci/formats/in/OMEXMLReader.java

    r2601 r2616  
    151151    return ImageTools.makeImage(openBytes(no), core.sizeX[series], 
    152152      core.sizeY[series], 1, false, bpp[series], core.littleEndian[series]); 
    153   } 
    154  
    155   /* @see loci.formats.IFormatReader#close(boolean) */ 
    156   public void close(boolean fileOnly) throws FormatException, IOException { 
    157     if (fileOnly && in != null) in.close(); 
    158     else close(); 
    159153  } 
    160154 
  • trunk/loci/formats/in/OpenlabRawReader.java

    r2601 r2616  
    9797  } 
    9898 
    99   /* @see loci.formats.IFormatReader#close(boolean) */ 
    100   public void close(boolean fileOnly) throws FormatException, IOException { 
    101     if (fileOnly && in != null) in.close(); 
    102     else if (!fileOnly) close(); 
    103   } 
    104  
    105   /* @see loci.formats.IFormatReader#close() */ 
    106   public void close() throws FormatException, IOException { 
    107     if (in != null) in.close(); 
    108     in = null; 
    109     currentId = null; 
    110   } 
    111  
    11299  /** Initializes the given RAW file. */ 
    113100  protected void initFile(String id) throws FormatException, IOException { 
     
    163150    } 
    164151 
    165     bytesPerPixel = ((Integer) getMeta("Bytes per pixel")).intValue(); 
    166  
    167152    core.sizeZ[0] = core.imageCount[0]; 
    168153    core.sizeT[0] = 1; 
  • trunk/loci/formats/in/OpenlabReader.java

    r2601 r2616  
    312312  /* @see loci.formats.IFormatReader#close() */ 
    313313  public void close() throws FormatException, IOException { 
    314     currentId = null; 
    315     if (in != null) in.close(); 
    316     in = null; 
     314    super.close();  
    317315    if (pict != null) pict.close(); 
    318316    layerInfoList = null; 
  • trunk/loci/formats/in/PerkinElmerReader.java

    r2601 r2616  
    5252  /** List of all files to open */ 
    5353  private Vector allFiles; 
     54 
     55  private String details, sliceSpace; 
    5456 
    5557  // -- Constructor -- 
     
    373375        } 
    374376        addMeta(hashKeys[tNum], token); 
     377        if (hashKeys[tNum].equals("Image Width")) { 
     378          core.sizeX[0] = Integer.parseInt(token);  
     379        }  
     380        else if (hashKeys[tNum].equals("Image Length")) { 
     381          core.sizeY[0] = Integer.parseInt(token);  
     382        }  
     383        else if (hashKeys[tNum].equals("Number of slices")) { 
     384          core.sizeZ[0] = Integer.parseInt(token);  
     385        }  
     386        else if (hashKeys[tNum].equals("Experiment details:")) details = token; 
     387        else if (hashKeys[tNum].equals("Z slice space")) sliceSpace = token; 
    375388        tNum++; 
    376389      } 
     
    397410        } 
    398411        else if (pt < hashKeys.length) { 
    399           addMeta(hashKeys[pt], t.nextToken()); 
     412          String token = t.nextToken();  
     413          addMeta(hashKeys[pt], token); 
     414          if (hashKeys[pt].equals("Image Width")) { 
     415            core.sizeX[0] = Integer.parseInt(token);  
     416          }  
     417          else if (hashKeys[pt].equals("Image Length")) { 
     418            core.sizeY[0] = Integer.parseInt(token);  
     419          }  
     420          else if (hashKeys[pt].equals("Number of slices")) { 
     421            core.sizeZ[0] = Integer.parseInt(token);  
     422          }  
     423          else if (hashKeys[pt].equals("Experiment details:")) details = token; 
     424          else if (hashKeys[pt].equals("Z slice space")) sliceSpace = token; 
    400425          pt++; 
    401426        } 
    402427        else { 
    403           addMeta(t.nextToken() + t.nextToken(), t.nextToken()); 
     428          String key = t.nextToken() + t.nextToken(); 
     429          String value = t.nextToken(); 
     430          addMeta(key, value);  
     431          if (key.equals("Image Width")) { 
     432            core.sizeX[0] = Integer.parseInt(value);  
     433          }  
     434          else if (key.equals("Image Length")) { 
     435            core.sizeY[0] = Integer.parseInt(value);  
     436          }  
     437          else if (key.equals("Number of slices")) { 
     438            core.sizeZ[0] = Integer.parseInt(value);  
     439          }  
     440          else if (key.equals("Experiment details:")) details = value; 
     441          else if (key.equals("Z slice space")) sliceSpace = value; 
    404442        } 
    405443        tNum++; 
     
    459497        else if (!tokens[j].trim().equals("")) { 
    460498          addMeta(tokens[j].trim(), tokens[j+1].trim()); 
     499          if (tokens[j].trim().equals("Image Width")) { 
     500            core.sizeX[0] = Integer.parseInt(tokens[j+1].trim());  
     501          }  
     502          else if (tokens[j].trim().equals("Image Length")) { 
     503            core.sizeY[0] = Integer.parseInt(tokens[j+1].trim());  
     504          }  
     505          else if (tokens[j].trim().equals("Number of slices")) { 
     506            core.sizeZ[0] = Integer.parseInt(tokens[j+1].trim());  
     507          }  
     508          else if (tokens[j].trim().equals("Experiment details:")) { 
     509            details = tokens[j+1].trim(); 
     510          }   
     511          else if (tokens[j].trim().equals("Z slice space")) { 
     512            sliceSpace = tokens[j+1].trim(); 
     513          }  
    461514        } 
    462515      } 
     
    467520    } 
    468521 
    469     String details = (String) getMeta("Experiment details:"); 
    470522    // parse details to get number of wavelengths and timepoints 
    471523 
     
    492544    core.sizeC[0] = Integer.parseInt(wavelengths); 
    493545 
    494     core.sizeX[0] = Integer.parseInt((String) getMeta("Image Width")); 
    495     core.sizeY[0] = Integer.parseInt((String) getMeta("Image Length")); 
    496     core.sizeZ[0] = Integer.parseInt((String) getMeta("Number of slices")); 
    497546    core.sizeT[0] = getImageCount() / (core.sizeZ[0] * core.sizeC[0]); 
    498547    if (isTiff) core.pixelType[0] = tiff[0].getPixelType(); 
     
    527576    if (core.sizeT[0] <= 0) core.sizeT[0] = 1; 
    528577 
    529     Object o = getMeta("Z slice space"); 
    530     if (o != null) { 
    531       float spacing = Float.parseFloat(o.toString()); 
     578    if (sliceSpace != null) { 
     579      float spacing = Float.parseFloat(sliceSpace); 
    532580      if (spacing <= 1f) core.currentOrder[0] += "TZ"; 
    533581      else core.currentOrder[0] += "ZT"; 
     
    547595    String pixelSizeX = (String) getMeta("Pixel Size X"); 
    548596    String pixelSizeY = (String) getMeta("Pixel Size Y"); 
    549     store.setDimensions(new Float(pixelSizeX), 
    550         new Float(pixelSizeY), null, null, null, null); 
     597    store.setDimensions(pixelSizeX == null ? null : new Float(pixelSizeX), 
     598      pixelSizeY == null ? null : new Float(pixelSizeY),  
     599      null, null, null, null); 
    551600 
    552601    // populate Image element 
    553602    String time = (String) getMeta("Finish Time:"); 
    554603 
    555     SimpleDateFormat parse = new SimpleDateFormat("HH:mm:ss (MM/dd/yyyy)"); 
    556     Date date = parse.parse(time, new ParsePosition(0)); 
    557     SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
    558     time = fmt.format(date); 
    559  
    560     store.setImage(null, time, null, null); 
     604    if (time != null) { 
     605      SimpleDateFormat parse = new SimpleDateFormat("HH:mm:ss (MM/dd/yyyy)"); 
     606      Date date = parse.parse(time, new ParsePosition(0)); 
     607      SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
     608      time = fmt.format(date); 
     609 
     610      store.setImage(null, time, null, null); 
     611    } 
    561612 
    562613    // populate Pixels element 
  • trunk/loci/formats/in/PictReader.java

    r2601 r2616  
    131131 
    132132    return open(bytes); 
    133   } 
    134  
    135   /* @see loci.formats.IFormatReader#close(boolean) */ 
    136   public void close(boolean fileOnly) throws FormatException, IOException { 
    137     if (fileOnly && in != null) in.close(); 
    138     else if (!fileOnly) close(); 
    139   } 
    140  
    141   /* @see loci.formats.IFormatReader#close() */ 
    142   public void close() throws FormatException, IOException { 
    143     if (in != null) in.close(); 
    144     in = null; 
    145     currentId = null; 
    146133  } 
    147134 
  • trunk/loci/formats/in/PrairieReader.java

    r2601 r2616  
    220220 
    221221      int zt = 0; 
     222      boolean isZ = false; 
    222223      Vector f = new Vector(); 
    223224      int fileIndex = 1; 
     
    248249                if (key.equals("filename")) fileIndex++; 
    249250              } 
    250               else addMeta(pastPrefix + " " + prefix + " " + key, value); 
     251              else { 
     252                addMeta(pastPrefix + " " + prefix + " " + key, value); 
     253                if (pastPrefix.equals("PVScan") &&  
     254                  prefix.equals("Sequence") && key.equals("type"))  
     255                { 
     256                  isZ = value.equals("ZSeries");  
     257                } 
     258              }  
    251259              el = el.substring(el.indexOf("\"", eq + 2) + 1).trim(); 
    252260              if (prefix.equals("File") && key.equals("filename")) { 
     
    264272              el.substring(valueIndex, el.indexOf("\"", valueIndex)); 
    265273            addMeta(key, value); 
     274           
     275            if (key.equals("pixelsPerLine")) { 
     276              core.sizeX[0] = Integer.parseInt(value); 
     277            }  
     278            else if (key.equals("linesPerFrame")) { 
     279              core.sizeY[0] = Integer.parseInt(value); 
     280            }  
    266281          } 
    267282          if (!closed) { 
     
    283298        status("Populating metadata"); 
    284299 
    285         boolean isZ = 
    286           ((String) getMeta("PVScan Sequence type")).equals("ZSeries"); 
    287300        if (zt == 0) zt = 1; 
    288301 
    289         core.sizeX[0] = Integer.parseInt((String) getMeta("pixelsPerLine")); 
    290         core.sizeY[0] = Integer.parseInt((String) getMeta("linesPerFrame")); 
    291302        core.sizeZ[0] = isZ ? zt : 1; 
    292303        core.sizeT[0] = isZ ? 1 : zt; 
     
    298309        core.littleEndian[0] = tiff.isLittleEndian(); 
    299310 
    300         float pixSizeX = 
    301           Float.parseFloat((String) getMeta("micronsPerPixel_XAxis")); 
    302         float pixSizeY = 
    303           Float.parseFloat((String) getMeta("micronsPerPixel_YAxis")); 
     311        String px = (String) getMeta("micronsPerPixel_XAxis"); 
     312        String py = (String) getMeta("micronsPerPixel_YAxis"); 
     313        float pixSizeX = px == null ? 0f : Float.parseFloat(px); 
     314        float pixSizeY = py == null ? 0f : Float.parseFloat(py); 
    304315 
    305316        MetadataStore store = getMetadataStore(); 
     
    324335        String date = (String) getMeta(" PVScan date"); 
    325336 
    326         SimpleDateFormat parse = new SimpleDateFormat("MM/dd/yyyy h:mm:ss a"); 
    327         Date d = parse.parse(date, new ParsePosition(0)); 
    328         SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
    329         date = fmt.format(d); 
    330  
    331         store.setImage(null, date, null, null); 
     337        if (date != null) { 
     338          SimpleDateFormat parse = new SimpleDateFormat("MM/dd/yyyy h:mm:ss a"); 
     339          Date d = parse.parse(date, new ParsePosition(0)); 
     340          SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
     341          date = fmt.format(d); 
     342 
     343          store.setImage(null, date, null, null); 
     344        } 
    332345 
    333346        String laserPower = (String) getMeta("laserPower_0"); 
  • trunk/loci/formats/in/QTReader.java

    r2604 r2616  
    504504  } 
    505505 
    506   /* @see loci.formats.IFormatReader#close(boolean) */ 
    507   public void close(boolean fileOnly) throws FormatException, IOException { 
    508     if (fileOnly && in != null) in.close(); 
    509     else if (!fileOnly) close(); 
    510   } 
    511  
    512506  /* @see loci.formats.IFormatReader#close() */ 
    513507  public void close() throws FormatException, IOException { 
    514     if (in != null) in.close(); 
    515     in = null; 
    516     currentId = null; 
     508    super.close();  
    517509    prevPixels = null; 
    518510  } 
  • trunk/loci/formats/in/SDTReader.java

    r2601 r2616  
    174174  } 
    175175 
    176   /* @see loci.formats.IFormatReader#close(boolean) */ 
    177   public void close(boolean fileOnly) throws FormatException, IOException { 
    178     if (fileOnly && in != null) in.close(); 
    179     else if (!fileOnly) close(); 
    180   } 
    181  
    182176  // -- FormatReader API methods -- 
    183177 
  • trunk/loci/formats/in/SEQReader.java

    r2601 r2616  
    9090    // default values 
    9191    addMeta("frames", "" + core.sizeZ[0]); 
    92     addMeta("channels", getMeta("NumberOfChannels").toString()); 
     92    addMeta("channels", "" + super.getSizeC()); 
    9393    addMeta("slices", "" + core.sizeT[0]); 
    9494 
    9595    // parse the description to get channels, slices and times where applicable 
    96     String descr = (String) getMeta("Comment"); 
     96    String descr = (String) TiffTools.getIFDValue(ifds[0],  
     97      TiffTools.IMAGE_DESCRIPTION); 
    9798    metadata.remove("Comment"); 
    9899    if (descr != null) { 
     
    103104        String data = token.substring(token.indexOf("=") + 1); 
    104105        addMeta(label, data); 
     106        if (label.equals("channels")) core.sizeC[0] = Integer.parseInt(data);  
     107        else if (label.equals("frames")) core.sizeZ[0] = Integer.parseInt(data); 
     108        else if (label.equals("slices")) core.sizeT[0] = Integer.parseInt(data); 
    105109      } 
    106110    } 
    107  
    108     core.sizeC[0] = Integer.parseInt((String) getMeta("channels")); 
    109     core.sizeZ[0] = Integer.parseInt((String) getMeta("frames")); 
    110     core.sizeT[0] = Integer.parseInt((String) getMeta("slices")); 
    111111 
    112112    try { 
  • trunk/loci/formats/in/SlidebookReader.java

    r2601 r2616  
    8686    return ImageTools.makeImage(openBytes(no), core.sizeX[0], 
    8787      core.sizeY[0], 1, true, bpp, true); 
    88   } 
    89  
    90   /* @see loci.formats.IFormatReader#close(boolean) */ 
    91   public void close(boolean fileOnly) throws FormatException, IOException { 
    92     if (fileOnly && in != null) in.close(); 
    93     else if (!fileOnly) close(); 
    9488  } 
    9589 
  • trunk/loci/formats/in/ZeissZVIReader.java

    r2601 r2616  
    102102  private Hashtable offsets; 
    103103 
     104  private int zIndex = -1, cIndex = -1, tIndex = -1; 
     105 
    104106  // -- Constructor -- 
    105107 
     
    267269      else validBits = null; 
    268270 
    269       Object check = getMeta("Image Channel Index"); 
    270       if (check != null && !check.toString().trim().equals("")) { 
    271         String zIndex = (String) getMeta("Image Index Z"); 
    272         String tIndex = (String) getMeta("Image Index T"); 
    273  
     271      if (cIndex != -1) { 
    274272        int[] dims = {core.sizeZ[0], core.sizeC[0], core.sizeT[0]}; 
    275273        int max = 0, min = Integer.MAX_VALUE, maxNdx = 0, minNdx = 0; 
     
    295293          "XY" + axes[maxNdx] + axes[medNdx] + axes[minNdx]; 
    296294 
    297         if (zIndex != null && tIndex != null) { 
    298           int z = Integer.parseInt(DataTools.stripString(zIndex)); 
    299           int t = Integer.parseInt(DataTools.stripString(tIndex)); 
    300  
    301           if (z != core.sizeZ[0]) { 
     295        if (zIndex != -1 && tIndex != -1) { 
     296          if (zIndex != core.sizeZ[0]) { 
    302297            if (core.sizeZ[0] != 1) { 
    303298              core.currentOrder[0] = 
     
    315310        } 
    316311      } 
    317       else if (getMeta("MultiChannel Color") != null) { 
     312      else if (core.rgb[0]) { 
    318313        core.currentOrder[0] = 
    319314          (core.sizeZ[0] > core.sizeT[0]) ? "XYCZT" : "XYCTZ"; 
     
    686681          pt += 8; 
    687682 
    688           int tIndex = DataTools.bytesToInt(data, pt, 4, true); 
     683          int tidx = DataTools.bytesToInt(data, pt, 4, true); 
    689684          pt += 4; 
    690           int cIndex = DataTools.bytesToInt(data, pt, 4, true); 
     685          int cidx = DataTools.bytesToInt(data, pt, 4, true); 
    691686          pt += 4; 
    692           int zIndex = DataTools.bytesToInt(data, pt, 4, true); 
     687          int zidx = DataTools.bytesToInt(data, pt, 4, true); 
    693688          pt += 4; 
    694689 
    695           Integer zndx = new Integer(zIndex); 
    696           Integer cndx = new Integer(cIndex); 
    697           Integer tndx = new Integer(tIndex); 
     690          Integer zndx = new Integer(zidx); 
     691          Integer cndx = new Integer(cidx); 
     692          Integer tndx = new Integer(tidx); 
    698693 
    699694          if (!zIndices.contains(zndx)) zIndices.add(zndx); 
     
    16491644      case 2819: 
    16501645        addMeta("Image Index Z", data); 
     1646        zIndex = Integer.parseInt(DataTools.stripString(data));  
    16511647        break; 
    16521648      case 2820: 
    16531649        addMeta("Image Channel Index", data); 
     1650        cIndex = Integer.parseInt(DataTools.stripString(data));  
    16541651        break; 
    16551652      case 2821: 
    16561653        addMeta("Image Index T", data); 
     1654        tIndex = Integer.parseInt(DataTools.stripString(data)); 
    16571655        break; 
    16581656      case 2822: 
Note: See TracChangeset for help on using the changeset viewer.