Changeset 3805


Ignore:
Timestamp:
03/12/08 09:59:30 (12 years ago)
Author:
melissa
Message:

Improved initialization time.

File:
1 edited

Legend:

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

    r3804 r3805  
    165165  /* @see loci.formats.IFormatReader#close(boolean) */ 
    166166  public void close(boolean fileOnly) throws IOException { 
    167     if (fileOnly) { 
    168       if (in != null) in.close(); 
    169       if (tiff != null) { 
    170         for (int i=0; i<tiff.length; i++) { 
    171           if (tiff[i] != null) { 
    172             for (int j=0; j<tiff[i].length; j++) { 
    173               if (tiff[i][j] != null) tiff[i][j].close(fileOnly); 
    174             } 
    175           } 
    176         } 
    177       } 
    178     } 
    179     else close(); 
    180   } 
    181  
    182   // -- IFormatHandler API methods -- 
    183  
    184   /* @see loci.formats.IFormatHandler#close() */ 
    185   public void close() throws IOException { 
    186     super.close(); 
    187     leiFilename = null; 
    188     files = null; 
     167    if (in != null) in.close(); 
    189168    if (tiff != null) { 
    190169      for (int i=0; i<tiff.length; i++) { 
    191170        if (tiff[i] != null) { 
    192171          for (int j=0; j<tiff[i].length; j++) { 
    193             if (tiff[i][j] != null) tiff[i][j].close(); 
    194           } 
    195         } 
    196       } 
    197     } 
    198     ifds = headerIFDs = null; 
    199     tiff = null; 
    200     files = null; 
    201     seriesNames = null; 
    202     numSeries = bpp = 0; 
     172            if (tiff[i][j] != null) tiff[i][j].close(fileOnly); 
     173          } 
     174        } 
     175      } 
     176    } 
     177    if (!fileOnly) { 
     178      super.close(); 
     179      leiFilename = null; 
     180      files = null; 
     181      ifds = headerIFDs = null; 
     182      tiff = null; 
     183      seriesNames = null; 
     184      numSeries = bpp = 0; 
     185    } 
    203186  } 
    204187 
     
    295278      super.initFile(id); 
    296279 
    297       leiFilename = id; 
     280      leiFilename = new Location(id).getAbsolutePath(); 
    298281      in = new RandomAccessStream(id); 
    299282 
     
    639622          case 10: 
    640623            type = "gray normal"; 
     624            core.rgb[i] = false; 
    641625            break; 
    642626          case 20: 
    643627            type = "RGB"; 
     628            core.rgb[i] = true; 
    644629            break; 
    645630        } 
     
    649634        bpp = stream.readInt(); 
    650635        addMeta("Bytes per pixel", new Integer(bpp)); 
     636 
     637        switch (bpp) { 
     638          case 1: 
     639            core.pixelType[i] = FormatTools.UINT8; 
     640            break; 
     641          case 2: 
     642            core.pixelType[i] = FormatTools.UINT16; 
     643            break; 
     644          case 3: 
     645            core.pixelType[i] = FormatTools.UINT8; 
     646            break; 
     647          case 4: 
     648            core.pixelType[i] = FormatTools.UINT32; 
     649            break; 
     650          case 6: 
     651            core.pixelType[i] = FormatTools.UINT16; 
     652            break; 
     653          default: 
     654            throw new FormatException("Unsupported bytes per pixel (" + 
     655              bpp + ")"); 
     656        } 
     657 
    651658        resolution = stream.readInt(); 
    652659        addMeta("Real world resolution", new Integer(resolution)); 
     
    874881 
    875882        int nChannels = stream.readInt(); 
     883        if (nChannels > 0) core.indexed[i] = true; 
    876884        addMeta("Number of LUT channels", new Integer(nChannels)); 
    877885        addMeta("ID of colored dimension", new Integer(stream.readInt())); 
     
    907915    } 
    908916 
    909     //core = new CoreMetadata(numSeries); 
    910917    Arrays.fill(core.orderCertain, true); 
     918    Arrays.fill(core.littleEndian, core.littleEndian[0]); 
     919    Arrays.fill(core.falseColor, true); 
     920    Arrays.fill(core.metadataComplete, true); 
     921    Arrays.fill(core.interleaved, false); 
    911922 
    912923    // sizeC is null here if the file we opened was a TIFF. 
     
    928939    byte[] f = new byte[4]; 
    929940    for (int i=0; i<numSeries; i++) { 
    930       core.orderCertain[i] = true; 
    931  
    932       in.seek(0); 
    933       in.read(f); 
    934       core.littleEndian[i] = (f[0] == TiffTools.LITTLE && 
    935         f[1] == TiffTools.LITTLE && f[2] == TiffTools.LITTLE && 
    936         f[3] == TiffTools.LITTLE); 
    937  
    938941      if (core.sizeC[i] == 0) core.sizeC[i] = 1; 
     942      if (core.rgb[i]) core.sizeC[i] *= 3; 
    939943      core.sizeT[i] += 1; 
    940944      core.currentOrder[i] = core.sizeC[i] == 1 ? "XYZTC" : "XYCZT"; 
    941945      if (core.sizeZ[i] == 0) core.sizeZ[i] = 1; 
    942  
    943       tiff[i][0].setId((String) files[i].get(0)); 
    944       core.indexed[i] = tiff[i][0].isIndexed(); 
    945       core.rgb[i] = tiff[i][0].isRGB(); 
    946       if (core.rgb[i]) core.sizeC[i] *= 3; 
    947       core.interleaved[i] = tiff[i][0].isInterleaved(); 
    948       core.pixelType[i] = tiff[i][0].getPixelType(); 
    949       core.falseColor[i] = true; 
    950       core.metadataComplete[i] = true; 
    951946 
    952947      if (i < timestamps.length && timestamps[i] != null) { 
Note: See TracChangeset for help on using the changeset viewer.