Changeset 6502


Ignore:
Timestamp:
06/08/10 12:44:30 (10 years ago)
Author:
melissa
Message:

Implemented colorizing when SizeC == 1, and fixed color handling when multiple series are opened.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/components/loci-plugins/src/loci/plugins/in/ImagePlusReader.java

    r6500 r6502  
    310310  private List<ImagePlus> applyColors(List<ImagePlus> imps) { 
    311311    final ImporterOptions options = process.getOptions(); 
    312  
    313     // CTR FIXME - problems with default color mode 
    314     int mode = -1; 
    315     boolean indexed = process.getReader().isIndexed(); 
    316     int sizeC = process.getReader().getSizeC(); 
    317     if (sizeC == 1) { 
    318       // NB: Cannot use CompositeImage for single-channel images. 
    319       // CTR FIXME finish sizeC==1 case 
    320       loci.plugins.BF.warn(options.isQuiet(), "sizeC = 1");//TEMP 
    321     } 
    322     else if (sizeC > 7) { 
    323       // NB: Cannot use CompositeImage when there are more than seven channels. 
    324       // CTR FIXME finish sizeC>7 case 
    325       loci.plugins.BF.warn(options.isQuiet(), "sizeC > 7");//TEMP 
    326     } 
    327     else if (options.isColorModeComposite()) mode = CompositeImage.COMPOSITE; 
    328     else if (options.isColorModeColorized()) mode = CompositeImage.COLOR; 
    329     else if (options.isColorModeGrayscale()) mode = CompositeImage.GRAYSCALE; 
    330     else if (options.isColorModeCustom()) mode = CompositeImage.COLOR; 
    331     else if (indexed && sizeC > 1) mode = CompositeImage.COLOR; 
    332  
    333     if (mode != -1) { 
    334       List<ImagePlus> compositeImps = new ArrayList<ImagePlus>(); 
    335       for (ImagePlus imp : imps) { 
     312    final ImageProcessorReader reader = process.getReader(); 
     313 
     314    for (int image=0; image<imps.size(); image++) { 
     315      ImagePlus imp = imps.get(image); 
     316      int series = (Integer) imp.getProperty("Series"); 
     317      reader.setSeries(series); 
     318 
     319      // CTR FIXME - problems with default color mode 
     320      int mode = -1; 
     321      boolean indexed = reader.isIndexed(); 
     322      int sizeC = reader.getSizeC(); 
     323      if (sizeC == 1 && 
     324        (options.isColorModeColorized() || options.isColorModeCustom())) 
     325      { 
     326        LUT lut = makeLUT(options.getDefaultCustomColor(0)); 
     327        if (options.isColorModeCustom()) { 
     328          lut = makeLUT(series, 0); 
     329        } 
     330        imp.getProcessor().setColorModel(lut); 
     331      } 
     332      else if (sizeC > 7) { 
     333        // NB: Cannot use CompositeImage when there are more than 
     334        // seven channels. 
     335        // CTR FIXME finish sizeC>7 case 
     336        loci.plugins.BF.warn(options.isQuiet(), "sizeC > 7");//TEMP 
     337      } 
     338      else if (options.isColorModeComposite()) mode = CompositeImage.COMPOSITE; 
     339      else if (options.isColorModeColorized()) mode = CompositeImage.COLOR; 
     340      else if (options.isColorModeGrayscale()) mode = CompositeImage.GRAYSCALE; 
     341      else if (options.isColorModeCustom()) mode = CompositeImage.COLOR; 
     342      else if (indexed && sizeC > 1) mode = CompositeImage.COLOR; 
     343 
     344      if (mode != -1) { 
    336345        CompositeImage compImage = new CompositeImage(imp, mode); 
    337346        LUT[] luts = null; 
    338         int series = (Integer) imp.getProperty("Series"); 
    339347        if (options.isColorModeCustom()) luts = makeLUTs(series); 
    340348        else if (indexed) { 
     
    343351            byte[][] lut = null; 
    344352            try { 
    345               int index = process.getReader().getIndex(0, i, 0); 
    346               process.getReader().openBytes(index, 0, 0, 1, 1); 
    347               lut = process.getReader().get8BitLookupTable(); 
     353              int index = reader.getIndex(0, i, 0); 
     354              reader.openBytes(index, 0, 0, 1, 1); 
     355              lut = reader.get8BitLookupTable(); 
    348356            } 
    349357            catch (FormatException e) { } 
     
    359367        } 
    360368        if (luts != null) compImage.setLuts(luts); 
    361         compositeImps.add(compImage); 
    362       } 
    363       imps = compositeImps; 
     369        imps.set(image, compImage); 
     370      } 
    364371    } 
    365372    return imps; 
Note: See TracChangeset for help on using the changeset viewer.