Changeset 3226


Ignore:
Timestamp:
10/05/07 09:50:47 (12 years ago)
Author:
melissa
Message:

Look for the smallest TiffData tag, instead of always using the first one.

File:
1 edited

Legend:

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

    r3225 r3226  
    210210            ByteArrayInputStream is = 
    211211              new ByteArrayInputStream(comment.getBytes()); 
    212             DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
     212            DocumentBuilderFactory factory = 
     213              DocumentBuilderFactory.newInstance(); 
    213214            Document doc = null; 
    214215            try { 
     
    224225              for (int j=0; j<numSeries; j++) { 
    225226                NodeList list = ((Element) pixelsList.item(j)).getChildNodes(); 
    226                 Element tiffData = null; 
     227                // if there are multiple TiffData elements, find the one with 
     228                // the smallest ZCT coordinates 
     229 
     230                v = new Vector(); 
    227231                for (int q=0; q<list.getLength(); q++) { 
    228232                  if (((Node) list.item(q)).getNodeName().equals("TiffData")) { 
    229                     tiffData = (Element) list.item(q); 
    230                     break; 
     233                    v.add(list.item(q)); 
    231234                  } 
    232235                } 
    233                 String firstZ = tiffData.getAttribute("FirstZ"); 
    234                 String firstC = tiffData.getAttribute("FirstC"); 
    235                 String firstT = tiffData.getAttribute("FirstT"); 
    236                 String firstIFD = tiffData.getAttribute("IFD"); 
    237                 if (firstZ == null || firstZ.equals("")) firstZ = "0"; 
    238                 if (firstC == null || firstC.equals("")) firstC = "0"; 
    239                 if (firstT == null || firstT.equals("")) firstT = "0"; 
    240                 if (firstIFD == null || firstIFD.equals("")) firstIFD = "0"; 
     236                Element[] tiffData = (Element[]) v.toArray(new Element[0]); 
     237                int[] smallestCoords = new int[4]; 
     238                for (int q=0; q<tiffData.length; q++) { 
     239                  String firstZ = tiffData[q].getAttribute("FirstZ"); 
     240                  String firstC = tiffData[q].getAttribute("FirstC"); 
     241                  String firstT = tiffData[q].getAttribute("FirstT"); 
     242                  String firstIFD = tiffData[q].getAttribute("IFD"); 
     243                  if (firstZ == null || firstZ.equals("")) firstZ = "0"; 
     244                  if (firstC == null || firstC.equals("")) firstC = "0"; 
     245                  if (firstT == null || firstT.equals("")) firstT = "0"; 
     246                  if (firstIFD == null || firstIFD.equals("")) firstIFD = "0"; 
     247                  int z = Integer.parseInt(firstZ); 
     248                  int c = Integer.parseInt(firstC); 
     249                  int t = Integer.parseInt(firstT); 
     250                  if (z <= smallestCoords[0] && c <= smallestCoords[1] && 
     251                    t <= smallestCoords[2]) 
     252                  { 
     253                    smallestCoords[0] = z; 
     254                    smallestCoords[1] = c; 
     255                    smallestCoords[2] = t; 
     256                    smallestCoords[3] = Integer.parseInt(firstIFD); 
     257                  } 
     258                } 
    241259                coordinateMap[j].put(new Integer(files.size() - 1), 
    242                   new int[] {Integer.parseInt(firstZ), Integer.parseInt(firstC), 
    243                   Integer.parseInt(firstT), Integer.parseInt(firstIFD)}); 
     260                  smallestCoords); 
    244261                numIFDs[j] += TiffTools.getIFDs(new RandomAccessStream( 
    245262                  (String) files.get(files.size() - 1))).length; 
Note: See TracChangeset for help on using the changeset viewer.