Changeset 3974


Ignore:
Timestamp:
04/24/08 10:41:27 (12 years ago)
Author:
melissa
Message:

Removed calls to DataTools.sanitizeXML - for some reason, this breaks ND2.

File:
1 edited

Legend:

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

    r3969 r3974  
    260260  { 
    261261    if (legacy) return openImage(no, x, y, w, h); 
    262     if (!isJPEG) return super.openImage(no, x, y, w, h); 
     262    if (!isJPEG) { 
     263      return ImageTools.makeImage(openBytes(no, x, y, w, h), core.sizeX[series], 
     264        core.sizeY[series], getRGBChannelCount(), core.interleaved[series], 
     265        FormatTools.getBytesPerPixel(core.pixelType[series]), 
     266        core.littleEndian[series]); 
     267    } 
    263268 
    264269    FormatTools.assertId(currentId, true, 1); 
     
    367372      in.order(true); 
    368373 
    369       byte[] b = new byte[10 * 1024 * 1024]; 
     374      byte[] b = new byte[1024 * 1024]; 
    370375      int numValidPlanes = 0; 
    371376      while (in.getFilePointer() < in.length()) { 
     
    402407            int pt = 13; 
    403408            while (b[pt] != '!') { 
    404               sb.append((char) b[pt++]); 
     409              sb.append((char) b[pt]); 
     410              pt++; 
    405411            } 
    406412            int ndx = Integer.parseInt(sb.toString()); 
     
    431437 
    432438            // strip out invalid characters 
    433             String xml = DataTools.sanitizeXML(new String(b, 0, len)).trim(); 
    434  
    435             if (xml.startsWith("<?xml")) { 
    436               ByteArrayInputStream s = new ByteArrayInputStream(xml.getBytes()); 
     439            int off = 0; 
     440            for (int i=0; i<len; i++) { 
     441              char c = (char) b[i]; 
     442              if ((off == 0 && c == '!') || c == 0) off = i + 1; 
     443 
     444              if (Character.isISOControl(c) || !Character.isDefined(c)) { 
     445                b[i] = (byte) ' '; 
     446              } 
     447            } 
     448 
     449            if (len - off >= 5 && b[off] == '<' && b[off + 1] == '?' && 
     450              b[off + 2] == 'x' && b[off + 3] == 'm' && 
     451              b[off + 4] == 'l') // b.substring(off, off + 5).equals("<?xml") 
     452            { 
     453              ByteArrayInputStream s = 
     454                new ByteArrayInputStream(b, off, len - off); 
    437455 
    438456              try { 
     
    595613        store.setImageCreationDate( 
    596614          DataTools.convertDate(System.currentTimeMillis(), DataTools.UNIX), i); 
    597  
     615       
    598616        if (tsT.size() > 0) { 
    599617          setSeries(i); 
     
    604622            store.setPlaneTheT(new Integer(coords[2]), i, 0, n); 
    605623            float stamp = ((Double) tsT.get(coords[2])).floatValue(); 
    606             store.setPlaneTimingDeltaT(new Float(stamp), i, 0, n); 
     624            store.setPlaneTimingDeltaT(new Float(stamp), i, 0, n);  
    607625          } 
    608626        } 
     
    635653      box = in.readInt(); 
    636654      pos = in.getFilePointer(); 
     655      length -= 8; 
    637656 
    638657      if (box == 0x6a703263) { 
    639658        vs.add(new Long(in.getFilePointer())); 
    640659      } 
    641       if (!lastBoxFound) in.skipBytes(length - 8); 
     660      if (!lastBoxFound) in.seek(pos + length); 
    642661    } 
    643662 
     
    650669    boolean found = false; 
    651670    long off = -1; 
    652     byte[] buf = new byte[1024 * 1024]; 
     671    byte[] buf = new byte[2048]; 
    653672    while (!found && in.getFilePointer() < in.length()) { 
    654673      int read = 0; 
     
    689708      while (st.hasMoreTokens()) { 
    690709        String token = st.nextToken(); 
    691         //token = token.replaceAll("<!--.*-->", ""); 
     710        token = token.replaceAll("<!--.*-->", ""); 
    692711        token = token.replaceAll(".*xml", "").trim(); 
    693712        token = token.substring(0, token.lastIndexOf(">") + 1); 
     
    700719 
    701720      // strip out invalid characters 
    702       xml = DataTools.sanitizeXML(xml); 
    703  
    704       ByteArrayInputStream s = new ByteArrayInputStream(xml.getBytes()); 
     721      int offset = 0; 
     722      byte[] b = xml.getBytes(); 
     723      int len = b.length; 
     724      for (int i=0; i<len; i++) { 
     725        char c = (char) b[i]; 
     726        if (offset == 0 && c == '!') offset = i + 1; 
     727 
     728        if (Character.isISOControl(c) || !Character.isDefined(c)) { 
     729          b[i] = (byte) ' '; 
     730        } 
     731      } 
     732 
     733      ByteArrayInputStream s = 
     734        new ByteArrayInputStream(b, offset, len - offset); 
    705735 
    706736      try { 
Note: See TracChangeset for help on using the changeset viewer.