Changeset 6022


Ignore:
Timestamp:
03/11/10 15:44:35 (10 years ago)
Author:
curtis
Message:

Progress on importer refactoring. Still much left to do.

Location:
trunk/components/loci-plugins/src/loci/plugins
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/components/loci-plugins/src/loci/plugins/importer/Importer.java

    r6011 r6022  
    5858import loci.formats.MetadataTools; 
    5959import loci.formats.gui.XMLWindow; 
    60 import loci.formats.meta.MetadataRetrieve; 
     60import loci.formats.meta.IMetadata; 
    6161import loci.plugins.Colorizer; 
    6262import loci.plugins.LociImporter; 
     
    6868import loci.plugins.util.ImagePlusTools; 
    6969import loci.plugins.util.ROIHandler; 
    70 import loci.plugins.util.SearchableWindow; 
    7170import loci.plugins.util.VirtualImagePlus; 
    7271import loci.plugins.util.VirtualReader; 
     
    154153      ImagePlusReader r = options.getReader(); 
    155154 
    156       // -- Step 3: prompt for more information as needed -- 
    157  
    158155      BF.debug("analyze and read from data source"); 
    159156 
    160157      IJ.showStatus("Analyzing " + options.getIdName()); 
    161158 
    162       // -- Step 4: display metadata, if appropriate -- 
     159      // -- Step 3: display metadata, if appropriate -- 
    163160 
    164161      if (options.isShowMetadata()) { 
     
    168165        // display standard metadata in a table in its own window 
    169166        ImporterMetadata meta = options.getOriginalMetadata(); 
    170  
    171         // sort metadata keys 
    172         String metaString = meta.getMetadataString("\t"); 
    173         SearchableWindow w = new SearchableWindow("Original Metadata - " + 
    174           options.getIdName(), "Key\tValue", metaString, 400, 400); 
    175         w.setVisible(true); 
     167        meta.showMetadataWindow(options.getIdName()); 
    176168      } 
    177169      else BF.debug("skip metadata"); 
     
    188180            new XMLWindow("OME Metadata - " + options.getIdName()); 
    189181          try { 
    190             metaWindow.setXML(MetadataTools.getOMEXML(options.getMetadata())); 
     182            String omeXML = MetadataTools.getOMEXML(options.getOMEMetadata()); 
     183            metaWindow.setXML(omeXML); 
    191184            WindowTools.placeWindow(metaWindow); 
    192185            metaWindow.setVisible(true); 
     
    214207      if (options.isVirtual()) { 
    215208        int totalSeries = 0; 
    216         for (int i=0; i<r.getSeriesCount(); i++) { 
    217           if (options.isSeriesOn(i)) totalSeries++; 
     209        for (int s=0; s<r.getSeriesCount(); s++) { 
     210          if (options.isSeriesOn(s)) totalSeries++; 
    218211        } 
    219212        ((VirtualReader) r.getReader()).setRefCount(totalSeries); 
    220213      } 
    221214 
    222       for (int i=0; i<r.getSeriesCount(); i++) { 
    223         if (!options.isSeriesOn(i)) continue; 
    224         r.setSeries(i); 
     215      for (int s=0; s<r.getSeriesCount(); s++) { 
     216        if (!options.isSeriesOn(s)) continue; 
     217        r.setSeries(s); 
    225218 
    226219        boolean[] load = new boolean[r.getImageCount()]; 
    227         int cBegin = options.getCBegin(i); 
    228         int cEnd = options.getCEnd(i); 
    229         int cStep = options.getCStep(i); 
    230         int zBegin = options.getZBegin(i); 
    231         int zEnd = options.getZEnd(i); 
    232         int zStep = options.getZStep(i); 
    233         int tBegin = options.getTBegin(i); 
    234         int tEnd = options.getTEnd(i); 
    235         int tStep = options.getTStep(i); 
     220        int cBegin = options.getCBegin(s); 
     221        int cEnd = options.getCEnd(s); 
     222        int cStep = options.getCStep(s); 
     223        int zBegin = options.getZBegin(s); 
     224        int zEnd = options.getZEnd(s); 
     225        int zStep = options.getZStep(s); 
     226        int tBegin = options.getTBegin(s); 
     227        int tEnd = options.getTEnd(s); 
     228        int tStep = options.getTStep(s); 
    236229        for (int c=cBegin; c<=cEnd; c+=cStep) { 
    237230          for (int z=zBegin; z<=zEnd; z+=zStep) { 
     
    257250        fi.directory = idDir; 
    258251 
    259         // place metadata key/value pairs in ImageJ's info field 
    260         String metadata = options.getOriginalMetadata().toString(); 
    261  
    262252        long startTime = System.currentTimeMillis(); 
    263253        long time = startTime; 
     
    268258        ImageStack stackO = null; // for all other images (24-bit RGB) 
    269259 
    270         Rectangle cropRegion = options.getCropRegion(i); 
     260        Rectangle cropRegion = options.getCropRegion(s); 
    271261        int w = options.doCrop() ? cropRegion.width : r.getSizeX(); 
    272262        int h = options.doCrop() ? cropRegion.height : r.getSizeY(); 
     
    281271        ((VirtualReader) r.getReader()).setOutputOrder(stackOrder); 
    282272 
    283         options.getMetadata().setPixelsDimensionOrder(stackOrder, i, 0); 
     273        options.getOMEMetadata().setPixelsDimensionOrder(stackOrder, s, 0); 
    284274 
    285275        // dump OME-XML to ImageJ's description field, if available 
    286         fi.description = MetadataTools.getOMEXML(options.getMetadata()); 
     276        fi.description = MetadataTools.getOMEXML(options.getOMEMetadata()); 
    287277 
    288278        if (options.isVirtual()) { 
     
    294284          int merge = (needComposite || !doMerge) ? 1 : cSize; 
    295285 
    296           r.setSeries(i); 
     286          r.setSeries(s); 
    297287          // NB: ImageJ 1.39+ is required for VirtualStack 
    298288          BFVirtualStack virtualStackB = new BFVirtualStack(options.getId(), 
     
    305295              String label = constructSliceLabel( 
    306296                new ChannelMerger(r).getIndex(pos[0], pos[1], pos[2]), 
    307                 new ChannelMerger(r), options.getMetadata(), i, 
    308                 options.getZCount(i), options.getCCount(i), 
    309                 options.getTCount(i)); 
     297                new ChannelMerger(r), options.getOMEMetadata(), s, 
     298                options.getZCount(s), options.getCCount(s), 
     299                options.getTCount(s)); 
    310300              virtualStackB.addSlice(label); 
    311301            } 
     
    314304            for (int j=0; j<r.getImageCount(); j++) { 
    315305              String label = constructSliceLabel(j, r, 
    316                 options.getMetadata(), i, options.getZCount(i), 
    317                 options.getCCount(i), options.getTCount(i)); 
     306                options.getOMEMetadata(), s, options.getZCount(s), 
     307                options.getCCount(s), options.getTCount(s)); 
    318308              virtualStackB.addSlice(label); 
    319309            } 
     
    323313          if (r.isIndexed()) colorModels = new IndexColorModel[r.getSizeC()]; 
    324314 
    325           for (int j=0; j<r.getImageCount(); j++) { 
    326             if (!load[j]) continue; 
     315          for (int i=0; i<r.getImageCount(); i++) { 
     316            if (!load[i]) continue; 
    327317 
    328318            // limit message update rate 
     
    330320            if (clock - time >= 100) { 
    331321              IJ.showStatus("Reading " + 
    332                 (r.getSeriesCount() > 1 ? ("series " + (i + 1) + ", ") : "") + 
    333                 "plane " + (j + 1) + "/" + total); 
     322                (r.getSeriesCount() > 1 ? ("series " + (s + 1) + ", ") : "") + 
     323                "plane " + (i + 1) + "/" + total); 
    334324              time = clock; 
    335325            } 
    336326            IJ.showProgress((double) q++ / total); 
    337327 
    338             int ndx = j; 
    339  
    340             String label = constructSliceLabel(ndx, r, 
    341               options.getMetadata(), i, options.getZCount(i), 
    342               options.getCCount(i), options.getTCount(i)); 
    343  
    344             // get image processor for jth plane 
    345             ImageProcessor[] p = r.openProcessors(ndx, cropRegion); 
     328            String label = constructSliceLabel(i, r, 
     329              options.getOMEMetadata(), s, options.getZCount(s), 
     330              options.getCCount(s), options.getTCount(s)); 
     331 
     332            // get image processor for ith plane 
     333            ImageProcessor[] p = r.openProcessors(i, cropRegion); 
    346334            ImageProcessor ip = p[0]; 
    347335            if (p.length > 1) { 
     
    353341            } 
    354342 
    355             int channel = r.getZCTCoords(ndx)[1]; 
     343            int channel = r.getZCTCoords(i)[1]; 
    356344            if (colorModels != null && p.length == 1) { 
    357345              colorModels[channel] = (IndexColorModel) ip.getColorModel(); 
     
    392380        IJ.showProgress(1); 
    393381 
    394         String seriesName = options.getMetadata().getImageName(i); 
    395  
    396         showStack(stackB, options.getCurrentFile(), seriesName, 
    397           options.getMetadata(), options.getCCount(i), 
    398           options.getZCount(i), options.getTCount(i), 
    399           r.getSizeZ(), r.getEffectiveSizeC(), r.getSizeT(), 
    400           fi, r, options, metadata, options.isWindowless()); 
    401         showStack(stackS, options.getCurrentFile(), seriesName, 
    402           options.getMetadata(), options.getCCount(i), 
    403           options.getZCount(i), options.getTCount(i), 
    404           r.getSizeZ(), r.getEffectiveSizeC(), r.getSizeT(), 
    405           fi, r, options, metadata, options.isWindowless()); 
    406         showStack(stackF, options.getCurrentFile(), seriesName, 
    407           options.getMetadata(), options.getCCount(i), 
    408           options.getZCount(i), options.getTCount(i), 
    409           r.getSizeZ(), r.getEffectiveSizeC(), r.getSizeT(), 
    410           fi, r, options, metadata, options.isWindowless()); 
    411         showStack(stackO, options.getCurrentFile(), seriesName, 
    412           options.getMetadata(), options.getCCount(i), 
    413           options.getZCount(i), options.getTCount(i), 
    414           r.getSizeZ(), r.getEffectiveSizeC(), r.getSizeT(), 
    415           fi, r, options, metadata, options.isWindowless()); 
     382        showStack(stackB, s, fi, options); 
     383        showStack(stackS, s, fi, options); 
     384        showStack(stackF, s, fi, options); 
     385        showStack(stackO, s, fi, options); 
    416386 
    417387        long endTime = System.currentTimeMillis(); 
     
    502472 
    503473        ImagePlus[] impsArray = imps.toArray(new ImagePlus[0]); 
    504         ROIHandler.openROIs(options.getMetadata(), impsArray); 
     474        ROIHandler.openROIs(options.getOMEMetadata(), impsArray); 
    505475      } 
    506476      else BF.debug("skip ROIs"); 
     
    536506   * the specified parameters and import options. 
    537507   */ 
    538   private void showStack(ImageStack stack, String file, String series, 
    539     MetadataRetrieve retrieve, int cCount, int zCount, int tCount, 
    540     int sizeZ, int sizeC, int sizeT, FileInfo fi, final IFormatReader r, 
    541     final ImporterOptions options, String metadata, boolean windowless) 
    542     throws FormatException, IOException 
     508  private void showStack(ImageStack stack, int series, FileInfo fi, 
     509    ImporterOptions options) throws FormatException, IOException 
    543510  { 
    544511    if (stack == null) return; 
    545     String title = getTitle(r, file, series, options.isGroupFiles()); 
     512 
     513    String seriesName = options.getOMEMetadata().getImageName(series); 
     514    String file = options.getCurrentFile(); 
     515    IMetadata meta = options.getOMEMetadata(); 
     516    int cCount = options.getCCount(series); 
     517    int zCount = options.getZCount(series); 
     518    int tCount = options.getTCount(series); 
     519    IFormatReader r = options.getReader(); 
     520    int sizeZ = r.getSizeZ(); 
     521    int sizeC = r.getEffectiveSizeC(); 
     522    int sizeT = r.getSizeT(); 
     523    boolean windowless = options.isWindowless(); 
     524 
     525    String title = getTitle(r, file, seriesName, options.isGroupFiles()); 
    546526    ImagePlus imp = null; 
    547527    if (options.isVirtual()) { 
     
    551531    else imp = new ImagePlus(title, stack); 
    552532 
     533    // place metadata key/value pairs in ImageJ's info field 
     534    String metadata = options.getOriginalMetadata().toString(); 
    553535    imp.setProperty("Info", metadata); 
    554536 
    555537    // retrieve the spatial calibration information, if available 
    556     ImagePlusTools.applyCalibration(retrieve, imp, r.getSeries()); 
     538    ImagePlusTools.applyCalibration(meta, imp, r.getSeries()); 
    557539    imp.setFileInfo(fi); 
    558540    imp.setDimensions(cCount, zCount, tCount); 
    559     displayStack(imp, r, options, windowless); 
    560   } 
    561  
    562   /** Displays the image stack using the appropriate plugin. */ 
    563   private void displayStack(ImagePlus imp, IFormatReader r, 
    564     ImporterOptions options, boolean windowless) 
    565   { 
     541 
     542    // display the image stack using the appropriate plugin 
     543 
    566544    boolean hyper = options.isViewHyperstack() || options.isViewBrowser(); 
    567545    imp.setOpenAsHyperStack(hyper); 
     
    697675 
    698676  /** Get an appropriate stack title, given the file name. */ 
    699   private String getTitle(IFormatReader r, String file, String series, 
     677  private String getTitle(IFormatReader r, String file, String seriesName, 
    700678    boolean groupFiles) 
    701679  { 
     
    715693      } 
    716694    } 
    717     if (series != null && !file.endsWith(series) && r.getSeriesCount() > 1) { 
    718       title += " - " + series; 
     695    if (seriesName != null && !file.endsWith(seriesName) && 
     696      r.getSeriesCount() > 1) 
     697    { 
     698      title += " - " + seriesName; 
    719699    } 
    720700    if (title.length() > 128) { 
     
    728708  /** Constructs slice label. */ 
    729709  private String constructSliceLabel(int ndx, IFormatReader r, 
    730     MetadataRetrieve retrieve, int series, 
    731     int zCount, int cCount, int tCount) 
     710    IMetadata meta, int series, int zCount, int cCount, int tCount) 
    732711  { 
    733712    r.setSeries(series); 
     
    768747    } 
    769748    // put image name at the end, in case it is long 
    770     String imageName = retrieve.getImageName(series); 
     749    String imageName = meta.getImageName(series); 
    771750    if (imageName != null && !imageName.trim().equals("")) { 
    772751      sb.append(" - "); 
  • trunk/components/loci-plugins/src/loci/plugins/importer/ImporterMetadata.java

    r6011 r6022  
    3333import loci.formats.IFormatReader; 
    3434import loci.formats.MetadataTools; 
     35import loci.plugins.util.SearchableWindow; 
    3536 
    3637/** 
     
    6061 
    6162      // build prefix from image name and/or series number 
    62       String s = options.getMetadata().getImageName(i); 
     63      String s = options.getOMEMetadata().getImageName(i); 
    6364      if ((s == null || s.trim().length() == 0) && seriesCount > 1) { 
    6465        StringBuffer sb = new StringBuffer(); 
     
    108109  } 
    109110 
     111  /** Displays the metadata in a searchable window. */ 
     112  public void showMetadataWindow(String name) { 
     113    // sort metadata keys 
     114    String metaString = getMetadataString("\t"); 
     115    SearchableWindow w = new SearchableWindow("Original Metadata - " + name, 
     116      "Key\tValue", metaString, 400, 400); 
     117    w.setVisible(true); 
     118  } 
     119 
    110120  // -- Object API methods -- 
    111121 
  • trunk/components/loci-plugins/src/loci/plugins/importer/ImporterOptions.java

    r6011 r6022  
    3434 
    3535import loci.common.Location; 
    36 import loci.common.ReflectException; 
    37 import loci.common.ReflectedUniverse; 
    38 import loci.formats.ChannelSeparator; 
    3936import loci.formats.FilePattern; 
    40 import loci.formats.FileStitcher; 
    4137import loci.formats.FormatException; 
    42 import loci.formats.FormatTools; 
    43 import loci.formats.IFormatReader; 
    44 import loci.formats.ImageReader; 
    45 import loci.formats.MetadataTools; 
    4638import loci.formats.meta.IMetadata; 
    4739import loci.plugins.prefs.OptionsDialog; 
     
    4941import loci.plugins.prefs.StringOption; 
    5042import loci.plugins.util.BF; 
    51 import loci.plugins.util.IJStatusEchoer; 
    5243import loci.plugins.util.ImagePlusReader; 
    5344import loci.plugins.util.LibraryChecker; 
    54 import loci.plugins.util.LociPrefs; 
    55 import loci.plugins.util.VirtualReader; 
    56 import loci.plugins.util.WindowTools; 
    5745 
    5846/** 
     
    133121  // -- Fields - derived values -- 
    134122 
    135   protected String idName; 
    136   protected Location idLoc; 
    137   protected IMetadata meta; 
    138   protected String currentFile; 
    139  
    140   protected ImagePlusReader r; 
    141   protected ImporterMetadata importerMetadata; 
     123  protected ImporterReader reader; 
     124  protected ImporterMetadata metadata; 
    142125 
    143126  // series options 
     
    154137  // -- Fields - internal -- 
    155138 
    156   private IFormatReader baseReader; 
    157   private VirtualReader virtualReader; 
    158139  private String[] seriesLabels; 
    159140 
     
    222203   */ 
    223204  public boolean showDialogs() throws FormatException, IOException { 
    224     baseReader = null; 
    225     idName = null; 
    226     idLoc = null; 
     205    reader = null; 
    227206 
    228207    if (!promptLocation()) return false; 
    229208    if (!promptId()) return false; 
    230209 
    231     computeNameAndLocation(); 
    232     createBaseReader(); 
     210    reader = new ImporterReader(this); 
    233211 
    234212    if (!promptOptions()) return false; 
     
    240218    IJ.showStatus("Analyzing " + getIdName()); 
    241219 
    242     baseReader.setMetadataFiltered(true); 
    243     baseReader.setOriginalMetadataPopulated(true); 
    244     baseReader.setGroupFiles(!isUngroupFiles()); 
    245     baseReader.setId(getId()); 
    246  
    247     currentFile = baseReader.getCurrentFile(); 
     220    reader.prepareStuff(); 
    248221 
    249222    if (!promptFilePattern()) return false; 
    250223 
    251     initializeReader(); 
     224    reader.initializeReader(); 
    252225 
    253226    if (!promptSeries()) return false; 
     
    436409  public String getWindowlessInfo() { return getInfo(KEY_WINDOWLESS); } 
    437410  public boolean isWindowless() { 
    438     if (baseReader != null && LociPrefs.isWindowless(baseReader)) return true; 
     411    if (reader != null && reader.isWindowless()) return true; 
    439412    return isSet(KEY_WINDOWLESS); 
    440413  } 
     
    443416  // -- ImporterOptions methods - derived values accessors -- 
    444417 
    445   public String getIdName() { return idName; } 
    446   public Location getIdLocation() { return idLoc; } 
    447   public IMetadata getMetadata() { return meta; } 
    448   public String getCurrentFile() { return currentFile; } 
    449   public ImagePlusReader getReader() { return r; } 
    450   public ImporterMetadata getOriginalMetadata() { return importerMetadata; } 
     418  public String getIdName() { return reader.idName; } 
     419  public Location getIdLocation() { return reader.idLoc; } 
     420  public String getCurrentFile() { return reader.currentFile; } 
     421  public ImagePlusReader getReader() { return reader.r; } 
     422  public IMetadata getOMEMetadata() { return reader.meta; } 
     423  public ImporterMetadata getOriginalMetadata() { return metadata; } 
    451424 
    452425  // series options 
     
    470443  // -- Helper methods -- 
    471444 
    472   /** Initializes the idName and idLoc derived values. */ 
    473   private void computeNameAndLocation() { 
    474     String id = getId(); 
    475  
    476     idLoc = null; 
    477     idName = id; 
    478     if (isLocal()) { 
    479       idLoc = new Location(id); 
    480       idName = idLoc.getName(); 
    481     } 
    482     else if (isOME() || isOMERO()) { 
    483       // NB: strip out username and password when opening from OME/OMERO 
    484       StringTokenizer st = new StringTokenizer(id, "?&"); 
    485       StringBuffer idBuf = new StringBuffer(); 
    486       int tokenCount = 0; 
    487       while (st.hasMoreTokens()) { 
    488         String token = st.nextToken(); 
    489         if (token.startsWith("username=") || token.startsWith("password=")) { 
    490           continue; 
    491         } 
    492         if (tokenCount == 1) idBuf.append("?"); 
    493         else if (tokenCount > 1) idBuf.append("&"); 
    494         idBuf.append(token); 
    495         tokenCount++; 
    496       } 
    497       idName = idBuf.toString(); 
    498     } 
    499   } 
    500  
    501   /** 
    502    * Initializes an {@link loci.formats.IFormatReader} 
    503    * according to the current configuration. 
    504    */ 
    505   private void createBaseReader() { 
    506     if (isLocal() || isHTTP()) { 
    507       if (!isQuiet()) IJ.showStatus("Identifying " + idName); 
    508       ImageReader reader = ImagePlusReader.makeImageReader(); 
    509       try { baseReader = reader.getReader(getId()); } 
    510       catch (FormatException exc) { 
    511         WindowTools.reportException(exc, isQuiet(), 
    512           "Sorry, there was an error reading the file."); 
    513         return; 
    514       } 
    515       catch (IOException exc) { 
    516         WindowTools.reportException(exc, isQuiet(), 
    517           "Sorry, there was a I/O problem reading the file."); 
    518         return; 
    519       } 
    520     } 
    521     else if (isOMERO()) { 
    522       // NB: avoid dependencies on optional loci.ome.io package 
    523       try { 
    524         ReflectedUniverse ru = new ReflectedUniverse(); 
    525         ru.exec("import loci.ome.io.OMEROReader"); 
    526         baseReader = (IFormatReader) ru.exec("new OMEROReader()"); 
    527       } 
    528       catch (ReflectException exc) { 
    529         WindowTools.reportException(exc, isQuiet(), 
    530           "Sorry, there was a problem constructing the OMERO I/O engine"); 
    531         return; 
    532       } 
    533     } 
    534     else if (isOME()) { 
    535       // NB: avoid dependencies on optional loci.ome.io package 
    536       try { 
    537         ReflectedUniverse ru = new ReflectedUniverse(); 
    538         ru.exec("import loci.ome.io.OMEReader"); 
    539         baseReader = (IFormatReader) ru.exec("new OMEReader()"); 
    540       } 
    541       catch (ReflectException exc) { 
    542         WindowTools.reportException(exc, isQuiet(), 
    543           "Sorry, there was a problem constructing the OME I/O engine"); 
    544         return; 
    545       } 
    546     } 
    547     else { 
    548       WindowTools.reportException(null, isQuiet(), 
    549         "Sorry, there has been an internal error: unknown data source"); 
    550     } 
    551     meta = MetadataTools.createOMEXMLMetadata(); 
    552     baseReader.setMetadataStore(meta); 
    553  
    554     if (!isQuiet()) IJ.showStatus(""); 
    555     baseReader.addStatusListener(new IJStatusEchoer()); 
    556   } 
    557  
    558445  private boolean promptLocation() { 
    559446    LocationDialog dialog = new LocationDialog(this); 
     
    585472 
    586473    String id = getId(); 
    587     if (id == null) id = currentFile; 
     474    if (id == null) id = reader.currentFile; 
    588475    FilePattern fp = new FilePattern(id); 
    589     if (!fp.isValid()) id = currentFile; 
     476    if (!fp.isValid()) id = reader.currentFile; 
    590477    setId(id); // CTR CHECK -- probably the wrong way to do this 
    591478    return true; 
    592479  } 
    593480 
    594   /** Initializes the ImagePlusReader derived value. */ 
    595   private void initializeReader() throws FormatException, IOException { 
    596     if (isGroupFiles()) baseReader = new FileStitcher(baseReader, true); 
    597     baseReader.setId(getId()); 
    598     if (isVirtual() || !isMergeChannels() || 
    599       FormatTools.getBytesPerPixel(baseReader.getPixelType()) != 1) 
    600     { 
    601       baseReader = new ChannelSeparator(baseReader); 
    602     } 
    603     virtualReader = new VirtualReader(baseReader); 
    604     r = new ImagePlusReader(virtualReader); 
    605     r.setId(getId()); 
    606   } 
    607  
    608481  /** Initializes the ImporterMetadata derived value. */ 
    609482  private void initializeMetadata() { 
    610     importerMetadata = new ImporterMetadata(r, this); 
     483    metadata = new ImporterMetadata(reader.r, this); 
    611484  } 
    612485 
     
    614487  private boolean promptSeries() throws FormatException, IOException { 
    615488    // initialize series-related derived values 
    616     series = new boolean[r.getSeriesCount()]; 
     489    series = new boolean[reader.r.getSeriesCount()]; 
    617490    series[0] = true; 
    618491 
    619492    // build descriptive label for each series 
    620     int seriesCount = r.getSeriesCount(); 
     493    int seriesCount = reader.r.getSeriesCount(); 
    621494    seriesLabels = new String[seriesCount]; 
    622495    for (int i=0; i<seriesCount; i++) { 
    623       r.setSeries(i); 
     496      reader.r.setSeries(i); 
    624497      StringBuffer sb = new StringBuffer(); 
    625498      sb.append("Series_"); 
    626499      sb.append((i + 1)); 
    627500      sb.append(": "); 
    628       String name = getMetadata().getImageName(i); 
     501      String name = getOMEMetadata().getImageName(i); 
    629502      if (name != null && name.length() > 0) { 
    630503        sb.append(name); 
    631504        sb.append(": "); 
    632505      } 
    633       sb.append(r.getSizeX()); 
     506      sb.append(reader.r.getSizeX()); 
    634507      sb.append(" x "); 
    635       sb.append(r.getSizeY()); 
     508      sb.append(reader.r.getSizeY()); 
    636509      sb.append("; "); 
    637       sb.append(r.getImageCount()); 
     510      sb.append(reader.r.getImageCount()); 
    638511      sb.append(" plane"); 
    639       if (r.getImageCount() > 1) { 
     512      if (reader.r.getImageCount() > 1) { 
    640513        sb.append("s"); 
    641         if (r.isOrderCertain()) { 
     514        if (reader.r.isOrderCertain()) { 
    642515          sb.append(" ("); 
    643516          boolean first = true; 
    644           if (r.getEffectiveSizeC() > 1) { 
    645             sb.append(r.getEffectiveSizeC()); 
     517          if (reader.r.getEffectiveSizeC() > 1) { 
     518            sb.append(reader.r.getEffectiveSizeC()); 
    646519            sb.append("C"); 
    647520            first = false; 
    648521          } 
    649           if (r.getSizeZ() > 1) { 
     522          if (reader.r.getSizeZ() > 1) { 
    650523            if (!first) sb.append(" x "); 
    651             sb.append(r.getSizeZ()); 
     524            sb.append(reader.r.getSizeZ()); 
    652525            sb.append("Z"); 
    653526            first = false; 
    654527          } 
    655           if (r.getSizeT() > 1) { 
     528          if (reader.r.getSizeT() > 1) { 
    656529            if (!first) sb.append(" x "); 
    657             sb.append(r.getSizeT()); 
     530            sb.append(reader.r.getSizeT()); 
    658531            sb.append("T"); 
    659532            first = false; 
     
    668541    if (seriesCount > 1 && !openAllSeries() && !isViewNone()) { 
    669542      BF.debug("prompt for which series to import"); 
    670       SeriesDialog dialog = new SeriesDialog(this, r, seriesLabels, series); 
     543      SeriesDialog dialog = new SeriesDialog(this, 
     544        reader.r, seriesLabels, series); 
    671545      if (dialog.showDialog() != OptionsDialog.STATUS_OK) return false; 
    672546    } 
     
    687561    BF.debug("prompt for dimension swapping parameters"); 
    688562 
    689     SwapDialog dialog = new SwapDialog(this, virtualReader, series); 
     563    SwapDialog dialog = new SwapDialog(this, reader.virtualReader, series); 
    690564    return dialog.showDialog() == OptionsDialog.STATUS_OK; 
    691565  } 
     
    694568  private boolean promptRange() { 
    695569    // initialize range-related derived values 
    696     int seriesCount = r.getSeriesCount(); 
     570    int seriesCount = reader.r.getSeriesCount(); 
    697571    cBegin = new int[seriesCount]; 
    698572    cEnd = new int[seriesCount]; 
     
    706580 
    707581    for (int i=0; i<seriesCount; i++) { 
    708       r.setSeries(i); 
     582      reader.r.setSeries(i); 
    709583      cBegin[i] = zBegin[i] = tBegin[i] = 0; 
    710       cEnd[i] = r.getEffectiveSizeC() - 1; 
    711       zEnd[i] = r.getSizeZ() - 1; 
    712       tEnd[i] = r.getSizeT() - 1; 
     584      cEnd[i] = reader.r.getEffectiveSizeC() - 1; 
     585      zEnd[i] = reader.r.getSizeZ() - 1; 
     586      tEnd[i] = reader.r.getSizeT() - 1; 
    713587      cStep[i] = zStep[i] = tStep[i] = 1; 
    714588    } 
     
    721595    boolean needRange = false; 
    722596    for (int i=0; i<seriesCount; i++) { 
    723       if (series[i] && r.getImageCount() > 1) needRange = true; 
     597      if (series[i] && reader.r.getImageCount() > 1) needRange = true; 
    724598    } 
    725599    if (!needRange) { 
     
    731605 
    732606    RangeDialog dialog = new RangeDialog(this, 
    733       r, series, seriesLabels, cBegin, cEnd, cStep, 
     607      reader.r, series, seriesLabels, cBegin, cEnd, cStep, 
    734608      zBegin, zEnd, zStep, tBegin, tEnd, tStep); 
    735609    return dialog.showDialog() == OptionsDialog.STATUS_OK; 
     
    739613  private boolean promptCrop() { 
    740614    // initialize crop-related derived values 
    741     cropRegion = new Rectangle[r.getSeriesCount()]; 
     615    cropRegion = new Rectangle[reader.r.getSeriesCount()]; 
    742616    for (int i=0; i<cropRegion.length; i++) { 
    743617      if (series[i] && doCrop()) cropRegion[i] = new Rectangle(); 
     
    751625 
    752626    CropDialog dialog = new CropDialog(this, 
    753       r, seriesLabels, series, cropRegion); 
     627      reader.r, seriesLabels, series, cropRegion); 
    754628    return dialog.showDialog() == OptionsDialog.STATUS_OK; 
    755629  } 
     
    757631  /** Initializes the cCount, zCount and tCount derived values. */ 
    758632  private void computeRangeCounts() { 
    759     int seriesCount = r.getSeriesCount(); 
     633    int seriesCount = reader.r.getSeriesCount(); 
    760634    cCount = new int[seriesCount]; 
    761635    zCount = new int[seriesCount]; 
  • trunk/components/loci-plugins/src/loci/plugins/util/ImagePlusReader.java

    r5886 r6022  
    5151 
    5252/** 
    53  * Utility methods for working with ImagePlus objects. 
     53 * Bio-Formats reader for reading ImagePlus objects. 
    5454 * 
    5555 * <dl><dt><b>Source code:</b></dt> 
     
    199199 
    200200    // convert byte array to appropriate primitive array type 
    201     boolean isFloat = type == FormatTools.FLOAT || type == FormatTools.DOUBLE; 
     201    boolean isFloat = FormatTools.isFloatingPoint(type); 
    202202    boolean isLittle = isLittleEndian(); 
    203     boolean isSigned = type == FormatTools.INT8 || type == FormatTools.INT16 || 
    204       type == FormatTools.INT32; 
     203    boolean isSigned = FormatTools.isSigned(type); 
    205204 
    206205    IndexColorModel cm = null; 
Note: See TracChangeset for help on using the changeset viewer.