Changeset 4321


Ignore:
Timestamp:
08/20/08 14:20:19 (12 years ago)
Author:
melissa
Message:

Added colorizing support for virtual stacks (including the data browser).

Location:
trunk/loci/plugins
Files:
3 edited

Legend:

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

    r4317 r4321  
    2828import ij.*; 
    2929import ij.process.ImageProcessor; 
     30import java.awt.image.IndexColorModel; 
    3031import java.io.IOException; 
    3132import java.util.Vector; 
     
    4950  protected String id; 
    5051  protected Cache cache; 
    51 //  protected String stackOrder; 
    52 //  protected int merge; 
    5352 
    5453  private Vector[] methodStacks; 
    5554  private int currentSlice = -1; 
    5655  private RecordedImageProcessor currentProcessor; 
     56 
     57  private boolean colorize; 
     58  private boolean merge; 
    5759 
    5860  // -- Static utility methods -- 
     
    7476  // -- Constructor -- 
    7577 
    76 //  public BFVirtualStack(int w, int h, ColorModel cm, String path, 
    77 //    IFormatReader r, String stackOrder, int merge) 
    78   public BFVirtualStack(String path, IFormatReader r) 
    79     throws FormatException, IOException, CacheException 
     78  public BFVirtualStack(String path, IFormatReader r, boolean colorize, 
     79    boolean merge) throws FormatException, IOException, CacheException 
    8080  { 
    8181    super(getWidth(r, path), getHeight(r, path), null, path); 
    8282    reader = r; 
    8383    id = path; 
    84 //    this.stackOrder = stackOrder; 
    85 //    this.merge = merge; 
     84 
     85    this.colorize = colorize; 
     86    this.merge = merge; 
    8687 
    8788    // set up cache 
     
    8990    CacheStrategy strategy = new CrosshairStrategy(len); 
    9091 
    91     // set default ranges 
    92  
    93     strategy.setRange((int) Math.min(r.getSizeZ(), 1), 0); 
    94     strategy.setRange((int) Math.min(r.getSizeC(), 1), 1); 
    95     strategy.setRange((int) Math.min(r.getSizeT(), 1), 2); 
    9692    cache = new Cache(strategy, new ImageProcessorSource(r), true); 
    9793 
     
    130126    } 
    131127    int[] pos = reader.getZCTCoords(n - 1); 
    132     int z = pos[0]; 
    133     pos[0] = pos[1]; 
    134     pos[1] = z; 
     128    int[] cachePos = new int[] {pos[1], pos[0], pos[2]}; 
    135129    ImageProcessor ip = null; 
    136130 
    137131    try { 
    138       ip = (ImageProcessor) cache.getObject(pos); 
    139       cache.setCurrentPos(pos); 
     132      ip = (ImageProcessor) cache.getObject(cachePos); 
     133      cache.setCurrentPos(cachePos); 
    140134    } 
    141135    catch (CacheException exc) { 
     
    154148    catch (IOException exc) { 
    155149      exc.printStackTrace(); 
     150    } 
     151 
     152    if (colorize) { 
     153      // apply color table, if necessary 
     154      byte[] lut = new byte[256]; 
     155      byte[] blank = new byte[256]; 
     156      for (int i=0; i<lut.length; i++) { 
     157        lut[i] = (byte) i; 
     158        blank[i] = (byte) 0; 
     159      } 
     160 
     161      IndexColorModel model = null; 
     162      if (pos[1] < 3) { 
     163        model = new IndexColorModel(8, 256, pos[1] == 0 ? lut : blank, 
     164          pos[1] == 1 ? lut : blank, pos[1] == 2 ? lut : blank); 
     165      } 
     166      else model = new IndexColorModel(8, 256, lut, lut, lut); 
     167 
     168      if (ip != null) ip.setColorModel(model); 
     169    } 
     170    else if (merge) { 
     171      // TODO 
    156172    } 
    157173 
  • trunk/loci/plugins/DataBrowser.java

    r4317 r4321  
    6464 
    6565  protected JFrame metaWindow; 
     66  //protected BrowserOptionsWindow optionsWindow; 
    6667  protected String xml; 
    6768 
     
    136137      CacheIndicator cCache = new CacheIndicator(cache, 0, cSlider, 10, 20); 
    137138      cPanel.add(cCache, BorderLayout.SOUTH); 
     139 
     140      // build options window 
     141      //optionsWindow = 
     142      //  new BrowserOptionsWindow("Options - " + getTitle(), cache); 
    138143    } 
    139144 
     
    148153    options = new Button("Options"); 
    149154    options.addActionListener(this); 
    150     options.setEnabled(false); 
     155    //options.setEnabled(optionsWindow != null); 
    151156    metadata = new Button("Metadata"); 
    152157    metadata.addActionListener(this); 
     
    288293    } 
    289294    else if (src == options) { 
     295      // center window and show 
     296      /* 
     297      Rectangle r = getBounds(); 
     298      Dimension w = optionsWindow.getSize(); 
     299      int x = (int) Math.min(5, r.x + (r.width - w.width) / 2); 
     300      int y = (int) Math.min(5, r.y + (r.height - w.height) / 2); 
     301      optionsWindow.setLocation(x, y); 
     302      optionsWindow.setVisible(true); 
     303      */ 
    290304    } 
    291305    else if (src == metadata) { 
  • trunk/loci/plugins/Importer.java

    r4317 r4321  
    458458            ReflectedUniverse ru = new ReflectedUniverse(); 
    459459            ru.exec("import loci.plugins.BFVirtualStack"); 
    460             //ru.setVar("w", w); 
    461             //ru.setVar("h", h); 
    462460            ru.setVar("id", id); 
    463461            ru.setVar("r", r); 
    464             //ru.setVar("stackOrder", stackOrder); 
    465             //ru.setVar("merge", merge); 
    466             stackB = (ImageStack) ru.exec("stackB = new BFVirtualStack(id, r)"); 
     462            ru.setVar("colorize", colorize); 
     463            ru.setVar("merge", doMerge); 
     464            stackB = (ImageStack) 
     465              ru.exec("stackB = new BFVirtualStack(id, r, colorize, merge)"); 
    467466            for (int j=0; j<num[i]; j++) { 
    468467              String label = constructSliceLabel(j, r, 
     
    697696    if (!concatenate && mergeChannels) imp.show(); 
    698697 
    699     if (!options.isViewBrowser()) { 
     698    if (!options.isVirtual()) { 
    700699      if (mergeChannels && options.isWindowless()) { 
    701700        IJ.runPlugIn("loci.plugins.Colorizer", "stack_order=" + stackOrder + 
     
    763762        if (options.isViewBrowser()) new DataBrowser(imp); 
    764763        else imp.show(); 
    765         if ((splitC || splitZ || splitT) && !options.isViewBrowser()) { 
     764        if ((splitC || splitZ || splitT) && !options.isVirtual()) { 
    766765          IJ.runPlugIn("loci.plugins.Slicer", "slice_z=" + splitZ + 
    767766            " slice_c=" + splitC + " slice_t=" + splitT + 
     
    789788          } 
    790789        } 
    791         else if (colorize && !options.isViewBrowser()) { 
     790        else if (colorize && !options.isVirtual()) { 
    792791          IJ.runPlugIn("loci.plugins.Colorizer", "stack_order=" + stackOrder + 
    793792            " merge=false colorize=true ndx=0 hyper_stack=" + 
Note: See TracChangeset for help on using the changeset viewer.