Changeset 5972


Ignore:
Timestamp:
02/26/10 17:18:15 (10 years ago)
Author:
melissa
Message:

Added Gatan .dm2 reader and fixed a couple of Gatan .dm3 bugs. See #412.

Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • branches/cleanup/components/bio-formats/src/loci/formats/readers.txt

    r5912 r5972  
    4242loci.formats.in.MRCReader             # mrc, st, ali 
    4343loci.formats.in.GatanReader           # dm3 
     44loci.formats.in.GatanDM2Reader        # dm2 
    4445loci.formats.in.ImarisReader          # ims 
    4546loci.formats.in.OpenlabRawReader      # raw 
  • trunk/components/bio-formats/src/loci/formats/in/GatanReader.java

    r5624 r5972  
    8686  private String info; 
    8787 
     88  private boolean adjustEndianness = true; 
     89 
    8890  // -- Constructor -- 
    8991 
     
    9294    super("Gatan Digital Micrograph", "dm3"); 
    9395    domains = new String[] {FormatTools.EM_DOMAIN}; 
     96    suffixNecessary = false; 
    9497  } 
    9598 
     
    155158 
    156159    in.skipBytes(4); 
    157     core[0].littleEndian = in.readInt() == 1; 
    158     in.order(!isLittleEndian()); 
     160    core[0].littleEndian = in.readInt() != 1; 
     161    in.order(isLittleEndian()); 
    159162 
    160163    // TagGroup instance 
     
    162165    in.skipBytes(2); 
    163166    int numTags = in.readInt(); 
     167    if (numTags > in.length()) { 
     168      core[0].littleEndian = !isLittleEndian(); 
     169      in.order(isLittleEndian()); 
     170      adjustEndianness = false; 
     171    } 
    164172    debug("tags (" + numTags + ") {"); 
    165173    parseTags(numTags, null, "  "); 
     
    273281  { 
    274282    for (int i=0; i<numTags; i++) { 
     283      if (in.getFilePointer() >= in.length()) break; 
    275284      byte type = in.readByte();  // can be 21 (data) or 20 (tag group) 
    276285      int length = in.readShort(); 
     
    297306        if (n == 1) { 
    298307          if ("Dimensions".equals(parent) && labelString.length() == 0) { 
    299             in.order(!in.isLittleEndian()); 
     308            if (adjustEndianness) in.order(!in.isLittleEndian()); 
    300309            if (i == 0) core[0].sizeX = in.readInt(); 
    301310            else if (i == 1) core[0].sizeY = in.readInt(); 
    302             in.order(!in.isLittleEndian()); 
     311            if (adjustEndianness) in.order(!in.isLittleEndian()); 
    303312          } 
    304313          else value = String.valueOf(readValue(dataType)); 
     
    348357              for (int j=0; j<jumps.length; j++) { 
    349358                in.skipBytes(jumps[j]); 
     359                if (in.getFilePointer() >= in.length()) return; 
    350360                b = in.readByte(); 
    351361                if (b == GROUP || b == VALUE) break; 
     
    435445        return in.readInt(); 
    436446      case FLOAT: 
    437         in.order(!in.isLittleEndian()); 
     447        if (adjustEndianness) in.order(!in.isLittleEndian()); 
    438448        float f = in.readFloat(); 
    439         in.order(!in.isLittleEndian()); 
     449        if (adjustEndianness) in.order(!in.isLittleEndian()); 
    440450        return f; 
    441451      case DOUBLE: 
    442         in.order(!in.isLittleEndian()); 
     452        if (adjustEndianness) in.order(!in.isLittleEndian()); 
    443453        double dbl = in.readDouble(); 
    444         in.order(!in.isLittleEndian()); 
     454        if (adjustEndianness) in.order(!in.isLittleEndian()); 
    445455        return dbl; 
    446456      case BYTE: 
  • trunk/components/bio-formats/src/loci/formats/readers.txt

    r5912 r5972  
    4242loci.formats.in.MRCReader             # mrc, st, ali 
    4343loci.formats.in.GatanReader           # dm3 
     44loci.formats.in.GatanDM2Reader        # dm2 
    4445loci.formats.in.ImarisReader          # ims 
    4546loci.formats.in.OpenlabRawReader      # raw 
  • trunk/components/bio-formats/src/loci/formats/tiff/TiffParser.java

    r5882 r5972  
    987987 
    988988              if (idx < nSamples) { 
     989                if (reference == null) { 
     990                  reference = new int[] {0, 0, 0, 0, 0, 0}; 
     991                } 
    989992                int y = (bytes[lumaIndex] & 0xff) - reference[0]; 
    990993                int cb = (bytes[chromaIndex] & 0xff) - reference[2]; 
Note: See TracChangeset for help on using the changeset viewer.