Changeset 4335


Ignore:
Timestamp:
08/27/08 10:11:08 (12 years ago)
Author:
melissa
Message:

Refactored so that CoreMetadata only stores data for one series. IFormatReader.getCoreMetadata() now returns an array of CoreMetadata objects, one per series.

Location:
trunk/loci
Files:
76 edited

Legend:

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

    r4066 r4335  
    3434 */ 
    3535public class CoreMetadata { 
    36   // TODO - Refactor this class to encapsulate core metadata for only one 
    37   // series at a time, and use an array of CoreMetadata objects in FormatReader 
    38   // instead. This approach is cleaner than the parallel arrays approach below. 
    39  
     36  // TODO 
     37  // 
    4038  // We may also want to consider refactoring the FormatReader getter methods 
    4139  // that populate missing CoreMetadata fields on the fly 
     
    4644  // Lastly, we should add javadoc comments to the fields in this class. 
    4745 
    48   public int[] sizeX, sizeY, sizeZ, sizeC, sizeT; 
    49   public int[] thumbSizeX, thumbSizeY; 
    50   public int[] pixelType; 
    51   public int[] imageCount; 
    52   public int[][] cLengths; 
    53   public String[][] cTypes; 
    54   public String[] currentOrder; 
    55   public boolean[] orderCertain, rgb, littleEndian, interleaved; 
    56   public boolean[] indexed, falseColor, metadataComplete; 
    57   public Hashtable[] seriesMetadata; 
     46  public int sizeX, sizeY, sizeZ, sizeC, sizeT; 
     47  public int thumbSizeX, thumbSizeY; 
     48  public int pixelType; 
     49  public int imageCount; 
     50  public int[] cLengths; 
     51  public String[] cTypes; 
     52  public String currentOrder; 
     53  public boolean orderCertain, rgb, littleEndian, interleaved; 
     54  public boolean indexed, falseColor, metadataComplete; 
     55  public Hashtable seriesMetadata; 
    5856 
    59   public CoreMetadata(int series) { 
    60     sizeX = new int[series]; 
    61     sizeY = new int[series]; 
    62     sizeZ = new int[series]; 
    63     sizeC = new int[series]; 
    64     sizeT = new int[series]; 
    65     thumbSizeX = new int[series]; 
    66     thumbSizeY = new int[series]; 
    67     pixelType = new int[series]; 
    68     imageCount = new int[series]; 
    69     cLengths = new int[series][]; 
    70     cTypes = new String[series][]; 
    71     currentOrder = new String[series]; 
    72     orderCertain = new boolean[series]; 
    73     rgb = new boolean[series]; 
    74     littleEndian = new boolean[series]; 
    75     interleaved = new boolean[series]; 
    76     indexed = new boolean[series]; 
    77     falseColor = new boolean[series]; 
    78     metadataComplete = new boolean[series]; 
    79     seriesMetadata = new Hashtable[series]; 
    80     for (int i=0; i<series; i++) seriesMetadata[i] = new Hashtable(); 
     57  public CoreMetadata() { 
     58    seriesMetadata = new Hashtable(); 
    8159  } 
    8260 
  • trunk/loci/formats/DimensionSwapper.java

    r4310 r4335  
    118118 
    119119    int series = getSeries(); 
    120     CoreMetadata core = getCoreMetadata(); 
    121  
    122     core.sizeX[series] = dims[newX]; 
    123     core.sizeY[series] = dims[newY]; 
    124     core.sizeZ[series] = dims[newZ]; 
    125     core.sizeC[series] = dims[newC]; 
    126     core.sizeT[series] = dims[newT]; 
     120    CoreMetadata[] core = getCoreMetadata(); 
     121 
     122    core[series].sizeX = dims[newX]; 
     123    core[series].sizeY = dims[newY]; 
     124    core[series].sizeZ = dims[newZ]; 
     125    core[series].sizeC = dims[newC]; 
     126    core[series].sizeT = dims[newT]; 
    127127    //core.currentOrder[series] = order; 
    128128    inputOrder = order; 
     
    130130    if (oldC != newC) { 
    131131      // C was overridden; clear the sub-C dimensional metadata 
    132       core.cLengths[series] = null; 
    133       core.cTypes[series] = null; 
     132      core[series].cLengths = null; 
     133      core[series].cTypes = null; 
    134134    } 
    135135 
     
    151151    //this.outputOrder = outputOrder; 
    152152    if (inputOrder == null) inputOrder = getDimensionOrder(); 
    153     getCoreMetadata().currentOrder[getSeries()] = outputOrder; 
     153    getCoreMetadata()[getSeries()].currentOrder = outputOrder; 
    154154  } 
    155155 
     
    163163  public int getSizeX() { 
    164164    FormatTools.assertId(getCurrentFile(), true, 2); 
    165     return getCoreMetadata().sizeX[getSeries()]; 
     165    return getCoreMetadata()[getSeries()].sizeX; 
    166166  } 
    167167 
     
    169169  public int getSizeY() { 
    170170    FormatTools.assertId(getCurrentFile(), true, 2); 
    171     return getCoreMetadata().sizeY[getSeries()]; 
     171    return getCoreMetadata()[getSeries()].sizeY; 
    172172  } 
    173173 
     
    175175  public int getSizeZ() { 
    176176    FormatTools.assertId(getCurrentFile(), true, 2); 
    177     return getCoreMetadata().sizeZ[getSeries()]; 
     177    return getCoreMetadata()[getSeries()].sizeZ; 
    178178  } 
    179179 
     
    181181  public int getSizeC() { 
    182182    FormatTools.assertId(getCurrentFile(), true, 2); 
    183     return getCoreMetadata().sizeC[getSeries()]; 
     183    return getCoreMetadata()[getSeries()].sizeC; 
    184184  } 
    185185 
     
    187187  public int getSizeT() { 
    188188    FormatTools.assertId(getCurrentFile(), true, 2); 
    189     return getCoreMetadata().sizeT[getSeries()]; 
     189    return getCoreMetadata()[getSeries()].sizeT; 
    190190  } 
    191191 
     
    193193  public String getDimensionOrder() { 
    194194    FormatTools.assertId(getCurrentFile(), true, 2); 
    195     return getCoreMetadata().currentOrder[getSeries()]; 
     195    return getCoreMetadata()[getSeries()].currentOrder; 
    196196  } 
    197197 
  • trunk/loci/formats/FileStitcher.java

    r4320 r4335  
    100100 
    101101  /** Core metadata. */ 
    102   private CoreMetadata core; 
     102  private CoreMetadata[] core; 
    103103 
    104104  /** Current series number. */ 
     
    247247  public int getImageCount() { 
    248248    FormatTools.assertId(currentId, true, 2); 
    249     return noStitch ? reader.getImageCount() : core.imageCount[getSeries()]; 
     249    return noStitch ? reader.getImageCount() : core[getSeries()].imageCount; 
    250250  } 
    251251 
     
    253253  public boolean isRGB() { 
    254254    FormatTools.assertId(currentId, true, 2); 
    255     return noStitch ? reader.isRGB() : core.rgb[getSeries()]; 
     255    return noStitch ? reader.isRGB() : core[getSeries()].rgb; 
    256256  } 
    257257 
     
    259259  public int getSizeX() { 
    260260    FormatTools.assertId(currentId, true, 2); 
    261     return noStitch ? reader.getSizeX() : core.sizeX[getSeries()]; 
     261    return noStitch ? reader.getSizeX() : core[getSeries()].sizeX; 
    262262  } 
    263263 
     
    265265  public int getSizeY() { 
    266266    FormatTools.assertId(currentId, true, 2); 
    267     return noStitch ? reader.getSizeY() : core.sizeY[getSeries()]; 
     267    return noStitch ? reader.getSizeY() : core[getSeries()].sizeY; 
    268268  } 
    269269 
     
    271271  public int getSizeZ() { 
    272272    FormatTools.assertId(currentId, true, 2); 
    273     return noStitch ? reader.getSizeZ() : core.sizeZ[getSeries()]; 
     273    return noStitch ? reader.getSizeZ() : core[getSeries()].sizeZ; 
    274274  } 
    275275 
     
    277277  public int getSizeC() { 
    278278    FormatTools.assertId(currentId, true, 2); 
    279     return noStitch ? reader.getSizeC() : core.sizeC[getSeries()]; 
     279    return noStitch ? reader.getSizeC() : core[getSeries()].sizeC; 
    280280  } 
    281281 
     
    283283  public int getSizeT() { 
    284284    FormatTools.assertId(currentId, true, 2); 
    285     return noStitch ? reader.getSizeT() : core.sizeT[getSeries()]; 
     285    return noStitch ? reader.getSizeT() : core[getSeries()].sizeT; 
    286286  } 
    287287 
     
    289289  public int getPixelType() { 
    290290    FormatTools.assertId(currentId, true, 2); 
    291     return noStitch ? reader.getPixelType() : core.pixelType[getSeries()]; 
     291    return noStitch ? reader.getPixelType() : core[getSeries()].pixelType; 
    292292  } 
    293293 
     
    307307  public boolean isIndexed() { 
    308308    FormatTools.assertId(currentId, true, 2); 
    309     return noStitch ? reader.isIndexed() : core.indexed[getSeries()]; 
     309    return noStitch ? reader.isIndexed() : core[getSeries()].indexed; 
    310310  } 
    311311 
     
    313313  public boolean isFalseColor() { 
    314314    FormatTools.assertId(currentId, true, 2); 
    315     return noStitch ? reader.isFalseColor() : core.falseColor[getSeries()]; 
     315    return noStitch ? reader.isFalseColor() : core[getSeries()].falseColor; 
    316316  } 
    317317 
     
    334334    FormatTools.assertId(currentId, true, 2); 
    335335    if (noStitch) return reader.getChannelDimLengths(); 
    336     if (core.cLengths[series] == null) return new int[] {core.sizeC[series]}; 
    337     return core.cLengths[series]; 
     336    if (core[getSeries()].cLengths == null) { 
     337      return new int[] {core[getSeries()].sizeC}; 
     338    } 
     339    return core[getSeries()].cLengths; 
    338340  } 
    339341 
     
    342344    FormatTools.assertId(currentId, true, 2); 
    343345    if (noStitch) return reader.getChannelDimTypes(); 
    344     if (core.cTypes[series] == null) return new String[] {FormatTools.CHANNEL}; 
    345     return core.cTypes[series]; 
     346    if (core[getSeries()].cTypes == null) { 
     347      return new String[] {FormatTools.CHANNEL}; 
     348    } 
     349    return core[getSeries()].cTypes; 
    346350  } 
    347351 
     
    371375    FormatTools.assertId(currentId, true, 2); 
    372376    return noStitch ? reader.getDimensionOrder() : 
    373       core.currentOrder[getSeries()]; 
     377      core[getSeries()].currentOrder; 
    374378  } 
    375379 
     
    377381  public boolean isOrderCertain() { 
    378382    FormatTools.assertId(currentId, true, 2); 
    379     return noStitch ? reader.isOrderCertain() : core.orderCertain[getSeries()]; 
     383    return noStitch ? reader.isOrderCertain() : core[getSeries()].orderCertain; 
    380384  } 
    381385 
     
    567571  public int getSeriesCount() { 
    568572    FormatTools.assertId(currentId, true, 2); 
    569     return noStitch ? reader.getSeriesCount() : core.sizeX.length; 
     573    return noStitch ? reader.getSeriesCount() : core.length; 
    570574  } 
    571575 
     
    746750 
    747751  /* @see IFormatReader#getCoreMetadata() */ 
    748   public CoreMetadata getCoreMetadata() { 
     752  public CoreMetadata[] getCoreMetadata() { 
    749753    FormatTools.assertId(currentId, true, 2); 
    750754    return noStitch ? reader.getCoreMetadata() : core; 
     
    10191023 
    10201024    // analyze first file; assume each file has the same parameters 
    1021     core = new CoreMetadata(seriesCount); 
     1025    core = new CoreMetadata[seriesCount]; 
    10221026    int oldSeries = reader.getSeries(); 
    10231027    IFormatReader rr = reader; 
     
    10291033      } 
    10301034 
    1031       core.sizeX[i] = rr.getSizeX(); 
    1032       core.sizeY[i] = rr.getSizeY(); 
     1035      core[i] = new CoreMetadata(); 
     1036 
     1037      core[i].sizeX = rr.getSizeX(); 
     1038      core[i].sizeY = rr.getSizeY(); 
    10331039      // NB: core.sizeZ populated in computeAxisLengths below 
    10341040      // NB: core.sizeC populated in computeAxisLengths below 
    10351041      // NB: core.sizeT populated in computeAxisLengths below 
    1036       core.pixelType[i] = rr.getPixelType(); 
     1042      core[i].pixelType = rr.getPixelType(); 
    10371043      imagesPerFile[i] = rr.getImageCount(); 
    1038       core.imageCount[i] = 
     1044      core[i].imageCount = 
    10391045        imagesPerFile[i] * files[seriesInFile ? 0 : i].length; 
    1040       core.thumbSizeX[i] = rr.getThumbSizeX(); 
    1041       core.thumbSizeY[i] = rr.getThumbSizeY(); 
     1046      core[i].thumbSizeX = rr.getThumbSizeX(); 
     1047      core[i].thumbSizeY = rr.getThumbSizeY(); 
    10421048      // NB: core.cLengths[i] populated in computeAxisLengths below 
    10431049      // NB: core.cTypes[i] populated in computeAxisLengths below 
    1044       core.currentOrder[i] = rr.getDimensionOrder(); 
     1050      core[i].currentOrder = rr.getDimensionOrder(); 
    10451051      // NB: core.orderCertain[i] populated below 
    1046       core.rgb[i] = rr.isRGB(); 
    1047       core.littleEndian[i] = rr.isLittleEndian(); 
    1048       core.interleaved[i] = rr.isInterleaved(); 
    1049       core.seriesMetadata[i] = rr.getMetadata(); 
    1050       core.indexed[i] = rr.isIndexed(); 
    1051       core.falseColor[i] = rr.isFalseColor(); 
     1052      core[i].rgb = rr.isRGB(); 
     1053      core[i].littleEndian = rr.isLittleEndian(); 
     1054      core[i].interleaved = rr.isInterleaved(); 
     1055      core[i].seriesMetadata = rr.getMetadata(); 
     1056      core[i].indexed = rr.isIndexed(); 
     1057      core[i].falseColor = rr.isFalseColor(); 
    10521058      sizeZ[i] = rr.getSizeZ(); 
    10531059      sizeC[i] = rr.getSizeC(); 
     
    10591065    // guess at dimensions corresponding to file numbering 
    10601066    for (int i=0; i<seriesCount; i++) { 
    1061       ag[i] = new AxisGuesser(fp, core.currentOrder[i], 
     1067      ag[i] = new AxisGuesser(fp, core[i].currentOrder, 
    10621068        sizeZ[i], sizeT[i], sizeC[i], certain[i]); 
    10631069    } 
     
    10661072    for (int i=0; i<seriesCount; i++) { 
    10671073      setSeries(i); 
    1068       core.currentOrder[i] = ag[i].getAdjustedOrder(); 
    1069       core.orderCertain[i] = ag[i].isCertain(); 
     1074      core[i].currentOrder = ag[i].getAdjustedOrder(); 
     1075      core[i].orderCertain = ag[i].isCertain(); 
    10701076      computeAxisLengths(); 
    10711077    } 
    10721078    setSeries(oldSeries); 
    10731079    originalOrder = new String[seriesCount]; 
    1074     System.arraycopy(core.currentOrder, 0, originalOrder, 0, seriesCount); 
     1080    for (int i=0; i<seriesCount; i++) { 
     1081      originalOrder[i] = core[i].currentOrder; 
     1082    } 
    10751083  } 
    10761084 
     
    11031111    int numT = ag[sno].getAxisCountT(); 
    11041112 
    1105     core.sizeZ[sno] = sizeZ[sno]; 
    1106     core.sizeC[sno] = sizeC[sno]; 
    1107     core.sizeT[sno] = sizeT[sno]; 
     1113    core[sno].sizeZ = sizeZ[sno]; 
     1114    core[sno].sizeC = sizeC[sno]; 
     1115    core[sno].sizeT = sizeT[sno]; 
    11081116    lenZ[sno] = new int[numZ + 1]; 
    11091117    lenC[sno] = new int[numC + 1]; 
     
    11161124      switch (axes[i]) { 
    11171125        case AxisGuesser.Z_AXIS: 
    1118           core.sizeZ[sno] *= count[i]; 
     1126          core[sno].sizeZ *= count[i]; 
    11191127          lenZ[sno][z++] = count[i]; 
    11201128          break; 
    11211129        case AxisGuesser.C_AXIS: 
    1122           core.sizeC[sno] *= count[i]; 
     1130          core[sno].sizeC *= count[i]; 
    11231131          lenC[sno][c++] = count[i]; 
    11241132          break; 
    11251133        case AxisGuesser.T_AXIS: 
    1126           core.sizeT[sno] *= count[i]; 
     1134          core[sno].sizeT *= count[i]; 
    11271135          lenT[sno][t++] = count[i]; 
    11281136          break; 
     
    11451153    } 
    11461154    if (cCount == 0) { 
    1147       core.cLengths[sno] = new int[] {1}; 
    1148       core.cTypes[sno] = new String[] {FormatTools.CHANNEL}; 
     1155      core[sno].cLengths = new int[] {1}; 
     1156      core[sno].cTypes = new String[] {FormatTools.CHANNEL}; 
    11491157    } 
    11501158    else { 
    1151       core.cLengths[sno] = new int[cCount]; 
    1152       core.cTypes[sno] = new String[cCount]; 
     1159      core[sno].cLengths = new int[cCount]; 
     1160      core[sno].cTypes = new String[cCount]; 
    11531161    } 
    11541162    int c = 0; 
    11551163    for (int i=0; i<cLengths.length; i++) { 
    11561164      if (cLengths[i] == 1) continue; 
    1157       core.cLengths[sno][c] = cLengths[i]; 
    1158       core.cTypes[sno][c] = cTypes[i]; 
     1165      core[sno].cLengths[c] = cLengths[i]; 
     1166      core[sno].cTypes[c] = cTypes[i]; 
    11591167      c++; 
    11601168    } 
    11611169    for (int i=1; i<lenC[sno].length; i++) { 
    11621170      if (lenC[sno][i] == 1) continue; 
    1163       core.cLengths[sno][c] = lenC[sno][i]; 
    1164       core.cTypes[sno][c] = FormatTools.CHANNEL; 
     1171      core[sno].cLengths[c] = lenC[sno][i]; 
     1172      core[sno].cTypes[c] = FormatTools.CHANNEL; 
    11651173    } 
    11661174 
    11671175    // populate metadata store 
    11681176    store = reader.getMetadataStore(); 
    1169     for (int i=0; i<core.sizeX.length; i++) { 
     1177    for (int i=0; i<core.length; i++) { 
    11701178      if (seriesNames != null) { 
    11711179        store.setImageName((String) seriesNames.get(i), i); 
  • trunk/loci/formats/FormatReader.java

    r4301 r4335  
    5858 
    5959  /** Core metadata values. */ 
    60   protected CoreMetadata core; 
     60  protected CoreMetadata[] core; 
    6161 
    6262  /** 
     
    132132    metadata = new Hashtable(); 
    133133 
    134     core = new CoreMetadata(1); 
    135     Arrays.fill(core.orderCertain, true); 
     134    core = new CoreMetadata[1]; 
     135    core[0] = new CoreMetadata(); 
     136    core[0].orderCertain = true; 
    136137 
    137138    // reinitialize the MetadataStore 
     
    261262  public int getImageCount() { 
    262263    FormatTools.assertId(currentId, true, 1); 
    263     return core.imageCount[series]; 
     264    return core[series].imageCount; 
    264265  } 
    265266 
     
    267268  public boolean isRGB() { 
    268269    FormatTools.assertId(currentId, true, 1); 
    269     return core.rgb[series]; 
     270    return core[series].rgb; 
    270271  } 
    271272 
     
    273274  public int getSizeX() { 
    274275    FormatTools.assertId(currentId, true, 1); 
    275     return core.sizeX[series]; 
     276    return core[series].sizeX; 
    276277  } 
    277278 
     
    279280  public int getSizeY() { 
    280281    FormatTools.assertId(currentId, true, 1); 
    281     return core.sizeY[series]; 
     282    return core[series].sizeY; 
    282283  } 
    283284 
     
    285286  public int getSizeZ() { 
    286287    FormatTools.assertId(currentId, true, 1); 
    287     return core.sizeZ[series]; 
     288    return core[series].sizeZ; 
    288289  } 
    289290 
     
    291292  public int getSizeC() { 
    292293    FormatTools.assertId(currentId, true, 1); 
    293     return core.sizeC[series]; 
     294    return core[series].sizeC; 
    294295  } 
    295296 
     
    297298  public int getSizeT() { 
    298299    FormatTools.assertId(currentId, true, 1); 
    299     return core.sizeT[series]; 
     300    return core[series].sizeT; 
    300301  } 
    301302 
     
    303304  public int getPixelType() { 
    304305    FormatTools.assertId(currentId, true, 1); 
    305     return core.pixelType[series]; 
     306    return core[series].pixelType; 
    306307  } 
    307308 
     
    320321  public boolean isIndexed() { 
    321322    FormatTools.assertId(currentId, true, 1); 
    322     return core.indexed[series]; 
     323    return core[series].indexed; 
    323324  } 
    324325 
     
    326327  public boolean isFalseColor() { 
    327328    FormatTools.assertId(currentId, true, 1); 
    328     return core.falseColor[series]; 
     329    return core[series].falseColor; 
    329330  } 
    330331 
     
    342343  public int[] getChannelDimLengths() { 
    343344    FormatTools.assertId(currentId, true, 1); 
    344     if (core.cLengths[series] == null) return new int[] {core.sizeC[series]}; 
    345     return core.cLengths[series]; 
     345    if (core[series].cLengths == null) return new int[] {core[series].sizeC}; 
     346    return core[series].cLengths; 
    346347  } 
    347348 
     
    349350  public String[] getChannelDimTypes() { 
    350351    FormatTools.assertId(currentId, true, 1); 
    351     if (core.cTypes[series] == null) return new String[] {FormatTools.CHANNEL}; 
    352     return core.cTypes[series]; 
     352    if (core[series].cTypes == null) return new String[] {FormatTools.CHANNEL}; 
     353    return core[series].cTypes; 
    353354  } 
    354355 
     
    356357  public int getThumbSizeX() { 
    357358    FormatTools.assertId(currentId, true, 1); 
    358     if (core.thumbSizeX[series] == 0) { 
     359    if (core[series].thumbSizeX == 0) { 
    359360      int sx = getSizeX(); 
    360361      int sy = getSizeY(); 
     
    364365      return thumbSizeX; 
    365366    } 
    366     return core.thumbSizeX[series]; 
     367    return core[series].thumbSizeX; 
    367368  } 
    368369 
     
    370371  public int getThumbSizeY() { 
    371372    FormatTools.assertId(currentId, true, 1); 
    372     if (core.thumbSizeY[series] == 0) { 
     373    if (core[series].thumbSizeY == 0) { 
    373374      int sx = getSizeX(); 
    374375      int sy = getSizeY(); 
     
    378379      return thumbSizeY; 
    379380    } 
    380     return core.thumbSizeY[series]; 
     381    return core[series].thumbSizeY; 
    381382  } 
    382383 
     
    384385  public boolean isLittleEndian() { 
    385386    FormatTools.assertId(currentId, true, 1); 
    386     return core.littleEndian[series]; 
     387    return core[series].littleEndian; 
    387388  } 
    388389 
     
    390391  public String getDimensionOrder() { 
    391392    FormatTools.assertId(currentId, true, 1); 
    392     return core.currentOrder[series]; 
     393    return core[series].currentOrder; 
    393394  } 
    394395 
     
    396397  public boolean isOrderCertain() { 
    397398    FormatTools.assertId(currentId, true, 1); 
    398     return core.orderCertain[series]; 
     399    return core[series].orderCertain; 
    399400  } 
    400401 
     
    407408  public boolean isInterleaved(int subC) { 
    408409    FormatTools.assertId(currentId, true, 1); 
    409     return core.interleaved[series]; 
     410    return core[series].interleaved; 
    410411  } 
    411412 
     
    461462    FormatTools.assertId(currentId, true, 1); 
    462463    BufferedImage img = openThumbImage(no); 
    463     byte[][] bytes = ImageTools.getPixelBytes(img, core.littleEndian[series]); 
     464    byte[][] bytes = ImageTools.getPixelBytes(img, isLittleEndian()); 
    464465    if (bytes.length == 1) return bytes[0]; 
    465466    byte[] rtn = new byte[getRGBChannelCount() * bytes[0].length]; 
     
    481482  public int getSeriesCount() { 
    482483    FormatTools.assertId(currentId, true, 1); 
    483     return core.sizeX.length; 
     484    return core.length; 
    484485  } 
    485486 
     
    518519  public boolean isMetadataComplete() { 
    519520    FormatTools.assertId(currentId, true, 1); 
    520     return core.metadataComplete[series]; 
     521    return core[series].metadataComplete; 
    521522  } 
    522523 
     
    590591 
    591592  /* @see IFormatReader#getCoreMetadata() */ 
    592   public CoreMetadata getCoreMetadata() { 
     593  public CoreMetadata[] getCoreMetadata() { 
    593594    FormatTools.assertId(currentId, true, 1); 
    594595    return core; 
  • trunk/loci/formats/IFormatReader.java

    r4205 r4335  
    337337 
    338338  /** Obtains the core metadata values for the current file. */ 
    339   CoreMetadata getCoreMetadata(); 
     339  CoreMetadata[] getCoreMetadata(); 
    340340 
    341341  /** 
  • trunk/loci/formats/ImageReader.java

    r4205 r4335  
    430430 
    431431  /* @see IFormatReader#getCoreMetadata() */ 
    432   public CoreMetadata getCoreMetadata() { 
     432  public CoreMetadata[] getCoreMetadata() { 
    433433    FormatTools.assertId(currentId, true, 2); 
    434434    return getReader().getCoreMetadata(); 
  • trunk/loci/formats/ReaderWrapper.java

    r4205 r4335  
    288288  } 
    289289 
    290   public CoreMetadata getCoreMetadata() { 
     290  public CoreMetadata[] getCoreMetadata() { 
    291291    return reader.getCoreMetadata(); 
    292292  } 
  • trunk/loci/formats/in/APLReader.java

    r4268 r4335  
    141141    int seriesCount = (rows.size() - 1) / 3; 
    142142 
    143     core = new CoreMetadata(seriesCount); 
     143    core = new CoreMetadata[seriesCount]; 
     144    for (int i=0; i<seriesCount; i++) { 
     145      core[i] = new CoreMetadata(); 
     146    } 
    144147    tiffFiles = new String[seriesCount]; 
    145148    xmlFiles = new String[seriesCount]; 
     
    156159      String[] row3 = (String[]) rows.get(i * 3 + 3); 
    157160 
    158       core.sizeZ[i] = Integer.parseInt(row3[frames]); 
    159       core.sizeT[i] = 1; 
    160       core.currentOrder[i] = "XYCZT"; 
     161      core[i].sizeZ = Integer.parseInt(row3[frames]); 
     162      core[i].sizeT = 1; 
     163      core[i].currentOrder = "XYCZT"; 
    161164 
    162165      xmlFiles[i] = row2[path]; 
     
    193196      // get core metadata from TIFF file 
    194197 
    195       core.sizeX[i] = tiffReaders[i].getSizeX(); 
    196       core.sizeY[i] = tiffReaders[i].getSizeY(); 
    197       core.sizeC[i] = tiffReaders[i].getSizeC(); 
    198       core.rgb[i] = tiffReaders[i].isRGB(); 
    199       core.pixelType[i] = tiffReaders[i].getPixelType(); 
    200       core.littleEndian[i] = tiffReaders[i].isLittleEndian(); 
    201       core.indexed[i] = tiffReaders[i].isIndexed(); 
    202       core.falseColor[i] = tiffReaders[i].isFalseColor(); 
    203       core.imageCount[i] = core.sizeZ[i] * (core.rgb[i] ? 1 : core.sizeC[i]); 
     198      core[i].sizeX = tiffReaders[i].getSizeX(); 
     199      core[i].sizeY = tiffReaders[i].getSizeY(); 
     200      core[i].sizeC = tiffReaders[i].getSizeC(); 
     201      core[i].rgb = tiffReaders[i].isRGB(); 
     202      core[i].pixelType = tiffReaders[i].getPixelType(); 
     203      core[i].littleEndian = tiffReaders[i].isLittleEndian(); 
     204      core[i].indexed = tiffReaders[i].isIndexed(); 
     205      core[i].falseColor = tiffReaders[i].isFalseColor(); 
     206      core[i].imageCount = core[i].sizeZ * (core[i].rgb ? 1 : core[i].sizeC); 
    204207 
    205208      // calculate physical X and Y sizes 
     
    210213      String units = row3[calibrationUnit]; 
    211214 
    212       float px = realWidth / core.sizeX[i]; 
    213       float py = realHeight / core.sizeY[i]; 
     215      float px = realWidth / core[i].sizeX; 
     216      float py = realHeight / core[i].sizeY; 
    214217 
    215218      if (units.equals("mm")) { 
  • trunk/loci/formats/in/APNGReader.java

    r4334 r4335  
    223223      if (type.equals("acTL")) { 
    224224        // APNG-specific chunk 
    225         core.imageCount[0] = in.readInt(); 
     225        core[0].imageCount = in.readInt(); 
    226226        int loop = in.readInt(); 
    227227        addMeta("Loop count", String.valueOf(loop)); 
     
    241241    } 
    242242 
    243     if (core.imageCount[0] == 0) core.imageCount[0] = 1; 
    244     core.sizeZ[0] = 1; 
    245     core.sizeT[0] = core.imageCount[0]; 
    246  
    247     core.currentOrder[0] = "XYCTZ"; 
    248     core.interleaved[0] = false; 
     243    if (core[0].imageCount == 0) core[0].imageCount = 1; 
     244    core[0].sizeZ = 1; 
     245    core[0].sizeT = getImageCount(); 
     246 
     247    core[0].currentOrder = "XYCTZ"; 
     248    core[0].interleaved = false; 
    249249 
    250250    BufferedImage img = 
    251251      ImageIO.read(new DataInputStream(new RandomAccessStream(currentId))); 
    252     core.sizeX[0] = img.getWidth(); 
    253     core.sizeY[0] = img.getHeight(); 
    254     core.rgb[0] = img.getRaster().getNumBands() > 1; 
    255     core.sizeC[0] = img.getRaster().getNumBands(); 
    256     core.pixelType[0] = ImageTools.getPixelType(img); 
     252    core[0].sizeX = img.getWidth(); 
     253    core[0].sizeY = img.getHeight(); 
     254    core[0].rgb = img.getRaster().getNumBands() > 1; 
     255    core[0].sizeC = img.getRaster().getNumBands(); 
     256    core[0].pixelType = ImageTools.getPixelType(img); 
    257257 
    258258    MetadataStore store = 
  • trunk/loci/formats/in/AVIReader.java

    r4300 r4335  
    285285 
    286286                in.skipBytes(8); 
    287                 core.sizeX[0] = in.readInt(); 
     287                core[0].sizeX = in.readInt(); 
    288288 
    289289                addMeta("Frame height", new Integer(in.readInt())); 
     
    334334                in.skipBytes(4); 
    335335                bmpWidth = in.readInt(); 
    336                 core.sizeY[0] = in.readInt(); 
     336                core[0].sizeY = in.readInt(); 
    337337                in.skipBytes(2); 
    338338                bmpBitsPerPixel = in.readShort(); 
     
    501501    status("Populating metadata"); 
    502502 
    503     core.imageCount[0] = offsets.size(); 
    504  
    505     core.rgb[0] = bmpBitsPerPixel > 8 || (bmpCompression != 0); 
    506     core.indexed[0] = false; 
    507     core.sizeZ[0] = 1; 
    508     core.sizeT[0] = getImageCount(); 
    509     core.littleEndian[0] = true; 
    510     core.interleaved[0] = bmpBitsPerPixel != 16; 
    511     core.sizeC[0] = isRGB() ? 3 : 1; 
    512     core.currentOrder[0] = getSizeC() == 3 ? "XYCTZ" : "XYTCZ"; 
    513     core.falseColor[0] = false; 
    514     core.metadataComplete[0] = true; 
    515  
    516     if (bmpBitsPerPixel <= 8) core.pixelType[0] = FormatTools.UINT8; 
    517     else if (bmpBitsPerPixel == 16) core.pixelType[0] = FormatTools.UINT16; 
    518     else if (bmpBitsPerPixel == 32) core.pixelType[0] = FormatTools.UINT32; 
    519     else if (bmpBitsPerPixel == 24) core.pixelType[0] = FormatTools.UINT8; 
     503    core[0].imageCount = offsets.size(); 
     504 
     505    core[0].rgb = bmpBitsPerPixel > 8 || (bmpCompression != 0); 
     506    core[0].indexed = false; 
     507    core[0].sizeZ = 1; 
     508    core[0].sizeT = getImageCount(); 
     509    core[0].littleEndian = true; 
     510    core[0].interleaved = bmpBitsPerPixel != 16; 
     511    core[0].sizeC = isRGB() ? 3 : 1; 
     512    core[0].currentOrder = getSizeC() == 3 ? "XYCTZ" : "XYTCZ"; 
     513    core[0].falseColor = false; 
     514    core[0].metadataComplete = true; 
     515 
     516    if (bmpBitsPerPixel <= 8) core[0].pixelType = FormatTools.UINT8; 
     517    else if (bmpBitsPerPixel == 16) core[0].pixelType = FormatTools.UINT16; 
     518    else if (bmpBitsPerPixel == 32) core[0].pixelType = FormatTools.UINT32; 
     519    else if (bmpBitsPerPixel == 24) core[0].pixelType = FormatTools.UINT8; 
    520520    else { 
    521521      throw new FormatException( 
     
    523523    } 
    524524 
    525     if (bmpCompression != 0) core.pixelType[0] = FormatTools.UINT8; 
     525    if (bmpCompression != 0) core[0].pixelType = FormatTools.UINT8; 
    526526 
    527527    MetadataStore store = 
     
    569569      buf = codec.decompress(b, options); 
    570570      lastImage = buf; 
    571       if (no == core.imageCount[0] - 1) lastImage = null; 
     571      if (no == core[0].imageCount - 1) lastImage = null; 
    572572      return buf; 
    573573    } 
  • trunk/loci/formats/in/AliconaReader.java

    r4205 r4335  
    150150 
    151151      if (key.equals("TagCount")) count += Integer.parseInt(value); 
    152       else if (key.equals("Rows")) core.sizeY[0] = Integer.parseInt(value); 
    153       else if (key.equals("Cols")) core.sizeX[0] = Integer.parseInt(value); 
     152      else if (key.equals("Rows")) core[0].sizeY = Integer.parseInt(value); 
     153      else if (key.equals("Cols")) core[0].sizeX = Integer.parseInt(value); 
    154154      else if (key.equals("NumberOfPlanes")) { 
    155         core.imageCount[0] = Integer.parseInt(value); 
     155        core[0].imageCount = Integer.parseInt(value); 
    156156      } 
    157157      else if (key.equals("TextureImageOffset")) { 
     
    171171      (getSizeX() * getSizeY() * getImageCount()); 
    172172 
    173     core.sizeC[0] = hasC ? 3 : 1; 
    174     core.sizeZ[0] = 1; 
    175     core.sizeT[0] = getImageCount() / getSizeC(); 
    176     core.rgb[0] = false; 
    177     core.interleaved[0] = false; 
    178     core.littleEndian[0] = true; 
    179  
    180     core.pixelType[0] = numBytes == 2 ? FormatTools.UINT16 : FormatTools.UINT8; 
    181     core.currentOrder[0] = "XYCTZ"; 
    182     core.metadataComplete[0] = true; 
    183     core.indexed[0] = false; 
    184     core.falseColor[0] = false; 
     173    core[0].sizeC = hasC ? 3 : 1; 
     174    core[0].sizeZ = 1; 
     175    core[0].sizeT = getImageCount() / getSizeC(); 
     176    core[0].rgb = false; 
     177    core[0].interleaved = false; 
     178    core[0].littleEndian = true; 
     179 
     180    core[0].pixelType = numBytes == 2 ? FormatTools.UINT16 : FormatTools.UINT8; 
     181    core[0].currentOrder = "XYCTZ"; 
     182    core[0].metadataComplete = true; 
     183    core[0].indexed = false; 
     184    core[0].falseColor = false; 
    185185 
    186186    MetadataStore store = 
  • trunk/loci/formats/in/BMPReader.java

    r4268 r4335  
    187187    // get the dimensions 
    188188 
    189     core.sizeX[0] = in.readInt(); 
    190     //while ((core.sizeX[0] % 2) != 0) core.sizeX[0]++; 
    191     core.sizeY[0] = in.readInt(); 
     189    core[0].sizeX = in.readInt(); 
     190    core[0].sizeY = in.readInt(); 
    192191 
    193192    if (getSizeX() < 1 || getSizeY() < 1) { 
     
    253252    status("Populating metadata"); 
    254253 
    255     core.sizeC[0] = bpp != 24 ? 1 : 3; 
    256     if (bpp == 32) core.sizeC[0] = 4; 
     254    core[0].sizeC = bpp != 24 ? 1 : 3; 
     255    if (bpp == 32) core[0].sizeC = 4; 
    257256    if (bpp > 8) bpp /= getSizeC(); 
    258257 
    259258    switch (bpp) { 
    260259      case 16: 
    261         core.pixelType[0] = FormatTools.UINT16; 
     260        core[0].pixelType = FormatTools.UINT16; 
    262261        break; 
    263262      case 32: 
    264         core.pixelType[0] = FormatTools.UINT32; 
     263        core[0].pixelType = FormatTools.UINT32; 
    265264        break; 
    266265      default: 
    267         core.pixelType[0] = FormatTools.UINT8; 
    268     } 
    269  
    270     core.rgb[0] = getSizeC() > 1; 
    271     core.littleEndian[0] = true; 
    272     core.interleaved[0] = true; 
    273     core.imageCount[0] = 1; 
    274     core.sizeZ[0] = 1; 
    275     core.sizeT[0] = 1; 
    276     core.currentOrder[0] = "XYCTZ"; 
    277     core.metadataComplete[0] = true; 
    278     core.indexed[0] = palette != null; 
     266        core[0].pixelType = FormatTools.UINT8; 
     267    } 
     268 
     269    core[0].rgb = getSizeC() > 1; 
     270    core[0].littleEndian = true; 
     271    core[0].interleaved = true; 
     272    core[0].imageCount = 1; 
     273    core[0].sizeZ = 1; 
     274    core[0].sizeT = 1; 
     275    core[0].currentOrder = "XYCTZ"; 
     276    core[0].metadataComplete = true; 
     277    core[0].indexed = palette != null; 
    279278    if (isIndexed()) { 
    280       core.sizeC[0] = 1; 
    281       core.rgb[0] = false; 
    282     } 
    283     core.falseColor[0] = false; 
     279      core[0].sizeC = 1; 
     280      core[0].rgb = false; 
     281    } 
     282    core[0].falseColor = false; 
    284283 
    285284    // Populate metadata store. 
    286285 
    287     // The metadata store we're working with. 
    288286    MetadataStore store = 
    289287      new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
  • trunk/loci/formats/in/BaseTiffReader.java

    r4328 r4335  
    466466 
    467467    int samples = TiffTools.getSamplesPerPixel(ifd); 
    468     core.rgb[0] = samples > 1 || photo == TiffTools.RGB; 
    469     core.interleaved[0] = false; 
    470     core.littleEndian[0] = TiffTools.isLittleEndian(ifds[0]); 
    471  
    472     core.sizeX[0] = (int) TiffTools.getImageWidth(ifds[0]); 
    473     core.sizeY[0] = (int) TiffTools.getImageLength(ifds[0]); 
    474     core.sizeZ[0] = 1; 
    475     core.sizeC[0] = isRGB() ? samples : 1; 
    476     core.sizeT[0] = ifds.length; 
    477     core.metadataComplete[0] = true; 
    478     core.indexed[0] = photo == TiffTools.RGB_PALETTE && 
     468    core[0].rgb = samples > 1 || photo == TiffTools.RGB; 
     469    core[0].interleaved = false; 
     470    core[0].littleEndian = TiffTools.isLittleEndian(ifds[0]); 
     471 
     472    core[0].sizeX = (int) TiffTools.getImageWidth(ifds[0]); 
     473    core[0].sizeY = (int) TiffTools.getImageLength(ifds[0]); 
     474    core[0].sizeZ = 1; 
     475    core[0].sizeC = isRGB() ? samples : 1; 
     476    core[0].sizeT = ifds.length; 
     477    core[0].metadataComplete = true; 
     478    core[0].indexed = photo == TiffTools.RGB_PALETTE && 
    479479      (get8BitLookupTable() != null || get16BitLookupTable() != null); 
    480480    if (isIndexed()) { 
    481       core.sizeC[0] = 1; 
    482       core.rgb[0] = false; 
    483     } 
    484     if (getSizeC() == 1 && !isIndexed()) core.rgb[0] = false; 
    485     core.falseColor[0] = false; 
    486     core.currentOrder[0] = "XYCZT"; 
    487     core.pixelType[0] = getPixelType(ifds[0]); 
     481      core[0].sizeC = 1; 
     482      core[0].rgb = false; 
     483    } 
     484    if (getSizeC() == 1 && !isIndexed()) core[0].rgb = false; 
     485    core[0].falseColor = false; 
     486    core[0].currentOrder = "XYCZT"; 
     487    core[0].pixelType = getPixelType(ifds[0]); 
    488488  } 
    489489 
  • trunk/loci/formats/in/BioRadReader.java

    r4227 r4335  
    287287    // read header 
    288288 
    289     core.sizeX[0] = in.readShort(); 
    290     core.sizeY[0] = in.readShort(); 
     289    core[0].sizeX = in.readShort(); 
     290    core[0].sizeY = in.readShort(); 
    291291    int npic = in.readShort(); 
    292     core.imageCount[0] = npic; 
     292    core[0].imageCount = npic; 
    293293 
    294294    int ramp1min = in.readShort(); 
    295295    int ramp1max = in.readShort(); 
    296296    boolean notes = in.readInt() != 0; 
    297     core.pixelType[0] = 
     297    core[0].pixelType = 
    298298      in.readShort() == 0 ? FormatTools.UINT16 : FormatTools.UINT8; 
    299299    int imageNumber = in.readShort(); 
     
    340340    Vector pixelSize = new Vector(); 
    341341 
    342     core.sizeZ[0] = getImageCount(); 
    343     core.sizeC[0] = 1; 
    344     core.sizeT[0] = 1; 
    345  
    346     core.orderCertain[0] = false; 
    347     core.rgb[0] = false; 
    348     core.interleaved[0] = false; 
    349     core.littleEndian[0] = LITTLE_ENDIAN; 
    350     core.metadataComplete[0] = true; 
     342    core[0].sizeZ = getImageCount(); 
     343    core[0].sizeC = 1; 
     344    core[0].sizeT = 1; 
     345 
     346    core[0].orderCertain = false; 
     347    core[0].rgb = false; 
     348    core[0].interleaved = false; 
     349    core[0].littleEndian = LITTLE_ENDIAN; 
     350    core[0].metadataComplete = true; 
    351351 
    352352    status("Reading notes"); 
     
    521521                addMeta(key + " time (X) in seconds", params.get(0)); 
    522522                addMeta(key + " time (Y) in seconds", params.get(1)); 
    523                 core.sizeZ[0] = 1; 
    524                 core.sizeT[0] = getImageCount(); 
    525                 core.orderCertain[0] = true; 
     523                core[0].sizeZ = 1; 
     524                core[0].sizeT = getImageCount(); 
     525                core[0].orderCertain = true; 
    526526              } 
    527527              break; 
     
    650650    picFiles = (String[]) pics.toArray(new String[0]); 
    651651 
    652     core.indexed[0] = lut != null; 
    653     core.falseColor[0] = true; 
     652    core[0].indexed = lut != null; 
     653    core[0].falseColor = true; 
    654654 
    655655    // Populate the metadata store 
     
    663663    // populate Pixels 
    664664 
    665     core.currentOrder[0] = "XYCTZ"; 
     665    core[0].currentOrder = "XYCTZ"; 
    666666 
    667667    if (picFiles.length > 0) { 
    668       core.imageCount[0] = npic * picFiles.length; 
    669       core.sizeC[0] = getImageCount() / (getSizeZ() * getSizeT()); 
     668      core[0].imageCount = npic * picFiles.length; 
     669      core[0].sizeC = getImageCount() / (getSizeZ() * getSizeT()); 
    670670    } 
    671671    else picFiles = null; 
     
    684684 
    685685    /* 
    686     for (int i=0; i<core.sizeC[0]; i++) { 
     686    for (int i=0; i<core[0].sizeC; i++) { 
    687687      String gain = i == 0 ? gain1 : i == 1 ? gain2 : gain3; 
    688688      String offset = i == 0 ? offset1 : i == 1 ? gain2 : gain3; 
     
    703703    // CTR FIXME 
    704704//    store.setDisplayOptions(zoom == null ? null : new Float(zoom), 
    705 //      new Boolean(core.sizeC[0] > 1), new Boolean(core.sizeC[0] >= 2), 
    706 //      new Boolean(core.sizeC[0] >= 3), Boolean.FALSE, null, 
     705//      new Boolean(core[0].sizeC > 1), new Boolean(core[0].sizeC >= 2), 
     706//      new Boolean(core[0].sizeC >= 3), Boolean.FALSE, null, 
    707707//      zstart == null ? null : 
    708708//      new Integer((int) (new Double(zstart).doubleValue())), zstop == null ? 
    709709//      null : new Integer((int) (new Double(zstop).doubleValue())), null, null, 
    710 //      null, null, core.sizeC[0] > 1 ? new Integer(0) : null, 
    711 //      core.sizeC[0] > 1 ? new Integer(1) : null, 
    712 //      core.sizeC[0] > 1 ? new Integer(2) : null, new Integer(0)); 
     710//      null, null, core[0].sizeC > 1 ? new Integer(0) : null, 
     711//      core[0].sizeC > 1 ? new Integer(1) : null, 
     712//      core[0].sizeC > 1 ? new Integer(2) : null, new Integer(0)); 
    713713 
    714714    for (int i=0; i<3; i++) { 
     
    764764        int t = sizeT == null ? 1 : Integer.parseInt(sizeT); 
    765765        int count = getSizeZ() * getSizeC() * getSizeT(); 
    766         core.sizeZ[0] = z; 
    767         core.sizeC[0] = c; 
    768         core.sizeT[0] = t; 
    769         if (count >= getImageCount()) core.imageCount[0] = count; 
    770         else core.sizeC[0] = getImageCount() / count; 
     766        core[0].sizeZ = z; 
     767        core[0].sizeC = c; 
     768        core[0].sizeT = t; 
     769        if (count >= getImageCount()) core[0].imageCount = count; 
     770        else core[0].sizeC = getImageCount() / count; 
    771771      } 
    772772      else if (qName.equals("Z") || qName.equals("C") || qName.equals("T")) { 
  • trunk/loci/formats/in/DeltavisionReader.java

    r4268 r4335  
    127127    in.seek(96); 
    128128    in.order(true); 
    129     core.littleEndian[0] = in.readShort() == LITTLE_ENDIAN; 
     129    core[0].littleEndian = in.readShort() == LITTLE_ENDIAN; 
    130130 
    131131    in.order(isLittleEndian()); 
    132132    in.seek(8); 
    133133 
    134     core.imageCount[0] = in.readInt(); 
     134    core[0].imageCount = in.readInt(); 
    135135 
    136136    in.seek(92); 
     
    138138 
    139139    in.seek(0); 
    140     core.sizeX[0] = in.readInt(); 
    141     core.sizeY[0] = in.readInt(); 
     140    core[0].sizeX = in.readInt(); 
     141    core[0].sizeY = in.readInt(); 
    142142 
    143143    addMeta("ImageWidth", new Integer(getSizeX())); 
     
    150150      case 0: 
    151151        pixel = "8 bit unsigned integer"; 
    152         core.pixelType[0] = FormatTools.UINT8; 
     152        core[0].pixelType = FormatTools.UINT8; 
    153153        break; 
    154154      case 1: 
    155155        pixel = "16 bit signed integer"; 
    156         core.pixelType[0] = FormatTools.INT16; 
     156        core[0].pixelType = FormatTools.INT16; 
    157157        break; 
    158158      case 2: 
    159159        pixel = "32 bit floating point"; 
    160         core.pixelType[0] = FormatTools.FLOAT; 
     160        core[0].pixelType = FormatTools.FLOAT; 
    161161        break; 
    162162      case 3: 
    163163        pixel = "16 bit complex"; 
    164         core.pixelType[0] = FormatTools.INT16; 
     164        core[0].pixelType = FormatTools.INT16; 
    165165        break; 
    166166      case 4: 
    167167        pixel = "64 bit complex"; 
    168         core.pixelType[0] = FormatTools.FLOAT; 
     168        core[0].pixelType = FormatTools.FLOAT; 
    169169        break; 
    170170      case 6: 
    171171        pixel = "16 bit unsigned integer"; 
    172         core.pixelType[0] = FormatTools.UINT16; 
     172        core[0].pixelType = FormatTools.UINT16; 
    173173        break; 
    174174      default: 
    175175        pixel = "unknown"; 
    176         core.pixelType[0] = FormatTools.UINT8; 
     176        core[0].pixelType = FormatTools.UINT8; 
    177177    } 
    178178 
     
    257257    addMeta("Wavelength 5 max. intensity", wave5Max); 
    258258 
    259     core.sizeT[0] = in.readShort(); 
     259    core[0].sizeT = in.readShort(); 
    260260    addMeta("Number of timepoints", new Integer(getSizeT())); 
    261261 
     
    278278        imageSequence = "ZTW"; 
    279279    } 
    280     core.currentOrder[0] = "XY" + imageSequence.replaceAll("W", "C"); 
     280    core[0].currentOrder = "XY" + imageSequence.replaceAll("W", "C"); 
    281281    addMeta("Image sequence", imageSequence); 
    282282 
     
    285285    addMeta("Z axis tilt angle", new Float(in.readFloat())); 
    286286 
    287     core.sizeC[0] = in.readShort(); 
     287    core[0].sizeC = in.readShort(); 
    288288    addMeta("Number of wavelengths", new Integer(getSizeC())); 
    289     if (getSizeC() == 0) core.sizeC[0] = 1; 
    290     if (getSizeT() == 0) core.sizeT[0] = 1; 
    291     core.sizeZ[0] = getImageCount() / (getSizeC() * getSizeT()); 
     289    if (getSizeC() == 0) core[0].sizeC = 1; 
     290    if (getSizeT() == 0) core[0].sizeT = 1; 
     291    core[0].sizeZ = getImageCount() / (getSizeC() * getSizeT()); 
    292292    addMeta("Number of focal planes", new Integer(getSizeZ())); 
    293293 
    294     core.rgb[0] = false; 
    295     core.interleaved[0] = false; 
    296     core.metadataComplete[0] = true; 
    297     core.indexed[0] = false; 
    298     core.falseColor[0] = false; 
     294    core[0].rgb = false; 
     295    core[0].interleaved = false; 
     296    core[0].metadataComplete = true; 
     297    core[0].indexed = false; 
     298    core[0].falseColor = false; 
    299299 
    300300    short[] waves = new short[5]; 
  • trunk/loci/formats/in/DicomReader.java

    r4274 r4335  
    319319    in.order(true); 
    320320 
    321     core.littleEndian[0] = true; 
     321    core[0].littleEndian = true; 
    322322    location = 0; 
    323323    isJPEG = false; 
     
    385385          addInfo(tag, s); 
    386386          double frames = Double.parseDouble(s); 
    387           if (frames > 1.0) core.imageCount[0] = (int) frames; 
     387          if (frames > 1.0) core[0].imageCount = (int) frames; 
    388388          break; 
    389389        case SAMPLES_PER_PIXEL: 
     
    395395        case PLANAR_CONFIGURATION: 
    396396          int config = in.readShort(); 
    397           core.interleaved[0] = config == 0; 
     397          core[0].interleaved = config == 0; 
    398398          addInfo(tag, config); 
    399399          break; 
    400400        case ROWS: 
    401           if (getSizeY() == 0) core.sizeY[0] = in.readShort(); 
     401          if (getSizeY() == 0) core[0].sizeY = in.readShort(); 
    402402          else in.skipBytes(2); 
    403403          addInfo(tag, getSizeY()); 
    404404          break; 
    405405        case COLUMNS: 
    406           if (getSizeX() == 0) core.sizeX[0] = in.readShort(); 
     406          if (getSizeX() == 0) core[0].sizeX = in.readShort(); 
    407407          else in.skipBytes(2); 
    408408          addInfo(tag, getSizeX()); 
     
    469469      } 
    470470    } 
    471     if (getImageCount() == 0) core.imageCount[0] = 1; 
     471    if (getImageCount() == 0) core[0].imageCount = 1; 
    472472 
    473473    while (bitsPerPixel % 8 != 0) bitsPerPixel++; 
     
    476476    switch (bitsPerPixel) { 
    477477      case 8: 
    478         core.pixelType[0] = signed ? FormatTools.INT8 : FormatTools.UINT8; 
     478        core[0].pixelType = signed ? FormatTools.INT8 : FormatTools.UINT8; 
    479479        break; 
    480480      case 16: 
    481         core.pixelType[0] = signed ? FormatTools.INT16 : FormatTools.UINT16; 
     481        core[0].pixelType = signed ? FormatTools.INT16 : FormatTools.UINT16; 
    482482        break; 
    483483      case 32: 
    484         core.pixelType[0] = signed ? FormatTools.INT32 : FormatTools.UINT32; 
     484        core[0].pixelType = signed ? FormatTools.INT32 : FormatTools.UINT32; 
    485485        break; 
    486486    } 
     
    541541    status("Populating metadata"); 
    542542 
    543     core.sizeZ[0] = getImageCount(); 
    544     if (getSizeC() == 0) core.sizeC[0] = 1; 
    545     core.rgb[0] = getSizeC() > 1; 
    546     core.sizeT[0] = 1; 
    547     core.currentOrder[0] = "XYCZT"; 
    548     core.metadataComplete[0] = true; 
    549     core.falseColor[0] = false; 
    550     if (isRLE) core.interleaved[0] = false; 
     543    core[0].sizeZ = getImageCount(); 
     544    if (getSizeC() == 0) core[0].sizeC = 1; 
     545    core[0].rgb = getSizeC() > 1; 
     546    core[0].sizeT = 1; 
     547    core[0].currentOrder = "XYCZT"; 
     548    core[0].metadataComplete = true; 
     549    core[0].falseColor = false; 
     550    if (isRLE) core[0].interleaved = false; 
    551551 
    552552    // The metadata store we're working with. 
     
    595595      if (key == null) key = "" + tag; 
    596596      if (key.equals("Samples per pixel")) { 
    597         core.sizeC[0] = Integer.parseInt(info.trim()); 
    598         if (getSizeC() > 1) core.rgb[0] = true; 
     597        core[0].sizeC = Integer.parseInt(info.trim()); 
     598        if (getSizeC() > 1) core[0].rgb = true; 
    599599      } 
    600600      else if (key.equals("Photometric Interpretation")) { 
    601601        if (info.trim().equals("PALETTE COLOR")) { 
    602           core.indexed[0] = true; 
    603           core.sizeC[0] = 1; 
    604           core.rgb[0] = false; 
     602          core[0].indexed = true; 
     603          core[0].sizeC = 1; 
     604          core[0].rgb = false; 
    605605          lut = new byte[3][]; 
    606606        } 
     
    776776    int groupWord = in.readShort(); 
    777777    if (groupWord == 0x0800 && bigEndianTransferSyntax) { 
    778       core.littleEndian[0] = false; 
     778      core[0].littleEndian = false; 
    779779      groupWord = 0x0008; 
    780780      in.order(false); 
  • trunk/loci/formats/in/EPSReader.java

    r4253 r4335  
    185185      ifds = TiffTools.getIFDs(in); 
    186186 
    187       core.sizeX[0] = (int) TiffTools.getImageWidth(ifds[0]); 
    188       core.sizeY[0] = (int) TiffTools.getImageLength(ifds[0]); 
    189       core.sizeZ[0] = 1; 
    190       core.sizeT[0] = 1; 
    191       core.sizeC[0] = TiffTools.getSamplesPerPixel(ifds[0]); 
    192       core.littleEndian[0] = TiffTools.isLittleEndian(ifds[0]); 
    193       core.interleaved[0] = true; 
    194       core.rgb[0] = getSizeC() > 1; 
     187      core[0].sizeX = (int) TiffTools.getImageWidth(ifds[0]); 
     188      core[0].sizeY = (int) TiffTools.getImageLength(ifds[0]); 
     189      core[0].sizeZ = 1; 
     190      core[0].sizeT = 1; 
     191      core[0].sizeC = TiffTools.getSamplesPerPixel(ifds[0]); 
     192      core[0].littleEndian = TiffTools.isLittleEndian(ifds[0]); 
     193      core[0].interleaved = true; 
     194      core[0].rgb = getSizeC() > 1; 
    195195 
    196196      bps = TiffTools.getBitsPerSample(ifds[0])[0]; 
    197197      switch (bps) { 
    198         case 16: core.pixelType[0] = FormatTools.UINT16; break; 
    199         case 32: core.pixelType[0] = FormatTools.UINT32; break; 
    200         default: core.pixelType[0] = FormatTools.UINT8; 
    201       } 
    202  
    203       core.imageCount[0] = 1; 
    204       core.currentOrder[0] = "XYCZT"; 
    205       core.metadataComplete[0] = true; 
    206       core.indexed[0] = false; 
    207       core.falseColor[0] = false; 
     198        case 16: 
     199          core[0].pixelType = FormatTools.UINT16; 
     200          break; 
     201        case 32: 
     202          core[0].pixelType = FormatTools.UINT32; 
     203          break; 
     204        default: 
     205          core[0].pixelType = FormatTools.UINT8; 
     206      } 
     207 
     208      core[0].imageCount = 1; 
     209      core[0].currentOrder = "XYCZT"; 
     210      core[0].metadataComplete = true; 
     211      core[0].indexed = false; 
     212      core[0].falseColor = false; 
    208213 
    209214      MetadataStore store = 
     
    227232      if (line.endsWith(image)) { 
    228233        if (!line.startsWith(image)) { 
    229           if (line.indexOf("colorimage") != -1) core.sizeC[0] = 3; 
     234          if (line.indexOf("colorimage") != -1) core[0].sizeC = 3; 
    230235          StringTokenizer t = new StringTokenizer(line, " "); 
    231236          try { 
    232             core.sizeX[0] = Integer.parseInt(t.nextToken()); 
    233             core.sizeY[0] = Integer.parseInt(t.nextToken()); 
     237            core[0].sizeX = Integer.parseInt(t.nextToken()); 
     238            core[0].sizeY = Integer.parseInt(t.nextToken()); 
    234239            bps = Integer.parseInt(t.nextToken()); 
    235240          } 
    236241          catch (NumberFormatException exc) { 
    237242            if (debug) trace(exc); 
    238             core.sizeC[0] = Integer.parseInt(t.nextToken()); 
     243            core[0].sizeC = Integer.parseInt(t.nextToken()); 
    239244          } 
    240245        } 
     
    249254          int originX = Integer.parseInt(t.nextToken().trim()); 
    250255          int originY = Integer.parseInt(t.nextToken().trim()); 
    251           core.sizeX[0] = Integer.parseInt(t.nextToken().trim()) - originX; 
    252           core.sizeY[0] = Integer.parseInt(t.nextToken().trim()) - originY; 
     256          core[0].sizeX = Integer.parseInt(t.nextToken().trim()) - originX; 
     257          core[0].sizeY = Integer.parseInt(t.nextToken().trim()) - originY; 
    253258 
    254259          addMeta("X-coordinate of origin", new Integer(originX)); 
     
    272277        line = line.substring(11); 
    273278        StringTokenizer t = new StringTokenizer(line, " "); 
    274         core.sizeX[0] = Integer.parseInt(t.nextToken()); 
    275         core.sizeY[0] = Integer.parseInt(t.nextToken()); 
     279        core[0].sizeX = Integer.parseInt(t.nextToken()); 
     280        core[0].sizeY = Integer.parseInt(t.nextToken()); 
    276281        bps = Integer.parseInt(t.nextToken()); 
    277         core.sizeC[0] = Integer.parseInt(t.nextToken()); 
     282        core[0].sizeC = Integer.parseInt(t.nextToken()); 
    278283        while (t.hasMoreTokens()) { 
    279284          image = t.nextToken().trim(); 
     
    291296    if (bps == 0) bps = 8; 
    292297 
    293     if (getSizeC() == 0) core.sizeC[0] = 1; 
    294  
    295     core.sizeZ[0] = 1; 
    296     core.sizeT[0] = 1; 
    297     core.currentOrder[0] = "XYCZT"; 
    298     core.pixelType[0] = FormatTools.UINT8; 
    299     core.rgb[0] = getSizeC() == 3; 
    300     core.interleaved[0] = true; 
    301     core.littleEndian[0] = true; 
    302     core.imageCount[0] = 1; 
     298    if (getSizeC() == 0) core[0].sizeC = 1; 
     299 
     300    core[0].sizeZ = 1; 
     301    core[0].sizeT = 1; 
     302    core[0].currentOrder = "XYCZT"; 
     303    core[0].pixelType = FormatTools.UINT8; 
     304    core[0].rgb = getSizeC() == 3; 
     305    core[0].interleaved = true; 
     306    core[0].littleEndian = true; 
     307    core[0].imageCount = 1; 
    303308 
    304309    // Populate metadata store 
  • trunk/loci/formats/in/FEIReader.java

    r4205 r4335  
    100100    in.seek(0x51a); 
    101101    in.order(true); 
    102     core.sizeX[0] = in.readShort(); 
    103     core.sizeY[0] = in.readShort(); 
     102    core[0].sizeX = in.readShort(); 
     103    core[0].sizeY = in.readShort(); 
    104104 
    105105    originalWidth = getSizeX(); 
     
    108108 
    109109    if (1424 < getSizeX()) { 
    110       core.sizeX[0] = 1424; 
    111       core.sizeY[0] = 968; 
     110      core[0].sizeX = 1424; 
     111      core[0].sizeY = 968; 
    112112    } 
    113113    else { 
    114       core.sizeX[0] = 712; 
    115       core.sizeY[0] = 484; 
     114      core[0].sizeX = 712; 
     115      core[0].sizeY = 484; 
    116116    } 
    117117 
    118118    // always one grayscale plane per file 
    119119 
    120     core.sizeZ[0] = 1; 
    121     core.sizeC[0] = 1; 
    122     core.sizeT[0] = 1; 
    123     core.imageCount[0] = 1; 
    124     core.littleEndian[0] = true; 
    125     core.pixelType[0] = FormatTools.UINT8; 
    126     core.rgb[0] = false; 
    127     core.indexed[0] = false; 
    128     core.interleaved[0] = false; 
    129     core.currentOrder[0] = "XYCZT"; 
     120    core[0].sizeZ = 1; 
     121    core[0].sizeC = 1; 
     122    core[0].sizeT = 1; 
     123    core[0].imageCount = 1; 
     124    core[0].littleEndian = true; 
     125    core[0].pixelType = FormatTools.UINT8; 
     126    core[0].rgb = false; 
     127    core[0].indexed = false; 
     128    core[0].interleaved = false; 
     129    core[0].currentOrder = "XYCZT"; 
    130130 
    131131    MetadataStore store = 
  • trunk/loci/formats/in/FV1000Reader.java

    r4300 r4335  
    546546      if (previewNames.size() > 0) { 
    547547        String previewName = (String) previewNames.get(0); 
    548         core = new CoreMetadata(2); 
     548        core = new CoreMetadata[2]; 
     549        core[0] = new CoreMetadata(); 
     550        core[1] = new CoreMetadata(); 
    549551        Hashtable[] ifds = TiffTools.getIFDs(getFile(previewName)); 
    550         core.imageCount[1] = ifds.length * previewNames.size(); 
    551         core.sizeX[1] = (int) TiffTools.getImageWidth(ifds[0]); 
    552         core.sizeY[1] = (int) TiffTools.getImageLength(ifds[0]); 
    553         core.sizeZ[1] = 1; 
    554         core.sizeT[1] = 1; 
    555         core.sizeC[1] = core.imageCount[1]; 
    556         core.rgb[1] = false; 
     552        core[1].imageCount = ifds.length * previewNames.size(); 
     553        core[1].sizeX = (int) TiffTools.getImageWidth(ifds[0]); 
     554        core[1].sizeY = (int) TiffTools.getImageLength(ifds[0]); 
     555        core[1].sizeZ = 1; 
     556        core[1].sizeT = 1; 
     557        core[1].sizeC = core[1].imageCount; 
     558        core[1].rgb = false; 
    557559        int bits = TiffTools.getBitsPerSample(ifds[0])[0]; 
    558560        while ((bits % 8) != 0) bits++; 
    559561        switch (bits) { 
    560562          case 8: 
    561             core.pixelType[1] = FormatTools.UINT8; 
     563            core[1].pixelType = FormatTools.UINT8; 
    562564            break; 
    563565          case 16: 
    564             core.pixelType[1] = FormatTools.UINT16; 
     566            core[1].pixelType = FormatTools.UINT16; 
    565567            break; 
    566568          case 32: 
    567             core.pixelType[1] = FormatTools.UINT32; 
    568         } 
    569         core.currentOrder[1] = "XYCZT"; 
    570         core.indexed[1] = false; 
    571       } 
    572     } 
    573  
    574     core.imageCount[0] = filenames.size(); 
    575     tiffs = new Vector(core.imageCount[0]); 
     569            core[1].pixelType = FormatTools.UINT32; 
     570        } 
     571        core[1].currentOrder = "XYCZT"; 
     572        core[1].indexed = false; 
     573      } 
     574    } 
     575 
     576    core[0].imageCount = filenames.size(); 
     577    tiffs = new Vector(core[0].imageCount); 
    576578 
    577579    thumbReader = new BMPReader(); 
     
    586588    String tiffPath = null; 
    587589 
    588     for (int i=0, ii=0; ii<core.imageCount[0]; i++, ii++) { 
     590    for (int i=0, ii=0; ii<core[0].imageCount; i++, ii++) { 
    589591      String file = (String) filenames.get(new Integer(i)); 
    590592      while (file == null) file = (String) filenames.get(new Integer(++i)); 
     
    668670      Float pixel = new Float(pixelSize[i]); 
    669671      code[i] = code[i].substring(1, code[i].length() - 1); 
    670       if (code[i].equals("X")) core.sizeX[0] = ss; 
    671       else if (code[i].equals("Y")) core.sizeY[0] = ss; 
     672      if (code[i].equals("X")) core[0].sizeX = ss; 
     673      else if (code[i].equals("Y")) core[0].sizeY = ss; 
    672674      else if (code[i].equals("Z")) { 
    673         core.sizeZ[0] = ss; 
     675        core[0].sizeZ = ss; 
    674676        // Z size stored in nm 
    675677        store.setDimensionsPhysicalSizeZ(new Float(pixel.floatValue() * 0.001), 
     
    677679      } 
    678680      else if (code[i].equals("T")) { 
    679         core.sizeT[0] = ss; 
     681        core[0].sizeT = ss; 
    680682        pixel = new Float(pixel.floatValue() / 1000); 
    681683        store.setDimensionsTimeIncrement(pixel, 0, 0); 
    682684      } 
    683685      else if (ss > 0) { 
    684         if (core.sizeC[0] == 0) core.sizeC[0] = ss; 
    685         else core.sizeC[0] *= ss; 
     686        if (core[0].sizeC == 0) core[0].sizeC = ss; 
     687        else core[0].sizeC *= ss; 
    686688        if (code[i].equals("C")) realChannels = ss; 
    687689      } 
    688690    } 
    689691 
    690     if (core.sizeZ[0] == 0) core.sizeZ[0] = 1; 
    691     if (core.sizeC[0] == 0) core.sizeC[0] = 1; 
    692     if (core.sizeT[0] == 0) core.sizeT[0] = 1; 
    693  
    694     if (core.imageCount[0] == core.sizeC[0]) { 
    695       core.sizeZ[0] = 1; 
    696       core.sizeT[0] = 1; 
    697     } 
    698  
    699     if (core.sizeZ[0] * core.sizeT[0] * core.sizeC[0] > core.imageCount[0]) { 
     692    if (core[0].sizeZ == 0) core[0].sizeZ = 1; 
     693    if (core[0].sizeC == 0) core[0].sizeC = 1; 
     694    if (core[0].sizeT == 0) core[0].sizeT = 1; 
     695 
     696    if (core[0].imageCount == core[0].sizeC) { 
     697      core[0].sizeZ = 1; 
     698      core[0].sizeT = 1; 
     699    } 
     700 
     701    if (core[0].sizeZ * core[0].sizeT * core[0].sizeC > core[0].imageCount) { 
    700702      int diff = 
    701         (core.sizeZ[0] * core.sizeC[0] * core.sizeT[0]) - core.imageCount[0]; 
     703        (core[0].sizeZ * core[0].sizeC * core[0].sizeT) - core[0].imageCount; 
    702704      if (diff == previewNames.size()) { 
    703         if (core.sizeT[0] > 1 && core.sizeZ[0] == 1) core.sizeT[0] -= diff; 
    704         else if (core.sizeZ[0] > 1 && core.sizeT[0] == 1) core.sizeZ[0] -= diff; 
    705       } 
    706       else core.imageCount[0] += diff; 
    707     } 
    708  
    709     core.currentOrder[0] = "XYCZT"; 
     705        if (core[0].sizeT > 1 && core[0].sizeZ == 1) core[0].sizeT -= diff; 
     706        else if (core[0].sizeZ > 1 && core[0].sizeT == 1) core[0].sizeZ -= diff; 
     707      } 
     708      else core[0].imageCount += diff; 
     709    } 
     710 
     711    core[0].currentOrder = "XYCZT"; 
    710712 
    711713    switch (imageDepth) { 
    712714      case 1: 
    713         core.pixelType[0] = FormatTools.UINT8; 
     715        core[0].pixelType = FormatTools.UINT8; 
    714716        break; 
    715717      case 2: 
    716         core.pixelType[0] = FormatTools.UINT16; 
     718        core[0].pixelType = FormatTools.UINT16; 
    717719        break; 
    718720      case 4: 
    719         core.pixelType[0] = FormatTools.UINT32; 
     721        core[0].pixelType = FormatTools.UINT32; 
    720722        break; 
    721723      default: 
     
    735737      Location.mapFile("thumbnail.bmp", new RABytes(b)); 
    736738      thumbReader.setId("thumbnail.bmp"); 
    737       Arrays.fill(core.thumbSizeX, thumbReader.getSizeX()); 
    738       Arrays.fill(core.thumbSizeY, thumbReader.getSizeY()); 
     739      for (int i=0; i<core.length; i++) { 
     740        core[i].thumbSizeX = thumbReader.getSizeX(); 
     741        core[i].thumbSizeY = thumbReader.getSizeY(); 
     742      } 
    739743    } 
    740744    catch (IOException e) { 
     
    744748    // initialize lookup table 
    745749 
    746     lut = new short[core.sizeC[0]][3][65536]; 
     750    lut = new short[core[0].sizeC][3][65536]; 
    747751    byte[] buffer = new byte[65536 * 4]; 
    748     int count = (int) Math.min(core.sizeC[0], lutNames.size()); 
     752    int count = (int) Math.min(core[0].sizeC, lutNames.size()); 
    749753    for (int c=0; c<count; c++) { 
    750754      try { 
     
    765769    } 
    766770 
    767     Arrays.fill(core.rgb, false); 
    768     Arrays.fill(core.littleEndian, true); 
    769     Arrays.fill(core.interleaved, false); 
    770     Arrays.fill(core.metadataComplete, true); 
    771     Arrays.fill(core.indexed, false); 
    772     Arrays.fill(core.falseColor, false); 
     771    for (int i=0; i<core.length; i++) { 
     772      core[i].rgb = false; 
     773      core[i].littleEndian = true; 
     774      core[i].interleaved = false; 
     775      core[i].metadataComplete = true; 
     776      core[i].indexed = false; 
     777      core[i].falseColor = false; 
     778    } 
    773779 
    774780    // populate MetadataStore 
    775781 
    776     for (int i=0; i<core.sizeX.length; i++) { 
     782    for (int i=0; i<core.length; i++) { 
    777783      store.setImageName("Series " + i, i); 
    778784      MetadataTools.setDefaultCreationDate(store, id, i); 
     
    788794    } 
    789795 
    790     for (int i=0; i<core.sizeC[0]; i++) { 
     796    for (int i=0; i<core[0].sizeC; i++) { 
    791797      String name = i < channelNames.size() ? (String) channelNames.get(i) : ""; 
    792798      String emWave = i < emWaves.size() ? (String) emWaves.get(i) : ""; 
  • trunk/loci/formats/in/FitsReader.java

    r4205 r4335  
    115115        int bits = Integer.parseInt(value); 
    116116        switch (bits) { 
    117           case 8: core.pixelType[0] = FormatTools.UINT8; break; 
    118           case 16: core.pixelType[0] = FormatTools.INT16; break; 
    119           case 32: core.pixelType[0] = FormatTools.INT32; break; 
    120           case -32: core.pixelType[0] = FormatTools.FLOAT; break; 
     117          case 8: 
     118            core[0].pixelType = FormatTools.UINT8; 
     119            break; 
     120          case 16: 
     121            core[0].pixelType = FormatTools.INT16; 
     122            break; 
     123          case 32: 
     124            core[0].pixelType = FormatTools.INT32; 
     125            break; 
     126          case -32: 
     127            core[0].pixelType = FormatTools.FLOAT; 
     128            break; 
    121129          default: throw new FormatException("Unsupported pixel type: " + bits); 
    122130        } 
    123131      } 
    124       else if (key.equals("NAXIS1")) core.sizeX[0] = Integer.parseInt(value); 
    125       else if (key.equals("NAXIS2")) core.sizeY[0] = Integer.parseInt(value); 
    126       else if (key.equals("NAXIS3")) core.sizeZ[0] = Integer.parseInt(value); 
     132      else if (key.equals("NAXIS1")) core[0].sizeX = Integer.parseInt(value); 
     133      else if (key.equals("NAXIS2")) core[0].sizeY = Integer.parseInt(value); 
     134      else if (key.equals("NAXIS3")) core[0].sizeZ = Integer.parseInt(value); 
    127135 
    128136      addMeta(key, value); 
    129137    } 
    130138 
    131     core.sizeC[0] = 1; 
    132     core.sizeT[0] = 1; 
    133     if (getSizeZ() == 0) core.sizeZ[0] = 1; 
    134     core.imageCount[0] = core.sizeZ[0]; 
    135     core.rgb[0] = false; 
    136     core.littleEndian[0] = false; 
    137     core.interleaved[0] = false; 
    138     core.currentOrder[0] = "XYZCT"; 
    139     core.indexed[0] = false; 
    140     core.falseColor[0] = false; 
    141     core.metadataComplete[0] = true; 
     139    core[0].sizeC = 1; 
     140    core[0].sizeT = 1; 
     141    if (getSizeZ() == 0) core[0].sizeZ = 1; 
     142    core[0].imageCount = core[0].sizeZ; 
     143    core[0].rgb = false; 
     144    core[0].littleEndian = false; 
     145    core[0].interleaved = false; 
     146    core[0].currentOrder = "XYZCT"; 
     147    core[0].indexed = false; 
     148    core[0].falseColor = false; 
     149    core[0].metadataComplete = true; 
    142150 
    143151    MetadataStore store = 
  • trunk/loci/formats/in/FlexReader.java

    r4274 r4335  
    134134    super.initStandardMetadata(); 
    135135 
    136     Arrays.fill(core.orderCertain, false); 
     136    core[0].orderCertain = false; 
    137137 
    138138    // parse factors from XML 
     
    186186 
    187187    // determine pixel type 
    188     if (factors[max] > 256) core.pixelType[0] = FormatTools.UINT32; 
    189     else if (factors[max] > 1) core.pixelType[0] = FormatTools.UINT16; 
     188    if (factors[max] > 256) core[0].pixelType = FormatTools.UINT32; 
     189    else if (factors[max] > 1) core[0].pixelType = FormatTools.UINT16; 
    190190  } 
    191191 
  • trunk/loci/formats/in/FluoviewReader.java

    r4205 r4335  
    230230    // calculate the dimension order and axis sizes 
    231231 
    232     core.sizeZ[0] = core.sizeC[0] = core.sizeT[0] = 1; 
    233     core.currentOrder[0] = "XY"; 
    234     core.metadataComplete[0] = true; 
     232    core[0].sizeZ = core[0].sizeC = core[0].sizeT = 1; 
     233    core[0].currentOrder = "XY"; 
     234    core[0].metadataComplete = true; 
    235235 
    236236    for (int i=0; i<10; i++) { 
     
    243243 
    244244      if (name.equals("x")) { 
    245         if (getSizeX() == 0) core.sizeX[0] = size; 
     245        if (getSizeX() == 0) core[0].sizeX = size; 
    246246        voxelX = voxel; 
    247247      } 
    248248      else if (name.equals("y")) { 
    249         if (getSizeY() == 0) core.sizeY[0] = size; 
     249        if (getSizeY() == 0) core[0].sizeY = size; 
    250250        voxelY = voxel; 
    251251      } 
    252252      else if (name.equals("z") || name.equals("event")) { 
    253         core.sizeZ[0] *= size; 
     253        core[0].sizeZ *= size; 
    254254        if (getDimensionOrder().indexOf("Z") == -1) { 
    255           core.currentOrder[0] += "Z"; 
     255          core[0].currentOrder += "Z"; 
    256256        } 
    257257        voxelZ = voxel; 
    258258      } 
    259259      else if (name.equals("ch") || name.equals("wavelength")) { 
    260         core.sizeC[0] *= size; 
     260        core[0].sizeC *= size; 
    261261        if (getDimensionOrder().indexOf("C") == -1) { 
    262           core.currentOrder[0] += "C"; 
     262          core[0].currentOrder += "C"; 
    263263        } 
    264264        voxelC = voxel; 
    265265      } 
    266266      else { 
    267         core.sizeT[0] *= size; 
     267        core[0].sizeT *= size; 
    268268        if (getDimensionOrder().indexOf("T") == -1) { 
    269           core.currentOrder[0] += "T"; 
     269          core[0].currentOrder += "T"; 
    270270        } 
    271271        voxelT = voxel; 
     
    273273    } 
    274274 
    275     if (getDimensionOrder().indexOf("Z") == -1) core.currentOrder[0] += "Z"; 
    276     if (getDimensionOrder().indexOf("T") == -1) core.currentOrder[0] += "T"; 
    277     if (getDimensionOrder().indexOf("C") == -1) core.currentOrder[0] += "C"; 
    278  
    279     core.imageCount[0] = ifds.length; 
    280     if (getSizeZ() > ifds.length) core.sizeZ[0] = ifds.length; 
    281     if (getSizeT() > ifds.length) core.sizeT[0] = ifds.length; 
     275    if (getDimensionOrder().indexOf("Z") == -1) core[0].currentOrder += "Z"; 
     276    if (getDimensionOrder().indexOf("T") == -1) core[0].currentOrder += "T"; 
     277    if (getDimensionOrder().indexOf("C") == -1) core[0].currentOrder += "C"; 
     278 
     279    core[0].imageCount = ifds.length; 
     280    if (getSizeZ() > ifds.length) core[0].sizeZ = ifds.length; 
     281    if (getSizeT() > ifds.length) core[0].sizeT = ifds.length; 
    282282 
    283283    if (getImageCount() == 1 && (getSizeT() == getSizeY() || 
     
    285285      getSizeZ() > getImageCount())) 
    286286    { 
    287       core.sizeY[0] = 1; 
    288       core.imageCount[0] = getSizeZ() * getSizeC() * getSizeT(); 
     287      core[0].sizeY = 1; 
     288      core[0].imageCount = getSizeZ() * getSizeC() * getSizeT(); 
    289289    } 
    290290 
     
    410410 
    411411    /* 
    412     for (int i=0; i<core.sizeC[0]; i++) { 
     412    for (int i=0; i<core[0].sizeC; i++) { 
    413413      // CTR CHECK 
    414414//      store.setDisplayChannel(new Integer(i), null, null, 
  • trunk/loci/formats/in/GIFReader.java

    r4205 r4335  
    195195    status("Reading dimensions"); 
    196196 
    197     core.sizeX[0] = in.readShort(); 
    198     core.sizeY[0] = in.readShort(); 
     197    core[0].sizeX = in.readShort(); 
     198    core[0].sizeY = in.readShort(); 
    199199 
    200200    int packed = in.read() & 0xff; 
     
    280280          while (blockSize > 0 && check != -1); 
    281281 
    282           core.imageCount[0]++; 
     282          core[0].imageCount++; 
    283283 
    284284          if (transparency) act[transIndex] = save; 
     
    335335    status("Populating metadata"); 
    336336 
    337     core.sizeZ[0] = 1; 
    338     core.sizeC[0] = 1; 
    339     core.sizeT[0] = getImageCount(); 
    340     core.currentOrder[0] = "XYCTZ"; 
    341     core.rgb[0] = false; 
    342     core.littleEndian[0] = true; 
    343     core.interleaved[0] = true; 
    344     core.metadataComplete[0] = true; 
    345     core.indexed[0] = true; 
    346     core.falseColor[0] = false; 
     337    core[0].sizeZ = 1; 
     338    core[0].sizeC = 1; 
     339    core[0].sizeT = getImageCount(); 
     340    core[0].currentOrder = "XYCTZ"; 
     341    core[0].rgb = false; 
     342    core[0].littleEndian = true; 
     343    core[0].interleaved = true; 
     344    core[0].metadataComplete = true; 
     345    core[0].indexed = true; 
     346    core[0].falseColor = false; 
    347347 
    348348    // populate metadata store 
     
    352352    store.setImageName("", 0); 
    353353    MetadataTools.setDefaultCreationDate(store, id, 0); 
    354     core.pixelType[0] = FormatTools.UINT8; 
     354    core[0].pixelType = FormatTools.UINT8; 
    355355    MetadataTools.populatePixels(store, this); 
    356356  } 
  • trunk/loci/formats/in/GatanReader.java

    r4205 r4335  
    127127    status("Verifying Gatan format"); 
    128128 
    129     core.littleEndian[0] = false; 
     129    core[0].littleEndian = false; 
    130130    pixelSizes = new Vector(); 
    131131 
     
    140140 
    141141    in.skipBytes(4); 
    142     core.littleEndian[0] = in.readInt() == 1; 
     142    core[0].littleEndian = in.readInt() == 1; 
    143143    in.order(!isLittleEndian()); 
    144144 
     
    153153    status("Populating metadata"); 
    154154 
    155     core.littleEndian[0] = true; 
     155    core[0].littleEndian = true; 
    156156 
    157157    if (getSizeX() == 0 || getSizeY() == 0) { 
     
    162162    switch (bytes) { 
    163163      case 1: 
    164         core.pixelType[0] = signed ? FormatTools.INT8 : FormatTools.UINT8; 
     164        core[0].pixelType = signed ? FormatTools.INT8 : FormatTools.UINT8; 
    165165        break; 
    166166      case 2: 
    167         core.pixelType[0] = signed ? FormatTools.INT16 : FormatTools.UINT16; 
     167        core[0].pixelType = signed ? FormatTools.INT16 : FormatTools.UINT16; 
    168168        break; 
    169169      case 4: 
    170         core.pixelType[0] = signed ? FormatTools.INT32 : FormatTools.UINT32; 
     170        core[0].pixelType = signed ? FormatTools.INT32 : FormatTools.UINT32; 
    171171        break; 
    172172      default: 
     
    174174    } 
    175175 
    176     core.sizeZ[0] = 1; 
    177     core.sizeC[0] = 1; 
    178     core.sizeT[0] = 1; 
    179     core.currentOrder[0] = "XYZTC"; 
    180     core.imageCount[0] = 1; 
    181     core.rgb[0] = false; 
    182     core.interleaved[0] = false; 
    183     core.metadataComplete[0] = true; 
    184     core.indexed[0] = false; 
    185     core.falseColor[0] = false; 
     176    core[0].sizeZ = 1; 
     177    core[0].sizeC = 1; 
     178    core[0].sizeT = 1; 
     179    core[0].currentOrder = "XYZTC"; 
     180    core[0].imageCount = 1; 
     181    core[0].rgb = false; 
     182    core[0].interleaved = false; 
     183    core[0].metadataComplete = true; 
     184    core[0].indexed = false; 
     185    core[0].falseColor = false; 
    186186 
    187187    // The metadata store we're working with. 
     
    286286          if ("Dimensions".equals(parent) && labelString.length() == 0) { 
    287287            in.order(!in.isLittleEndian()); 
    288             if (i == 0) core.sizeX[0] = in.readInt(); 
    289             else if (i == 1) core.sizeY[0] = in.readInt(); 
     288            if (i == 0) core[0].sizeX = in.readInt(); 
     289            else if (i == 1) core[0].sizeY = in.readInt(); 
    290290            in.order(!in.isLittleEndian()); 
    291291          } 
  • trunk/loci/formats/in/GelReader.java

    r4200 r4335  
    118118 
    119119    long fmt = TiffTools.getIFDLongValue(ifds[0], MD_FILETAG, true, LINEAR); 
    120     if (fmt == SQUARE_ROOT) core.pixelType[0] = FormatTools.FLOAT; 
     120    if (fmt == SQUARE_ROOT) core[0].pixelType = FormatTools.FLOAT; 
    121121    addMeta("Data format", fmt == SQUARE_ROOT ? "square root" : "linear"); 
    122122 
     
    142142    addMeta("File units", units); 
    143143 
    144     core.imageCount[0] = ifds.length; 
    145     core.sizeT[0] = getImageCount(); 
     144    core[0].imageCount = ifds.length; 
     145    core[0].sizeT = getImageCount(); 
    146146 
    147147    MetadataStore store = 
  • trunk/loci/formats/in/ICSReader.java

    r4268 r4335  
    328328    StringTokenizer t2 = new StringTokenizer(layoutOrder); 
    329329 
    330     core.rgb[0] = layoutOrder.indexOf("ch") >= 0 && 
     330    core[0].rgb = layoutOrder.indexOf("ch") >= 0 && 
    331331      layoutOrder.indexOf("ch") < layoutOrder.indexOf("x"); 
    332     core.currentOrder[0] = "XY"; 
     332    core[0].currentOrder = "XY"; 
    333333 
    334334    // find axis sizes 
     
    343343      } 
    344344      else if (orderToken.equals("x")) { 
    345         core.sizeX[0] = Integer.parseInt(imageToken); 
     345        core[0].sizeX = Integer.parseInt(imageToken); 
    346346      } 
    347347      else if (orderToken.equals("y")) { 
    348         core.sizeY[0] = Integer.parseInt(imageToken); 
     348        core[0].sizeY = Integer.parseInt(imageToken); 
    349349      } 
    350350      else if (orderToken.equals("z")) { 
    351         core.sizeZ[0] = Integer.parseInt(imageToken); 
    352         core.currentOrder[0] += "Z"; 
     351        core[0].sizeZ = Integer.parseInt(imageToken); 
     352        core[0].currentOrder += "Z"; 
    353353      } 
    354354      else if (orderToken.equals("ch")) { 
    355         core.sizeC[0] = Integer.parseInt(imageToken); 
    356         if (getSizeC() > 4) core.rgb[0] = false; 
    357         core.currentOrder[0] += "C"; 
     355        core[0].sizeC = Integer.parseInt(imageToken); 
     356        if (getSizeC() > 4) core[0].rgb = false; 
     357        core[0].currentOrder += "C"; 
    358358      } 
    359359      else { 
    360         core.sizeT[0] = Integer.parseInt(imageToken); 
    361         core.currentOrder[0] += "T"; 
     360        core[0].sizeT = Integer.parseInt(imageToken); 
     361        core[0].currentOrder += "T"; 
    362362      } 
    363363    } 
    364364 
    365365    if (getDimensionOrder().indexOf("Z") == -1) { 
    366       core.currentOrder[0] += "Z"; 
     366      core[0].currentOrder += "Z"; 
    367367    } 
    368368    if (getDimensionOrder().indexOf("T") == -1) { 
    369       core.currentOrder[0] += "T"; 
     369      core[0].currentOrder += "T"; 
    370370    } 
    371371    if (getDimensionOrder().indexOf("C") == -1) { 
    372       core.currentOrder[0] += "C"; 
    373     } 
    374  
    375     if (getSizeZ() == 0) core.sizeZ[0] = 1; 
    376     if (getSizeC() == 0) core.sizeC[0] = 1; 
    377     if (getSizeT() == 0) core.sizeT[0] = 1; 
    378  
    379     if (getImageCount() == 0) core.imageCount[0] = 1; 
    380     core.rgb[0] = isRGB() && getSizeC() > 1; 
    381     core.interleaved[0] = isRGB(); 
    382     core.imageCount[0] = getSizeZ() * getSizeT(); 
    383     if (!isRGB()) core.imageCount[0] *= getSizeC(); 
    384     core.indexed[0] = false; 
    385     core.falseColor[0] = false; 
    386     core.metadataComplete[0] = true; 
     372      core[0].currentOrder += "C"; 
     373    } 
     374 
     375    if (getSizeZ() == 0) core[0].sizeZ = 1; 
     376    if (getSizeC() == 0) core[0].sizeC = 1; 
     377    if (getSizeT() == 0) core[0].sizeT = 1; 
     378 
     379    if (getImageCount() == 0) core[0].imageCount = 1; 
     380    core[0].rgb = isRGB() && getSizeC() > 1; 
     381    core[0].interleaved = isRGB(); 
     382    core[0].imageCount = getSizeZ() * getSizeT(); 
     383    if (!isRGB()) core[0].imageCount *= getSizeC(); 
     384    core[0].indexed = false; 
     385    core[0].falseColor = false; 
     386    core[0].metadataComplete = true; 
    387387 
    388388    String endian = byteOrder; 
    389     core.littleEndian[0] = true; 
     389    core[0].littleEndian = true; 
    390390 
    391391    if (endian != null) { 
     
    393393      String firstByte = endianness.nextToken(); 
    394394      int first = Integer.parseInt(firstByte); 
    395       core.littleEndian[0] = rFormat.equals("real") ? first == 1 : first != 1; 
     395      core[0].littleEndian = rFormat.equals("real") ? first == 1 : first != 1; 
    396396    } 
    397397 
     
    446446    String fmt = rFormat; 
    447447 
    448     if (bitsPerPixel < 32) core.littleEndian[0] = !isLittleEndian(); 
    449  
    450     if (fmt.equals("real")) core.pixelType[0] = FormatTools.FLOAT; 
     448    if (bitsPerPixel < 32) core[0].littleEndian = !isLittleEndian(); 
     449 
     450    if (fmt.equals("real")) core[0].pixelType = FormatTools.FLOAT; 
    451451    else if (fmt.equals("integer")) { 
    452452      while (bitsPerPixel % 8 != 0) bitsPerPixel++; 
     
    455455      switch (bitsPerPixel) { 
    456456        case 8: 
    457           core.pixelType[0] = signed ? FormatTools.INT8 : FormatTools.UINT8; 
     457          core[0].pixelType = signed ? FormatTools.INT8 : FormatTools.UINT8; 
    458458          break; 
    459459        case 16: 
    460           core.pixelType[0] = signed ? FormatTools.INT16 : FormatTools.UINT16; 
     460          core[0].pixelType = signed ? FormatTools.INT16 : FormatTools.UINT16; 
    461461          break; 
    462462        case 32: 
    463           core.pixelType[0] = signed ? FormatTools.INT32 : FormatTools.UINT32; 
     463          core[0].pixelType = signed ? FormatTools.INT32 : FormatTools.UINT32; 
    464464          break; 
    465465      } 
  • trunk/loci/formats/in/IPLabReader.java

    r4205 r4335  
    109109    status("Populating metadata"); 
    110110 
    111     core.littleEndian[0] = in.readString(4).equals("iiii"); 
     111    core[0].littleEndian = in.readString(4).equals("iiii"); 
    112112 
    113113    in.order(isLittleEndian()); 
     
    118118 
    119119    dataSize = in.readInt() - 28; 
    120     core.sizeX[0] = in.readInt(); 
    121     core.sizeY[0] = in.readInt(); 
    122     core.sizeC[0] = in.readInt(); 
    123     core.sizeZ[0] = in.readInt(); 
    124     core.sizeT[0] = in.readInt(); 
     120    core[0].sizeX = in.readInt(); 
     121    core[0].sizeY = in.readInt(); 
     122    core[0].sizeC = in.readInt(); 
     123    core[0].sizeZ = in.readInt(); 
     124    core[0].sizeT = in.readInt(); 
    125125    int filePixelType = in.readInt(); 
    126126 
    127     core.imageCount[0] = getSizeZ() * getSizeT(); 
     127    core[0].imageCount = getSizeZ() * getSizeT(); 
    128128 
    129129    addMeta("Width", new Long(getSizeX())); 
     
    137137      case 0: 
    138138        ptype = "8 bit unsigned"; 
    139         core.pixelType[0] = FormatTools.UINT8; 
     139        core[0].pixelType = FormatTools.UINT8; 
    140140        break; 
    141141      case 1: 
    142142        ptype = "16 bit signed short"; 
    143         core.pixelType[0] = FormatTools.INT16; 
     143        core[0].pixelType = FormatTools.INT16; 
    144144        break; 
    145145      case 2: 
    146146        ptype = "16 bit unsigned short"; 
    147         core.pixelType[0] = FormatTools.UINT16; 
     147        core[0].pixelType = FormatTools.UINT16; 
    148148        break; 
    149149      case 3: 
    150150        ptype = "32 bit signed long"; 
    151         core.pixelType[0] = FormatTools.INT32; 
     151        core[0].pixelType = FormatTools.INT32; 
    152152        break; 
    153153      case 4: 
    154154        ptype = "32 bit single-precision float"; 
    155         core.pixelType[0] = FormatTools.FLOAT; 
     155        core[0].pixelType = FormatTools.FLOAT; 
    156156        break; 
    157157      case 5: 
    158158        ptype = "Color24"; 
    159         core.pixelType[0] = FormatTools.UINT32; 
     159        core[0].pixelType = FormatTools.UINT32; 
    160160        break; 
    161161      case 6: 
    162162        ptype = "Color48"; 
    163         core.pixelType[0] = FormatTools.UINT16; 
     163        core[0].pixelType = FormatTools.UINT16; 
    164164        break; 
    165165      case 10: 
    166166        ptype = "64 bit double-precision float"; 
    167         core.pixelType[0] = FormatTools.DOUBLE; 
     167        core[0].pixelType = FormatTools.DOUBLE; 
    168168        break; 
    169169      default: 
     
    176176    in.skipBytes(dataSize); 
    177177 
    178     core.currentOrder[0] = "XY"; 
    179     if (getSizeC() > 1) core.currentOrder[0] += "CZT"; 
    180     else core.currentOrder[0] += "ZTC"; 
    181  
    182     core.rgb[0] = getSizeC() > 1; 
    183     core.interleaved[0] = false; 
    184     core.indexed[0] = false; 
    185     core.falseColor[0] = false; 
    186     core.metadataComplete[0] = true; 
     178    core[0].currentOrder = "XY"; 
     179    if (getSizeC() > 1) core[0].currentOrder += "CZT"; 
     180    else core[0].currentOrder += "ZTC"; 
     181 
     182    core[0].rgb = getSizeC() > 1; 
     183    core[0].interleaved = false; 
     184    core[0].indexed = false; 
     185    core[0].falseColor = false; 
     186    core[0].metadataComplete = true; 
    187187 
    188188    // The metadata store we're working with. 
     
    255255 
    256256          // CTR CHECK 
    257 //          store.setDisplayChannel(new Integer(core.sizeC[0]), new Double(black), 
     257//          store.setDisplayChannel(new Integer(core[0].sizeC), new Double(black), 
    258258//            new Double(white), new Float(gamma), null); 
    259259        } 
  • trunk/loci/formats/in/IPWReader.java

    r4205 r4335  
    171171            else data = token.trim(); 
    172172            addMeta(label, data); 
    173             if (label.equals("frames")) core.sizeZ[0] = Integer.parseInt(data); 
     173            if (label.equals("frames")) core[0].sizeZ = Integer.parseInt(data); 
    174174            else if (label.equals("slices")) { 
    175               core.sizeT[0] = Integer.parseInt(data); 
     175              core[0].sizeT = Integer.parseInt(data); 
    176176            } 
    177177            else if (label.equals("channels")) { 
    178               core.sizeC[0] = Integer.parseInt(data); 
     178              core[0].sizeC = Integer.parseInt(data); 
    179179            } 
    180180            else if (label.equals("Timestamp")) timestamp = data; 
     
    215215          imageFiles.add(name); 
    216216        } 
    217         core.imageCount[0]++; 
     217        core[0].imageCount++; 
    218218      } 
    219219    } 
     
    226226    stream.close(); 
    227227 
    228     core.rgb[0] = (TiffTools.getIFDIntValue(ifds[0], 
    229       TiffTools.SAMPLES_PER_PIXEL, false, 1) > 1); 
     228    core[0].rgb = TiffTools.getSamplesPerPixel(ifds[0]) > 1; 
    230229 
    231230    if (!isRGB()) { 
    232       core.indexed[0] = TiffTools.getIFDIntValue(ifds[0], 
    233         TiffTools.PHOTOMETRIC_INTERPRETATION, false, 1) == 
     231      core[0].indexed = TiffTools.getPhotometricInterpretation(ifds[0]) == 
    234232        TiffTools.RGB_PALETTE; 
    235233    } 
    236234    if (isIndexed()) { 
    237       core.sizeC[0] = 1; 
    238       core.rgb[0] = false; 
    239     } 
    240  
    241     core.littleEndian[0] = TiffTools.isLittleEndian(ifds[0]); 
     235      core[0].sizeC = 1; 
     236      core[0].rgb = false; 
     237    } 
     238 
     239    core[0].littleEndian = TiffTools.isLittleEndian(ifds[0]); 
    242240 
    243241    // retrieve axis sizes 
     
    248246 
    249247    Hashtable h = ifds[0]; 
    250     core.sizeX[0] = TiffTools.getIFDIntValue(h, TiffTools.IMAGE_WIDTH); 
    251     core.sizeY[0] = TiffTools.getIFDIntValue(h, TiffTools.IMAGE_LENGTH); 
    252     core.currentOrder[0] = isRGB() ? "XYCTZ" : "XYTCZ"; 
    253  
    254     if (getSizeZ() == 0) core.sizeZ[0] = 1; 
    255     if (getSizeC() == 0) core.sizeC[0] = 1; 
    256     if (getSizeT() == 0) core.sizeT[0] = 1; 
     248    core[0].sizeX = (int) TiffTools.getImageWidth(h); 
     249    core[0].sizeY = (int) TiffTools.getImageLength(h); 
     250    core[0].currentOrder = isRGB() ? "XYCTZ" : "XYTCZ"; 
     251 
     252    if (getSizeZ() == 0) core[0].sizeZ = 1; 
     253    if (getSizeC() == 0) core[0].sizeC = 1; 
     254    if (getSizeT() == 0) core[0].sizeT = 1; 
    257255 
    258256    if (getSizeZ() * getSizeC() * getSizeT() == 1 && getImageCount() != 1) { 
    259       core.sizeZ[0] = getImageCount(); 
    260     } 
    261  
    262     if (isRGB()) core.sizeC[0] *= 3; 
     257      core[0].sizeZ = getImageCount(); 
     258    } 
     259 
     260    if (isRGB()) core[0].sizeC *= 3; 
    263261 
    264262    int bitsPerSample = TiffTools.getIFDIntValue(ifds[0], 
     
    269267    if (bitsPerSample == 24 || bitsPerSample == 48) bitsPerSample /= 3; 
    270268 
    271     core.pixelType[0] = FormatTools.UINT8; 
    272  
    273     if (bitFormat == 3) core.pixelType[0] = FormatTools.FLOAT; 
     269    core[0].pixelType = FormatTools.UINT8; 
     270 
     271    if (bitFormat == 3) core[0].pixelType = FormatTools.FLOAT; 
    274272    else if (bitFormat == 2) { 
    275273      switch (bitsPerSample) { 
    276274        case 8: 
    277           core.pixelType[0] = FormatTools.INT8; 
     275          core[0].pixelType = FormatTools.INT8; 
    278276          break; 
    279277        case 16: 
    280           core.pixelType[0] = FormatTools.INT16; 
     278          core[0].pixelType = FormatTools.INT16; 
    281279          break; 
    282280        case 32: 
    283           core.pixelType[0] = FormatTools.INT32; 
     281          core[0].pixelType = FormatTools.INT32; 
    284282          break; 
    285283      } 
     
    288286      switch (bitsPerSample) { 
    289287        case 8: 
    290           core.pixelType[0] = FormatTools.UINT8; 
     288          core[0].pixelType = FormatTools.UINT8; 
    291289          break; 
    292290        case 16: 
    293           core.pixelType[0] = FormatTools.UINT16; 
     291          core[0].pixelType = FormatTools.UINT16; 
    294292          break; 
    295293        case 32: 
    296           core.pixelType[0] = FormatTools.UINT32; 
     294          core[0].pixelType = FormatTools.UINT32; 
    297295          break; 
    298296      } 
  • trunk/loci/formats/in/ImageIOReader.java

    r4334 r4335  
    9797 
    9898    status("Populating metadata"); 
    99     core.imageCount[0] = 1; 
     99    core[0].imageCount = 1; 
    100100    BufferedImage img = 
    101101      ImageIO.read(new DataInputStream(new RandomAccessStream(currentId))); 
    102102 
    103     core.sizeX[0] = img.getWidth(); 
    104     core.sizeY[0] = img.getHeight(); 
     103    core[0].sizeX = img.getWidth(); 
     104    core[0].sizeY = img.getHeight(); 
    105105 
    106     core.rgb[0] = img.getRaster().getNumBands() > 1; 
     106    core[0].rgb = img.getRaster().getNumBands() > 1; 
    107107 
    108     core.sizeZ[0] = 1; 
    109     core.sizeC[0] = isRGB() ? 3 : 1; 
    110     core.sizeT[0] = 1; 
    111     core.currentOrder[0] = "XYCZT"; 
    112     core.pixelType[0] = ImageTools.getPixelType(img); 
    113     core.interleaved[0] = false; 
    114     core.littleEndian[0] = false; 
    115     core.metadataComplete[0] = true; 
    116     core.indexed[0] = false; 
    117     core.falseColor[0] = false; 
     108    core[0].sizeZ = 1; 
     109    core[0].sizeC = isRGB() ? 3 : 1; 
     110    core[0].sizeT = 1; 
     111    core[0].currentOrder = "XYCZT"; 
     112    core[0].pixelType = ImageTools.getPixelType(img); 
     113    core[0].interleaved = false; 
     114    core[0].littleEndian = false; 
     115    core[0].metadataComplete = true; 
     116    core[0].indexed = false; 
     117    core[0].falseColor = false; 
    118118 
    119119    // populate the metadata store 
  • trunk/loci/formats/in/ImarisHDFReader.java

    r4274 r4335  
    179179 
    180180      if (name.equals("X")) { 
    181         core.sizeX[0] = Integer.parseInt(value); 
     181        core[0].sizeX = Integer.parseInt(value); 
    182182      } 
    183183      else if (name.equals("Y")) { 
    184         core.sizeY[0] = Integer.parseInt(value); 
     184        core[0].sizeY = Integer.parseInt(value); 
    185185      } 
    186186      else if (name.equals("Z")) { 
    187         core.sizeZ[0] = Integer.parseInt(value); 
     187        core[0].sizeZ = Integer.parseInt(value); 
    188188      } 
    189189      else if (name.equals("FileTimePoints")) { 
    190         core.sizeT[0] = Integer.parseInt(value); 
     190        core[0].sizeT = Integer.parseInt(value); 
    191191      } 
    192192      else if (name.equals("RecordingEntrySampleSpacing")) { 
     
    227227        int cIndex = Integer.parseInt(attr.substring(underscore, 
    228228          attr.indexOf("/", underscore))); 
    229         if (cIndex == getSizeC()) core.sizeC[0]++; 
     229        if (cIndex == getSizeC()) core[0].sizeC++; 
    230230 
    231231        if (name.equals("Gain")) gain.add(value); 
     
    243243 
    244244    if (seriesCount > 1) { 
    245       int x = core.sizeX[0]; 
    246       int y = core.sizeY[0]; 
    247       int z = core.sizeZ[0]; 
    248       int c = core.sizeC[0]; 
    249       int t = core.sizeT[0]; 
    250       core = new CoreMetadata(seriesCount); 
    251       Arrays.fill(core.sizeX, x); 
    252       Arrays.fill(core.sizeY, y); 
    253       Arrays.fill(core.sizeZ, z); 
    254       Arrays.fill(core.sizeC, c); 
    255       Arrays.fill(core.sizeT, t); 
     245      CoreMetadata oldCore = core[0]; 
     246      core = new CoreMetadata[seriesCount]; 
     247      core[0] = oldCore; 
     248      for (int i=1; i<seriesCount; i++) { 
     249        core[i] = new CoreMetadata(); 
     250      } 
    256251 
    257252      for (int i=1; i<seriesCount; i++) { 
    258253        String groupPath = 
    259254          "/DataSet/ResolutionLevel_" + i + "/TimePoint_0/Channel_0"; 
    260         core.sizeX[i] = 
     255        core[i].sizeX = 
    261256          Integer.parseInt(netcdf.getAttributeValue(groupPath + "/ImageSizeX")); 
    262         core.sizeY[i] = 
     257        core[i].sizeY = 
    263258          Integer.parseInt(netcdf.getAttributeValue(groupPath + "/ImageSizeY")); 
    264         core.sizeZ[i] = 
     259        core[i].sizeZ = 
    265260          Integer.parseInt(netcdf.getAttributeValue(groupPath + "/ImageSizeZ")); 
    266         core.imageCount[i] = core.sizeZ[i] * getSizeC() * getSizeT(); 
    267       } 
    268     } 
    269     core.imageCount[0] = getSizeZ() * getSizeC() * getSizeT(); 
     261        core[i].imageCount = core[i].sizeZ * getSizeC() * getSizeT(); 
     262        core[i].sizeC = getSizeC(); 
     263        core[i].sizeT = getSizeT(); 
     264      } 
     265    } 
     266    core[0].imageCount = getSizeZ() * getSizeC() * getSizeT(); 
    270267 
    271268    // determine pixel type - this isn't stored in the metadata, so we need 
    272269    // to check the pixels themselves 
    273270 
     271    int type = -1; 
     272 
    274273    Object pix = netcdf.getVariableValue( 
    275274      "/DataSet/ResolutionLevel_0/TimePoint_0/Channel_0/Data"); 
    276     if (pix instanceof byte[][][]) { 
    277       Arrays.fill(core.pixelType, FormatTools.UINT8); 
    278     } 
    279     else if (pix instanceof short[][][]) { 
    280       Arrays.fill(core.pixelType, FormatTools.UINT16); 
    281     } 
    282     else if (pix instanceof int[][][]) { 
    283       Arrays.fill(core.pixelType, FormatTools.UINT32); 
    284     } 
    285     else if (pix instanceof float[][][]) { 
    286       Arrays.fill(core.pixelType, FormatTools.FLOAT); 
    287     } 
    288  
    289     Arrays.fill(core.currentOrder, "XYZCT"); 
    290     Arrays.fill(core.rgb, false); 
    291     Arrays.fill(core.thumbSizeX, 128); 
    292     Arrays.fill(core.thumbSizeY, 128); 
    293     Arrays.fill(core.orderCertain, true); 
    294     Arrays.fill(core.littleEndian, true); 
    295     Arrays.fill(core.interleaved, false); 
    296     Arrays.fill(core.indexed, false); 
     275    if (pix instanceof byte[][][]) type = FormatTools.UINT8; 
     276    else if (pix instanceof short[][][]) type = FormatTools.UINT16; 
     277    else if (pix instanceof int[][][]) type = FormatTools.UINT32; 
     278    else if (pix instanceof float[][][]) type = FormatTools.FLOAT; 
     279 
     280    for (int i=0; i<core.length; i++) { 
     281      core[i].pixelType = type; 
     282      core[i].currentOrder = "XYZCT"; 
     283      core[i].rgb = false; 
     284      core[i].thumbSizeX = 128; 
     285      core[i].thumbSizeY = 128; 
     286      core[i].orderCertain = true; 
     287      core[i].littleEndian = true; 
     288      core[i].interleaved = false; 
     289      core[i].indexed = false; 
     290    } 
    297291 
    298292    MetadataTools.populatePixels(store, this); 
    299293    for (int i=0; i<seriesCount; i++) { 
    300294      float px = pixelSizeX, py = pixelSizeY, pz = pixelSizeZ; 
    301       if (px == 1) px = (maxX - minX) / core.sizeX[i]; 
    302       if (py == 1) py = (maxY - minY) / core.sizeY[i]; 
    303       if (pz == 1) pz = (maxZ - minZ) / core.sizeZ[i]; 
     295      if (px == 1) px = (maxX - minX) / core[i].sizeX; 
     296      if (py == 1) py = (maxY - minY) / core[i].sizeY; 
     297      if (pz == 1) pz = (maxZ - minZ) / core[i].sizeZ; 
    304298      store.setDimensionsPhysicalSizeX(new Float(px), i, 0); 
    305299      store.setDimensionsPhysicalSizeY(new Float(py), i, 0); 
     
    311305      store.setImageName("Resolution Level " + s, s); 
    312306      MetadataTools.setDefaultCreationDate(store, id, s); 
    313       for (int i=0; i<core.sizeC[s]; i++) { 
     307      for (int i=0; i<core[s].sizeC; i++) { 
    314308        Float gainValue = null; 
    315309        Integer pinholeValue = null, emWaveValue = null, exWaveValue; 
  • trunk/loci/formats/in/ImarisReader.java

    r4205 r4335  
    8484    FormatTools.checkBufferSize(this, buf.length, w, h); 
    8585 
    86     in.seek(offsets[no] + core.sizeX[0] * (core.sizeY[0] - y - h)); 
     86    in.seek(offsets[no] + getSizeX() * (getSizeY() - y - h)); 
    8787 
    8888    for (int row=h-1; row>=0; row--) { 
    8989      in.skipBytes(x); 
    9090      in.read(buf, row*w, w); 
    91       in.skipBytes(core.sizeX[0] - w - x); 
     91      in.skipBytes(getSizeX() - w - x); 
    9292    } 
    9393    return buf; 
     
    126126    addMeta("Image name", in.readString(128)); 
    127127 
    128     core.sizeX[0] = in.readShort(); 
    129     core.sizeY[0] = in.readShort(); 
    130     core.sizeZ[0] = in.readShort(); 
     128    core[0].sizeX = in.readShort(); 
     129    core[0].sizeY = in.readShort(); 
     130    core[0].sizeZ = in.readShort(); 
    131131 
    132132    in.skipBytes(2); 
    133133 
    134     core.sizeC[0] = in.readInt(); 
     134    core[0].sizeC = in.readInt(); 
    135135    in.skipBytes(2); 
    136136 
     
    148148    status("Calculating image offsets"); 
    149149 
    150     core.imageCount[0] = getSizeZ() * getSizeC(); 
     150    core[0].imageCount = getSizeZ() * getSizeC(); 
    151151    offsets = new int[getImageCount()]; 
    152152 
     
    170170    status("Populating metadata"); 
    171171 
    172     core.sizeT[0] = getImageCount() / (getSizeC() * getSizeZ()); 
    173     core.currentOrder[0] = "XYZCT"; 
    174     core.rgb[0] = false; 
    175     core.interleaved[0] = false; 
    176     core.littleEndian[0] = IS_LITTLE; 
    177     core.indexed[0] = false; 
    178     core.falseColor[0] = false; 
    179     core.metadataComplete[0] = true; 
     172    core[0].sizeT = getImageCount() / (getSizeC() * getSizeZ()); 
     173    core[0].currentOrder = "XYZCT"; 
     174    core[0].rgb = false; 
     175    core[0].interleaved = false; 
     176    core[0].littleEndian = IS_LITTLE; 
     177    core[0].indexed = false; 
     178    core[0].falseColor = false; 
     179    core[0].metadataComplete = true; 
    180180 
    181181    // The metadata store we're working with. 
     
    184184    store.setImageName("", 0); 
    185185    MetadataTools.setDefaultCreationDate(store, id, 0); 
    186     core.pixelType[0] = FormatTools.UINT8; 
     186    core[0].pixelType = FormatTools.UINT8; 
    187187    MetadataTools.populatePixels(store, this); 
    188188 
  • trunk/loci/formats/in/ImarisTiffReader.java

    r4200 r4335  
    9191    status("Populating metadata"); 
    9292 
    93     core.sizeC[0] = ifds.length - 1; 
    94     core.sizeZ[0] = tmp.size() / getSizeC(); 
    95     core.sizeT[0] = 1; 
    96     core.sizeX[0] = (int) TiffTools.getImageWidth(ifds[1]); 
    97     core.sizeY[0] = (int) TiffTools.getImageLength(ifds[1]); 
     93    core[0].sizeC = ifds.length - 1; 
     94    core[0].sizeZ = tmp.size() / getSizeC(); 
     95    core[0].sizeT = 1; 
     96    core[0].sizeX = (int) TiffTools.getImageWidth(ifds[1]); 
     97    core[0].sizeY = (int) TiffTools.getImageLength(ifds[1]); 
    9898 
    9999    ifds = (Hashtable[]) tmp.toArray(new Hashtable[0]); 
    100     core.imageCount[0] = getSizeC() * getSizeZ(); 
    101     core.currentOrder[0] = "XYZCT"; 
    102     core.interleaved[0] = false; 
    103     core.rgb[0] = getImageCount() != getSizeZ() * getSizeC() * getSizeT(); 
    104     core.pixelType[0] = getPixelType(ifds[0]); 
     100    core[0].imageCount = getSizeC() * getSizeZ(); 
     101    core[0].currentOrder = "XYZCT"; 
     102    core[0].interleaved = false; 
     103    core[0].rgb = getImageCount() != getSizeZ() * getSizeC() * getSizeT(); 
     104    core[0].pixelType = getPixelType(ifds[0]); 
    105105 
    106106    status("Parsing comment"); 
  • trunk/loci/formats/in/ImprovisionTiffReader.java

    r4205 r4335  
    126126    if (tt == null) tt = "1"; 
    127127 
    128     core.sizeZ[0] = Integer.parseInt(tz); 
    129     core.sizeC[0] = Integer.parseInt(tc); 
    130     core.sizeT[0] = Integer.parseInt(tt); 
     128    core[0].sizeZ = Integer.parseInt(tz); 
     129    core[0].sizeC = Integer.parseInt(tc); 
     130    core[0].sizeT = Integer.parseInt(tt); 
    131131 
    132132    if (getSizeZ() * getSizeC() * getSizeT() < getImageCount()) { 
    133       core.sizeC[0] = getImageCount(); 
     133      core[0].sizeC = getImageCount(); 
    134134    } 
    135135 
     
    184184    // determine dimension order 
    185185 
    186     core.currentOrder[0] = "XY"; 
     186    core[0].currentOrder = "XY"; 
    187187    for (int i=1; i<coords.length; i++) { 
    188188      int zDiff = coords[i][0] - coords[i - 1][0]; 
     
    191191 
    192192      if (zDiff > 0 && getDimensionOrder().indexOf("Z") < 0) { 
    193         core.currentOrder[0] += "Z"; 
     193        core[0].currentOrder += "Z"; 
    194194      } 
    195195      if (cDiff > 0 && getDimensionOrder().indexOf("C") < 0) { 
    196         core.currentOrder[0] += "C"; 
     196        core[0].currentOrder += "C"; 
    197197      } 
    198198      if (tDiff > 0 && getDimensionOrder().indexOf("T") < 0) { 
    199         core.currentOrder[0] += "T"; 
    200       } 
    201       if (core.currentOrder[0].length() == 5) break; 
    202     } 
    203  
    204     if (getDimensionOrder().indexOf("Z") < 0) core.currentOrder[0] += "Z"; 
    205     if (getDimensionOrder().indexOf("C") < 0) core.currentOrder[0] += "C"; 
    206     if (getDimensionOrder().indexOf("T") < 0) core.currentOrder[0] += "T"; 
     199        core[0].currentOrder += "T"; 
     200      } 
     201      if (core[0].currentOrder.length() == 5) break; 
     202    } 
     203 
     204    if (getDimensionOrder().indexOf("Z") < 0) core[0].currentOrder += "Z"; 
     205    if (getDimensionOrder().indexOf("C") < 0) core[0].currentOrder += "C"; 
     206    if (getDimensionOrder().indexOf("T") < 0) core[0].currentOrder += "T"; 
    207207  } 
    208208 
  • trunk/loci/formats/in/InCellReader.java

    r4314 r4335  
    155155    DataTools.parseXML(b, handler); 
    156156 
    157     core.sizeZ[0] = fieldCount * zCount; 
     157    core[0].sizeZ = fieldCount * zCount; 
    158158 
    159159    seriesCount = totalImages / (getSizeZ() * getSizeC() * getSizeT()); 
     
    163163    int t = getSizeT(); 
    164164 
    165     core = new CoreMetadata(seriesCount); 
    166  
    167     Arrays.fill(core.sizeZ, z); 
    168     Arrays.fill(core.sizeC, c); 
    169     Arrays.fill(core.sizeT, t); 
    170     Arrays.fill(core.imageCount, z * c * t); 
    171     Arrays.fill(core.currentOrder, "XYZCT"); 
     165    core = new CoreMetadata[seriesCount]; 
     166    for (int i=0; i<seriesCount; i++) { 
     167      core[i] = new CoreMetadata(); 
     168      core[i].sizeZ = z; 
     169      core[i].sizeC = c; 
     170      core[i].sizeT = t; 
     171      core[i].imageCount = z * c * t; 
     172      core[i].currentOrder = "XYZCT"; 
     173    } 
    172174 
    173175    tiffReader = new MinimalTiffReader(); 
     
    176178    for (int i=0; i<seriesCount; i++) { 
    177179      tiffReader.setId((String) tiffs.get(i * (tiffs.size() / seriesCount))); 
    178       core.sizeX[i] = tiffReader.getSizeX(); 
    179       core.sizeY[i] = tiffReader.getSizeY(); 
    180       core.interleaved[i] = tiffReader.isInterleaved(); 
    181       core.indexed[i] = tiffReader.isIndexed(); 
    182       core.rgb[i] = tiffReader.isRGB(); 
    183       core.pixelType[i] = tiffReader.getPixelType(); 
    184       core.littleEndian[i] = tiffReader.isLittleEndian(); 
     180      core[i].sizeX = tiffReader.getSizeX(); 
     181      core[i].sizeY = tiffReader.getSizeY(); 
     182      core[i].interleaved = tiffReader.isInterleaved(); 
     183      core[i].indexed = tiffReader.isIndexed(); 
     184      core[i].rgb = tiffReader.isRGB(); 
     185      core[i].pixelType = tiffReader.getPixelType(); 
     186      core[i].littleEndian = tiffReader.isLittleEndian(); 
    185187      store.setImageName("", i); 
    186188      store.setImageCreationDate(creationDate, i); 
    187       for (int q=0; q<core.imageCount[i]; q++) { 
     189      for (int q=0; q<core[i].imageCount; q++) { 
    188190        store.setPlaneTimingDeltaT((Float) timings.get(nextTiming++), i, 0, q); 
    189191        int[] coords = FormatTools.getZCTCoords("XYZCT", z, c, t, z * c * t, q); 
     
    268270        fieldCount = (int) Math.max(fieldCount, field); 
    269271        zCount = (int) Math.max(zCount, z); 
    270         core.sizeC[0] = (int) Math.max(getSizeC(), c); 
    271         core.sizeT[0] = (int) Math.max(getSizeT(), t); 
     272        core[0].sizeC = (int) Math.max(getSizeC(), c); 
     273        core[0].sizeT = (int) Math.max(getSizeT(), t); 
    272274      } 
    273275      else if (qName.equals("Creation")) { 
  • trunk/loci/formats/in/KhorosReader.java

    r4205 r4335  
    115115    in.order(dependency == 4 || dependency == 8); 
    116116 
    117     core.sizeX[0] = in.readInt(); 
    118     core.sizeY[0] = in.readInt(); 
     117    core[0].sizeX = in.readInt(); 
     118    core[0].sizeY = in.readInt(); 
    119119    in.skipBytes(28); 
    120     core.imageCount[0] = in.readInt(); 
    121     if (getImageCount() == 0) core.imageCount[0] = 1; 
    122     core.sizeC[0] = in.readInt(); 
     120    core[0].imageCount = in.readInt(); 
     121    if (getImageCount() == 0) core[0].imageCount = 1; 
     122    core[0].sizeC = in.readInt(); 
    123123 
    124124    int type = in.readInt(); 
     
    126126    switch (type) { 
    127127      case 0: 
    128         core.pixelType[0] = FormatTools.INT8; 
     128        core[0].pixelType = FormatTools.INT8; 
    129129        break; 
    130130      case 1: 
    131         core.pixelType[0] = FormatTools.UINT8; 
     131        core[0].pixelType = FormatTools.UINT8; 
    132132        break; 
    133133      case 2: 
    134         core.pixelType[0] = FormatTools.UINT16; 
     134        core[0].pixelType = FormatTools.UINT16; 
    135135        break; 
    136136      case 4: 
    137         core.pixelType[0] = FormatTools.INT32; 
     137        core[0].pixelType = FormatTools.INT32; 
    138138        break; 
    139139      case 5: 
    140         core.pixelType[0] = FormatTools.FLOAT; 
     140        core[0].pixelType = FormatTools.FLOAT; 
    141141        break; 
    142142      case 9: 
    143         core.pixelType[0] = FormatTools.DOUBLE; 
     143        core[0].pixelType = FormatTools.DOUBLE; 
    144144        break; 
    145145      default: throw new FormatException("Unsupported pixel type : " + type); 
     
    151151    int c = in.readInt(); 
    152152    if (c > 1) { 
    153       core.sizeC[0] = c; 
     153      core[0].sizeC = c; 
    154154      int n = in.readInt(); 
    155155      lut = new byte[n * c]; 
     
    174174    offset = in.getFilePointer(); 
    175175 
    176     core.sizeZ[0] = getImageCount(); 
    177     core.sizeT[0] = 1; 
    178     core.rgb[0] = getSizeC() > 1; 
    179     core.interleaved[0] = false; 
    180     core.littleEndian[0] = dependency == 4 || dependency == 8; 
    181     core.currentOrder[0] = "XYCZT"; 
    182     core.indexed[0] = lut != null; 
    183     core.falseColor[0] = false; 
    184     core.metadataComplete[0] = true; 
     176    core[0].sizeZ = getImageCount(); 
     177    core[0].sizeT = 1; 
     178    core[0].rgb = getSizeC() > 1; 
     179    core[0].interleaved = false; 
     180    core[0].littleEndian = dependency == 4 || dependency == 8; 
     181    core[0].currentOrder = "XYCZT"; 
     182    core[0].indexed = lut != null; 
     183    core[0].falseColor = false; 
     184    core[0].metadataComplete = true; 
    185185 
    186186    if (isIndexed()) { 
    187       core.sizeC[0] = 1; 
    188       core.rgb[0] = false; 
     187      core[0].sizeC = 1; 
     188      core[0].rgb = false; 
    189189    } 
    190190 
  • trunk/loci/formats/in/L2DReader.java

    r4205 r4335  
    156156    tiffs = new Vector[scans.size()]; 
    157157 
    158     core = new CoreMetadata(scans.size()); 
     158    core = new CoreMetadata[scans.size()]; 
    159159 
    160160    for (int i=0; i<scans.size(); i++) { 
     161      core[i] = new CoreMetadata(); 
    161162      tiffs[i] = new Vector(); 
    162163      String scanName = (String) scans.get(i); 
     
    199200 
    200201    for (int i=0; i<scans.size(); i++) { 
    201       core.imageCount[i] = tiffs[i].size(); 
    202       core.sizeC[i] = tiffs[i].size(); 
    203       core.sizeT[i] = 1; 
    204       core.sizeZ[i] = 1; 
    205       core.currentOrder[i] = "XYCZT"; 
     202      core[i].imageCount = tiffs[i].size(); 
     203      core[i].sizeC = tiffs[i].size(); 
     204      core[i].sizeT = 1; 
     205      core[i].sizeZ = 1; 
     206      core[i].currentOrder = "XYCZT"; 
    206207 
    207208      for (int t=0; t<tiffs[i].size(); t++) { 
    208209        reader.setId((String) tiffs[i].get(t)); 
    209210        if (t == 0) { 
    210           core.sizeX[i] = reader.getSizeX(); 
    211           core.sizeY[i] = reader.getSizeY(); 
    212           core.sizeC[i] *= reader.getSizeC(); 
    213           core.rgb[i] = reader.isRGB(); 
    214           core.indexed[i] = reader.isIndexed(); 
    215           core.littleEndian[i] = reader.isLittleEndian(); 
    216           core.pixelType[i] = reader.getPixelType(); 
     211          core[i].sizeX = reader.getSizeX(); 
     212          core[i].sizeY = reader.getSizeY(); 
     213          core[i].sizeC *= reader.getSizeC(); 
     214          core[i].rgb = reader.isRGB(); 
     215          core[i].indexed = reader.isIndexed(); 
     216          core[i].littleEndian = reader.isLittleEndian(); 
     217          core[i].pixelType = reader.getPixelType(); 
    217218        } 
    218219      } 
  • trunk/loci/formats/in/LIFReader.java

    r4330 r4335  
    160160    offsets = new Vector(); 
    161161 
    162     core.littleEndian[0] = true; 
     162    core[0].littleEndian = true; 
    163163    in.order(isLittleEndian()); 
    164164 
     
    309309      new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
    310310 
    311     core = new CoreMetadata(numDatasets); 
    312     Arrays.fill(core.orderCertain, true); 
    313     Arrays.fill(core.currentOrder, "XYCZT"); 
     311    core = new CoreMetadata[numDatasets]; 
    314312 
    315313    for (int i=0; i<numDatasets; i++) { 
    316       core.sizeX[i] = ((Integer) widths.get(i)).intValue(); 
    317       core.sizeY[i] = ((Integer) heights.get(i)).intValue(); 
    318       core.sizeZ[i] = ((Integer) zs.get(i)).intValue(); 
    319       core.sizeC[i] = ((Integer) channels.get(i)).intValue(); 
    320       core.sizeT[i] = ((Integer) ts.get(i)).intValue(); 
     314      core[i] = new CoreMetadata(); 
     315      core[i].orderCertain = true; 
     316      core[i].currentOrder = "XYCZT"; 
     317      core[i].sizeX = ((Integer) widths.get(i)).intValue(); 
     318      core[i].sizeY = ((Integer) heights.get(i)).intValue(); 
     319      core[i].sizeZ = ((Integer) zs.get(i)).intValue(); 
     320      core[i].sizeC = ((Integer) channels.get(i)).intValue(); 
     321      core[i].sizeT = ((Integer) ts.get(i)).intValue(); 
    321322 
    322323      bitsPerPixel[i] = ((Integer) bps.get(i)).intValue(); 
     
    324325 
    325326      if (extraDimensions[i] > 1) { 
    326         if (core.sizeZ[i] == 1) core.sizeZ[i] = extraDimensions[i]; 
    327         else core.sizeT[i] *= extraDimensions[i]; 
     327        if (core[i].sizeZ == 1) core[i].sizeZ = extraDimensions[i]; 
     328        else core[i].sizeT *= extraDimensions[i]; 
    328329        extraDimensions[i] = 1; 
    329330      } 
     
    331332      int nBits = ((Integer) bits.get(i)).intValue(); 
    332333 
    333       core.metadataComplete[i] = true; 
    334       core.littleEndian[i] = true; 
    335       core.rgb[i] = 
    336         nBits == (bitsPerPixel[i] * core.sizeC[i]) && core.sizeC[i] > 1; 
    337       core.interleaved[i] = core.rgb[i]; 
    338       core.imageCount[i] = core.sizeZ[i] * core.sizeT[i]; 
    339       if (!core.rgb[i]) core.imageCount[i] *= core.sizeC[i]; 
    340       core.indexed[i] = false; 
    341       core.falseColor[i] = false; 
     334      core[i].metadataComplete = true; 
     335      core[i].littleEndian = true; 
     336      core[i].rgb = 
     337        nBits == (bitsPerPixel[i] * core[i].sizeC) && core[i].sizeC > 1; 
     338      core[i].interleaved = core[i].rgb; 
     339      core[i].imageCount = core[i].sizeZ * core[i].sizeT; 
     340      if (!core[i].rgb) core[i].imageCount *= core[i].sizeC; 
     341      core[i].indexed = false; 
     342      core[i].falseColor = false; 
    342343 
    343344      while (bitsPerPixel[i] % 8 != 0) bitsPerPixel[i]++; 
    344345      switch (bitsPerPixel[i]) { 
    345346        case 8: 
    346           core.pixelType[i] = FormatTools.UINT8; 
     347          core[i].pixelType = FormatTools.UINT8; 
    347348          break; 
    348349        case 16: 
    349           core.pixelType[i] = FormatTools.UINT16; 
     350          core[i].pixelType = FormatTools.UINT16; 
    350351          break; 
    351352        case 32: 
    352           core.pixelType[i] = FormatTools.FLOAT; 
     353          core[i].pixelType = FormatTools.FLOAT; 
    353354          break; 
    354355      } 
     
    372373//      String zoom = (String) getMeta(seriesName + " - dblZoom"); 
    373374//      store.setDisplayOptions(zoom == null ? null : new Float(zoom), 
    374 //        new Boolean(core.sizeC[i] > 1), new Boolean(core.sizeC[i] > 1), 
    375 //        new Boolean(core.sizeC[i] > 2), new Boolean(isRGB()), null, 
     375//        new Boolean(core[i].sizeC > 1), new Boolean(core[i].sizeC > 1), 
     376//        new Boolean(core[i].sizeC > 2), new Boolean(isRGB()), null, 
    376377//        null, null, null, null, ii, null, null, null, null, null); 
    377378 
     
    380381        String k = (String) keys.nextElement(); 
    381382        if (k.startsWith((String) seriesNames.get(i) + " ")) { 
    382           core.seriesMetadata[i].put(k, metadata.get(k)); 
     383          core[i].seriesMetadata.put(k, metadata.get(k)); 
    383384        } 
    384385      } 
  • trunk/loci/formats/in/LIMReader.java

    r4205 r4335  
    9595    in = new RandomAccessStream(id); 
    9696 
    97     core.littleEndian[0] = true; 
     97    core[0].littleEndian = true; 
    9898    in.order(isLittleEndian()); 
    9999 
    100     core.sizeX[0] = in.readShort() & 0x7fff; 
    101     core.sizeY[0] = in.readShort(); 
     100    core[0].sizeX = in.readShort() & 0x7fff; 
     101    core[0].sizeY = in.readShort(); 
    102102    int bits = in.readShort(); 
    103103 
     
    105105    switch (bits) { 
    106106      case 8: 
    107         core.pixelType[0] = FormatTools.UINT8; 
     107        core[0].pixelType = FormatTools.UINT8; 
    108108        break; 
    109109      case 16: 
    110         core.pixelType[0] = FormatTools.UINT16; 
     110        core[0].pixelType = FormatTools.UINT16; 
    111111        break; 
    112112      case 24: 
    113         core.pixelType[0] = FormatTools.UINT8; 
    114         core.sizeC[0] = 3; 
     113        core[0].pixelType = FormatTools.UINT8; 
     114        core[0].sizeC = 3; 
    115115        break; 
    116116      case 32: 
    117         core.pixelType[0] = FormatTools.UINT32; 
     117        core[0].pixelType = FormatTools.UINT32; 
    118118        break; 
    119119      case 48: 
    120         core.pixelType[0] = FormatTools.UINT16; 
    121         core.sizeC[0] = 3; 
     120        core[0].pixelType = FormatTools.UINT16; 
     121        core[0].sizeC = 3; 
    122122        break; 
    123123      default: 
     
    130130    } 
    131131 
    132     core.imageCount[0] = 1; 
    133     core.sizeZ[0] = 1; 
    134     core.sizeT[0] = 1; 
    135     if (getSizeC() == 0) core.sizeC[0] = 1; 
    136     core.rgb[0] = getSizeC() > 1; 
    137     core.currentOrder[0] = "XYZCT"; 
    138     core.indexed[0] = false; 
    139     core.falseColor[0] = false; 
    140     core.interleaved[0] = true; 
    141     core.metadataComplete[0] = true; 
     132    core[0].imageCount = 1; 
     133    core[0].sizeZ = 1; 
     134    core[0].sizeT = 1; 
     135    if (getSizeC() == 0) core[0].sizeC = 1; 
     136    core[0].rgb = getSizeC() > 1; 
     137    core[0].currentOrder = "XYZCT"; 
     138    core[0].indexed = false; 
     139    core[0].falseColor = false; 
     140    core[0].interleaved = true; 
     141    core[0].metadataComplete = true; 
    142142 
    143143    MetadataStore store = 
  • trunk/loci/formats/in/LegacyND2Reader.java

    r4274 r4335  
    136136      openFile(id); 
    137137      int numSeries = getNumSeries(); 
    138       core = new CoreMetadata(numSeries); 
     138      core = new CoreMetadata[numSeries]; 
    139139 
    140140      for (int i=0; i<numSeries; i++) { 
    141         core.sizeX[i] = getWidth(i); 
    142         if (core.sizeX[i] % 2 != 0) core.sizeX[i]++; 
    143         core.sizeY[i] = getHeight(i); 
    144         core.sizeZ[i] = getZSlices(i); 
    145         core.sizeT[i] = getTFrames(i); 
    146         core.sizeC[i] = getChannels(i); 
     141        core[i] = new CoreMetadata(); 
     142        core[i].sizeX = getWidth(i); 
     143        if (core[i].sizeX % 2 != 0) core[i].sizeX++; 
     144        core[i].sizeY = getHeight(i); 
     145        core[i].sizeZ = getZSlices(i); 
     146        core[i].sizeT = getTFrames(i); 
     147        core[i].sizeC = getChannels(i); 
    147148        int bytes = getBytesPerPixel(i); 
    148149        if (bytes % 3 == 0) { 
    149           core.sizeC[i] *= 3; 
     150          core[i].sizeC *= 3; 
    150151          bytes /= 3; 
    151           core.rgb[i] = true; 
     152          core[i].rgb = true; 
    152153        } 
    153         else core.rgb[i] = false; 
     154        else core[i].rgb = false; 
    154155 
    155156        switch (bytes) { 
    156157          case 1: 
    157             core.pixelType[i] = FormatTools.UINT8; 
     158            core[i].pixelType = FormatTools.UINT8; 
    158159            break; 
    159160          case 2: 
    160             core.pixelType[i] = FormatTools.UINT16; 
     161            core[i].pixelType = FormatTools.UINT16; 
    161162            break; 
    162163          case 4: 
    163             core.pixelType[i] = FormatTools.FLOAT; 
     164            core[i].pixelType = FormatTools.FLOAT; 
    164165            break; 
    165166        } 
    166         core.imageCount[i] = core.sizeZ[i] * core.sizeT[i]; 
    167         if (!core.rgb[i]) core.imageCount[i] *= core.sizeC[i]; 
     167        core[i].imageCount = core[i].sizeZ * core[i].sizeT; 
     168        if (!core[i].rgb) core[i].imageCount *= core[i].sizeC; 
     169        core[i].interleaved = true; 
     170        core[i].littleEndian = true; 
     171        core[i].currentOrder = "XYCZT"; 
     172        core[i].indexed = false; 
     173        core[i].falseColor = false; 
    168174      } 
    169       Arrays.fill(core.interleaved, true); 
    170       Arrays.fill(core.littleEndian, true); 
    171       Arrays.fill(core.currentOrder, "XYCZT"); 
    172       Arrays.fill(core.indexed, false); 
    173       Arrays.fill(core.falseColor, false); 
    174175    } 
    175176    catch (Exception e) { 
     
    179180    MetadataStore store = 
    180181      new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
    181     for (int i=0; i<core.sizeX.length; i++) { 
     182    for (int i=0; i<core.length; i++) { 
    182183      store.setImageName("Series " + i, i); 
    183184      MetadataTools.setDefaultCreationDate(store, id, i); 
  • trunk/loci/formats/in/LegacyQTReader.java

    r4334 r4335  
    210210      } 
    211211      while (time >= 0); 
    212       core.imageCount[0] = v.size(); 
     212      core[0].imageCount = v.size(); 
    213213      times = new int[getImageCount()]; 
    214214      for (int i=0; i<times.length; i++) { 
     
    221221      BufferedImage img = ImageTools.makeBuffered(image); 
    222222 
    223       core.sizeX[0] = img.getWidth(); 
    224       core.sizeY[0] = img.getHeight(); 
    225       core.sizeZ[0] = 1; 
    226       core.sizeC[0] = img.getRaster().getNumBands(); 
    227       core.sizeT[0] = getImageCount(); 
    228       core.pixelType[0] = ImageTools.getPixelType(img); 
    229       core.currentOrder[0] = "XYCTZ"; 
    230       core.rgb[0] = true; 
    231       core.interleaved[0] = false; 
    232       core.littleEndian[0] = false; 
    233       core.indexed[0] = false; 
    234       core.falseColor[0] = false; 
     223      core[0].sizeX = img.getWidth(); 
     224      core[0].sizeY = img.getHeight(); 
     225      core[0].sizeZ = 1; 
     226      core[0].sizeC = img.getRaster().getNumBands(); 
     227      core[0].sizeT = getImageCount(); 
     228      core[0].pixelType = ImageTools.getPixelType(img); 
     229      core[0].currentOrder = "XYCTZ"; 
     230      core[0].rgb = true; 
     231      core[0].interleaved = false; 
     232      core[0].littleEndian = false; 
     233      core[0].indexed = false; 
     234      core[0].falseColor = false; 
    235235 
    236236      MetadataStore store = 
  • trunk/loci/formats/in/LeicaReader.java

    r4300 r4335  
    265265    byte[] fourBytes = new byte[4]; 
    266266    in.read(fourBytes); 
    267     core.littleEndian[0] = (fourBytes[0] == TiffTools.LITTLE && 
     267    core[0].littleEndian = (fourBytes[0] == TiffTools.LITTLE && 
    268268      fourBytes[1] == TiffTools.LITTLE && 
    269269      fourBytes[2] == TiffTools.LITTLE && 
     
    305305    numSeries = v.size(); 
    306306 
    307     core = new CoreMetadata(numSeries); 
     307    core = new CoreMetadata[numSeries]; 
     308    for (int i=0; i<numSeries; i++) { 
     309      core[i] = new CoreMetadata(); 
     310    } 
     311 
    308312    files = new Vector[numSeries]; 
    309313 
     
    317321    status("Parsing metadata blocks"); 
    318322 
    319     core.littleEndian[0] = !isLittleEndian(); 
     323    core[0].littleEndian = !isLittleEndian(); 
    320324 
    321325    int seriesIndex = 0; 
     
    443447      if (files[i] == null) valid[i] = false; 
    444448      else { 
    445         core.imageCount[i] = files[i].size(); 
    446         if (core.imageCount[i] > maxPlanes) maxPlanes = core.imageCount[i]; 
     449        core[i].imageCount = files[i].size(); 
     450        if (core[i].imageCount > maxPlanes) maxPlanes = core[i].imageCount; 
    447451      } 
    448452    } 
     
    455459    numSeries -= invalidCount; 
    456460 
    457     int[] count = core.imageCount; 
     461    int[] count = new int[core.length]; 
     462    for (int i=0; i<core.length; i++) { 
     463      count[i] = core[i].imageCount; 
     464    } 
     465 
    458466    Vector[] tempFiles = files; 
    459467    Hashtable[] tempIFDs = headerIFDs; 
    460     core = new CoreMetadata(numSeries); 
     468    core = new CoreMetadata[numSeries]; 
    461469    files = new Vector[numSeries]; 
    462470    headerIFDs = new Hashtable[numSeries]; 
     
    464472 
    465473    for (int i=0; i<numSeries; i++) { 
     474      core[i] = new CoreMetadata(); 
    466475      while (!valid[index]) index++; 
    467       core.imageCount[i] = count[index]; 
     476      core[i].imageCount = count[index]; 
    468477      files[i] = tempFiles[index]; 
    469478      headerIFDs[i] = tempIFDs[index]; 
     
    497506        if (extLen.intValue() > fileLength) { 
    498507          stream.seek(0); 
    499           core.littleEndian[0] = !isLittleEndian(); 
     508          core[0].littleEndian = !isLittleEndian(); 
    500509          stream.order(isLittleEndian()); 
    501510          fileLength = stream.readInt(); 
     
    514523        s.order(isLittleEndian()); 
    515524 
    516         core.imageCount[i] = s.readInt(); 
    517         core.sizeX[i] = s.readInt(); 
    518         core.sizeY[i] = s.readInt(); 
    519  
    520         addMeta("Number of images", new Integer(core.imageCount[i])); 
    521         addMeta("Image width", new Integer(core.sizeX[i])); 
    522         addMeta("Image height", new Integer(core.sizeY[i])); 
     525        core[i].imageCount = s.readInt(); 
     526        core[i].sizeX = s.readInt(); 
     527        core[i].sizeY = s.readInt(); 
     528 
     529        addMeta("Number of images", new Integer(core[i].imageCount)); 
     530        addMeta("Image width", new Integer(core[i].sizeX)); 
     531        addMeta("Image height", new Integer(core[i].sizeY)); 
    523532        addMeta("Bits per Sample", new Integer(s.readInt())); 
    524533        addMeta("Samples per pixel", new Integer(s.readInt())); 
     
    554563        addMeta("Voxel Version", new Integer(stream.readInt())); 
    555564        int voxelType = stream.readInt(); 
    556         core.rgb[i] = voxelType == 20; 
     565        core[i].rgb = voxelType == 20; 
    557566 
    558567        addMeta("VoxelType", voxelType == 20 ? "RGB" : "gray"); 
     
    564573          case 1: 
    565574          case 3: 
    566             core.pixelType[i] = FormatTools.UINT8; 
     575            core[i].pixelType = FormatTools.UINT8; 
    567576            break; 
    568577          case 2: 
    569578          case 6: 
    570             core.pixelType[i] = FormatTools.UINT16; 
     579            core[i].pixelType = FormatTools.UINT16; 
    571580            break; 
    572581          case 4: 
    573             core.pixelType[i] = FormatTools.UINT32; 
     582            core[i].pixelType = FormatTools.UINT32; 
    574583            break; 
    575584          default: 
     
    578587        } 
    579588 
    580         core.currentOrder[i] = "XY"; 
     589        core[i].currentOrder = "XY"; 
    581590 
    582591        resolution = stream.readInt(); 
     
    597606          int size = stream.readInt(); 
    598607 
    599           if (dimType.equals("x")) core.sizeX[i] = size; 
    600           else if (dimType.equals("y")) core.sizeY[i] = size; 
     608          if (dimType.equals("x")) core[i].sizeX = size; 
     609          else if (dimType.equals("y")) core[i].sizeY = size; 
    601610          else if (dimType.indexOf("z") != -1) { 
    602             core.sizeZ[i] = size; 
    603             if (core.currentOrder[i].indexOf("Z") == -1) { 
    604               core.currentOrder[i] += "Z"; 
     611            core[i].sizeZ = size; 
     612            if (core[i].currentOrder.indexOf("Z") == -1) { 
     613              core[i].currentOrder += "Z"; 
    605614            } 
    606615          } 
    607616          else if (dimType.equals("channel")) { 
    608             core.sizeC[i] = size; 
    609             if (core.currentOrder[i].indexOf("C") == -1) { 
    610               core.currentOrder[i] += "C"; 
     617            core[i].sizeC = size; 
     618            if (core[i].currentOrder.indexOf("C") == -1) { 
     619              core[i].currentOrder += "C"; 
    611620            } 
    612621          } 
    613622          else { 
    614             core.sizeT[i] = size; 
    615             if (core.currentOrder[i].indexOf("T") == -1) { 
    616               core.currentOrder[i] += "T"; 
     623            core[i].sizeT = size; 
     624            if (core[i].currentOrder.indexOf("T") == -1) { 
     625              core[i].currentOrder += "T"; 
    617626            } 
    618627          } 
     
    732741 
    733742        int nChannels = stream.readInt(); 
    734         if (nChannels > 0) core.indexed[i] = true; 
     743        if (nChannels > 0) core[i].indexed = true; 
    735744        addMeta("Number of LUT channels", new Integer(nChannels)); 
    736745        addMeta("ID of colored dimension", new Integer(stream.readInt())); 
     
    757766        stream.close(); 
    758767      } 
    759     } 
    760  
    761     Arrays.fill(core.orderCertain, true); 
    762     Arrays.fill(core.littleEndian, isLittleEndian()); 
    763     Arrays.fill(core.falseColor, true); 
    764     Arrays.fill(core.metadataComplete, true); 
    765     Arrays.fill(core.interleaved, false); 
     768 
     769      core[i].orderCertain = true; 
     770      core[i].littleEndian = isLittleEndian(); 
     771      core[i].falseColor = true; 
     772      core[i].metadataComplete = true; 
     773      core[i].interleaved = false; 
     774    } 
    766775 
    767776    // the metadata store we're working with 
     
    770779 
    771780    for (int i=0; i<numSeries; i++) { 
    772       if (core.sizeZ[i] == 0) core.sizeZ[i] = 1; 
    773       if (core.sizeT[i] == 0) core.sizeT[i] = 1; 
    774       if (core.sizeC[i] == 0) core.sizeC[i] = 1; 
    775       if (core.imageCount[i] == 0) core.imageCount[i] = 1; 
    776       if (core.imageCount[i] == 1 && core.sizeZ[i] > 1) { 
    777         core.sizeZ[i] = 1; 
    778       } 
    779       if (core.imageCount[i] == 1 && core.sizeT[i] > 1) { 
    780         core.sizeT[i] = 1; 
     781      if (core[i].sizeZ == 0) core[i].sizeZ = 1; 
     782      if (core[i].sizeT == 0) core[i].sizeT = 1; 
     783      if (core[i].sizeC == 0) core[i].sizeC = 1; 
     784      if (core[i].imageCount == 0) core[i].imageCount = 1; 
     785      if (core[i].imageCount == 1 && core[i].sizeZ > 1) { 
     786        core[i].sizeZ = 1; 
     787      } 
     788      if (core[i].imageCount == 1 && core[i].sizeT > 1) { 
     789        core[i].sizeT = 1; 
    781790      } 
    782791      tiff.setId((String) files[i].get(0)); 
    783       core.sizeX[i] = tiff.getSizeX(); 
    784       core.sizeY[i] = tiff.getSizeY(); 
    785       core.rgb[i] = tiff.isRGB(); 
    786       core.indexed[i] = tiff.isIndexed(); 
    787       core.sizeC[i] *= tiff.getSizeC(); 
    788  
    789       if (core.currentOrder[i].indexOf("C") == -1) { 
    790         core.currentOrder[i] += "C"; 
    791       } 
    792       if (core.currentOrder[i].indexOf("Z") == -1) { 
    793         core.currentOrder[i] += "Z"; 
    794       } 
    795       if (core.currentOrder[i].indexOf("T") == -1) { 
    796         core.currentOrder[i] += "T"; 
     792      core[i].sizeX = tiff.getSizeX(); 
     793      core[i].sizeY = tiff.getSizeY(); 
     794      core[i].rgb = tiff.isRGB(); 
     795      core[i].indexed = tiff.isIndexed(); 
     796      core[i].sizeC *= tiff.getSizeC(); 
     797 
     798      if (core[i].currentOrder.indexOf("C") == -1) { 
     799        core[i].currentOrder += "C"; 
     800      } 
     801      if (core[i].currentOrder.indexOf("Z") == -1) { 
     802        core[i].currentOrder += "Z"; 
     803      } 
     804      if (core[i].currentOrder.indexOf("T") == -1) { 
     805        core[i].currentOrder += "T"; 
    797806      } 
    798807 
  • trunk/loci/formats/in/MINCReader.java

    r4314 r4335  
    119119    pixelData = (byte[][][]) netcdf.getVariableValue("/image"); 
    120120 
    121     core.sizeX[0] = netcdf.getDimension("/zspace"); 
    122     core.sizeY[0] = netcdf.getDimension("/yspace"); 
    123     core.sizeZ[0] = netcdf.getDimension("/xspace"); 
     121    core[0].sizeX = netcdf.getDimension("/zspace"); 
     122    core[0].sizeY = netcdf.getDimension("/yspace"); 
     123    core[0].sizeZ = netcdf.getDimension("/xspace"); 
    124124 
    125     core.sizeT[0] = 1; 
    126     core.sizeC[0] = 1; 
    127     core.imageCount[0] = core.sizeZ[0]; 
    128     core.rgb[0] = false; 
    129     core.indexed[0] = false; 
    130     core.currentOrder[0] = "XYZCT"; 
    131     core.pixelType[0] = FormatTools.UINT8; 
     125    core[0].sizeT = 1; 
     126    core[0].sizeC = 1; 
     127    core[0].imageCount = core[0].sizeZ; 
     128    core[0].rgb = false; 
     129    core[0].indexed = false; 
     130    core[0].currentOrder = "XYZCT"; 
     131    core[0].pixelType = FormatTools.UINT8; 
    132132 
    133133    addMeta("Comment", netcdf.getAttributeValue("/history")); 
  • trunk/loci/formats/in/MNGReader.java

    r4334 r4335  
    221221    } 
    222222 
    223     core = new CoreMetadata(keys.length); 
     223    core = new CoreMetadata[keys.length]; 
     224 
    224225    offsets = new Vector[keys.length]; 
    225226    lengths = new Vector[keys.length]; 
    226227    for (int i=0; i<keys.length; i++) { 
     228      core[i] = new CoreMetadata(); 
    227229      StringTokenizer st = new StringTokenizer(keys[i], "-"); 
    228       core.sizeX[i] = Integer.parseInt(st.nextToken()); 
    229       core.sizeY[i] = Integer.parseInt(st.nextToken()); 
    230       core.sizeC[i] = Integer.parseInt(st.nextToken()); 
    231       core.pixelType[i] = Integer.parseInt(st.nextToken()); 
    232       core.rgb[i] = core.sizeC[i] > 1; 
     230      core[i].sizeX = Integer.parseInt(st.nextToken()); 
     231      core[i].sizeY = Integer.parseInt(st.nextToken()); 
     232      core[i].sizeC = Integer.parseInt(st.nextToken()); 
     233      core[i].pixelType = Integer.parseInt(st.nextToken()); 
     234      core[i].rgb = core[i].sizeC > 1; 
    233235      offsets[i] = (Vector) seriesOffsets.get(keys[i]); 
    234       core.imageCount[i] = offsets[i].size(); 
    235       core.sizeT[i] = core.imageCount[i]; 
     236      core[i].imageCount = offsets[i].size(); 
     237      core[i].sizeT = core[i].imageCount; 
    236238      lengths[i] = (Vector) seriesLengths.get(keys[i]); 
    237     } 
    238  
    239     Arrays.fill(core.sizeZ, 1); 
    240     Arrays.fill(core.currentOrder, "XYCZT"); 
    241     Arrays.fill(core.interleaved, false); 
    242     Arrays.fill(core.metadataComplete, true); 
    243     Arrays.fill(core.indexed, false); 
    244     Arrays.fill(core.littleEndian, false); 
    245     Arrays.fill(core.falseColor, false); 
     239      core[i].sizeZ = 1; 
     240      core[i].currentOrder = "XYCZT"; 
     241      core[i].interleaved = false; 
     242      core[i].metadataComplete = true; 
     243      core[i].indexed = false; 
     244      core[i].littleEndian = false; 
     245      core[i].falseColor = false; 
     246    } 
    246247 
    247248    MetadataStore store = 
    248249      new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
    249     for (int i=0; i<core.sizeX.length; i++) { 
     250    for (int i=0; i<core.length; i++) { 
    250251      store.setImageName("Series " + i, i); 
    251252      MetadataTools.setDefaultCreationDate(store, id, i); 
  • trunk/loci/formats/in/MRCReader.java

    r4205 r4335  
    103103 
    104104    in.seek(213); 
    105     core.littleEndian[0] = in.read() == 68; 
     105    core[0].littleEndian = in.read() == 68; 
    106106 
    107107    // read dimension information from 1024 byte header 
    108108 
    109109    in.seek(0); 
    110     in.order(core.littleEndian[0]); 
    111  
    112     core.sizeX[0] = in.readInt(); 
    113     core.sizeY[0] = in.readInt(); 
    114     core.sizeZ[0] = in.readInt(); 
    115  
    116     core.sizeC[0] = 1; 
     110    in.order(core[0].littleEndian); 
     111 
     112    core[0].sizeX = in.readInt(); 
     113    core[0].sizeY = in.readInt(); 
     114    core[0].sizeZ = in.readInt(); 
     115 
     116    core[0].sizeC = 1; 
    117117 
    118118    int mode = in.readInt(); 
    119119    switch (mode) { 
    120120      case 0: 
    121         core.pixelType[0] = FormatTools.UINT8; 
     121        core[0].pixelType = FormatTools.UINT8; 
    122122        break; 
    123123      case 1: 
    124         core.pixelType[0] = FormatTools.INT16; 
     124        core[0].pixelType = FormatTools.INT16; 
    125125        break; 
    126126      case 6: 
    127         core.pixelType[0] = FormatTools.UINT16; 
     127        core[0].pixelType = FormatTools.UINT16; 
    128128        break; 
    129129      case 2: 
    130130        isFloat = true; 
    131         core.pixelType[0] = FormatTools.FLOAT; 
     131        core[0].pixelType = FormatTools.FLOAT; 
    132132        break; 
    133133      case 3: 
    134         core.pixelType[0] = FormatTools.UINT32; 
     134        core[0].pixelType = FormatTools.UINT32; 
    135135        break; 
    136136      case 4: 
    137137        isFloat = true; 
    138         core.pixelType[0] = FormatTools.DOUBLE; 
     138        core[0].pixelType = FormatTools.DOUBLE; 
    139139        break; 
    140140      case 16: 
    141         core.sizeC[0] = 3; 
    142         core.pixelType[0] = FormatTools.UINT16; 
     141        core[0].sizeC = 3; 
     142        core[0].pixelType = FormatTools.UINT16; 
    143143        break; 
    144144    } 
     
    209209    status("Populating metadata"); 
    210210 
    211     core.sizeT[0] = 1; 
    212     core.currentOrder[0] = "XYZTC"; 
    213     core.imageCount[0] = getSizeZ(); 
    214     core.rgb[0] = false; 
    215     core.interleaved[0] = true; 
    216     core.indexed[0] = false; 
    217     core.falseColor[0] = false; 
    218     core.metadataComplete[0] = true; 
     211    core[0].sizeT = 1; 
     212    core[0].currentOrder = "XYZTC"; 
     213    core[0].imageCount = getSizeZ(); 
     214    core[0].rgb = false; 
     215    core[0].interleaved = true; 
     216    core[0].indexed = false; 
     217    core[0].falseColor = false; 
     218    core[0].metadataComplete = true; 
    219219 
    220220    MetadataStore store = 
  • trunk/loci/formats/in/MetamorphReader.java

    r4314 r4335  
    128128    } 
    129129 
    130     int[] coords = FormatTools.getZCTCoords(this, no % core.sizeZ[series]); 
    131     int ndx = no / core.sizeZ[series]; 
     130    int[] coords = FormatTools.getZCTCoords(this, no % getSizeZ()); 
     131    int ndx = no / getSizeZ(); 
    132132    String file = stks[series][ndx]; 
    133133 
     
    314314      } 
    315315 
    316       core.sizeZ[0] = zc; 
    317       core.sizeC[0] = cc; 
    318       core.sizeT[0] = tc; 
    319       core.imageCount[0] = zc * tc * cc; 
    320       core.currentOrder[0] = "XYZCT"; 
     316      core[0].sizeZ = zc; 
     317      core[0].sizeC = cc; 
     318      core[0].sizeT = tc; 
     319      core[0].imageCount = zc * tc * cc; 
     320      core[0].currentOrder = "XYZCT"; 
    321321 
    322322      if (stks.length > 1) { 
    323         CoreMetadata newCore = new CoreMetadata(stks.length); 
     323        CoreMetadata[] newCore = new CoreMetadata[stks.length]; 
    324324        for (int i=0; i<stks.length; i++) { 
    325           newCore.sizeX[i] = getSizeX(); 
    326           newCore.sizeY[i] = getSizeY(); 
    327           newCore.sizeZ[i] = getSizeZ(); 
    328           newCore.sizeC[i] = getSizeC(); 
    329           newCore.sizeT[i] = getSizeT(); 
    330           newCore.pixelType[i] = getPixelType(); 
    331           newCore.imageCount[i] = getImageCount(); 
    332           newCore.currentOrder[i] = getDimensionOrder(); 
    333           newCore.rgb[i] = isRGB(); 
    334           newCore.littleEndian[i] = isLittleEndian(); 
    335           newCore.interleaved[i] = isInterleaved(); 
    336           newCore.orderCertain[i] = true; 
    337         } 
    338         newCore.sizeC[0] = stks[0].length / newCore.sizeT[0]; 
    339         newCore.sizeC[1] = stks[1].length / newCore.sizeT[1]; 
    340         newCore.sizeZ[1] = 1; 
    341         newCore.imageCount[0] = 
    342           newCore.sizeC[0] * newCore.sizeT[0] * newCore.sizeZ[0]; 
    343         newCore.imageCount[1] = newCore.sizeC[1] * newCore.sizeT[1]; 
     325          newCore[i] = new CoreMetadata(); 
     326          newCore[i].sizeX = getSizeX(); 
     327          newCore[i].sizeY = getSizeY(); 
     328          newCore[i].sizeZ = getSizeZ(); 
     329          newCore[i].sizeC = getSizeC(); 
     330          newCore[i].sizeT = getSizeT(); 
     331          newCore[i].pixelType = getPixelType(); 
     332          newCore[i].imageCount = getImageCount(); 
     333          newCore[i].currentOrder = getDimensionOrder(); 
     334          newCore[i].rgb = isRGB(); 
     335          newCore[i].littleEndian = isLittleEndian(); 
     336          newCore[i].interleaved = isInterleaved(); 
     337          newCore[i].orderCertain = true; 
     338        } 
     339        newCore[0].sizeC = stks[0].length / newCore[0].sizeT; 
     340        newCore[1].sizeC = stks[1].length / newCore[1].sizeT; 
     341        newCore[1].sizeZ = 1; 
     342        newCore[0].imageCount = 
     343          newCore[0].sizeC * newCore[0].sizeT * newCore[0].sizeZ; 
     344        newCore[1].imageCount = newCore[1].sizeC * newCore[1].sizeT; 
    344345        core = newCore; 
    345346      } 
     
    347348    MetadataStore store = 
    348349      new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
    349     for (int i=0; i<core.imageCount.length; i++) { 
     350    for (int i=0; i<core.length; i++) { 
    350351      MetadataTools.setDefaultCreationDate(store, id, i); 
    351352      store.setImageName("", i); 
     
    377378      // additional image planes 
    378379      long[] uic2 = TiffTools.getIFDLongArray(ifds[0], UIC2TAG, true); 
    379       core.imageCount[0] = uic2.length; 
     380      core[0].imageCount = uic2.length; 
    380381 
    381382      long[] uic3 = TiffTools.getIFDLongArray(ifds[0], UIC3TAG, true); 
     
    506507    try { 
    507508      if (getSizeZ() == 0) { 
    508         core.sizeZ[0] = 
     509        core[0].sizeZ = 
    509510          TiffTools.getIFDLongArray(ifds[0], UIC2TAG, true).length; 
    510511      } 
    511       if (getSizeT() == 0) core.sizeT[0] = getImageCount() / getSizeZ(); 
     512      if (getSizeT() == 0) core[0].sizeT = getImageCount() / getSizeZ(); 
    512513    } 
    513514    catch (FormatException exc) { 
  • trunk/loci/formats/in/MetamorphTiffReader.java

    r4268 r4335  
    112112    } 
    113113 
    114     core.sizeC[0] = 0; 
     114    core[0].sizeC = 0; 
    115115 
    116116    // calculate axis sizes 
     
    121121      if (!uniqueC.contains(c)) { 
    122122        uniqueC.add(c); 
    123         core.sizeC[0]++; 
     123        core[0].sizeC++; 
    124124      } 
    125125    } 
    126126 
    127     core.sizeT[0] = timestamps.size(); 
    128     if (core.sizeT[0] == 0) core.sizeT[0] = 1; 
    129     core.sizeZ[0] = ifds.length / (getSizeT() * getSizeC()); 
     127    core[0].sizeT = timestamps.size(); 
     128    if (core[0].sizeT == 0) core[0].sizeT = 1; 
     129    core[0].sizeZ = ifds.length / (getSizeT() * getSizeC()); 
    130130 
    131131    MetadataStore store = 
  • trunk/loci/formats/in/MicromanagerReader.java

    r4300 r4335  
    221221        value = value.substring(0, value.length() - 1); 
    222222        addMeta(key, value); 
    223         if (key.equals("Channels")) core.sizeC[0] = Integer.parseInt(value); 
     223        if (key.equals("Channels")) core[0].sizeC = Integer.parseInt(value); 
    224224      } 
    225225 
     
    252252    String z = (String) metadata.get("Slices"); 
    253253    if (z != null) { 
    254       core.sizeZ[0] = Integer.parseInt(z); 
    255     } 
    256     else core.sizeZ[0] = 1; 
     254      core[0].sizeZ = Integer.parseInt(z); 
     255    } 
     256    else core[0].sizeZ = 1; 
    257257 
    258258    String t = (String) metadata.get("Frames"); 
    259259    if (t != null) { 
    260       core.sizeT[0] = Integer.parseInt(t); 
    261     } 
    262     else core.sizeT[0] = tiffs.size() / getSizeC(); 
    263  
    264     core.sizeX[0] = tiffReader.getSizeX(); 
    265     core.sizeY[0] = tiffReader.getSizeY(); 
    266     core.currentOrder[0] = "XYZCT"; 
    267     core.pixelType[0] = tiffReader.getPixelType(); 
    268     core.rgb[0] = tiffReader.isRGB(); 
    269     core.interleaved[0] = false; 
    270     core.littleEndian[0] = tiffReader.isLittleEndian(); 
    271     core.imageCount[0] = tiffs.size(); 
    272     core.indexed[0] = false; 
    273     core.falseColor[0] = false; 
    274     core.metadataComplete[0] = true; 
     260      core[0].sizeT = Integer.parseInt(t); 
     261    } 
     262    else core[0].sizeT = tiffs.size() / getSizeC(); 
     263 
     264    core[0].sizeX = tiffReader.getSizeX(); 
     265    core[0].sizeY = tiffReader.getSizeY(); 
     266    core[0].currentOrder = "XYZCT"; 
     267    core[0].pixelType = tiffReader.getPixelType(); 
     268    core[0].rgb = tiffReader.isRGB(); 
     269    core[0].interleaved = false; 
     270    core[0].littleEndian = tiffReader.isLittleEndian(); 
     271    core[0].imageCount = tiffs.size(); 
     272    core[0].indexed = false; 
     273    core[0].falseColor = false; 
     274    core[0].metadataComplete = true; 
    275275 
    276276    store.setImageName("", 0); 
  • trunk/loci/formats/in/MinimalTiffReader.java

    r4268 r4335  
    155155    status("Populating metadata"); 
    156156 
    157     core.imageCount[0] = ifds.length; 
     157    core[0].imageCount = ifds.length; 
    158158 
    159159    int photo = TiffTools.getPhotometricInterpretation(ifds[0]); 
    160160    int samples = TiffTools.getSamplesPerPixel(ifds[0]); 
    161     core.rgb[0] = samples > 1 || photo == TiffTools.RGB; 
    162     core.interleaved[0] = false; 
    163     core.littleEndian[0] = TiffTools.isLittleEndian(ifds[0]); 
    164  
    165     core.sizeX[0] = (int) TiffTools.getImageWidth(ifds[0]); 
    166     core.sizeY[0] = (int) TiffTools.getImageLength(ifds[0]); 
    167     core.sizeZ[0] = 1; 
    168     core.sizeC[0] = isRGB() ? samples : 1; 
    169     core.sizeT[0] = ifds.length; 
    170     core.pixelType[0] = getPixelType(ifds[0]); 
    171     core.metadataComplete[0] = true; 
    172     core.indexed[0] = photo == TiffTools.RGB_PALETTE && 
     161    core[0].rgb = samples > 1 || photo == TiffTools.RGB; 
     162    core[0].interleaved = false; 
     163    core[0].littleEndian = TiffTools.isLittleEndian(ifds[0]); 
     164 
     165    core[0].sizeX = (int) TiffTools.getImageWidth(ifds[0]); 
     166    core[0].sizeY = (int) TiffTools.getImageLength(ifds[0]); 
     167    core[0].sizeZ = 1; 
     168    core[0].sizeC = isRGB() ? samples : 1; 
     169    core[0].sizeT = ifds.length; 
     170    core[0].pixelType = getPixelType(ifds[0]); 
     171    core[0].metadataComplete = true; 
     172    core[0].indexed = photo == TiffTools.RGB_PALETTE && 
    173173      (get8BitLookupTable() != null || get16BitLookupTable() != null); 
    174174    if (isIndexed()) { 
    175       core.sizeC[0] = 1; 
    176       core.rgb[0] = false; 
    177     } 
    178     if (getSizeC() == 1 && !isIndexed()) core.rgb[0] = false; 
    179     core.falseColor[0] = false; 
    180     core.currentOrder[0] = "XYCZT"; 
     175      core[0].sizeC = 1; 
     176      core[0].rgb = false; 
     177    } 
     178    if (getSizeC() == 1 && !isIndexed()) core[0].rgb = false; 
     179    core[0].falseColor = false; 
     180    core[0].currentOrder = "XYCZT"; 
    181181  } 
    182182 
  • trunk/loci/formats/in/NAFReader.java

    r4205 r4335  
    110110 
    111111    offsets = new long[seriesCount]; 
    112     core = new CoreMetadata(seriesCount); 
    113     Arrays.fill(core.littleEndian, little); 
     112    core = new CoreMetadata[seriesCount]; 
    114113    for (int i=0; i<seriesCount; i++) { 
    115114      in.seek(fp + i*256); 
    116       core.sizeX[i] = in.readInt(); 
    117       core.sizeY[i] = in.readInt(); 
     115      core[i] = new CoreMetadata(); 
     116      core[i].littleEndian = little; 
     117      core[i].sizeX = in.readInt(); 
     118      core[i].sizeY = in.readInt(); 
    118119      int numBits = in.readInt(); 
    119       core.sizeC[i] = in.readInt(); 
    120       core.sizeZ[i] = in.readInt(); 
    121       core.sizeT[i] = in.readInt(); 
    122  
    123       core.imageCount[i] = core.sizeZ[i] * core.sizeC[i] * core.sizeT[i]; 
     120      core[i].sizeC = in.readInt(); 
     121      core[i].sizeZ = in.readInt(); 
     122      core[i].sizeT = in.readInt(); 
     123 
     124      core[i].imageCount = core[i].sizeZ * core[i].sizeC * core[i].sizeT; 
    124125      switch (numBits) { 
    125126        case 8: 
    126           core.pixelType[i] = FormatTools.UINT8; 
     127          core[i].pixelType = FormatTools.UINT8; 
    127128          break; 
    128129        case 16: 
    129           core.pixelType[i] = FormatTools.UINT16; 
     130          core[i].pixelType = FormatTools.UINT16; 
    130131          break; 
    131132        case 32: 
    132           core.pixelType[i] = FormatTools.UINT32; 
     133          core[i].pixelType = FormatTools.UINT32; 
    133134          break; 
    134135        case 64: 
    135           core.pixelType[i] = FormatTools.DOUBLE; 
    136           break; 
    137       } 
    138  
    139       core.currentOrder[i] = "XYCZT"; 
    140       core.rgb[i] = false; 
     136          core[i].pixelType = FormatTools.DOUBLE; 
     137          break; 
     138      } 
     139 
     140      core[i].currentOrder = "XYCZT"; 
     141      core[i].rgb = false; 
    141142 
    142143      in.skipBytes(4); 
     
    157158      } 
    158159      else { 
    159         offsets[i] = offsets[i - 1] + core.sizeX[i - 1] * core.sizeY[i - 1] * 
    160           core.imageCount[i - 1] * 
    161           FormatTools.getBytesPerPixel(core.pixelType[i - 1]); 
     160        offsets[i] = offsets[i - 1] + core[i - 1].sizeX * core[i - 1].sizeY * 
     161          core[i - 1].imageCount * 
     162          FormatTools.getBytesPerPixel(core[i - 1].pixelType); 
    162163      } 
    163164      offsets[i] += 352; 
     
    188189      if (i == offsets.length - 1 && !compressed && i > 0) { 
    189190        offsets[i] = (int) (in.length() - 
    190           (core.sizeX[i] * core.sizeY[i] * core.imageCount[i] * (numBits / 8))); 
     191          (core[i].sizeX * core[i].sizeY * core[i].imageCount * (numBits / 8))); 
    191192      } 
    192193    } 
  • trunk/loci/formats/in/ND2Reader.java

    r4314 r4335  
    308308      long planeSize = getSizeX() * getSizeY() * 
    309309        FormatTools.getBytesPerPixel(getPixelType()) * getSizeC(); 
    310       if (planeSize * getImageCount() * core.imageCount.length >= 
     310      if (planeSize * getImageCount() * core.length >= 
    311311        in.length() && !isLossless) 
    312312      { 
    313313        int approxPlanes = (int) (in.length() / planeSize); 
    314         core.sizeT[0] = approxPlanes / core.imageCount.length; 
    315         if (getSizeT() * core.imageCount.length < approxPlanes) { 
    316           core.sizeT[0]++; 
    317         } 
    318         core.imageCount[0] = getSizeT(); 
    319         core.sizeZ[0] = 1; 
     314        core[0].sizeT = approxPlanes / core.length; 
     315        if (getSizeT() * core.length < approxPlanes) { 
     316          core[0].sizeT++; 
     317        } 
     318        core[0].imageCount = getSizeT(); 
     319        core[0].sizeZ = 1; 
    320320      } 
    321321 
     
    349349      offsets = new long[numSeries][getImageCount()]; 
    350350 
    351       if (getSizeZ() == 0) Arrays.fill(core.sizeZ, 1); 
    352       if (getSizeT() == 0) Arrays.fill(core.sizeT, 1); 
     351      if (getSizeZ() == 0) { 
     352        for (int i=0; i<core.length; i++) { 
     353          core[i].sizeZ = 1; 
     354        } 
     355      } 
     356      if (getSizeT() == 0) { 
     357        for (int i=0; i<core.length; i++) { 
     358          core[i].sizeT = 1; 
     359        } 
     360      } 
    353361 
    354362      for (int i=0; i<imageOffsets.size(); i++) { 
     
    369377 
    370378        if (getSizeC() == 0) { 
    371           Arrays.fill(core.sizeC, length / (getSizeX() * getSizeY() * 
    372             FormatTools.getBytesPerPixel(getPixelType()))); 
     379          int sizeC = length / (getSizeX() * getSizeY() * 
     380            FormatTools.getBytesPerPixel(getPixelType())); 
     381          for (int q=0; q<core.length; q++) { 
     382            core[q].sizeC = sizeC; 
     383          } 
    373384        } 
    374385 
     
    390401      } 
    391402 
    392       if (offsets.length != core.imageCount.length) { 
     403      if (offsets.length != core.length) { 
    393404        int x = getSizeX(); 
    394405        int y = getSizeY(); 
     
    396407        int pixelType = getPixelType(); 
    397408        boolean rgb = isRGB(); 
    398         core = new CoreMetadata(offsets.length); 
    399         Arrays.fill(core.sizeX, x); 
    400         Arrays.fill(core.sizeY, y); 
    401         Arrays.fill(core.sizeC, c == 0 ? 1 : c); 
    402         Arrays.fill(core.pixelType, pixelType); 
    403         Arrays.fill(core.rgb, rgb); 
    404         Arrays.fill(core.sizeZ, 1); 
     409        core = new CoreMetadata[offsets.length]; 
    405410        for (int i=0; i<offsets.length; i++) { 
     411          core[i] = new CoreMetadata(); 
     412          core[i].sizeX = x; 
     413          core[i].sizeY = y; 
     414          core[i].sizeC = c == 0 ? 1 : c; 
     415          core[i].pixelType = pixelType; 
     416          core[i].rgb = rgb; 
     417          core[i].sizeZ = 1; 
     418 
    406419          int invalid = 0; 
    407420          for (int q=0; q<offsets[i].length; q++) { 
    408421            if (offsets[i][q] == 0) invalid++; 
    409422          } 
    410           core.sizeT[i] = (offsets[i].length - invalid) / core.sizeC[i]; 
    411           if (core.sizeT[i] == 0) core.sizeT[i] = 1; 
    412           core.imageCount[i] = offsets[i].length - invalid; 
     423          core[i].sizeT = (offsets[i].length - invalid) / core[i].sizeC; 
     424          if (core[i].sizeT == 0) core[i].sizeT = 1; 
     425          core[i].imageCount = offsets[i].length - invalid; 
    413426        } 
    414427      } 
    415428      else { 
    416         Arrays.fill(core.sizeX, getSizeX()); 
    417         Arrays.fill(core.sizeY, getSizeY()); 
    418         Arrays.fill(core.sizeC, getSizeC() == 0 ? 1 : getSizeC()); 
    419         Arrays.fill(core.sizeZ, getSizeZ() == 0 ? 1 : getSizeZ()); 
    420         Arrays.fill(core.sizeT, getSizeT() == 0 ? 1 : getSizeT()); 
    421         Arrays.fill(core.imageCount, getImageCount()); 
    422         Arrays.fill(core.pixelType, getPixelType()); 
    423       } 
    424  
    425       Arrays.fill(core.currentOrder, "XYCZT"); 
    426       Arrays.fill(core.rgb, getSizeC() > 1); 
     429        for (int i=0; i<core.length; i++) { 
     430          core[i].sizeX = getSizeX(); 
     431          core[i].sizeY = getSizeY(); 
     432          core[i].sizeC = getSizeC() == 0 ? 1 : getSizeC(); 
     433          core[i].sizeZ = getSizeZ() == 0 ? 1 : getSizeZ(); 
     434          core[i].sizeT = getSizeT() == 0 ? 1 : getSizeT(); 
     435          core[i].imageCount = getImageCount(); 
     436          core[i].pixelType = getPixelType(); 
     437        } 
     438      } 
     439 
     440      for (int i=0; i<core.length; i++) { 
     441        core[i].currentOrder = "XYCZT"; 
     442        core[i].rgb = getSizeC() > 1; 
     443        core[i].littleEndian = true; 
     444        core[i].interleaved = true; 
     445        core[i].indexed = false; 
     446        core[i].falseColor = false; 
     447        core[i].metadataComplete = true; 
     448      } 
    427449 
    428450      adjustImageCount = false; 
    429451 
    430452      for (int i=0; i<offsets.length; i++) { 
    431         for (int j=1; j<core.imageCount[i]; j++) { 
     453        for (int j=1; j<core[i].imageCount; j++) { 
    432454          if (offsets[i][j] < offsets[i][j - 1]) { 
    433455            adjustImageCount = true; 
     
    439461      if (getSizeC() > 1) { 
    440462        if (adjustImageCount) { 
    441           int n = imageOffsets.size() / core.sizeT.length; 
    442           Arrays.fill(core.sizeT, n == 0 ? 1 : n); 
    443         } 
    444         Arrays.fill(core.imageCount, getSizeT() * getSizeZ()); 
    445       } 
    446       Arrays.fill(core.littleEndian, true); 
    447       Arrays.fill(core.interleaved, true); 
    448       Arrays.fill(core.indexed, false); 
    449       Arrays.fill(core.falseColor, false); 
    450       Arrays.fill(core.metadataComplete, true); 
    451  
    452       for (int i=0; i<core.imageCount.length; i++) { 
    453         core.imageCount[i] = core.sizeZ[i] * core.sizeT[i]; 
    454         if (!core.rgb[i]) core.imageCount[i] *= core.sizeC[i]; 
     463          int n = imageOffsets.size() / core.length; 
     464          for (int i=0; i<core.length; i++) { 
     465            core[i].sizeT = n == 0 ? 1 : n; 
     466          } 
     467        } 
     468        for (int i=0; i<core.length; i++) { 
     469          core[i].imageCount = getSizeT() * getSizeZ(); 
     470        } 
     471      } 
     472 
     473      for (int i=0; i<core.length; i++) { 
     474        core[i].imageCount = core[i].sizeZ * core[i].sizeT; 
     475        if (!core[i].rgb) core[i].imageCount *= core[i].sizeC; 
    455476      } 
    456477 
     
    458479        new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
    459480      MetadataTools.populatePixels(store, this); 
    460       for (int i=0; i<core.sizeC.length; i++) { 
     481      for (int i=0; i<core.length; i++) { 
    461482        store.setImageName("Series " + i, i); 
    462483        MetadataTools.setDefaultCreationDate(store, id, i); 
     
    601622    status("Populating metadata"); 
    602623    if (getImageCount() == 0) { 
    603       core.sizeZ[0] = zs.size() == 0 ? vs.size() : zs.size(); 
    604       core.sizeT[0] = ts.size() == 0 ? 1 : ts.size(); 
    605       core.sizeC[0] = (vs.size() + 1) / (getSizeT() * getSizeZ()); 
    606       core.imageCount[0] = vs.size(); 
    607       while (getImageCount() % getSizeC() != 0) core.imageCount[0]--; 
     624      core[0].sizeZ = zs.size() == 0 ? vs.size() : zs.size(); 
     625      core[0].sizeT = ts.size() == 0 ? 1 : ts.size(); 
     626      core[0].sizeC = (vs.size() + 1) / (getSizeT() * getSizeZ()); 
     627      core[0].imageCount = vs.size(); 
     628      while (getImageCount() % getSizeC() != 0) core[0].imageCount--; 
    608629      while (getSizeC() * getSizeZ() * getSizeT() > getImageCount()) { 
    609         if (getSizeZ() < getSizeT()) core.sizeT[0]--; 
    610         else core.sizeZ[0]--; 
     630        if (getSizeZ() < getSizeT()) core[0].sizeT--; 
     631        else core[0].sizeZ--; 
    611632      } 
    612633    } 
    613634 
    614635    if (getSizeC() * getSizeZ() * getSizeT() != getImageCount()) { 
    615       core.sizeZ[0] = zs.size(); 
    616       core.sizeT[0] = ts.size(); 
    617       core.imageCount[0] = getSizeC() * getSizeZ() * getSizeT(); 
     636      core[0].sizeZ = zs.size(); 
     637      core[0].sizeT = ts.size(); 
     638      core[0].imageCount = getSizeC() * getSizeZ() * getSizeT(); 
    618639      if (vs.size() > getImageCount()) { 
    619         core.sizeT[0] = vs.size() / (isRGB() ? 1 : getSizeC()); 
    620         core.imageCount[0] = getSizeZ() * getSizeT(); 
    621         if (!isRGB()) core.imageCount[0] *= getSizeC(); 
    622       } 
    623     } 
    624  
    625     if (getImageCount() == 0) core.imageCount[0] = 1; 
    626     if (getSizeZ() == 0) core.sizeZ[0] = 1; 
    627     if (getSizeC() == 0) core.sizeC[0] = 1; 
    628     if (getSizeT() == 0) core.sizeT[0] = 1; 
    629  
    630     Arrays.fill(core.sizeZ, getSizeZ()); 
    631     Arrays.fill(core.sizeT, getSizeT()); 
    632     Arrays.fill(core.imageCount, getImageCount()); 
    633     Arrays.fill(core.currentOrder, "XYCZT"); 
    634  
    635     core.pixelType[0] = FormatTools.UINT8; 
     640        core[0].sizeT = vs.size() / (isRGB() ? 1 : getSizeC()); 
     641        core[0].imageCount = getSizeZ() * getSizeT(); 
     642        if (!isRGB()) core[0].imageCount *= getSizeC(); 
     643      } 
     644    } 
     645 
     646    if (getImageCount() == 0) core[0].imageCount = 1; 
     647    if (getSizeZ() == 0) core[0].sizeZ = 1; 
     648    if (getSizeC() == 0) core[0].sizeC = 1; 
     649    if (getSizeT() == 0) core[0].sizeT = 1; 
     650 
     651    for (int i=0; i<core.length; i++) { 
     652      core[i].sizeZ = getSizeZ(); 
     653      core[i].sizeT = getSizeT(); 
     654      core[i].imageCount = getImageCount(); 
     655      core[i].currentOrder = "XYCZT"; 
     656      core[i].sizeX = x; 
     657      core[i].sizeY = y; 
     658      core[i].interleaved = false; 
     659      core[i].littleEndian = false; 
     660      core[i].metadataComplete = true; 
     661    } 
     662 
     663    core[0].pixelType = FormatTools.UINT8; 
    636664    offsets = new long[1][2]; 
    637665    offsets[0][0] = ((Long) vs.get(0)).longValue(); 
     
    642670    in.seek(offsets[0][0]); 
    643671 
    644     Arrays.fill(core.sizeX, x); 
    645     Arrays.fill(core.sizeY, y); 
    646     if (getSizeC() == 0) core.sizeC[0] = 1; 
     672    if (getSizeC() == 0) core[0].sizeC = 1; 
    647673    int numBands = c; 
    648674    c = numBands > 1 ? numBands : getSizeC(); 
    649675    if (numBands == 1 && getImageCount() == 1) c = 1; 
    650     Arrays.fill(core.sizeC, c); 
    651     Arrays.fill(core.rgb, numBands > 1); 
    652     Arrays.fill(core.pixelType, type); 
     676    for (int i=0; i<core.length; i++) { 
     677      core[i].sizeC = c; 
     678      core[i].rgb = numBands > 1; 
     679      core[i].pixelType = type; 
     680    } 
    653681 
    654682    if (isRGB() && getImageCount() > getSizeZ() * getSizeT()) { 
    655       if (getSizeZ() > 1) core.sizeZ[0] *= getSizeC(); 
    656       else core.sizeT[0] *= getSizeC(); 
    657       Arrays.fill(core.sizeT, getSizeT()); 
    658       Arrays.fill(core.sizeZ, getSizeZ()); 
     683      if (getSizeZ() > 1) core[0].sizeZ *= getSizeC(); 
     684      else core[0].sizeT *= getSizeC(); 
     685      for (int i=0; i<core.length; i++) { 
     686        core[i].sizeT = getSizeT(); 
     687        core[i].sizeZ = getSizeZ(); 
     688      } 
    659689    } 
    660690 
    661691    if (vs.size() < getImageCount()) { 
    662       Arrays.fill(core.imageCount, vs.size()); 
     692      for (int i=0; i<core.length; i++) { 
     693        core[i].imageCount = vs.size(); 
     694      } 
    663695    } 
    664696 
     
    677709    } 
    678710 
    679     Arrays.fill(core.interleaved, false); 
    680     Arrays.fill(core.littleEndian, false); 
    681     Arrays.fill(core.metadataComplete, true); 
    682  
    683711    MetadataStore store = 
    684712      new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
     
    727755    { 
    728756      if (qName.equals("uiWidth")) { 
    729         core.sizeX[0] = Integer.parseInt(attributes.getValue("value")); 
     757        core[0].sizeX = Integer.parseInt(attributes.getValue("value")); 
    730758      } 
    731759      else if (qName.equals("uiWidthBytes")) { 
     
    733761        switch (bytes) { 
    734762          case 2: 
    735             core.pixelType[0] = FormatTools.UINT16; 
     763            core[0].pixelType = FormatTools.UINT16; 
    736764            break; 
    737765          case 4: 
    738             core.pixelType[0] = FormatTools.UINT32; 
     766            core[0].pixelType = FormatTools.UINT32; 
    739767            break; 
    740           default: core.pixelType[0] = FormatTools.UINT8; 
     768          default: 
     769            core[0].pixelType = FormatTools.UINT8; 
    741770        } 
    742771      } 
     
    747776      else if (qName.equals("uiCompCount")) { 
    748777        int v = Integer.parseInt(attributes.getValue("value")); 
    749         core.sizeC[0] = (int) Math.max(getSizeC(), v); 
     778        core[0].sizeC = (int) Math.max(getSizeC(), v); 
    750779      } 
    751780      else if (qName.equals("uiBpcInMemory")) { 
     
    755784        switch (bytes) { 
    756785          case 2: 
    757             core.pixelType[0] = FormatTools.UINT16; 
     786            core[0].pixelType = FormatTools.UINT16; 
    758787            break; 
    759788          case 4: 
    760             core.pixelType[0] = FormatTools.UINT32; 
     789            core[0].pixelType = FormatTools.UINT32; 
    761790            break; 
    762           default: core.pixelType[0] = FormatTools.UINT8; 
     791          default: 
     792            core[0].pixelType = FormatTools.UINT8; 
    763793        } 
    764794        parseKeyAndValue(qName, attributes.getValue("value")); 
    765795      } 
    766796      else if (qName.equals("uiHeight")) { 
    767         core.sizeY[0] = Integer.parseInt(attributes.getValue("value")); 
     797        core[0].sizeY = Integer.parseInt(attributes.getValue("value")); 
    768798      } 
    769799      else if (qName.equals("uiCount")) { 
    770800        int n = Integer.parseInt(attributes.getValue("value")); 
    771801        if (getImageCount() == 0) { 
    772           core.imageCount[0] = n; 
    773           core.sizeT[0] = n; 
    774           core.sizeZ[0] = 1; 
     802          core[0].imageCount = n; 
     803          core[0].sizeT = n; 
     804          core[0].sizeZ = 1; 
    775805        } 
    776806      } 
     
    780810          n < getImageCount())) 
    781811        { 
    782           core.imageCount[0] = n; 
    783           core.sizeT[0] = n; 
    784           core.sizeZ[0] = 1; 
     812          core[0].imageCount = n; 
     813          core[0].sizeT = n; 
     814          core[0].sizeZ = 1; 
    785815        } 
    786816      } 
     
    838868    else if (key.endsWith("uiCount")) { 
    839869      if (getSizeT() == 0) { 
    840         core.sizeT[0] = Integer.parseInt(value); 
     870        core[0].sizeT = Integer.parseInt(value); 
    841871      } 
    842872    } 
     
    862892                int tSize = getSizeT(); 
    863893                int c = getSizeC(); 
    864                 core = new CoreMetadata(numSeries); 
    865                 Arrays.fill(core.sizeX, x); 
    866                 Arrays.fill(core.sizeY, y); 
    867                 Arrays.fill(core.sizeZ, z == 0 ? 1 : z); 
    868                 Arrays.fill(core.sizeC, c == 0 ? 1 : c); 
    869                 Arrays.fill(core.sizeT, tSize == 0 ? 1 : tSize); 
     894                core = new CoreMetadata[numSeries]; 
     895                for (int i=0; i<numSeries; i++) { 
     896                  core[i] = new CoreMetadata(); 
     897                  core[i].sizeX = x; 
     898                  core[i].sizeY = y; 
     899                  core[i].sizeZ = z == 0 ? 1 : z; 
     900                  core[i].sizeC = c == 0 ? 1 : c; 
     901                  core[i].sizeT = tSize == 0 ? 1 : tSize; 
     902                } 
    870903              } 
    871904            } 
    872905            else if (dim.startsWith("T")) { 
    873               Arrays.fill(core.sizeT, v == 0 ? 1 : v); 
     906              for (int i=0; i<core.length; i++) { 
     907                core[i].sizeT = v == 0 ? 1 : v; 
     908              } 
    874909            } 
    875910            else if (dim.startsWith("Z")) { 
    876               Arrays.fill(core.sizeZ, v == 0 ? 1 : v); 
     911              for (int i=0; i<core.length; i++) { 
     912                core[i].sizeZ = v == 0 ? 1 : v; 
     913              } 
    877914            } 
    878915            else { 
    879               Arrays.fill(core.sizeC, v == 0 ? 1 : v); 
     916              for (int i=0; i<core.length; i++) { 
     917                core[i].sizeC = v == 0 ? 1 : v; 
     918              } 
    880919            } 
    881920          } 
    882921 
    883922          int count = getSizeZ() * getSizeC() * getSizeT(); 
    884           Arrays.fill(core.imageCount, count); 
     923          for (int i=0; i<core.length; i++) { 
     924            core[i].imageCount = count; 
     925          } 
    885926        } 
    886927      } 
  • trunk/loci/formats/in/NRRDReader.java

    r4274 r4335  
    129129    int numDimensions = 0; 
    130130 
    131     core.sizeX[0] = 1; 
    132     core.sizeY[0] = 1; 
    133     core.sizeZ[0] = 1; 
    134     core.sizeC[0] = 1; 
    135     core.sizeT[0] = 1; 
    136     core.currentOrder[0] = "XYCZT"; 
     131    core[0].sizeX = 1; 
     132    core[0].sizeY = 1; 
     133    core[0].sizeZ = 1; 
     134    core[0].sizeC = 1; 
     135    core[0].sizeT = 1; 
     136    core[0].currentOrder = "XYCZT"; 
    137137 
    138138    MetadataStore store = 
     
    151151        if (key.equals("type")) { 
    152152          if (v.indexOf("char") != -1 || v.indexOf("8") != -1) { 
    153             core.pixelType[0] = FormatTools.UINT8; 
     153            core[0].pixelType = FormatTools.UINT8; 
    154154          } 
    155155          else if (v.indexOf("short") != -1 || v.indexOf("16") != -1) { 
    156             core.pixelType[0] = FormatTools.UINT16; 
     156            core[0].pixelType = FormatTools.UINT16; 
    157157          } 
    158158          else if (v.equals("int") || v.equals("signed int") || 
     
    161161            v.equals("uint32_t")) 
    162162          { 
    163             core.pixelType[0] = FormatTools.UINT32; 
    164           } 
    165           else if (v.equals("float")) core.pixelType[0] = FormatTools.FLOAT; 
    166           else if (v.equals("double")) core.pixelType[0] = FormatTools.DOUBLE; 
     163            core[0].pixelType = FormatTools.UINT32; 
     164          } 
     165          else if (v.equals("float")) core[0].pixelType = FormatTools.FLOAT; 
     166          else if (v.equals("double")) core[0].pixelType = FormatTools.DOUBLE; 
    167167          else throw new FormatException("Unsupported data type: " + v); 
    168168        } 
     
    177177 
    178178            if (numDimensions >= 3 && i == 0 && size > 1 && size <= 4) { 
    179               core.sizeC[0] = size; 
     179              core[0].sizeC = size; 
    180180            } 
    181181            else if (i == 0 || (getSizeC() > 1 && i == 1)) { 
    182               core.sizeX[0] = size; 
     182              core[0].sizeX = size; 
    183183            } 
    184184            else if (i == 1 || (getSizeC() > 1 && i == 2)) { 
    185               core.sizeY[0] = size; 
     185              core[0].sizeY = size; 
    186186            } 
    187187            else if (i == 2 || (getSizeC() > 1 && i == 3)) { 
    188               core.sizeZ[0] = size; 
     188              core[0].sizeZ = size; 
    189189            } 
    190190            else if (i == 3 || (getSizeC() > 1 && i == 4)) { 
    191               core.sizeT[0] = size; 
     191              core[0].sizeT = size; 
    192192            } 
    193193          } 
     
    198198        else if (key.equals("encoding")) encoding = v; 
    199199        else if (key.equals("endian")) { 
    200           core.littleEndian[0] = v.equals("little"); 
     200          core[0].littleEndian = v.equals("little"); 
    201201        } 
    202202        else if (key.equals("spacings")) { 
     
    234234    } 
    235235 
    236     core.rgb[0] = getSizeC() > 1; 
    237     core.interleaved[0] = true; 
    238     core.imageCount[0] = getSizeZ() * getSizeT(); 
    239     core.indexed[0] = false; 
    240     core.falseColor[0] = false; 
    241     core.metadataComplete[0] = true; 
     236    core[0].rgb = getSizeC() > 1; 
     237    core[0].interleaved = true; 
     238    core[0].imageCount = getSizeZ() * getSizeT(); 
     239    core[0].indexed = false; 
     240    core[0].falseColor = false; 
     241    core[0].metadataComplete = true; 
    242242 
    243243    store.setImageName("", 0); 
  • trunk/loci/formats/in/NikonReader.java

    r4314 r4335  
    2929 
    3030/** 
    31  * NikonReader is the file format reader for 
    32  * Nikon NEF (TIFF) files. 
     31 * NikonReader is the file format reader for Nikon NEF (TIFF) files. 
    3332 * 
    3433 * <dl><dt><b>Source code:</b></dt> 
     
    105104  private static final int CAPTURE_EDITOR_DATA = 3585; 
    106105 
     106  // Custom IFD tags 
     107  private static final int SUB_IFD = 330; 
     108 
    107109  // -- Fields -- 
    108110 
     
    166168    super.initStandardMetadata(); 
    167169 
    168     // look for the TIFF_EPS_STANDARD tag 
    169     // it should contain version information 
    170  
    171     try { 
    172       short[] version = (short[]) 
    173         TiffTools.getIFDValue(original, TIFF_EPS_STANDARD); 
    174       String v = ""; 
    175       for (int i=0; i<version.length; i++) v += version[i]; 
    176       addMeta("Version", v); 
    177     } 
    178     catch (NullPointerException e) { } 
    179  
    180     core.littleEndian[0] = true; 
    181     try { 
    182       core.littleEndian[0] = TiffTools.isLittleEndian(ifds[0]); 
    183     } 
    184     catch (FormatException f) { } 
     170    // reset image dimensions 
     171    // the actual image data is stored in IFDs referenced by the SubIFD tag 
     172    // in the 'real' IFD 
     173 
     174    Hashtable realIFD = ifds[0]; 
     175    long[] subIFDOffsets = TiffTools.getIFDLongArray(realIFD, SUB_IFD, false); 
     176 
     177    if (subIFDOffsets != null) { 
     178      Vector tmpIFDs = new Vector(); 
     179 
     180      for (int i=0; i<subIFDOffsets.length; i++) { 
     181        Hashtable ifd = TiffTools.getIFD(in, i, subIFDOffsets[i]); 
     182        if (TiffTools.getIFDIntValue(ifd, TiffTools.NEW_SUBFILE_TYPE) == 0) { 
     183          tmpIFDs.add(ifd); 
     184        } 
     185      } 
     186 
     187      ifds = (Hashtable[]) tmpIFDs.toArray(new Hashtable[0]); 
     188 
     189      core[0].imageCount = ifds.length; 
     190 
     191      int photo = TiffTools.getPhotometricInterpretation(ifds[0]); 
     192      int samples = TiffTools.getSamplesPerPixel(ifds[0]); 
     193      core[0].rgb = samples > 1 || photo == TiffTools.RGB || 
     194        photo == TiffTools.CFA_ARRAY; 
     195      if (photo == TiffTools.CFA_ARRAY) samples = 3; 
     196 
     197      core[0].sizeX = (int) TiffTools.getImageWidth(ifds[0]); 
     198      core[0].sizeY = (int) TiffTools.getImageLength(ifds[0]); 
     199      core[0].sizeZ = 1; 
     200      core[0].sizeC = isRGB() ? samples : 1; 
     201      core[0].sizeT = ifds.length; 
     202      core[0].pixelType = getPixelType(ifds[0]); 
     203      core[0].indexed = false; 
     204    } 
    185205 
    186206    // now look for the EXIF IFD pointer 
     
    271291    original = ifds[0]; 
    272292    ifds[0] = realImage; 
    273     core.imageCount[0] = 1; 
     293    core[0].imageCount = 1; 
    274294 
    275295    if (cfaPattern != null) { 
  • trunk/loci/formats/in/OMETiffReader.java

    r4314 r4335  
    291291        info[s] = planes; 
    292292        try { 
    293           core.sizeX[s] = meta.getPixelsSizeX(i, p).intValue(); 
    294           core.sizeY[s] = meta.getPixelsSizeY(i, p).intValue(); 
    295           core.sizeZ[s] = meta.getPixelsSizeZ(i, p).intValue(); 
    296           core.sizeC[s] = meta.getPixelsSizeC(i, p).intValue(); 
    297           core.sizeT[s] = meta.getPixelsSizeT(i, p).intValue(); 
    298           core.pixelType[s] = FormatTools.pixelTypeFromString( 
     293          core[s].sizeX = meta.getPixelsSizeX(i, p).intValue(); 
     294          core[s].sizeY = meta.getPixelsSizeY(i, p).intValue(); 
     295          core[s].sizeZ = meta.getPixelsSizeZ(i, p).intValue(); 
     296          core[s].sizeC = meta.getPixelsSizeC(i, p).intValue(); 
     297          core[s].sizeT = meta.getPixelsSizeT(i, p).intValue(); 
     298          core[s].pixelType = FormatTools.pixelTypeFromString( 
    299299            meta.getPixelsPixelType(i, p)); 
    300           core.imageCount[s] = num; 
    301           core.currentOrder[s] = meta.getPixelsDimensionOrder(i, p); 
    302           core.orderCertain[s] = true; 
     300          core[s].imageCount = num; 
     301          core[s].currentOrder = meta.getPixelsDimensionOrder(i, p); 
     302          core[s].orderCertain = true; 
    303303          int photo = TiffTools.getPhotometricInterpretation(firstIFD); 
    304           core.rgb[s] = samples > 1 || photo == TiffTools.RGB; 
    305           core.littleEndian[s] = !meta.getPixelsBigEndian(i, p).booleanValue(); 
    306           core.interleaved[s] = false; 
    307           core.indexed[s] = photo == TiffTools.RGB_PALETTE && 
     304          core[s].rgb = samples > 1 || photo == TiffTools.RGB; 
     305          core[s].littleEndian = !meta.getPixelsBigEndian(i, p).booleanValue(); 
     306          core[s].interleaved = false; 
     307          core[s].indexed = photo == TiffTools.RGB_PALETTE && 
    308308            TiffTools.getIFDValue(firstIFD, TiffTools.COLOR_MAP) != null; 
    309           if (core.indexed[s]) { 
    310             core.sizeC[0] = 1; 
    311             core.rgb[0] = false; 
    312           } 
    313           core.falseColor[s] = false; 
    314           core.metadataComplete[s] = true; 
     309          if (core[s].indexed) { 
     310            core[0].sizeC = 1; 
     311            core[0].rgb = false; 
     312          } 
     313          core[s].falseColor = false; 
     314          core[s].metadataComplete = true; 
    315315        } 
    316316        catch (NullPointerException exc) { 
  • trunk/loci/formats/in/OMEXMLReader.java

    r4268 r4335  
    101101    int index = no; 
    102102    for (int i=0; i<series; i++) { 
    103       index += core.imageCount[series]; 
     103      index += core[i].imageCount; 
    104104    } 
    105105 
     
    219219    int numDatasets = omexmlMeta.getImageCount(); 
    220220 
    221     core = new CoreMetadata(numDatasets); 
     221    core = new CoreMetadata[numDatasets]; 
    222222 
    223223    int oldSeries = getSeries(); 
     
    225225    for (int i=0; i<numDatasets; i++) { 
    226226      setSeries(i); 
     227 
     228      core[i] = new CoreMetadata(); 
    227229 
    228230      Integer w = omexmlMeta.getPixelsSizeX(i, 0); 
     
    236238      Boolean endian = omexmlMeta.getPixelsBigEndian(i, 0); 
    237239      String pixType = omexmlMeta.getPixelsPixelType(i, 0); 
    238       core.currentOrder[i] = omexmlMeta.getPixelsDimensionOrder(i, 0); 
    239       core.sizeX[i] = w.intValue(); 
    240       core.sizeY[i] = h.intValue(); 
    241       core.sizeT[i] = t.intValue(); 
    242       core.sizeZ[i] = z.intValue(); 
    243       core.sizeC[i] = c.intValue(); 
    244       core.imageCount[i] = getSizeZ() * getSizeC() * getSizeT(); 
    245       core.littleEndian[i] = endian == null ? false : !endian.booleanValue(); 
    246       core.rgb[i] = false; 
    247       core.interleaved[i] = false; 
    248       core.indexed[i] = false; 
    249       core.falseColor[i] = false; 
     240      core[i].currentOrder = omexmlMeta.getPixelsDimensionOrder(i, 0); 
     241      core[i].sizeX = w.intValue(); 
     242      core[i].sizeY = h.intValue(); 
     243      core[i].sizeT = t.intValue(); 
     244      core[i].sizeZ = z.intValue(); 
     245      core[i].sizeC = c.intValue(); 
     246      core[i].imageCount = getSizeZ() * getSizeC() * getSizeT(); 
     247      core[i].littleEndian = endian == null ? false : !endian.booleanValue(); 
     248      core[i].rgb = false; 
     249      core[i].interleaved = false; 
     250      core[i].indexed = false; 
     251      core[i].falseColor = false; 
    250252 
    251253      String type = pixType.toLowerCase(); 
    252254      boolean signed = type.charAt(0) != 'u'; 
    253255      if (type.endsWith("16")) { 
    254         core.pixelType[i] = signed ? FormatTools.INT16 : FormatTools.UINT16; 
     256        core[i].pixelType = signed ? FormatTools.INT16 : FormatTools.UINT16; 
    255257      } 
    256258      else if (type.endsWith("32")) { 
    257         core.pixelType[i] = signed ? FormatTools.INT32 : FormatTools.UINT32; 
     259        core[i].pixelType = signed ? FormatTools.INT32 : FormatTools.UINT32; 
    258260      } 
    259261      else if (type.equals("float")) { 
    260         core.pixelType[i] = FormatTools.FLOAT; 
     262        core[i].pixelType = FormatTools.FLOAT; 
    261263      } 
    262264      else { 
    263         core.pixelType[i] = signed ? FormatTools.INT8 : FormatTools.UINT8; 
    264       } 
     265        core[i].pixelType = signed ? FormatTools.INT8 : FormatTools.UINT8; 
     266      } 
     267      core[i].orderCertain = true; 
    265268    } 
    266269    setSeries(oldSeries); 
    267     Arrays.fill(core.orderCertain, true); 
    268270 
    269271    // populate assigned metadata store with the 
  • trunk/loci/formats/in/OpenlabRawReader.java

    r4205 r4335  
    121121    addMeta("Version", new Integer(version)); 
    122122 
    123     core.imageCount[0] = in.readInt(); 
     123    core[0].imageCount = in.readInt(); 
    124124    offsets = new int[getImageCount()]; 
    125125    offsets[0] = 12; 
    126126 
    127127    in.skipBytes(8); 
    128     core.sizeX[0] = in.readInt(); 
    129     core.sizeY[0] = in.readInt(); 
     128    core[0].sizeX = in.readInt(); 
     129    core[0].sizeY = in.readInt(); 
    130130    in.skipBytes(1); 
    131     core.sizeC[0] = in.read(); 
     131    core[0].sizeC = in.read(); 
    132132    bytesPerPixel = in.read(); 
    133133    in.skipBytes(1); 
     
    154154    addMeta("Image name", in.readString(len - 1).trim()); 
    155155 
    156     if (getSizeC() <= 1) core.sizeC[0] = 1; 
    157     else core.sizeC[0] = 3; 
     156    if (getSizeC() <= 1) core[0].sizeC = 1; 
     157    else core[0].sizeC = 3; 
    158158    addMeta("Width", new Integer(getSizeX())); 
    159159    addMeta("Height", new Integer(getSizeY())); 
     
    165165    } 
    166166 
    167     core.sizeZ[0] = getImageCount(); 
    168     core.sizeT[0] = 1; 
    169     core.currentOrder[0] = "XYZTC"; 
    170     core.rgb[0] = getSizeC() > 1; 
    171     core.interleaved[0] = false; 
    172     core.littleEndian[0] = false; 
    173     core.metadataComplete[0] = true; 
    174     core.indexed[0] = false; 
    175     core.falseColor[0] = false; 
     167    core[0].sizeZ = getImageCount(); 
     168    core[0].sizeT = 1; 
     169    core[0].currentOrder = "XYZTC"; 
     170    core[0].rgb = getSizeC() > 1; 
     171    core[0].interleaved = false; 
     172    core[0].littleEndian = false; 
     173    core[0].metadataComplete = true; 
     174    core[0].indexed = false; 
     175    core[0].falseColor = false; 
    176176 
    177177    // The metadata store we're working with. 
     
    183183      case 1: 
    184184      case 3: 
    185         core.pixelType[0] = FormatTools.UINT8; 
     185        core[0].pixelType = FormatTools.UINT8; 
    186186        break; 
    187187      case 2: 
    188         core.pixelType[0] = FormatTools.UINT16; 
     188        core[0].pixelType = FormatTools.UINT16; 
    189189        break; 
    190190      default: 
    191         core.pixelType[0] = FormatTools.FLOAT; 
     191        core[0].pixelType = FormatTools.FLOAT; 
    192192    } 
    193193 
  • trunk/loci/formats/in/OpenlabReader.java

    r4320 r4335  
    498498    // populate core metadata 
    499499 
    500     core = new CoreMetadata(nSeries); 
    501  
    502     Arrays.fill(core.indexed, false); 
     500    core = new CoreMetadata[nSeries]; 
    503501 
    504502    for (int i=0; i<nSeries; i++) { 
    505       core.sizeX[i] = planes[planeOffsets[i][0]].width; 
    506       core.sizeY[i] = planes[planeOffsets[i][0]].height; 
    507       core.imageCount[i] = planeOffsets[i].length; 
     503      core[i] = new CoreMetadata(); 
     504      core[i].indexed = false; 
     505      core[i].sizeX = planes[planeOffsets[i][0]].width; 
     506      core[i].sizeY = planes[planeOffsets[i][0]].height; 
     507      core[i].imageCount = planeOffsets[i].length; 
    508508 
    509509      switch (planes[planeOffsets[i][0]].volumeType) { 
     
    511511        case MAC_4_GREYS: 
    512512        case MAC_256_GREYS: 
    513           core.pixelType[i] = FormatTools.UINT8; 
    514           if (core.imageCount[i] > 1 && (core.sizeX[i] * core.sizeY[i] < 
     513          core[i].pixelType = FormatTools.UINT8; 
     514          if (core[i].imageCount > 1 && (core[i].sizeX * core[i].sizeY < 
    515515            (planes[planeOffsets[i][1]].planeOffset - 
    516516            planes[planeOffsets[i][0]].planeOffset))) 
    517517          { 
    518             core.pixelType[i] = FormatTools.UINT16; 
    519           } 
    520           core.rgb[i] = false; 
    521           core.sizeC[i] = 1; 
    522           core.interleaved[i] = false; 
     518            core[i].pixelType = FormatTools.UINT16; 
     519          } 
     520          core[i].rgb = false; 
     521          core[i].sizeC = 1; 
     522          core[i].interleaved = false; 
    523523          break; 
    524524        case MAC_256_COLORS: 
    525           core.pixelType[i] = FormatTools.UINT8; 
    526           core.rgb[i] = false; 
    527           core.sizeC[i] = 1; 
    528           core.interleaved[i] = false; 
    529           core.indexed[i] = true; 
     525          core[i].pixelType = FormatTools.UINT8; 
     526          core[i].rgb = false; 
     527          core[i].sizeC = 1; 
     528          core[i].interleaved = false; 
     529          core[i].indexed = true; 
    530530          break; 
    531531        case MAC_16_COLORS: 
    532532        case MAC_16_BIT_COLOR: 
    533533        case MAC_24_BIT_COLOR: 
    534           core.pixelType[i] = FormatTools.UINT8; 
    535           core.rgb[i] = true; 
    536           core.sizeC[i] = 3; 
    537           core.interleaved[i] = version == 5; 
     534          core[i].pixelType = FormatTools.UINT8; 
     535          core[i].rgb = true; 
     536          core[i].sizeC = 3; 
     537          core[i].interleaved = version == 5; 
    538538          break; 
    539539        case MAC_16_GREYS: 
     
    546546        case DEEP_GREY_15: 
    547547        case DEEP_GREY_16: 
    548           core.pixelType[i] = FormatTools.UINT16; 
    549           core.rgb[i] = false; 
    550           core.sizeC[i] = 1; 
    551           core.interleaved[i] = false; 
     548          core[i].pixelType = FormatTools.UINT16; 
     549          core[i].rgb = false; 
     550          core[i].sizeC = 1; 
     551          core[i].interleaved = false; 
    552552          break; 
    553553        default: 
     
    556556      } 
    557557 
    558       core.sizeT[i] = 1; 
    559       core.sizeZ[i] = core.imageCount[i]; 
    560     } 
    561     Arrays.fill(core.currentOrder, "XYCZT"); 
    562     Arrays.fill(core.littleEndian, false); 
    563     Arrays.fill(core.falseColor, false); 
    564     Arrays.fill(core.metadataComplete, true); 
     558      core[i].sizeT = 1; 
     559      core[i].sizeZ = core[i].imageCount; 
     560      core[i].currentOrder = "XYCZT"; 
     561      core[i].littleEndian = false; 
     562      core[i].falseColor = false; 
     563      core[i].metadataComplete = true; 
     564      core[i].seriesMetadata = getMetadata(); 
     565    } 
    565566 
    566567    // populate MetadataStore 
     
    570571    store.setDimensionsPhysicalSizeX(new Float(xcal), 0, 0); 
    571572    store.setDimensionsPhysicalSizeY(new Float(ycal), 0, 0); 
    572  
    573     Arrays.fill(core.seriesMetadata, getMetadata()); 
    574573  } 
    575574 
  • trunk/loci/formats/in/PCIReader.java

    r4234 r4335  
    118118      if (relativePath.equals("Field Count")) { 
    119119        byte[] b = poi.getDocumentBytes(name, 4); 
    120         core.imageCount[0] = DataTools.bytesToInt(b, 0, true); 
     120        core[0].imageCount = DataTools.bytesToInt(b, 0, true); 
    121121      } 
    122122      else if (relativePath.equals("File Has Image")) { 
     
    165165          int bpp = FormatTools.getBytesPerPixel(getPixelType()); 
    166166          int plane = getSizeX() * getSizeY() * bpp; 
    167           core.sizeC[0] = poi.getFileSize(name) / plane; 
     167          core[0].sizeC = poi.getFileSize(name) / plane; 
    168168          if (getSizeC() == 0) { 
    169             core.sizeX[0] /= 16; 
    170             core.sizeY[0] /= 16; 
    171             core.sizeC[0] = poi.getFileSize(name) / plane; 
     169            core[0].sizeX /= 16; 
     170            core[0].sizeY /= 16; 
     171            core[0].sizeC = poi.getFileSize(name) / plane; 
    172172          } 
    173173        } 
     
    180180        switch (bits) { 
    181181          case 8: 
    182             core.pixelType[0] = FormatTools.UINT8; 
     182            core[0].pixelType = FormatTools.UINT8; 
    183183            break; 
    184184          case 16: 
    185             core.pixelType[0] = FormatTools.UINT16; 
     185            core[0].pixelType = FormatTools.UINT16; 
    186186            break; 
    187187          case 32: 
    188             core.pixelType[0] = FormatTools.UINT32; 
     188            core[0].pixelType = FormatTools.UINT32; 
    189189            break; 
    190190          case 48: 
    191             core.pixelType[0] = FormatTools.UINT16; 
     191            core[0].pixelType = FormatTools.UINT16; 
    192192            break; 
    193193          default: 
     
    197197      else if (relativePath.indexOf("Image_Height") != -1 && getSizeY() == 0) { 
    198198        byte[] b = poi.getDocumentBytes(name, 8); 
    199         core.sizeY[0] = 
     199        core[0].sizeY = 
    200200          (int) Double.longBitsToDouble(DataTools.bytesToLong(b, 0, true)); 
    201201      } 
    202202      else if (relativePath.indexOf("Image_Width") != -1 && getSizeX() == 0) { 
    203203        byte[] b = poi.getDocumentBytes(name, 8); 
    204         core.sizeX[0] = 
     204        core[0].sizeX = 
    205205          (int) Double.longBitsToDouble(DataTools.bytesToLong(b, 0, true)); 
    206206      } 
     
    212212    } 
    213213 
    214     if (getSizeC() == 0) core.sizeC[0] = 1; 
     214    if (getSizeC() == 0) core[0].sizeC = 1; 
    215215 
    216216    if (timestamps.size() > 0) { 
    217       core.sizeZ[0] = getImageCount() / timestamps.size(); 
    218       core.sizeT[0] = timestamps.size(); 
     217      core[0].sizeZ = getImageCount() / timestamps.size(); 
     218      core[0].sizeT = timestamps.size(); 
    219219    } 
    220220    if (timestamps.size() == 0 || getSizeZ() * getSizeT() != getImageCount()) { 
    221       core.sizeZ[0] = getImageCount(); 
    222       core.sizeT[0] = 1; 
     221      core[0].sizeZ = getImageCount(); 
     222      core[0].sizeT = 1; 
    223223    } 
    224     core.rgb[0] = getSizeC() > 1; 
    225     core.interleaved[0] = false; 
    226     core.currentOrder[0] = "XYCTZ"; 
    227     core.littleEndian[0] = true; 
    228     core.indexed[0] = false; 
    229     core.falseColor[0] = false; 
    230     core.metadataComplete[0] = true; 
     224    core[0].rgb = getSizeC() > 1; 
     225    core[0].interleaved = false; 
     226    core[0].currentOrder = "XYCTZ"; 
     227    core[0].littleEndian = true; 
     228    core[0].indexed = false; 
     229    core[0].falseColor = false; 
     230    core[0].metadataComplete = true; 
    231231 
    232232    MetadataStore store = 
  • trunk/loci/formats/in/PCXReader.java

    r4205 r4335  
    125125    status("Reading file header"); 
    126126 
    127     core.littleEndian[0] = true; 
     127    core[0].littleEndian = true; 
    128128    in.order(true); 
    129129    in.seek(1); 
     
    136136    int yMax = in.readShort(); 
    137137 
    138     core.sizeX[0] = xMax - xMin; 
    139     core.sizeY[0] = yMax - yMin; 
     138    core[0].sizeX = xMax - xMin; 
     139    core[0].sizeY = yMax - yMin; 
    140140 
    141141    int vertDPI = in.readShort(); 
     
    150150    offset = in.getFilePointer() + 58; 
    151151 
    152     core.sizeZ[0] = 1; 
    153     core.sizeT[0] = 1; 
    154     core.sizeC[0] = 1; 
    155     core.rgb[0] = false; 
    156     core.imageCount[0] = 1; 
    157     core.pixelType[0] = FormatTools.UINT8; 
    158     core.currentOrder[0] = "XYCZT"; 
     152    core[0].sizeZ = 1; 
     153    core[0].sizeT = 1; 
     154    core[0].sizeC = 1; 
     155    core[0].rgb = false; 
     156    core[0].imageCount = 1; 
     157    core[0].pixelType = FormatTools.UINT8; 
     158    core[0].currentOrder = "XYCZT"; 
    159159 
    160160    MetadataStore store = 
  • trunk/loci/formats/in/PGMReader.java

    r4274 r4335  
    121121 
    122122    rawBits = magic.equals("P4") || magic.equals("P5") || magic.equals("P6"); 
    123     core.sizeC[0] = (magic.equals("P3") || magic.equals("P6")) ? 3 : 1; 
     123    core[0].sizeC = (magic.equals("P3") || magic.equals("P6")) ? 3 : 1; 
    124124    isBlackAndWhite = magic.equals("P1") || magic.equals("P4"); 
    125125 
     
    128128 
    129129    line = line.replaceAll("[^0-9]", " "); 
    130     core.sizeX[0] = 
     130    core[0].sizeX = 
    131131      Integer.parseInt(line.substring(0, line.indexOf(" ")).trim()); 
    132     core.sizeY[0] = 
     132    core[0].sizeY = 
    133133      Integer.parseInt(line.substring(line.indexOf(" ") + 1).trim()); 
    134134 
    135135    if (!isBlackAndWhite) { 
    136136      int max = Integer.parseInt(in.readLine().trim()); 
    137       if (max > 255) core.pixelType[0] = FormatTools.UINT16; 
    138       else core.pixelType[0] = FormatTools.UINT8; 
     137      if (max > 255) core[0].pixelType = FormatTools.UINT16; 
     138      else core[0].pixelType = FormatTools.UINT8; 
    139139    } 
    140140 
    141141    offset = in.getFilePointer(); 
    142142 
    143     core.rgb[0] = getSizeC() == 3; 
    144     core.currentOrder[0] = "XYCZT"; 
    145     core.littleEndian[0] = true; 
    146     core.interleaved[0] = false; 
    147     core.sizeZ[0] = 1; 
    148     core.sizeT[0] = 1; 
    149     core.imageCount[0] = 1; 
    150     core.indexed[0] = false; 
    151     core.falseColor[0] = false; 
    152     core.metadataComplete[0] = true; 
     143    core[0].rgb = getSizeC() == 3; 
     144    core[0].currentOrder = "XYCZT"; 
     145    core[0].littleEndian = true; 
     146    core[0].interleaved = false; 
     147    core[0].sizeZ = 1; 
     148    core[0].sizeT = 1; 
     149    core[0].imageCount = 1; 
     150    core[0].indexed = false; 
     151    core[0].falseColor = false; 
     152    core[0].metadataComplete = true; 
    153153 
    154154    MetadataStore store = 
  • trunk/loci/formats/in/PSDReader.java

    r4205 r4335  
    130130    super.initFile(id); 
    131131    in = new RandomAccessStream(id); 
    132     core.littleEndian[0] = false; 
     132    core[0].littleEndian = false; 
    133133 
    134134    if (!in.readString(4).equals("8BPS")) { 
     
    140140 
    141141    in.skipBytes(6); // reserved, set to 0 
    142     core.sizeC[0] = in.readShort(); 
    143     core.sizeY[0] = in.readInt(); 
    144     core.sizeX[0] = in.readInt(); 
     142    core[0].sizeC = in.readShort(); 
     143    core[0].sizeY = in.readInt(); 
     144    core[0].sizeX = in.readInt(); 
    145145 
    146146    int bits = in.readShort(); 
    147147    addMeta("Bits per pixel", new Integer(bits)); 
    148     if (bits == 16) core.pixelType[0] = FormatTools.UINT16; 
    149     else core.pixelType[0] = FormatTools.UINT8; 
     148    if (bits == 16) core[0].pixelType = FormatTools.UINT16; 
     149    else core[0].pixelType = FormatTools.UINT8; 
    150150 
    151151    int colorMode = in.readShort(); 
     
    267267    offset = in.getFilePointer() - 4; 
    268268 
    269     core.sizeZ[0] = 1; 
    270     core.sizeT[0] = 1; 
    271     core.rgb[0] = modeString.equals("RGB"); 
    272     core.imageCount[0] = getSizeC() / (isRGB() ? 3 : 1); 
    273     core.indexed[0] = modeString.equals("palette color"); 
    274     core.falseColor[0] = false; 
    275     core.currentOrder[0] = "XYCZT"; 
    276     core.interleaved[0] = false; 
    277     core.metadataComplete[0] = true; 
     269    core[0].sizeZ = 1; 
     270    core[0].sizeT = 1; 
     271    core[0].rgb = modeString.equals("RGB"); 
     272    core[0].imageCount = getSizeC() / (isRGB() ? 3 : 1); 
     273    core[0].indexed = modeString.equals("palette color"); 
     274    core[0].falseColor = false; 
     275    core[0].currentOrder = "XYCZT"; 
     276    core[0].interleaved = false; 
     277    core[0].metadataComplete = true; 
    278278 
    279279    MetadataStore store = 
  • trunk/loci/formats/in/PerkinElmerReader.java

    r4300 r4335  
    394394    } 
    395395 
    396     core.imageCount[0] = files.length; 
     396    core[0].imageCount = files.length; 
    397397    RandomAccessStream read; 
    398398    byte[] data; 
     
    602602        String token = t.nextToken(); 
    603603        if (token.equals("Wavelengths")) { 
    604           core.sizeC[0] = Integer.parseInt(prevToken); 
     604          core[0].sizeC = Integer.parseInt(prevToken); 
    605605        } 
    606606        else if (token.equals("Frames")) { 
    607           core.sizeT[0] = Integer.parseInt(prevToken); 
     607          core[0].sizeT = Integer.parseInt(prevToken); 
    608608        } 
    609609        else if (token.equals("Slices")) { 
    610           core.sizeZ[0] = Integer.parseInt(prevToken); 
     610          core[0].sizeZ = Integer.parseInt(prevToken); 
    611611        } 
    612612        tokenNum++; 
     
    619619    if (isTiff) { 
    620620      tiff.setId(files[0]); 
    621       core.pixelType[0] = tiff.getPixelType(); 
     621      core[0].pixelType = tiff.getPixelType(); 
    622622    } 
    623623    else { 
     
    628628        case 1: 
    629629        case 3: 
    630           core.pixelType[0] = FormatTools.UINT8; 
     630          core[0].pixelType = FormatTools.UINT8; 
    631631          break; 
    632632        case 2: 
    633           core.pixelType[0] = FormatTools.UINT16; 
     633          core[0].pixelType = FormatTools.UINT16; 
    634634          break; 
    635635        case 4: 
    636           core.pixelType[0] = FormatTools.UINT32; 
     636          core[0].pixelType = FormatTools.UINT32; 
    637637          break; 
    638638      } 
    639639    } 
    640640 
    641     if (getSizeZ() <= 0) core.sizeZ[0] = 1; 
    642     if (getSizeC() <= 0) core.sizeC[0] = 1; 
     641    if (getSizeZ() <= 0) core[0].sizeZ = 1; 
     642    if (getSizeC() <= 0) core[0].sizeC = 1; 
    643643 
    644644    if (getSizeT() <= 0) { 
    645       core.sizeT[0] = getImageCount() / (getSizeZ() * getSizeC()); 
     645      core[0].sizeT = getImageCount() / (getSizeZ() * getSizeC()); 
    646646    } 
    647647    else { 
    648       core.imageCount[0] = getSizeZ() * getSizeC() * getSizeT(); 
     648      core[0].imageCount = getSizeZ() * getSizeC() * getSizeT(); 
    649649      if (getImageCount() > files.length) { 
    650         core.imageCount[0] = files.length;