Changeset 3045 for trunk


Ignore:
Timestamp:
08/06/07 08:03:26 (13 years ago)
Author:
melissa
Message:

More efficient initialization of uncompressed files.

File:
1 edited

Legend:

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

    r3039 r3045  
    265265          in.read(b); 
    266266 
    267           String s = new String(b); 
    268  
    269           if (s.startsWith("ImageDataSeq")) { 
     267          String check = new String(b, 0, 12); 
     268 
     269          if (check.equals("ImageDataSeq")) { 
    270270            // found pixel data 
    271             int ndx = Integer.parseInt(s.substring(13, s.indexOf("!"))); 
     271           
     272            StringBuffer sb = new StringBuffer(); 
     273            int pt = 13; 
     274            while (b[pt] != '!') { 
     275              sb.append((char) b[pt]); 
     276              pt++; 
     277            } 
     278            int ndx = Integer.parseInt(sb.toString()); 
     279 
    272280            if (core.sizeC[0] == 0) { 
    273281              core.sizeC[0] = len / (core.sizeX[0] * core.sizeY[0] * 
    274282                FormatTools.getBytesPerPixel(core.pixelType[0])); 
    275283            } 
    276             offsets[ndx] = in.getFilePointer() - len + s.indexOf("!") + 9; 
    277           } 
    278           else if (s.startsWith("Image")) { 
     284            offsets[ndx] = in.getFilePointer() - len + sb.length() + 21; 
     285          } 
     286          else if (check.startsWith("Image")) { 
    279287            // XML metadata 
    280288 
    281289            ND2Handler handler = new ND2Handler(); 
    282290 
    283             s = s.substring(s.indexOf("!") + 1); 
    284  
    285291            // strip out invalid characters 
    286             for (int i=0; i<s.length(); i++) { 
    287               char c = s.charAt(i); 
     292            int off = 0; 
     293            for (int i=0; i<b.length; i++) { 
     294              char c = (char) b[i]; 
     295              if (off == 0 && c == '!') off = i + 1;  
     296               
    288297              if (Character.isISOControl(c) || !Character.isDefined(c)) { 
    289                 s = s.replace(c, ' '); 
     298                b[i] = (byte) ' ';  
    290299              } 
    291300            } 
    292  
    293             if (s.trim().length() > 0) { 
     301          
     302            if (b[off] == '<' && b[off + 1] == '?' && b[off + 2] == 'x' &&  
     303              b[off + 3] == 'm' && b[off + 4] == 'l') 
     304            { 
     305              ByteArrayInputStream s =  
     306                new ByteArrayInputStream(b, off, b.length - off); 
     307 
    294308              try { 
    295309                SAXParser parser = SAX_FACTORY.newSAXParser(); 
    296                 parser.parse(new ByteArrayInputStream(s.getBytes()), handler); 
     310                parser.parse(s, handler); 
    297311              } 
    298312              catch (ParserConfigurationException exc) { 
     
    319333      core.currentOrder[0] = "XYCZT"; 
    320334      core.rgb[0] = core.sizeC[0] > 1; 
    321       core.littleEndian[0] = true; 
     335      core.littleEndian[0] = false; 
    322336      core.interleaved[0] = false; 
    323337 
Note: See TracChangeset for help on using the changeset viewer.