/*
* $Id$
*
* Copyright 2009 Glencoe Software, Inc. All rights reserved.
* Use is subject to license terms supplied in LICENSE.txt
*/
package ome.formats.importer;
import omero.model.Pixels;
/**
* Calculates the various dimensions of an image from a {@link Pixels} instance.
*
* @since Beta4.1
*/
public class ImportSize {
public final String fileName;
public final Pixels pixels;
public final String dimOrder;
public final int sizeX, sizeY, sizeZ, sizeC, sizeT, imageCount;
public final int zSize, wSize, tSize;
public ImportSize(String fileName, Pixels pixels, String dimOrder) {
this.fileName = fileName;
this.pixels = pixels;
this.dimOrder = dimOrder;
sizeZ = pixels.getSizeZ().getValue();
sizeC = pixels.getSizeC().getValue();
sizeT = pixels.getSizeT().getValue();
sizeX = pixels.getSizeX().getValue();
sizeY = pixels.getSizeY().getValue();
imageCount = sizeZ * sizeC * sizeT;
final int order = getSequenceNumber(dimOrder);
int smallOffset = 1;
switch (order) {
// ZTW sequence
case 0:
zSize = smallOffset;
tSize = zSize * sizeZ;
wSize = tSize * sizeT;
break;
// WZT sequence
case 1:
wSize = smallOffset;
zSize = wSize * sizeC;
tSize = zSize * sizeZ;
break;
// ZWT sequence
case 2:
zSize = smallOffset;
wSize = zSize * sizeZ;
tSize = wSize * sizeC;
break;
// TWZ sequence
case 3:
tSize = smallOffset;
wSize = tSize * sizeT;
zSize = wSize * sizeC;
break;
// WTZ sequence
case 4:
wSize = smallOffset;
tSize = wSize * sizeC;
zSize = tSize * sizeT;
break;
// TZW
case 5:
tSize = smallOffset;
zSize = tSize * sizeT;
wSize = zSize * sizeZ;
break;
default:
throw new RuntimeException("Bad order");
}
}
private int getSequenceNumber(String dimOrder) {
if (dimOrder.equals("XYZTC"))
return 0;
if (dimOrder.equals("XYCZT"))
return 1;
if (dimOrder.equals("XYZCT"))
return 2;
if (dimOrder.equals("XYTCZ"))
return 3;
if (dimOrder.equals("XYCTZ"))
return 4;
if (dimOrder.equals("XYTZC"))
return 5;
throw new RuntimeException(dimOrder + " not represented in "
+ "getSequenceNumber");
}
}