Skip to content

Commit

Permalink
CellSens .vsi: detect dimensions using the "dimension meaning" tag
Browse files Browse the repository at this point in the history
  • Loading branch information
melissalinkert committed Mar 2, 2016
1 parent 166e603 commit a828fbd
Showing 1 changed file with 35 additions and 0 deletions.
35 changes: 35 additions & 0 deletions components/formats-gpl/src/loci/formats/in/CellSensReader.java
Expand Up @@ -278,6 +278,14 @@ public class CellSensReader extends FormatReader {

private static final int CHANNEL_NAME = 2419;

// Dimension types
private static final int Z = 1;
private static final int T = 2;
private static final int LAMBDA = 3;
private static final int C = 4;
private static final int UNKNOWN = 5;
private static final int PHASE = 9;

// Stack properties
private static final int DISPLAY_LIMITS = 2003;
private static final int STACK_DISPLAY_LUT = 2004;
Expand Down Expand Up @@ -1364,6 +1372,7 @@ private void readTags(RandomAccessInputStream vsi, boolean populateMetadata, Str
int tag = vsi.readInt();
long nextField = vsi.readInt() & 0xffffffffL;
int dataSize = vsi.readInt();
String storedValue = null;

LOGGER.debug(" tag #{}: fieldType={}, tag={}, nextField={}, dataSize={}",
new Object[] {i, fieldType, tag, nextField, dataSize});
Expand Down Expand Up @@ -1695,6 +1704,7 @@ else if (tag != VALUE || tagPrefix.length() > 0) {
addGlobalMetaList(tagPrefix + tagName, value);
}
}
storedValue = value;
}

if (inDimensionProperties) {
Expand All @@ -1720,6 +1730,31 @@ else if (tag == CHANNEL_PROPERTIES && foundChannelTag &&
else if (tag == CHANNEL_PROPERTIES) {
foundChannelTag = true;
}
else if (tag == DIMENSION_MEANING && storedValue != null) {
int dimension = -1;
try {
dimension = Integer.parseInt(storedValue);
}
catch (NumberFormatException e) { }
switch (dimension) {
case Z:
p.dimensionOrdering.put("Z", dimensionTag);
break;
case T:
p.dimensionOrdering.put("T", dimensionTag);
break;
case LAMBDA:
p.dimensionOrdering.put("L", dimensionTag);
break;
case C:
p.dimensionOrdering.put("C", dimensionTag);
break;
case PHASE:
p.dimensionOrdering.put("P", dimensionTag);
default:
throw new FormatException("Invalid dimension: " + dimension);
}
}
}

if (nextField == 0 || tag == -494804095) {
Expand Down

0 comments on commit a828fbd

Please sign in to comment.