Changeset 2303


Ignore:
Timestamp:
02/21/07 10:04:06 (13 years ago)
Author:
melissa
Message:

Fixed multi-series detection (for real this time).

File:
1 edited

Legend:

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

    r2295 r2303  
    578578      long nextTag = readTagHeader(); 
    579579      if (fmt.equals("PICT")) { 
    580         in.skipBytes(298); 
    581  
    582         // check if this is really a PICT image 
    583         in.skipBytes(8); 
    584         int w = DataTools.read2SignedBytes(in, false); 
    585         int newSize = (int) (nextTag - in.getFilePointer()); 
    586         if ((w == oldWidth) && ((i % 4) == 3) &&  
    587           (newSize - oldSize >= (width[0] * height[0]) / 2))  
    588         { 
    589           layerInfoList[1].add(tmp.get(i)); 
    590           layerInfoList[0].remove(tmp.get(i)); 
    591         } 
    592         else oldSize = newSize; 
     580        in.skipBytes(24); 
     581        int volumeType = DataTools.read2SignedBytes(in, false); 
     582        in.skipBytes(272); 
     583 
     584        int top, left, bottom, right; 
     585 
     586        if (version == 2) { 
     587          in.skipBytes(2); 
     588          top = DataTools.read2SignedBytes(in, false); 
     589          left = DataTools.read2SignedBytes(in, false); 
     590          bottom = DataTools.read2SignedBytes(in, false); 
     591          right = DataTools.read2SignedBytes(in, false); 
     592 
     593          if (width[series] == 0) width[series] = right - left; 
     594          if (height[series] == 0) height[series] = bottom - top; 
     595        } 
     596        else { 
     597          width[series] = DataTools.read4SignedBytes(in, false); 
     598          height[series] = DataTools.read4SignedBytes(in, false); 
     599        } 
     600 
     601        in.seek(layer.layerStart); 
     602 
     603        b = new byte[0]; 
     604 
     605        if (version == 2) { 
     606          nextTag = readTagHeader(); 
     607 
     608          if ((tag != 67 && tag != 68) || !fmt.equals("PICT")) { 
     609            throw new FormatException("Corrupt LIFF file."); 
     610          } 
     611          in.skipBytes(298); 
     612 
     613          // open image using pict reader 
     614          try { 
     615            b = new byte[(int) (nextTag - in.getFilePointer())]; 
     616            in.read(b); 
     617            BufferedImage img = pict.open(b); 
     618            if (img.getRaster().getNumBands() != oldChannels || 
     619              img.getWidth() != oldWidth) 
     620            { 
     621              layerInfoList[1].add(tmp.get(i)); 
     622              layerInfoList[0].remove(tmp.get(i)); 
     623            } 
     624          } 
     625          catch (FormatException e) { 
     626          } 
     627        } 
    593628      } 
    594629      else { 
Note: See TracChangeset for help on using the changeset viewer.