Changeset 1937


Ignore:
Timestamp:
12/14/06 13:50:41 (13 years ago)
Author:
melissa
Message:

Removed duplicate calibration code and tweaked Image5D/View5D integration.

File:
1 edited

Legend:

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

    r1933 r1937  
    4848 */ 
    4949public class Importer { 
     50   
     51  // -- Constants -- 
     52 
     53  private static final String VIEW_STANDARD= "Standard ImageJ"; 
     54  private static final String VIEW_BROWSER = "4D Data Browser"; 
     55  private static final String VIEW_IMAGE_5D = "Image5D"; 
     56  private static final String VIEW_VIEW_5D = "View5D"; 
    5057 
    5158  // -- Fields -- 
    5259 
    5360  private LociImporter plugin; 
     61  private String stackFormat = ""; 
    5462 
    5563  // -- Constructor -- 
     
    130138    final String stackString = "View stack with: "; 
    131139 
    132     final String viewStandard = "Standard ImageJ"; 
    133     final String viewBrowser = "4D Data Browser"; 
    134     final String viewImage5D = "Image5D"; 
    135     final String viewView5D = "View5D"; 
    136140    Vector stackTypes = new Vector(); 
    137     stackTypes.add(viewStandard); 
     141    stackTypes.add(VIEW_STANDARD); 
    138142    if (Util.checkClass("loci.plugins.browser.LociDataBrowser")) { 
    139       stackTypes.add(viewBrowser); 
    140     } 
    141     if (Util.checkClass("i5d.Image5D")) stackTypes.add(viewImage5D); 
    142     if (Util.checkClass("View5D")) stackTypes.add(viewView5D); 
     143      stackTypes.add(VIEW_BROWSER); 
     144    } 
     145    if (Util.checkClass("i5d.Image5D")) stackTypes.add(VIEW_IMAGE_5D); 
     146    stackTypes.add(VIEW_VIEW_5D); 
    143147    final String[] stackFormats = new String[stackTypes.size()]; 
    144148    stackTypes.copyInto(stackFormats); 
     
    152156    boolean stitchFiles = Prefs.get("bioformats.stitchFiles", false); 
    153157    boolean specifyRanges = Prefs.get("bioformats.specifyRanges", false); 
    154     String stackFormat = Prefs.get("bioformats.stackFormat", viewStandard); 
     158    stackFormat = Prefs.get("bioformats.stackFormat", VIEW_STANDARD); 
    155159 
    156160    // prompt for parameters, if necessary 
     
    698702          // retrieve the spatial calibration information, if available 
    699703 
    700           double xcal = Double.NaN, ycal = Double.NaN, zcal = Double.NaN; 
    701           Integer ii = new Integer(i); 
    702  
    703           Float xf = store.getPixelSizeX(ii); 
    704           if (xf != null) xcal = xf.floatValue(); 
    705           Float yf = store.getPixelSizeY(ii); 
    706           if (yf != null) ycal = yf.floatValue(); 
    707           Float zf = store.getPixelSizeZ(ii); 
    708           if (zf != null) zcal = zf.floatValue(); 
    709  
    710           if (xcal != Double.NaN || ycal != Double.NaN || zcal != Double.NaN) { 
    711             Calibration c = new Calibration(); 
    712             if (xcal == xcal) { 
    713               c.pixelWidth = xcal; 
    714               c.setUnit("micron"); 
    715             } 
    716             if (ycal == ycal) { 
    717               c.pixelHeight = ycal; 
    718               c.setUnit("micron"); 
    719             } 
    720             if (zcal == zcal) { 
    721               c.pixelDepth = zcal; 
    722               c.setUnit("micron"); 
    723             } 
    724             imp.setCalibration(c); 
    725           } 
    726  
     704          applyCalibration(store, imp, i); 
    727705          imp.setFileInfo(fi); 
    728706 
    729707          int c = r.getSizeC(id); 
     708          displayStack(imp, r, id); 
    730709          r.close(); 
    731          
    732           // display image stack using appropriate format 
    733           if (stackFormat.equals(viewStandard)) imp.show(); 
    734           else if (stackFormat.equals("LOCI 4D Data Browser")) { 
    735           } 
    736           else if (stackFormat.equals(viewImage5D)) { 
    737             ReflectedUniverse ru = null; 
    738             ru = new ReflectedUniverse(); 
    739             ru.exec("import i5d.Image5D"); 
    740             ru.setVar("title", imp.getTitle()); 
    741             ru.setVar("stack", imp.getStack()); 
    742             ru.setVar("sizeC", r.getSizeC(id)); 
    743             ru.setVar("sizeZ", r.getSizeZ(id)); 
    744             ru.setVar("sizeT", r.getSizeT(id)); 
    745             ru.exec("i5d = new Image5D(title, stack, sizeC, sizeZ, sizeT)"); 
    746             ru.exec("i5d.show()"); 
    747           } 
    748           else if (stackFormat.equals(viewView5D)) { 
    749             WindowManager.setTempCurrentImage(imp); 
    750             IJ.runPlugIn("View5D_", ""); 
    751           } 
    752710        } 
    753711 
     
    790748  // -- Helper methods -- 
    791749 
     750  /** Opens each channel of the source stack in a separate window. */ 
    792751  private void slice(ImageStack is, String id, int z, int c, int t, 
    793752    FileInfo fi, IFormatReader r, boolean range, boolean colorize) 
     
    826785    // retrieve the spatial calibration information, if available 
    827786 
    828     OMEXMLMetadataStore store = 
    829       (OMEXMLMetadataStore) r.getMetadataStore(id); 
     787    for (int i=0; i<newStacks.length; i++) { 
     788      ImagePlus imp = new ImagePlus(id + " - Ch" + (i+1), newStacks[i]); 
     789      applyCalibration((OMEXMLMetadataStore) r.getMetadataStore(id), imp,  
     790        r.getSeries(id)); 
     791        
     792      // colorize channels; mostly copied from the ImageJ source 
     793 
     794      if (colorize) { 
     795        fi.reds = new byte[256]; 
     796        fi.greens = new byte[256]; 
     797        fi.blues = new byte[256]; 
     798 
     799        for (int j=0; j<256; j++) { 
     800          switch (i) { 
     801            case 0: fi.reds[j] = (byte) j; break; 
     802            case 1: fi.greens[j] = (byte) j; break; 
     803            case 2: fi.blues[j] = (byte) j; break; 
     804          } 
     805        } 
     806 
     807        ImageProcessor ip = imp.getProcessor(); 
     808        ColorModel cm = 
     809          new IndexColorModel(8, 256, fi.reds, fi.greens, fi.blues); 
     810 
     811        ip.setColorModel(cm); 
     812        if (imp.getStackSize() > 1) imp.getStack().setColorModel(cm); 
     813      } 
     814 
     815      imp.setFileInfo(fi); 
     816      displayStack(imp, r, id); 
     817    } 
     818  } 
     819 
     820  /** Apply spatial calibrations to an image stack. */ 
     821  private void applyCalibration(OMEXMLMetadataStore store, ImagePlus imp,  
     822    int series)  
     823  { 
    830824    double xcal = Double.NaN, ycal = Double.NaN, zcal = Double.NaN; 
    831     Integer ii = new Integer(r.getSeries(id)); 
     825    Integer ii = new Integer(series); 
    832826 
    833827    Float xf = store.getPixelSizeX(ii); 
     
    838832    if (zf != null) zcal = zf.floatValue(); 
    839833 
    840     for (int i=0; i<newStacks.length; i++) { 
    841       ImagePlus imp = new ImagePlus(id + " - Ch" + (i+1), newStacks[i]); 
    842  
    843       if (xcal != Double.NaN || ycal != Double.NaN || zcal != Double.NaN) { 
    844         Calibration cal = new Calibration(); 
    845         if (xcal == xcal) { 
    846           cal.pixelWidth = xcal; 
    847           cal.setUnit("micron"); 
    848         } 
    849         if (ycal == ycal) { 
    850           cal.pixelHeight = ycal; 
    851           cal.setUnit("micron"); 
    852         } 
    853         if (zcal == zcal) { 
    854           cal.pixelDepth = zcal; 
    855           cal.setUnit("micron"); 
    856         } 
    857         imp.setCalibration(cal); 
    858       } 
    859  
    860       // colorize channels; mostly copied from the ImageJ source 
    861  
    862       if (colorize) { 
    863         fi.reds = new byte[256]; 
    864         fi.greens = new byte[256]; 
    865         fi.blues = new byte[256]; 
    866  
    867         for (int j=0; j<256; j++) { 
    868           switch (i) { 
    869             case 0: fi.reds[j] = (byte) j; break; 
    870             case 1: fi.greens[j] = (byte) j; break; 
    871             case 2: fi.blues[j] = (byte) j; break; 
    872           } 
    873         } 
    874  
    875         ImageProcessor ip = imp.getProcessor(); 
    876         ColorModel cm = 
    877           new IndexColorModel(8, 256, fi.reds, fi.greens, fi.blues); 
    878  
    879         ip.setColorModel(cm); 
    880         if (imp.getStackSize() > 1) imp.getStack().setColorModel(cm); 
    881       } 
    882  
    883       imp.setFileInfo(fi); 
    884       imp.show(); 
     834    if (xcal != Double.NaN || ycal != Double.NaN || zcal != Double.NaN) { 
     835      Calibration cal = new Calibration(); 
     836      cal.setUnit("micron"); 
     837      cal.pixelWidth = xcal; 
     838      cal.pixelHeight = ycal; 
     839      cal.pixelDepth = zcal; 
     840      imp.setCalibration(cal); 
     841    } 
     842  } 
     843 
     844  /** Display the image stack using the appropriate plugin */ 
     845  private void displayStack(ImagePlus imp, IFormatReader r, String id) { 
     846    try { 
     847      if (stackFormat.equals(VIEW_STANDARD)) imp.show(); 
     848      else if (stackFormat.equals(VIEW_BROWSER)) { 
     849      } 
     850      else if (stackFormat.equals(VIEW_IMAGE_5D)) { 
     851        int sizeC = r.getSizeC(id); 
     852        if (imp.getStackSize() == r.getSizeZ(id) * r.getSizeT(id)) sizeC = 1; 
     853         
     854        ReflectedUniverse ru = null; 
     855        ru = new ReflectedUniverse(); 
     856        ru.exec("import i5d.Image5D"); 
     857        ru.setVar("title", imp.getTitle()); 
     858        ru.setVar("stack", imp.getStack()); 
     859        ru.setVar("sizeC", sizeC); 
     860        ru.setVar("sizeZ", r.getSizeZ(id)); 
     861        ru.setVar("sizeT", r.getSizeT(id)); 
     862        ru.exec("i5d = new Image5D(title, stack, sizeC, sizeZ, sizeT)"); 
     863        ru.exec("i5d.show()"); 
     864      } 
     865      else if (stackFormat.equals(VIEW_VIEW_5D)) { 
     866        WindowManager.setTempCurrentImage(imp); 
     867        IJ.runPlugIn("View5D_", ""); 
     868      } 
     869    } 
     870    catch (Exception e) {  
     871      imp.show();  
    885872    } 
    886873  } 
Note: See TracChangeset for help on using the changeset viewer.