Changeset 3266


Ignore:
Timestamp:
10/11/07 12:46:53 (12 years ago)
Author:
melissa
Message:

Fixed plane number -> IFD mapping for primary file.

File:
1 edited

Legend:

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

    r3263 r3266  
    154154    // parse grouped files 
    155155 
    156     core = new CoreMetadata(seriesCount); 
    157156    ifdMap = new int[seriesCount][]; 
    158157    fileMap = new int[seriesCount][]; 
     
    172171        ifdMap[i][j] = ((Integer) v.get(j)).intValue(); 
    173172      } 
    174       numIFDs[i] += v.size(); 
     173      numIFDs[i] = v.size(); 
    175174    } 
    176175 
     
    334333        if (sizeT < 1) sizeT = 1; 
    335334 
    336         if (core.sizeZ.length > currentSeries) { 
    337           core.sizeX[currentSeries] = 
    338             Integer.parseInt(attributes.getValue("SizeX")); 
    339           core.sizeY[currentSeries] = 
    340             Integer.parseInt(attributes.getValue("SizeY")); 
    341           core.sizeZ[currentSeries] = sizeZ; 
    342           core.sizeC[currentSeries] = sizeC; 
    343           core.sizeT[currentSeries] = sizeT; 
    344           core.currentOrder[currentSeries] = order; 
    345           core.rgb[currentSeries] = isRGB(); 
    346           core.indexed[currentSeries] = isIndexed(); 
    347           core.falseColor[currentSeries] = isFalseColor(); 
    348  
    349           if (core.rgb[currentSeries] && core.indexed[currentSeries] && 
    350             core.sizeC[currentSeries] == 3) 
    351           { 
    352             core.rgb[currentSeries] = false; 
    353             core.indexed[currentSeries] = false; 
    354             core.falseColor[currentSeries] = false; 
    355           } 
    356  
    357           int sc = core.sizeC[currentSeries]; 
    358           if (core.rgb[currentSeries] && sc > 1) sc /= 3; 
    359           core.imageCount[currentSeries] = 
    360             core.sizeZ[currentSeries] * sc * core.sizeT[currentSeries]; 
    361           core.pixelType[currentSeries] = 
    362             FormatTools.pixelTypeFromString(attributes.getValue("PixelType")); 
    363           if (core.pixelType[currentSeries] == FormatTools.INT8 || 
    364             core.pixelType[currentSeries] == FormatTools.INT16 || 
    365             core.pixelType[currentSeries] == FormatTools.INT32) 
    366           { 
    367             core.pixelType[currentSeries]++; 
    368           } 
    369  
    370           if (isWiscScan) core.sizeT[currentSeries] = core.imageCount[0]; 
    371  
    372           core.orderCertain[currentSeries] = true; 
    373         } 
    374         if (numIFDs != null) { 
    375           numIFDs[currentSeries] += usedIFDs[currentFile].length; 
    376         } 
     335        if (core.sizeZ.length <= currentSeries) { 
     336          CoreMetadata tempCore = new CoreMetadata(currentSeries + 1); 
     337          int ss = core.sizeX.length; 
     338          System.arraycopy(core.sizeX, 0, tempCore.sizeX, 0, ss); 
     339          System.arraycopy(core.sizeY, 0, tempCore.sizeY, 0, ss); 
     340          System.arraycopy(core.sizeZ, 0, tempCore.sizeZ, 0, ss); 
     341          System.arraycopy(core.sizeC, 0, tempCore.sizeC, 0, ss); 
     342          System.arraycopy(core.sizeT, 0, tempCore.sizeT, 0, ss); 
     343          System.arraycopy(core.thumbSizeX, 0, tempCore.thumbSizeX, 0, ss); 
     344          System.arraycopy(core.thumbSizeY, 0, tempCore.thumbSizeY, 0, ss); 
     345          System.arraycopy(core.pixelType, 0, tempCore.pixelType, 0, ss); 
     346          System.arraycopy(core.imageCount, 0, tempCore.imageCount, 0, ss); 
     347          System.arraycopy(core.currentOrder, 0, tempCore.currentOrder, 0, ss); 
     348          System.arraycopy(core.orderCertain, 0, tempCore.orderCertain, 0, ss); 
     349          System.arraycopy(core.rgb, 0, tempCore.rgb, 0, ss); 
     350          System.arraycopy(core.littleEndian, 0, tempCore.littleEndian, 0, ss); 
     351          System.arraycopy(core.interleaved, 0, tempCore.interleaved, 0, ss); 
     352          System.arraycopy(core.indexed, 0, tempCore.indexed, 0, ss); 
     353          System.arraycopy(core.falseColor, 0, tempCore.falseColor, 0, ss); 
     354          System.arraycopy(core.metadataComplete, 0, 
     355            tempCore.metadataComplete, 0, ss); 
     356          core = tempCore; 
     357        } 
     358 
     359        core.sizeX[currentSeries] = 
     360          Integer.parseInt(attributes.getValue("SizeX")); 
     361        core.sizeY[currentSeries] = 
     362          Integer.parseInt(attributes.getValue("SizeY")); 
     363        core.sizeZ[currentSeries] = sizeZ; 
     364        core.sizeC[currentSeries] = sizeC; 
     365        core.sizeT[currentSeries] = sizeT; 
     366        core.currentOrder[currentSeries] = order; 
     367        core.rgb[currentSeries] = isRGB(); 
     368        core.indexed[currentSeries] = isIndexed(); 
     369        core.falseColor[currentSeries] = isFalseColor(); 
     370 
     371        if (core.rgb[currentSeries] && core.indexed[currentSeries] && 
     372          core.sizeC[currentSeries] == 3) 
     373        { 
     374          core.rgb[currentSeries] = false; 
     375          core.indexed[currentSeries] = false; 
     376          core.falseColor[currentSeries] = false; 
     377        } 
     378 
     379        int sc = core.sizeC[currentSeries]; 
     380        if (core.rgb[currentSeries] && sc > 1) sc /= 3; 
     381        core.imageCount[currentSeries] = 
     382          core.sizeZ[currentSeries] * sc * core.sizeT[currentSeries]; 
     383        core.pixelType[currentSeries] = 
     384          FormatTools.pixelTypeFromString(attributes.getValue("PixelType")); 
     385        if (core.pixelType[currentSeries] == FormatTools.INT8 || 
     386          core.pixelType[currentSeries] == FormatTools.INT16 || 
     387          core.pixelType[currentSeries] == FormatTools.INT32) 
     388        { 
     389          core.pixelType[currentSeries]++; 
     390        } 
     391 
     392        if (isWiscScan) core.sizeT[currentSeries] = core.imageCount[0]; 
     393 
     394        core.orderCertain[currentSeries] = true; 
    377395 
    378396        seriesCount++; 
     
    423441            y = (Vector) tempFileMap.get(seriesCount - 1); 
    424442          } 
    425  
    426           if (v.size() > idx) v.setElementAt(new Integer(ifd), idx); 
    427           else v.add(new Integer(ifd)); 
    428           if (y.size() > idx) y.setElementAt(new Integer(0), idx); 
    429           else y.add(new Integer(0)); 
     443          else { 
     444            for (int i=0; i<sizeZ*sizeC*sizeT; i++) { 
     445              v.add(new Integer(-1)); 
     446              y.add(new Integer(-1)); 
     447            } 
     448          } 
     449 
     450          v.setElementAt(new Integer(ifd), idx); 
     451          y.setElementAt(new Integer(0), idx); 
    430452 
    431453          for (int i=1; i<Integer.parseInt(numPlanes); i++) { 
    432             if (v.size() > idx + i) { 
    433               v.setElementAt(new Integer(Integer.parseInt(ifd) + i), idx + i); 
    434             } 
    435             else v.add(new Integer(Integer.parseInt(ifd) + i)); 
    436             if (y.size() > idx + i) y.setElementAt(new Integer(0), idx + i); 
    437             else y.add(new Integer(0)); 
    438           } 
    439  
    440           if (tempIfdMap.size() > seriesCount) { 
    441             tempIfdMap.setElementAt(v, seriesCount); 
    442             tempFileMap.setElementAt(y, seriesCount); 
     454            v.setElementAt(new Integer(Integer.parseInt(ifd) + i), idx + i); 
     455            y.setElementAt(new Integer(0), idx + i); 
     456          } 
     457 
     458          if (tempIfdMap.size() >= seriesCount) { 
     459            tempIfdMap.setElementAt(v, seriesCount - 1); 
     460            tempFileMap.setElementAt(y, seriesCount - 1); 
    443461          } 
    444462          else { 
Note: See TracChangeset for help on using the changeset viewer.