Changeset 2113


Ignore:
Timestamp:
01/17/07 13:17:56 (13 years ago)
Author:
melissa
Message:

Added feature to stitch series with the same dimensions.

File:
1 edited

Legend:

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

    r2111 r2113  
    7373  private Checkbox metadataBox; 
    7474  private Checkbox stitchBox; 
     75  private Checkbox stitchStackBox; 
    7576  private Checkbox rangeBox; 
    7677  private Choice stackChoice; 
    7778  private boolean mergeChannels; 
     79  private boolean stitchStack; 
     80 
     81  private Vector imps = new Vector(); 
    7882 
    7983  // -- Constructor -- 
     
    120124        gd = new GenericDialog("LOCI Bio-Formats Dataset Location"); 
    121125        gd.addChoice("Location: ", 
    122           new String[] {LOCATION_LOCAL, LOCATION_OME, LOCATION_HTTP}, LOCATION_LOCAL); 
     126          new String[] {LOCATION_LOCAL, LOCATION_OME, LOCATION_HTTP},  
     127            LOCATION_LOCAL); 
    123128        gd.showDialog(); 
    124129        if (gd.wasCanceled()) { 
     
    214219    boolean showMetadata = Prefs.get("bioformats.showMetadata", false); 
    215220    boolean stitchFiles = Prefs.get("bioformats.stitchFiles", false); 
     221    stitchStack = Prefs.get("bioformats.stitchStack", false); 
    216222    boolean specifyRanges = Prefs.get("bioformats.specifyRanges", false); 
    217223    stackFormat = Prefs.get("bioformats.stackFormat", VIEW_STANDARD); 
     
    223229    final String metadataString = "Display associated metadata"; 
    224230    final String stitchString = "Stitch files with similar names"; 
     231    final String stitchStackString = "Stitch compatible series"; 
    225232    final String rangeString = "Specify range for each series"; 
    226233    final String stackString = "View stack with: "; 
     
    234241    gd.addCheckbox(metadataString, showMetadata); 
    235242    gd.addCheckbox(stitchString, stitchFiles); 
     243    gd.addCheckbox(stitchStackString, stitchStack); 
    236244    gd.addCheckbox(rangeString, specifyRanges); 
    237245    gd.addChoice(stackString, stackFormats, stackFormat); 
     
    246254      metadataBox = (Checkbox) boxes.get(4); 
    247255      stitchBox = (Checkbox) boxes.get(5); 
    248       rangeBox = (Checkbox) boxes.get(6); 
     256      stitchStackBox = (Checkbox) boxes.get(6); 
     257      rangeBox = (Checkbox) boxes.get(7); 
    249258      for (int i=0; i<boxes.size(); i++) { 
    250259        ((Checkbox) boxes.get(i)).addItemListener(this); 
     
    270279    showMetadata = gd.getNextBoolean(); 
    271280    stitchFiles = gd.getNextBoolean(); 
     281    stitchStack = gd.getNextBoolean(); 
    272282    specifyRanges = gd.getNextBoolean(); 
    273283    stackFormat = stackFormats[gd.getNextChoiceIndex()]; 
     
    417427          return; 
    418428        } 
    419         for (int i=0; i<seriesCount; i++) series[i] = gd.getNextBoolean(); 
     429         
     430        int[] widths = new int[seriesCount]; 
     431        int[] heights = new int[seriesCount]; 
     432        int[] types = new int[seriesCount]; 
     433        int[] channels = new int[seriesCount]; 
     434 
     435        for (int i=0; i<seriesCount; i++) { 
     436          series[i] = gd.getNextBoolean(); 
     437          r.setSeries(id, i); 
     438          widths[i] = r.getSizeX(id); 
     439          heights[i] = r.getSizeY(id); 
     440          types[i] = r.getPixelType(id); 
     441          channels[i] = r.getSizeC(id); 
     442        } 
     443 
     444        if (stitchStack) { 
     445          for (int i=0; i<seriesCount; i++) { 
     446            if (!series[i]) { 
     447              for (int j=0; j<seriesCount; j++) { 
     448                if ((j != i) && series[j] && (widths[j] == widths[i]) &&  
     449                  (heights[j] == heights[i]) && (types[j] == types[i]) &&  
     450                  (channels[j] == channels[i])) 
     451                { 
     452                  series[i] = true; 
     453                  j = seriesCount; 
     454                } 
     455              } 
     456            } 
     457          } 
     458        } 
    420459      } 
    421460 
     
    790829        } 
    791830 
     831        if (stitchStack) { 
     832          Vector widths = new Vector(); 
     833          Vector heights = new Vector(); 
     834          Vector types = new Vector(); 
     835          Vector newImps = new Vector(); 
     836 
     837          for (int i=0; i<imps.size(); i++) { 
     838            ImagePlus imp = (ImagePlus) imps.get(i); 
     839            int w = imp.getWidth(); 
     840            int h = imp.getHeight(); 
     841            int type = imp.getBitDepth(); 
     842            boolean append = false; 
     843            for (int j=0; j<widths.size(); j++) { 
     844              int width = ((Integer) widths.get(j)).intValue(); 
     845              int height = ((Integer) heights.get(j)).intValue(); 
     846              int t = ((Integer) types.get(j)).intValue(); 
     847               
     848              if (width == w && height == h && type == t) {  
     849                ImagePlus oldImp = (ImagePlus) newImps.get(j); 
     850                ImageStack is = oldImp.getStack(); 
     851                ImageStack newStack = imp.getStack(); 
     852                for (int k=0; k<newStack.getSize(); k++) { 
     853                  is.addSlice(newStack.getSliceLabel(k+1),  
     854                    newStack.getProcessor(k+1)); 
     855                } 
     856                oldImp.setStack(oldImp.getTitle(), is); 
     857                newImps.setElementAt(oldImp, j); 
     858                append = true; 
     859                j = widths.size(); 
     860              } 
     861            } 
     862            if (!append) { 
     863              widths.add(new Integer(w)); 
     864              heights.add(new Integer(h)); 
     865              types.add(new Integer(type)); 
     866              newImps.add(imp); 
     867            } 
     868          } 
     869        
     870          for (int i=0; i<newImps.size(); i++) { 
     871            ((ImagePlus) newImps.get(i)).show(); 
     872          } 
     873        } 
     874 
    792875        r.close(); 
    793876      } 
     
    802885      Prefs.set("bioformats.showMetadata", showMetadata); 
    803886      Prefs.set("bioformats.stitchFiles", stitchFiles); 
     887      Prefs.set("bioformats.stitchStack", stitchStack); 
    804888      Prefs.set("bioformats.specifyRanges", specifyRanges); 
    805889      Prefs.set("bioformats.stackFormat", stackFormat); 
     
    10421126 
    10431127      if (stackFormat.equals(VIEW_STANDARD)) { 
    1044         imp.show(); 
     1128        if (!stitchStack) imp.show(); 
     1129        else imps.add(imp);  
    10451130      } 
    10461131      else if (stackFormat.equals(VIEW_BROWSER)) {} 
     
    11031188    } 
    11041189    catch (Exception e) { 
    1105       imp.show(); 
     1190      if (!stitchStack) imp.show(); 
     1191      else imps.add(imp); 
    11061192    } 
    11071193  } 
Note: See TracChangeset for help on using the changeset viewer.