Changeset 3926


Ignore:
Timestamp:
04/16/08 14:48:03 (12 years ago)
Author:
melissa
Message:

Moved CompositeImage coloring logic to the colorizer plugin; as a result, splitting channels into separate windows beforing colorizing is not necessary.

Location:
trunk/loci/plugins
Files:
3 edited

Legend:

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

    r3815 r3926  
    153153 
    154154    if (color) { 
    155       ImageStack newStack = new ImageStack(stack.getWidth(), stack.getHeight()); 
    156       for (int i=1; i<=stack.getSize(); i++) { 
    157         newStack.addSlice(stack.getSliceLabel(i), stack.getProcessor(i)); 
    158       } 
    159       byte[] lut = new byte[256]; 
    160       byte[] blank = new byte[256]; 
    161       Arrays.fill(blank, (byte) 0); 
    162       for (int i=0; i<lut.length; i++) { 
    163         lut[i] = (byte) i; 
    164       } 
    165  
    166       IndexColorModel model = new IndexColorModel(8, 256, 
    167         colorNdx == 0 ? lut : blank, colorNdx == 1 ? lut : blank, 
    168         colorNdx == 2 ? lut : blank); 
    169       newStack.setColorModel(model); 
    170       newImp.setStack(imp.getTitle(), newStack); 
     155      if (Util.checkVersion("1.39l", Util.COMPOSITE_MSG)) { 
     156        // use reflection to construct CompositeImage, 
     157        // in case ImageJ version is too old 
     158        try { 
     159          r.setVar("imp", Util.reorder(imp, stackOrder, "XYCZT")); 
     160          newImp = (ImagePlus) 
     161            r.exec("new CompositeImage(imp, CompositeImage.COLOR)"); 
     162        } 
     163        catch (ReflectException exc) { 
     164          ByteArrayOutputStream s = new ByteArrayOutputStream(); 
     165          exc.printStackTrace(new PrintStream(s)); 
     166          IJ.error(s.toString()); 
     167        } 
     168      } 
     169      else { 
     170        ImageStack newStack = 
     171          new ImageStack(stack.getWidth(), stack.getHeight()); 
     172        for (int i=1; i<=stack.getSize(); i++) { 
     173          newStack.addSlice(stack.getSliceLabel(i), stack.getProcessor(i)); 
     174        } 
     175        byte[] lut = new byte[256]; 
     176        byte[] blank = new byte[256]; 
     177        Arrays.fill(blank, (byte) 0); 
     178        for (int i=0; i<lut.length; i++) { 
     179          lut[i] = (byte) i; 
     180        } 
     181 
     182        IndexColorModel model = new IndexColorModel(8, 256, 
     183          colorNdx == 0 ? lut : blank, colorNdx == 1 ? lut : blank, 
     184          colorNdx == 2 ? lut : blank); 
     185        newStack.setColorModel(model); 
     186        newImp.setStack(imp.getTitle(), newStack); 
     187      } 
    171188    } 
    172189    else { 
  • trunk/loci/plugins/Importer.java

    r3924 r3926  
    674674      if (IJ.getVersion().compareTo("1.39l") >= 0) { 
    675675        boolean hyper = options.isViewHyperstack() || options.isViewBrowser(); 
    676         if (nChannels > 1 && imp.getBitDepth() != 24) { 
    677           // open multichannel image as a composite image 
    678           ReflectedUniverse ru = new ReflectedUniverse(); 
    679           try { 
    680             ru.exec("import ij.CompositeImage"); 
    681             ru.setVar("imp", imp); 
    682             imp = (ImagePlus) ru.exec( 
    683               "new CompositeImage(imp, CompositeImage.COLOR)"); 
    684           } 
    685           catch (ReflectException exc) { 
    686             // problem creating composite image; ignore for now 
    687             LogTools.println(exc); 
    688           } 
    689         } 
    690676        imp.setOpenAsHyperStack(hyper); 
    691677      } 
  • trunk/loci/plugins/ImporterOptions.java

    r3885 r3926  
    941941        mergeBox.setState(false); 
    942942        changed.add(mergeBox); 
    943         splitCBox.setState(true); 
    944         changed.add(splitCBox); 
    945943      } 
    946944    } 
     
    949947        mergeBox.setState(false); 
    950948        changed.add(mergeBox); 
    951       } 
    952       else { 
    953         colorizeBox.setState(false); 
    954         changed.add(colorizeBox); 
    955949      } 
    956950    } 
Note: See TracChangeset for help on using the changeset viewer.