Changeset 1993


Ignore:
Timestamp:
01/02/07 15:52:55 (13 years ago)
Author:
curtis
Message:

Add stack reordering logic (to XYZCT) for View5D display option.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/plugins/Importer.java

    r1992 r1993  
    897897      } 
    898898      else if (stackFormat.equals(VIEW_IMAGE_5D)) { 
     899        int sizeZ = r.getSizeZ(id); 
     900        int sizeT = r.getSizeT(id); 
    899901        int sizeC = r.getSizeC(id); 
    900         if (imp.getStackSize() == r.getSizeZ(id) * r.getSizeT(id)) sizeC = 1; 
    901  
    902         // need to re-order the stack so that the order is XYCZT 
    903  
    904         ImageStack is = new ImageStack(r.getSizeX(id), r.getSizeY(id)); 
    905         ImageStack old = imp.getStack(); 
    906         if (r.getDimensionOrder(id).equals("XYCZT")) is = old; 
     902        if (imp.getStackSize() == sizeZ * sizeT) sizeC = 1; 
     903 
     904        // reorder stack to Image5D's preferred order: XYZTC 
     905        ImageStack is; 
     906        ImageStack stack = imp.getStack(); 
     907        if (r.getDimensionOrder(id).equals("XYCZT")) is = stack; 
    907908        else { 
    908           for (int t=0; t<r.getSizeT(id); t++) { 
    909             for (int z=0; z<r.getSizeZ(id); z++) { 
     909          is = new ImageStack(r.getSizeX(id), r.getSizeY(id)); 
     910          for (int t=0; t<sizeT; t++) { 
     911            for (int z=0; z<sizeZ; z++) { 
    910912              for (int c=0; c<sizeC; c++) { 
    911913                int ndx = r.getIndex(id, z, c, t) + 1; 
    912                 is.addSlice(old.getSliceLabel(ndx), old.getProcessor(ndx)); 
     914                is.addSlice(stack.getSliceLabel(ndx), stack.getProcessor(ndx)); 
    913915              } 
    914916            } 
     
    922924        ru.setVar("stack", is); 
    923925        ru.setVar("sizeC", sizeC); 
    924         ru.setVar("sizeZ", r.getSizeZ(id)); 
    925         ru.setVar("sizeT", r.getSizeT(id)); 
     926        ru.setVar("sizeZ", sizeZ); 
     927        ru.setVar("sizeT", sizeT); 
    926928        ru.exec("i5d = new Image5D(title, stack, sizeC, sizeZ, sizeT)"); 
    927929        ru.exec("i5d.show()"); 
    928930      } 
    929931      else if (stackFormat.equals(VIEW_VIEW_5D)) { 
     932        // reorder stack to View5D's preferred order: XYZCT 
     933        int sizeZ = r.getSizeZ(id); 
     934        int sizeC = r.getSizeC(id); 
     935        int sizeT = r.getSizeT(id); 
     936        if (imp.getStackSize() == sizeZ * sizeT) sizeC = 1; 
     937        ImageStack stack = imp.getStack(); 
     938        ImageStack is = new ImageStack(r.getSizeX(id), r.getSizeY(id)); 
     939        if (!r.getDimensionOrder(id).equals("XYZCT")) { 
     940          for (int t=0; t<sizeT; t++) { 
     941            for (int c=0; c<sizeC; c++) { 
     942              for (int z=0; z<sizeZ; z++) { 
     943                int ndx = r.getIndex(id, z, c, t) + 1; 
     944                is.addSlice(stack.getSliceLabel(ndx), stack.getProcessor(ndx)); 
     945              } 
     946            } 
     947          } 
     948          imp.setStack(imp.getTitle(), is); 
     949        } 
     950 
    930951        WindowManager.setTempCurrentImage(imp); 
     952//        IJ.runPlugIn("View5D_", "z=" + sizeZ + " t=" + sizeT); 
    931953        IJ.runPlugIn("View5D_", ""); 
    932954      } 
Note: See TracChangeset for help on using the changeset viewer.