Changeset 1607


Ignore:
Timestamp:
10/11/06 11:59:48 (13 years ago)
Author:
melissa
Message:

Fixed some stuff in ZVI readers. Also fixed a major bug in patched version of
POI JAR.

Location:
trunk
Files:
3 edited

Legend:

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

    r1596 r1607  
    382382      if ((numI == 2) && (tSet.size() == 2))  tFlag = 1; 
    383383 
    384         /* 
    385384      if ((numI % 3 == 0) && (zSet.size() > 1) && (cFlag == 1)) { 
    386385        dimensionOrder = "XYCZT"; 
     
    389388        dimensionOrder = "XYCTZ"; 
    390389      } 
    391       */ 
    392390      if ((numI % 3 == 0) && (cSet.size() > 1) && (zFlag == 1)) { 
    393391        dimensionOrder = "XYZCT"; 
  • trunk/loci/formats/in/ZeissZVIReader.java

    r1596 r1607  
    6666  // -- Fields -- 
    6767 
     68  /** Current file. */ 
     69  private RandomAccessStream ras; 
     70 
     71  /** Flag set to true if we need to use the legacy reader. */ 
     72  private boolean needLegacy = false; 
     73 
    6874  /** Number of images. */ 
    6975  private int nImages; 
     
    8187  private int tSize; 
    8288 
    83   /* Number of Z slices. */ 
     89  /** Number of Z slices. */ 
    8490  private int zSize; 
    8591 
     
    130136  public int getImageCount(String id) throws FormatException, IOException { 
    131137    if (!id.equals(currentId)) initFile(id); 
    132     if (noPOI) return legacy.getImageCount(id); 
     138    if (noPOI || needLegacy) return legacy.getImageCount(id); 
    133139    return nImages; 
    134140  } 
     
    137143  public int getSizeX(String id) throws FormatException, IOException { 
    138144    if (!id.equals(currentId)) initFile(id); 
    139     if (noPOI) return legacy.getSizeX(id); 
     145    if (noPOI || needLegacy) return legacy.getSizeX(id); 
    140146    return super.getSizeX(id); 
    141147  } 
     
    144150  public int getSizeY(String id) throws FormatException, IOException { 
    145151    if (!id.equals(currentId)) initFile(id); 
    146     if (noPOI) return legacy.getSizeY(id); 
     152    if (noPOI || needLegacy) return legacy.getSizeY(id); 
    147153    return super.getSizeY(id); 
    148154  } 
     
    151157  public int getSizeZ(String id) throws FormatException, IOException { 
    152158    if (!id.equals(currentId)) initFile(id); 
    153     if (noPOI) return legacy.getSizeZ(id); 
     159    if (noPOI || needLegacy) return legacy.getSizeZ(id); 
    154160    return super.getSizeZ(id); 
    155161  } 
     
    158164  public int getSizeC(String id) throws FormatException, IOException { 
    159165    if (!id.equals(currentId)) initFile(id); 
    160     if (noPOI) return legacy.getSizeC(id); 
     166    if (noPOI || needLegacy) return legacy.getSizeC(id); 
    161167    return super.getSizeC(id); 
    162168  } 
     
    165171  public int getSizeT(String id) throws FormatException, IOException { 
    166172    if (!id.equals(currentId)) initFile(id); 
    167     if (noPOI) return legacy.getSizeT(id); 
     173    if (noPOI || needLegacy) return legacy.getSizeT(id); 
    168174    return super.getSizeT(id); 
    169175  } 
     
    175181  public int getPixelType(String id) throws FormatException, IOException { 
    176182    if (!id.equals(currentId)) initFile(id); 
    177     if (noPOI) return legacy.getPixelType(id); 
     183    if (noPOI || needLegacy) return legacy.getPixelType(id); 
    178184    return super.getPixelType(id); 
    179185  } 
     
    187193  { 
    188194    if (!id.equals(currentId)) initFile(id); 
    189     if (noPOI) return legacy.getDimensionOrder(id); 
     195    if (noPOI || needLegacy) return legacy.getDimensionOrder(id); 
    190196    return super.getDimensionOrder(id); 
    191197  } 
     
    194200  public boolean isRGB(String id) throws FormatException, IOException { 
    195201    if (!id.equals(currentId)) initFile(id); 
    196     if (noPOI) return legacy.isRGB(id); 
     202    if (noPOI || needLegacy) return legacy.isRGB(id); 
    197203    return nChannels > 1 && (nChannels * zSize * tSize != nImages); 
    198204  } 
     
    213219  { 
    214220    if (!id.equals(currentId)) initFile(id); 
    215     if (noPOI) return legacy.openBytes(id, no); 
     221    if (noPOI || needLegacy) return legacy.openBytes(id, no); 
    216222    if (no < 0 || no >= getImageCount(id)) { 
    217223      throw new FormatException("Invalid image number: " + no); 
     
    256262    } 
    257263    catch (ReflectException e) { 
    258       noPOI = true; 
     264      needLegacy = true; 
    259265      return openBytes(id, no); 
    260266    } 
     
    266272  { 
    267273    if (!id.equals(currentId)) initFile(id); 
    268     if (noPOI) return legacy.openImage(id, no); 
     274    if (noPOI || needLegacy) return legacy.openImage(id, no); 
    269275    if (no < 0 || no >= getImageCount(id)) { 
    270276      throw new FormatException("Invalid image number: " + no); 
     
    278284  public void close() throws FormatException, IOException { 
    279285    currentId = null; 
    280     noPOI = false;  
     286    needLegacy = false;  
     287    if (ras != null) ras.close(); 
     288    ras = null; 
    281289    String[] vars = {"dirName", "root", "dir", "document", "dis",  
    282290      "numBytes", "data", "fis", "fs", "iter", "isInstance", "isDocument",  
     
    287295  /** Initializes the given ZVI file. */ 
    288296  protected void initFile(String id) throws FormatException, IOException { 
    289     if (!id.equals(currentId)) close(); 
    290      
    291     if (noPOI) { 
     297 
     298    if (noPOI || needLegacy) { 
    292299      legacy.initFile(id); 
    293300      return; 
    294301    } 
     302 
     303    close(); 
    295304 
    296305    currentId = id; 
     
    307316 
    308317    try { 
    309       RandomAccessStream ras = new RandomAccessStream(id); 
     318      ras = new RandomAccessStream(id); 
     319 
    310320      // Don't uncomment this block.  Even though OIBReader has something  
    311321      // like this, it's really a bad idea here.  Every ZVI file we have *will* 
     
    315325      //  ras.setExtend((4096 - (int) (ras.length() % 4096))); 
    316326      //} 
    317        
     327     
    318328      r.setVar("fis", ras); 
    319329      r.exec("fs = new POIFSFileSystem(fis)"); 
     
    340350   
    341351      Object check = metadata.get("Image Channel Index"); 
    342       if (check != null) { 
     352      if (check != null && !check.toString().trim().equals("")) { 
    343353        int[] dims = {sizeZ[0], sizeC[0], sizeT[0]}; 
    344354        int max = 0, min = Integer.MAX_VALUE, maxNdx = 0, minNdx = 0; 
     
    362372 
    363373        currentOrder[0] = "XY" + axes[maxNdx] + axes[medNdx] + axes[minNdx]; 
     374        if (sizeZ[0] == sizeC[0] && sizeC[0] == sizeT[0]) { 
     375          currentOrder[0] = legacy.getDimensionOrder(id); 
     376        } 
    364377      } 
    365378      else currentOrder[0] = (zSize > tSize) ? "XYCZT" : "XYCTZ"; 
    366379    } 
    367380    catch (Throwable t) { 
    368       noPOI = true; 
     381      needLegacy = true; 
    369382      if (DEBUG) t.printStackTrace(); 
    370383      initFile(id); 
Note: See TracChangeset for help on using the changeset viewer.