Changeset 3507


Ignore:
Timestamp:
12/28/07 12:36:32 (12 years ago)
Author:
melissa
Message:

Delegate to ND2Reader if an exception is thrown in initFile.

File:
1 edited

Legend:

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

    r3498 r3507  
    6363  } 
    6464 
     65  // -- Fields -- 
     66 
     67  /** Reader to delegate to if this one fails. */ 
     68  private ND2Reader goodReader; 
     69 
    6570  // -- Constructor -- 
    6671 
     
    8388    FormatTools.checkPlaneNumber(this, no); 
    8489    FormatTools.checkBufferSize(this, buf.length); 
     90 
     91    if (goodReader != null) return goodReader.openBytes(no, buf); 
    8592 
    8693    int[] zct = FormatTools.getZCTCoords(this, no); 
     
    121128    super.initFile(id); 
    122129 
    123     openFile(id); 
    124     int numSeries = getNumSeries(); 
    125     core = new CoreMetadata(numSeries); 
    126  
    127     for (int i=0; i<numSeries; i++) { 
    128       core.sizeX[i] = getWidth(i); 
    129       if (core.sizeX[i] % 2 != 0) core.sizeX[i]++; 
    130       core.sizeY[i] = getHeight(i); 
    131       core.sizeZ[i] = getZSlices(i); 
    132       core.sizeT[i] = getTFrames(i); 
    133       core.sizeC[i] = getChannels(i); 
    134       int bytes = getBytesPerPixel(i); 
    135       if (bytes % 3 == 0) { 
    136         core.sizeC[i] *= 3; 
    137         bytes /= 3; 
     130    try { 
     131      openFile(id); 
     132      int numSeries = getNumSeries(); 
     133      core = new CoreMetadata(numSeries); 
     134 
     135      for (int i=0; i<numSeries; i++) { 
     136        core.sizeX[i] = getWidth(i); 
     137        if (core.sizeX[i] % 2 != 0) core.sizeX[i]++; 
     138        core.sizeY[i] = getHeight(i); 
     139        core.sizeZ[i] = getZSlices(i); 
     140        core.sizeT[i] = getTFrames(i); 
     141        core.sizeC[i] = getChannels(i); 
     142        int bytes = getBytesPerPixel(i); 
     143        if (bytes % 3 == 0) { 
     144          core.sizeC[i] *= 3; 
     145          bytes /= 3; 
     146        } 
     147        switch (bytes) { 
     148          case 1: 
     149            core.pixelType[i] = FormatTools.UINT8; 
     150            break; 
     151          case 2: 
     152            core.pixelType[i] = FormatTools.UINT16; 
     153            break; 
     154          case 4: 
     155            core.pixelType[i] = FormatTools.FLOAT; 
     156            break; 
     157        } 
     158        core.rgb[i] = core.sizeC[i] > 1; 
     159        core.imageCount[i] = core.sizeZ[i] * core.sizeT[i]; 
    138160      } 
    139       switch (bytes) { 
    140         case 1: 
    141           core.pixelType[i] = FormatTools.UINT8; 
    142           break; 
    143         case 2: 
    144           core.pixelType[i] = FormatTools.UINT16; 
    145           break; 
    146         case 4: 
    147           core.pixelType[i] = FormatTools.FLOAT; 
    148           break; 
    149       } 
    150       core.rgb[i] = core.sizeC[i] > 1; 
    151       core.imageCount[i] = core.sizeZ[i] * core.sizeT[i]; 
    152     } 
    153     Arrays.fill(core.interleaved, true); 
    154     Arrays.fill(core.littleEndian, true); 
    155     Arrays.fill(core.currentOrder, "XYCZT"); 
    156     Arrays.fill(core.indexed, false); 
    157     Arrays.fill(core.falseColor, false); 
     161      Arrays.fill(core.interleaved, true); 
     162      Arrays.fill(core.littleEndian, true); 
     163      Arrays.fill(core.currentOrder, "XYCZT"); 
     164      Arrays.fill(core.indexed, false); 
     165      Arrays.fill(core.falseColor, false); 
     166    } 
     167    catch (Exception e) { 
     168      goodReader = new ND2Reader(); 
     169      goodReader.setId(currentId); 
     170      core = goodReader.getCoreMetadata(); 
     171      metadata = goodReader.getMetadata(); 
     172    } 
    158173 
    159174    MetadataStore store = getMetadataStore(); 
    160     for (int i=0; i<numSeries; i++) { 
     175    for (int i=0; i<core.sizeX.length; i++) { 
    161176      store.setImage(null, null, null, new Integer(i)); 
    162177    } 
Note: See TracChangeset for help on using the changeset viewer.