Changeset 6700


Ignore:
Timestamp:
07/14/10 13:47:38 (9 years ago)
Author:
melissa
Message:

More robust Z position parsing. The value of 'absoluteZ' is now taken into account, and the Z positions can be parsed from either the UIC1 or the UIC4 tag.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/components/bio-formats/src/loci/formats/in/MetamorphReader.java

    r6661 r6700  
    102102  private double zStart; 
    103103  private Double sizeX = null, sizeY = null; 
     104  private double tempZ; 
     105  private boolean validZ; 
    104106 
    105107  private int mmPlanes; //number of metamorph planes 
     
    228230      firstSeriesChannels = null; 
    229231      sizeX = sizeY = null; 
     232      tempZ = 0d; 
     233      validZ = false; 
    230234    } 
    231235  } 
     
    656660        } 
    657661        if (zDistances != null && p < zDistances.length) { 
    658           if (zDistances[p] != 0d) distance += zDistances[p]; 
    659           else distance += zDistances[0]; 
     662          if (p > 0) { 
     663            if (zDistances[p] != 0d) distance += zDistances[p]; 
     664            else distance += zDistances[0]; 
     665          } 
    660666          store.setPlanePositionZ(distance, i, p); 
    661667        } 
     
    10421048    in.seek(uic4offset); 
    10431049    if (in.getFilePointer() + 2 >= in.length()) return; 
     1050 
     1051    tempZ = 0d; 
     1052    validZ = false; 
     1053 
    10441054    short id = in.readShort(); 
    10451055    while (id != 0) { 
     
    10561066          break; 
    10571067        case 40: 
    1058           readRationals(new String[] {"absoluteZ"}); 
     1068          readRationals(new String[] {"UIC4 absoluteZ"}); 
    10591069          break; 
    10601070        case 41: 
    10611071          readAbsoluteZValid(); 
    10621072          break; 
     1073        case 46: 
     1074          in.skipBytes(mmPlanes * 8); // TODO 
     1075          break; 
     1076        default: 
     1077          in.skipBytes(4); 
    10631078      } 
    10641079      id = in.readShort(); 
    10651080    } 
    10661081    in.seek(saveLoc); 
     1082 
     1083    if (validZ) zStart = tempZ; 
    10671084  } 
    10681085 
     
    10861103      for (int q=0; q<labels.length; q++) { 
    10871104        double v = readRational(in).doubleValue(); 
    1088         if (labels[q].equals("absoluteZ") && i == 0) { 
    1089           zStart = v; 
     1105        if (labels[q].endsWith("absoluteZ") && i == 0) { 
     1106          tempZ = v; 
    10901107        } 
    10911108        addSeriesMeta(labels[q] + "[" + pos + "]", v); 
     
    11061123  void readAbsoluteZValid() throws IOException { 
    11071124    for (int i=0; i<mmPlanes; i++) { 
    1108       addSeriesMeta("absoluteZValid[" + intFormatMax(i, mmPlanes) + "]", 
    1109         in.readInt()); 
     1125      int valid = in.readInt(); 
     1126      addSeriesMeta("absoluteZValid[" + intFormatMax(i, mmPlanes) + "]", valid); 
     1127      if (i == 0) { 
     1128        validZ = valid == 1; 
     1129      } 
    11101130    } 
    11111131  } 
     
    11291149    String thedate, thetime; 
    11301150    long lastOffset; 
     1151 
     1152    tempZ = 0d; 
     1153    validZ = false; 
    11311154    for (int i=0; i<uic1count; i++) { 
    11321155      if (in.getFilePointer() >= in.length()) break; 
     
    12241247          if (valOrOffset != 0) { 
    12251248            in.seek(valOrOffset); 
    1226             readRationals(new String[] {"absoluteZ"}); 
     1249            readRationals(new String[] {"UIC1 absoluteZ"}); 
    12271250          } 
    12281251          break; 
     
    12541277    } 
    12551278    in.seek(saveLoc); 
     1279 
     1280    if (validZ) zStart = tempZ; 
    12561281  } 
    12571282 
     
    13331358  private String getKey(int id) { 
    13341359    switch (id) { 
     1360      case 0: return "AutoScale"; 
    13351361      case 1: return "MinScale"; 
    13361362      case 2: return "MaxScale"; 
     
    13541380      case 20: return "grayPointCount"; 
    13551381      case 21: return "grayX"; 
    1356       case 22: return "gray"; 
     1382      case 22: return "grayY"; 
    13571383      case 23: return "grayMin"; 
    13581384      case 24: return "grayMax"; 
     
    13601386      case 26: return "StandardLUT"; 
    13611387      case 27: return "Wavelength"; 
     1388      case 28: return "StagePosition"; 
     1389      case 29: return "CameraChipOffset"; 
    13621390      case 30: return "OverlayMask"; 
    13631391      case 31: return "OverlayCompress"; 
     
    13691397      case 38: return "AutoScaleLoInfo"; 
    13701398      case 39: return "AutoScaleHiInfo"; 
     1399      case 40: return "AbsoluteZ"; 
     1400      case 41: return "AbsoluteZValid"; 
    13711401      case 42: return "Gamma"; 
    13721402      case 43: return "GammaRed"; 
     
    13741404      case 45: return "GammaBlue"; 
    13751405      case 46: return "CameraBin"; 
     1406      case 47: return "NewLUT"; 
     1407      case 48: return "ImagePropertyEx"; 
     1408      case 49: return "PlaneProperty"; 
     1409      case 50: return "UserLutTable"; 
     1410      case 51: return "RedAutoScaleInfo"; 
     1411      case 52: return "RedAutoScaleLoInfo"; 
     1412      case 53: return "RedAutoScaleHiInfo"; 
     1413      case 54: return "RedMinScaleInfo"; 
     1414      case 55: return "RedMaxScaleInfo"; 
     1415      case 56: return "GreenAutoScaleInfo"; 
     1416      case 57: return "GreenAutoScaleLoInfo"; 
     1417      case 58: return "GreenAutoScaleHiInfo"; 
     1418      case 59: return "GreenMinScaleInfo"; 
     1419      case 60: return "GreenMaxScaleInfo"; 
     1420      case 61: return "BlueAutoScaleInfo"; 
     1421      case 62: return "BlueAutoScaleLoInfo"; 
     1422      case 63: return "BlueAutoScaleHiInfo"; 
     1423      case 64: return "BlueMinScaleInfo"; 
     1424      case 65: return "BlueMaxScaleInfo"; 
     1425      case 66: return "OverlayPlaneColor"; 
    13761426    } 
    13771427    return null; 
Note: See TracChangeset for help on using the changeset viewer.