Changeset 5998


Ignore:
Timestamp:
03/08/10 11:17:11 (10 years ago)
Author:
melissa
Message:

Added support for comb scanned mosaics.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/components/bio-formats/src/loci/formats/in/ZeissZVIReader.java

    r5881 r5998  
    105105  private int lastPlane; 
    106106  private Hashtable<Integer, Integer> tiles = new Hashtable<Integer, Integer>(); 
     107  private boolean isMeanderScan; 
    107108 
    108109  // -- Constructor -- 
     
    266267 
    267268              int ii = row*tileColumns + col; 
    268               if (((row % 2) == 1 && getRGBChannelCount() == 1)) { 
    269                 ii = row*tileColumns + (tileColumns - col - 1); 
    270                 tileIndex -= col; 
    271                 tileIndex += (tileColumns - col - 1); 
     269 
     270              if (isMeanderScan) { 
     271                if (((row % 2) == 1 && getRGBChannelCount() == 1)) { 
     272                  ii = row*tileColumns + (tileColumns - col - 1); 
     273                  tileIndex -= col; 
     274                  tileIndex += (tileColumns - col - 1); 
     275                } 
     276                else if (getRGBChannelCount() > 1) { 
     277                  ii = (tileRows - row - 1) * tileColumns + 1; 
     278                  if ((row % 2) == 0) { 
     279                    ii += col; 
     280                  } 
     281                  else { 
     282                    ii += (tileColumns - col - 1); 
     283                  } 
     284                  tileIndex = 0; 
     285                } 
    272286              } 
    273               else if (getRGBChannelCount() > 1) { 
    274                 ii = (tileRows - row - 1) * tileColumns + 1; 
    275                 if ((row % 2) == 0) { 
    276                   ii += col; 
     287              else { 
     288                if (getRGBChannelCount() > 1) { 
     289                  ii = (tileRows - row - 1) * tileColumns + col + 1; 
    277290                } 
    278                 else { 
    279                   ii += (tileColumns - col - 1); 
    280                 } 
    281                 tileIndex = 0; 
    282291              } 
     292 
    283293              Integer tileCount = tiles.get(new Integer(ii)); 
    284294              boolean valid = 
     
    403413      lastPlane = 0; 
    404414      tiles.clear(); 
     415      isMeanderScan = false; 
    405416    } 
    406417  } 
     
    431442    core[0].imageCount = 0; 
    432443 
    433     for (int i=0; i<files.length; i++) { 
    434       String uname = files[i].toUpperCase(); 
     444    for (String file : files) { 
     445      String uname = file.toUpperCase(); 
    435446      uname = uname.substring(uname.indexOf(File.separator) + 1); 
    436447      if (uname.endsWith("CONTENTS") && (uname.startsWith("IMAGE") || 
    437         uname.indexOf("ITEM") != -1) && poi.getFileSize(files[i]) > 1024) 
     448        uname.indexOf("ITEM") != -1) && poi.getFileSize(file) > 1024) 
    438449      { 
    439         if (getImageNumber(files[i], 0) >= getImageCount()) { 
     450        int imageNumber = getImageNumber(file, 0); 
     451        if (imageNumber >= getImageCount()) { 
    440452          core[0].imageCount++; 
    441453        } 
     
    456468      new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
    457469 
    458     for (int i=0; i<files.length; i++) { 
    459       String name = files[i]; 
    460  
     470    for (String name : files) { 
    461471      String relPath = name.substring(name.lastIndexOf(File.separator) + 1); 
    462472      if (!relPath.toUpperCase().equals("CONTENTS")) continue; 
     
    552562        coordinates[imageNum][2] = tidx; 
    553563        imageFiles[imageNum] = name; 
     564        s.close(); 
     565      } 
     566      else if (dirName.equals("RectangleSetup")) { 
     567        RandomAccessInputStream s = poi.getDocumentStream(name); 
     568        s.order(true); 
     569        s.seek(88); 
     570        short magic = s.readShort(); 
     571        isMeanderScan = magic < 5; 
    554572        s.close(); 
    555573      } 
Note: See TracChangeset for help on using the changeset viewer.