Changeset 6322


Ignore:
Timestamp:
05/14/10 17:49:08 (10 years ago)
Author:
curtis
Message:

Initial version of color mode selector. Not yet working.

Location:
trunk/components/loci-plugins
Files:
1 deleted
12 edited

Legend:

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

    r6278 r6322  
    6161  } 
    6262   
     63  public static void warn(boolean quiet, String msg) { 
     64    if (quiet) return; 
     65    IJ.log("Warning: " + msg); 
     66  } 
     67   
    6368  public static void progress(boolean quiet, int value, int max) { 
    6469    if (quiet) return; 
  • trunk/components/loci-plugins/src/loci/plugins/colorize/Colorizer.java

    r6278 r6322  
    3939import java.awt.Color; 
    4040import java.awt.image.IndexColorModel; 
    41 import java.io.IOException; 
    4241import java.util.Arrays; 
    4342 
    4443import loci.formats.FormatTools; 
    4544import loci.plugins.BF; 
    46 import loci.plugins.in.ImportProcess; 
    47 import loci.plugins.prefs.OptionsDialog; 
    4845import loci.plugins.util.ImagePlusTools; 
    4946import loci.plugins.util.LibraryChecker; 
    50 import loci.plugins.util.WindowTools; 
    5147 
    5248/** 
     
    220216        } 
    221217 
     218        /* 
    222219        ImportProcess process = null; 
    223220        try { 
     
    236233          } 
    237234        } 
     235        */ 
    238236 
    239237        if (mergeOption != null) { 
  • trunk/components/loci-plugins/src/loci/plugins/in/ImagePlusReader.java

    r6295 r6322  
    219219 
    220220      if (options.isVirtual()) { 
    221         boolean doMerge = options.isMergeChannels(); 
     221        boolean doMerge = false; //options.isMergeChannels(); 
     222        boolean doColorize = false; //options.isColorize(); 
    222223 
    223224        reader.setSeries(s); 
    224225        // NB: ImageJ 1.39+ is required for VirtualStack 
    225226        BFVirtualStack virtualStackB = new BFVirtualStack(options.getId(), 
    226           reader, options.isColorize(), doMerge, options.isRecord()); 
     227          reader, doColorize, doMerge, options.isRecord()); 
    227228        stackB = virtualStackB; 
    228229        if (doMerge) { 
    229230          for (int j=0; j<reader.getImageCount(); j++) { 
    230             int[] pos = reader.getZCTCoords(j); 
    231             if (pos[1] > 0) continue; 
    232             String label = constructSliceLabel( 
    233               new ChannelMerger(reader).getIndex(pos[0], pos[1], pos[2]), 
    234               new ChannelMerger(reader), process.getOMEMetadata(), s, 
    235               options.getZCount(s), options.getCCount(s), 
    236               options.getTCount(s)); 
     231            int[] zct = reader.getZCTCoords(j); 
     232            if (zct[1] > 0) continue; 
     233            ChannelMerger channelMerger = new ChannelMerger(reader); 
     234            int index = channelMerger.getIndex(zct[0], zct[1], zct[2]); 
     235            String label = constructSliceLabel(index, 
     236              channelMerger, process.getOMEMetadata(), s, 
     237              process.getZCount(s), process.getCCount(s), process.getTCount(s)); 
    237238            virtualStackB.addSlice(label); 
    238239          } 
     
    240241        else { 
    241242          for (int j=0; j<reader.getImageCount(); j++) { 
    242             String label = constructSliceLabel(j, reader, 
    243               process.getOMEMetadata(), s, options.getZCount(s), 
    244               options.getCCount(s), options.getTCount(s)); 
     243            String label = constructSliceLabel(j, 
     244              reader, process.getOMEMetadata(), s, 
     245              process.getZCount(s), process.getCCount(s), process.getTCount(s)); 
    245246            virtualStackB.addSlice(label); 
    246247          } 
     
    265266          notifyListeners(new StatusEvent(q++, total, null)); 
    266267 
    267           String label = constructSliceLabel(i, reader, 
    268             process.getOMEMetadata(), s, options.getZCount(s), 
    269             options.getCCount(s), options.getTCount(s)); 
     268          String label = constructSliceLabel(i, 
     269            reader, process.getOMEMetadata(), s, 
     270            process.getZCount(s), process.getCCount(s), process.getTCount(s)); 
    270271 
    271272          // get image processor for ith plane 
     
    377378    String file = process.getCurrentFile(); 
    378379    IMetadata meta = process.getOMEMetadata(); 
    379     int cCount = options.getCCount(series); 
    380     int zCount = options.getZCount(series); 
    381     int tCount = options.getTCount(series); 
     380    int cCount = process.getCCount(series); 
     381    int zCount = process.getZCount(series); 
     382    int tCount = process.getTCount(series); 
    382383    IFormatReader reader = process.getReader(); 
    383  
    384     if (cCount == 0) cCount = reader.getEffectiveSizeC(); 
    385     if (zCount == 0) zCount = reader.getSizeZ(); 
    386     if (tCount == 0) tCount = reader.getSizeT(); 
    387384 
    388385    String title = getTitle(reader, file, seriesName, options.isGroupFiles()); 
  • trunk/components/loci-plugins/src/loci/plugins/in/ImportProcess.java

    r6295 r6322  
    3838import loci.common.services.ServiceException; 
    3939import loci.common.services.ServiceFactory; 
     40import loci.formats.ChannelFiller; 
    4041import loci.formats.ChannelSeparator; 
    4142import loci.formats.DimensionSwapper; 
     
    7980  /** Associated importer options. */ 
    8081  private ImporterOptions options; 
    81    
     82 
    8283  /** Current step in the import preparation process. */ 
    8384  private ImportStep step; 
     
    8788  private ImageReader imageReader; 
    8889  private FileStitcher fileStitcher; 
     90  private ChannelFiller channelFiller; 
    8991  private ChannelSeparator channelSeparator; 
    9092  private DimensionSwapper dimensionSwapper; 
     
    9294  private VirtualReader virtualReader; 
    9395  private ImageProcessorReader reader; 
    94    
     96 
    9597  /** Whether the process has been canceled. */ 
    9698  private boolean cancel; 
     
    118120  // -- ImportProcess methods -- 
    119121 
     122  /** 
     123   * Performs the import process, notifying status listeners at each step. 
     124   * 
     125   * @return true if the process completed successfully. 
     126   */ 
     127  public boolean execute() throws FormatException, IOException { 
     128    step(ImportStep.READER); 
     129    if (cancel) return false; 
     130    initializeReader(); 
     131 
     132    step(ImportStep.FILE); 
     133    if (cancel) return false; 
     134    initializeFile(); 
     135 
     136    step(ImportStep.STACK); 
     137    if (cancel) return false; 
     138    initializeStack(); 
     139 
     140    step(ImportStep.SERIES); 
     141    if (cancel) return false; 
     142    initializeSeries(); 
     143 
     144    step(ImportStep.DIM_ORDER); 
     145    if (cancel) return false; 
     146    initializeDimOrder(); 
     147 
     148    step(ImportStep.RANGE); 
     149    if (cancel) return false; 
     150    initializeRange(); 
     151 
     152    step(ImportStep.CROP); 
     153    if (cancel) return false; 
     154    initializeCrop(); 
     155 
     156    step(ImportStep.METADATA); 
     157    if (cancel) return false; 
     158    initializeMetadata(); 
     159 
     160    step(ImportStep.COMPLETE); 
     161    return true; 
     162  } 
     163 
     164  /** Cancels the import process. */ 
     165  public void cancel() { this.cancel = true; } 
     166 
     167  /** Gets whether the import process was canceled. */ 
     168  public boolean wasCanceled() { return cancel; } 
     169 
    120170  public ImporterOptions getOptions() { return options; } 
    121    
     171 
    122172  public boolean isWindowless() { 
    123173    if (options.isWindowless()) return true; // globally windowless 
    124174    return baseReader != null && LociPrefs.isWindowless(baseReader); 
    125175  } 
     176 
     177  // -- ImportProcess methods - post-READER -- 
    126178 
    127179  /** Valid only after {@link ImportStep#READER}. */ 
     
    151203  } 
    152204 
     205  // -- ImportProcess methods - post-STACK -- 
     206 
    153207  /** Valid only after {@link ImportStep#STACK}. */ 
    154208  public FileStitcher getFileStitcher() { 
     
    157211  } 
    158212  /** Valid only after {@link ImportStep#STACK}. */ 
     213  public ChannelFiller getChannelFiller() { 
     214    assertStep(ImportStep.STACK); 
     215    return channelFiller; 
     216  } 
     217  /** Valid only after {@link ImportStep#STACK}. */ 
    159218  public ChannelSeparator getChannelSeparator() { 
    160219    assertStep(ImportStep.STACK); 
     
    197256    return seriesLabels[s]; 
    198257  } 
    199    
     258 
    200259  // stackOrder 
    201260  /** Valid only after {@link ImportStep#STACK}. */ 
     
    210269    return stackOrder; 
    211270  } 
    212    
    213   // series options 
     271 
     272  // range options 
    214273  public int getCBegin(int s) { return options.getCBegin(s); } 
    215274  /** Valid only after {@link ImportStep#STACK}. */ 
     
    221280  } 
    222281  public int getCStep(int s) { return options.getCStep(s); } 
     282 
    223283  public int getZBegin(int s) { return options.getZBegin(s); } 
    224284  /** Valid only after {@link ImportStep#STACK}. */ 
     
    230290  } 
    231291  public int getZStep(int s) { return options.getZStep(s); } 
     292 
    232293  public int getTBegin(int s) { return options.getTBegin(s); } 
    233294  /** Valid only after {@link ImportStep#STACK}. */ 
     
    239300  } 
    240301  public int getTStep(int s) { return options.getTStep(s); } 
    241    
     302 
    242303  // crop options 
    243304  /** Valid only after {@link ImportStep#STACK}. */ 
     
    250311  } 
    251312 
     313  // -- ImportProcess methods - post-SERIES -- 
     314 
     315  /** Valid only after {@link ImportStep#SERIES}. */ 
     316  public int getCCount(int s) { 
     317    assertStep(ImportStep.SERIES); 
     318    if (!options.isSeriesOn(s)) return 0; 
     319    return (getCEnd(s) - getCBegin(s) + getCStep(s)) / getCStep(s); 
     320  } 
     321  /** Valid only after {@link ImportStep#SERIES}. */ 
     322  public int getZCount(int s) { 
     323    assertStep(ImportStep.SERIES); 
     324    if (!options.isSeriesOn(s)) return 0; 
     325    return (getZEnd(s) - getZBegin(s) + getZStep(s)) / getZStep(s); 
     326  } 
     327  /** Valid only after {@link ImportStep#SERIES}. */ 
     328  public int getTCount(int s) { 
     329    assertStep(ImportStep.SERIES); 
     330    if (!options.isSeriesOn(s)) return 0; 
     331    return (getTEnd(s) - getTBegin(s) + getTStep(s)) / getTStep(s); 
     332  } 
     333 
     334  // -- ImportProcess methods - post-METADATA -- 
     335 
    252336  /** Valid only after {@link ImportStep#METADATA}. */ 
    253337  public ImporterMetadata getOriginalMetadata() { 
     
    255339    return metadata; 
    256340  } 
    257  
    258   /** 
    259    * Performs the import process, notifying status listeners at each step. 
    260    *  
    261    * @return true if the process completed successfully. 
    262    */ 
    263   public boolean execute() throws FormatException, IOException { 
    264     step(ImportStep.READER); 
    265     if (cancel) return false; 
    266     initializeReader(); 
    267  
    268     step(ImportStep.FILE); 
    269     if (cancel) return false; 
    270     initializeFile(); 
    271  
    272     step(ImportStep.STACK); 
    273     if (cancel) return false; 
    274     initializeStack(); 
    275  
    276     step(ImportStep.SERIES); 
    277     if (cancel) return false; 
    278     initializeSeries(); 
    279  
    280     step(ImportStep.DIM_ORDER); 
    281     if (cancel) return false; 
    282     initializeDimOrder(); 
    283  
    284     step(ImportStep.RANGE); 
    285     if (cancel) return false; 
    286     initializeRange(); 
    287  
    288     step(ImportStep.CROP); 
    289     if (cancel) return false; 
    290     initializeCrop(); 
    291  
    292     step(ImportStep.METADATA); 
    293     if (cancel) return false; 
    294     initializeMetadata(); 
    295  
    296     step(ImportStep.COMPLETE); 
    297     return true; 
    298   } 
    299    
    300   /** Cancels the import process. */ 
    301   public void cancel() { this.cancel = true; } 
    302    
    303   /** Gets whether the import process was canceled. */ 
    304   public boolean wasCanceled() { return cancel; } 
    305341 
    306342  // -- StatusReporter methods -- 
     
    361397    r.setId(options.getId()); 
    362398 
    363     int bpp = FormatTools.getBytesPerPixel(r.getPixelType()); 
    364     if (options.isVirtual() || !options.isMergeChannels() || bpp != 1) { 
    365       r = channelSeparator = new ChannelSeparator(r); 
    366     } 
     399    boolean fillIndexed; 
     400    if (r.isIndexed()) { 
     401      if (r.isFalseColor()) { 
     402        // false color; never fill indices 
     403        fillIndexed = false; 
     404      } 
     405      else { 
     406        // true color; fill indices unless 8-bit RGB with default color mode 
     407        int bpp = FormatTools.getBytesPerPixel(r.getPixelType()); 
     408        byte[][] lut8 = r.get8BitLookupTable(); 
     409        boolean defaultColorMode = options.isColorModeDefault(); 
     410        fillIndexed = !defaultColorMode || bpp > 1 || lut8 == null || lut8[0].length > 3; 
     411      } 
     412    } 
     413    else fillIndexed = false; // no need to fill non-indexed data 
     414    if (fillIndexed) { 
     415      r = channelFiller = new ChannelFiller(r); 
     416      BF.warn(options.isQuiet(), "Index values will be lost"); 
     417    } 
     418 
     419    r = channelSeparator = new ChannelSeparator(r); 
    367420    r = dimensionSwapper = new DimensionSwapper(r); 
    368421    r = minMaxCalculator = new MinMaxCalculator(r); 
     
    370423    reader = new ImageProcessorReader(r); 
    371424    reader.setId(options.getId()); 
    372      
    373     computeSeriesLabels(); 
     425 
     426    computeSeriesLabels(reader); 
    374427  } 
    375428 
     
    388441      String dimOrder = options.getInputOrder(s); 
    389442      if (dimOrder != null) dimensionSwapper.swapDimensions(dimOrder); 
    390        
     443 
    391444      // set output order 
    392445      getDimensionSwapper().setOutputOrder(stackOrder); 
     
    409462    // only prepend a series name prefix to the metadata keys if multiple 
    410463    // series are being opened 
    411     int seriesCount = getSeriesCount(); 
     464    final int seriesCount = getSeriesCount(); 
    412465    int numEnabled = 0; 
    413466    for (int s=0; s<seriesCount; s++) { 
     
    475528    root.addAppender(new IJStatusEchoer()); 
    476529  } 
    477    
     530 
    478531  // -- Helper methods - ImportStep.FILE -- 
    479532 
     
    484537    options.saveOptions(); 
    485538  } 
    486    
     539 
    487540  // -- Helper methods -- ImportStep.STACK -- 
    488    
    489   private void computeSeriesLabels() { 
    490     int seriesCount = getSeriesCount(); 
     541 
     542  private void computeSeriesLabels(IFormatReader r) { 
     543    final int seriesCount = r.getSeriesCount(); 
    491544    seriesLabels = new String[seriesCount]; 
    492545    for (int i=0; i<seriesCount; i++) { 
    493       getReader().setSeries(i); 
     546      r.setSeries(i); 
    494547      StringBuffer sb = new StringBuffer(); 
    495548      sb.append("Series_"); 
     
    501554        sb.append(": "); 
    502555      } 
    503       sb.append(getReader().getSizeX()); 
     556      sb.append(r.getSizeX()); 
    504557      sb.append(" x "); 
    505       sb.append(getReader().getSizeY()); 
     558      sb.append(r.getSizeY()); 
    506559      sb.append("; "); 
    507       sb.append(getReader().getImageCount()); 
     560      sb.append(r.getImageCount()); 
    508561      sb.append(" plane"); 
    509       if (getReader().getImageCount() > 1) { 
     562      if (r.getImageCount() > 1) { 
    510563        sb.append("s"); 
    511         if (getReader().isOrderCertain()) { 
     564        if (r.isOrderCertain()) { 
    512565          sb.append(" ("); 
    513566          boolean first = true; 
    514           if (getReader().getEffectiveSizeC() > 1) { 
    515             sb.append(getReader().getEffectiveSizeC()); 
     567          if (r.getEffectiveSizeC() > 1) { 
     568            sb.append(r.getEffectiveSizeC()); 
    516569            sb.append("C"); 
    517570            first = false; 
    518571          } 
    519           if (getReader().getSizeZ() > 1) { 
     572          if (r.getSizeZ() > 1) { 
    520573            if (!first) sb.append(" x "); 
    521             sb.append(getReader().getSizeZ()); 
     574            sb.append(r.getSizeZ()); 
    522575            sb.append("Z"); 
    523576            first = false; 
    524577          } 
    525           if (getReader().getSizeT() > 1) { 
     578          if (r.getSizeT() > 1) { 
    526579            if (!first) sb.append(" x "); 
    527             sb.append(getReader().getSizeT()); 
     580            sb.append(r.getSizeT()); 
    528581            sb.append("T"); 
    529582            first = false; 
     
    536589    } 
    537590  } 
    538    
     591 
    539592  // -- Helper methods - miscellaneous -- 
    540593 
     
    544597      ImportStep.COMPLETE.getStep(), step.getMessage())); 
    545598  } 
    546    
     599 
    547600  private void assertStep(ImportStep importStep) { 
    548     if (step.getStep() < importStep.getStep()) { 
     601    if (step.getStep() <= importStep.getStep()) { 
    549602      throw new IllegalStateException("Too early in import process: " + 
    550         "current step is " + step + ", but minimum step is " + importStep); 
     603        "current step is " + step + ", but must be after " + importStep); 
    551604    } 
    552605  } 
  • trunk/components/loci-plugins/src/loci/plugins/in/ImportStep.java

    r6271 r6322  
    4848  METADATA  (7, "Initializing metadata"), 
    4949  COMPLETE  (8, "Import preparations complete"); 
    50    
     50 
    5151  // -- Static fields -- 
    5252 
     
    6161    return STEP_TABLE.get(step); 
    6262  } 
    63    
     63 
    6464  // -- Fields -- 
    6565 
     
    7373    this.message = message; 
    7474  } 
    75    
     75 
    7676  // -- ImportStep methods -- 
    77    
     77 
    7878  public int getStep() { return step; } 
    7979  public String getMessage() { return message; } 
    80    
     80 
    8181} 
  • trunk/components/loci-plugins/src/loci/plugins/in/ImporterOptions.java

    r6296 r6322  
    5050  // option keys 
    5151  public static final String KEY_AUTOSCALE       = "autoscale"; 
    52   public static final String KEY_COLORIZE        = "colorize"; 
     52  public static final String KEY_COLOR_MODE      = "colorMode"; 
    5353  public static final String KEY_CONCATENATE     = "concatenate"; 
    5454  public static final String KEY_CROP            = "crop"; 
    55   public static final String KEY_CUSTOM_COLORIZE = "customColorize"; 
    5655  public static final String KEY_FIRST           = "firstTime"; 
    5756  public static final String KEY_FORCE_THUMBS    = "forceThumbnails"; 
     
    6059  public static final String KEY_ID              = "id"; 
    6160  public static final String KEY_LOCATION        = "location"; 
    62   public static final String KEY_MERGE_CHANNELS  = "mergeChannels"; 
    63   public static final String KEY_MERGE_OPTION    = "mergeOption"; 
    6461  public static final String KEY_OPEN_ALL_SERIES = "openAllSeries"; 
    6562  public static final String KEY_QUIET           = "quiet"; 
     
    8077  public static final String KEY_WINDOWLESS      = "windowless"; 
    8178 
     79  // possible values for colorMode 
     80  public static final String COLOR_MODE_DEFAULT = "Default"; 
     81  public static final String COLOR_MODE_COMPOSITE = "Composite"; 
     82  public static final String COLOR_MODE_COLORIZED = "Colorized"; 
     83  public static final String COLOR_MODE_GRAYSCALE = "Grayscale"; 
     84  public static final String COLOR_MODE_CUSTOM = "Custom"; 
     85 
    8286  // possible values for location 
    8387  public static final String LOCATION_LOCAL = "Local machine"; 
     
    184188  public void setAutoscale(boolean b) { setValue(KEY_AUTOSCALE, b); } 
    185189 
    186   // colorize 
    187   public String getColorizeInfo() { return getInfo(KEY_COLORIZE); } 
    188   public boolean isColorize() { return isSet(KEY_COLORIZE); } 
    189   public void setColorize(boolean b) { setValue(KEY_COLORIZE, b); } 
     190  // colorMode 
     191  public String getColorModeInfo() { return getInfo(KEY_COLOR_MODE); } 
     192  public String getColorMode() { return getValue(KEY_COLOR_MODE); } 
     193  public String[] getColorModes() { return getPossible(KEY_COLOR_MODE); } 
     194  public boolean isColorModeDefault() { 
     195    return COLOR_MODE_DEFAULT.equals(getColorMode()); 
     196  } 
     197  public boolean isColorModeComposite() { 
     198    return COLOR_MODE_COMPOSITE.equals(getColorMode()); 
     199  } 
     200  public boolean isColorModeColorized() { 
     201    return COLOR_MODE_COLORIZED.equals(getColorMode()); 
     202  } 
     203  public boolean isColorModeGrayscale() { 
     204    return COLOR_MODE_GRAYSCALE.equals(getColorMode()); 
     205  } 
     206  public boolean isColorModeCustom() { 
     207    return COLOR_MODE_CUSTOM.equals(getColorMode()); 
     208  } 
     209  public void setColorMode(String s) { setValue(KEY_COLOR_MODE, s); } 
    190210 
    191211  // concatenate 
     
    198218  public boolean doCrop() { return isSet(KEY_CROP); } 
    199219  public void setCrop(boolean b) { setValue(KEY_CROP, b); } 
    200  
    201   // customColorize 
    202   public String getCustomColorizeInfo() { return getInfo(KEY_CUSTOM_COLORIZE); } 
    203   public boolean isCustomColorize() { return isSet(KEY_CUSTOM_COLORIZE); } 
    204   public void setCustomColorize(boolean b) { setValue(KEY_CUSTOM_COLORIZE, b); } 
    205220 
    206221  // firstTime 
     
    237252  public void setLocation(String s) { setValue(KEY_LOCATION, s); } 
    238253 
    239   // mergeChannels 
    240   public String getMergeChannelsInfo() { return getInfo(KEY_MERGE_CHANNELS); } 
    241   public boolean isMergeChannels() { return isSet(KEY_MERGE_CHANNELS); } 
    242   public void setMergeChannels(boolean b) { setValue(KEY_MERGE_CHANNELS, b); } 
    243  
    244   // mergeOption 
    245   public String getMergeOptionInfo() { return getInfo(KEY_MERGE_OPTION); } 
    246   public String getMergeOption() { return getValue(KEY_MERGE_OPTION); } 
    247   public void setMergeOption(String s) { setValue(KEY_MERGE_OPTION, s); } 
    248  
    249254  // openAllSeries 
    250255  public String getOpenAllSeriesInfo() { return getInfo(KEY_OPEN_ALL_SERIES); } 
     
    372377  public int getCStep(int s) { return get(cStep, s, 1); } 
    373378  public void setCStep(int s, int value) { set(cStep, s, value, 1); } 
    374   public int getCCount(int s) { 
    375     if (!isSeriesOn(s)) return 0; 
    376     if (isMergeChannels()) return 1; 
    377     return (getCEnd(s) - getCBegin(s) + getCStep(s)) / getCStep(s); 
    378   } 
    379379 
    380380  public int getZBegin(int s) { return get(zBegin, s, 0); } 
     
    384384  public int getZStep(int s) { return get(zStep, s, 1); } 
    385385  public void setZStep(int s, int value) { set(zStep, s, value, 1); } 
    386   public int getZCount(int s) { 
    387     if (!isSeriesOn(s)) return 0; 
    388     return (getZEnd(s) - getZBegin(s) + getZStep(s)) / getZStep(s); 
    389   } 
    390386 
    391387  public int getTBegin(int s) { return get(tBegin, s, 0); } 
     
    395391  public int getTStep(int s) { return get(tStep, s, 1); } 
    396392  public void setTStep(int s, int value) { set(tStep, s, value, 1); } 
    397   public int getTCount(int s) { 
    398     if (!isSeriesOn(s)) return 0; 
    399     return (getTEnd(s) - getTBegin(s) + getTStep(s)) / getTStep(s); 
    400   } 
    401393 
    402394  // crop options 
  • trunk/components/loci-plugins/src/loci/plugins/in/LocationDialog.java

    r6265 r6322  
    4343    super(process); 
    4444  } 
    45    
     45 
    4646  // -- ImporterDialog methods -- 
    47    
     47 
    4848  @Override 
    4949  protected boolean needPrompt() { 
     
    5151    return !process.isWindowless() && options.getLocation() == null; 
    5252  } 
    53    
     53 
    5454  @Override 
    5555  protected GenericDialog constructDialog() { 
     
    5858    return gd; 
    5959  } 
    60    
     60 
    6161  @Override 
    6262  protected boolean harvestResults(GenericDialog gd) { 
  • trunk/components/loci-plugins/src/loci/plugins/in/MainDialog.java

    r6296 r6322  
    7474 
    7575  protected Checkbox autoscaleBox; 
    76   protected Checkbox colorizeBox; 
     76  protected Choice colorModeChoice; 
    7777  protected Checkbox concatenateBox; 
    7878  protected Checkbox cropBox; 
    79   protected Checkbox customColorizeBox; 
    8079  protected Checkbox groupFilesBox; 
    8180  protected Checkbox ungroupFilesBox; 
    82   protected Checkbox mergeChannelsBox; 
    8381  protected Checkbox openAllSeriesBox; 
    8482  protected Checkbox recordBox; 
     
    116114    GenericDialog gd = new GenericDialog("Bio-Formats Import Options"); 
    117115    addCheckbox(gd, ImporterOptions.KEY_AUTOSCALE); 
    118     addCheckbox(gd, ImporterOptions.KEY_COLORIZE); 
     116    addChoice(gd, ImporterOptions.KEY_COLOR_MODE); 
    119117    addCheckbox(gd, ImporterOptions.KEY_CONCATENATE); 
    120118    addCheckbox(gd, ImporterOptions.KEY_CROP); 
    121     addCheckbox(gd, ImporterOptions.KEY_CUSTOM_COLORIZE); 
    122119    addCheckbox(gd, ImporterOptions.KEY_GROUP_FILES); 
    123120    addCheckbox(gd, ImporterOptions.KEY_UNGROUP_FILES); 
    124     addCheckbox(gd, ImporterOptions.KEY_MERGE_CHANNELS); 
    125121    addCheckbox(gd, ImporterOptions.KEY_OPEN_ALL_SERIES); 
    126122    addCheckbox(gd, ImporterOptions.KEY_QUIET); // NB: invisible 
     
    144140  protected boolean harvestResults(GenericDialog gd) { 
    145141    options.setAutoscale(gd.getNextBoolean()); 
    146     options.setColorize(gd.getNextBoolean()); 
     142    options.setColorMode(options.getColorModes()[gd.getNextChoiceIndex()]); 
    147143    options.setConcatenate(gd.getNextBoolean()); 
    148144    options.setCrop(gd.getNextBoolean()); 
    149     options.setCustomColorize(gd.getNextBoolean()); 
    150145    options.setGroupFiles(gd.getNextBoolean()); 
    151146    options.setUngroupFiles(gd.getNextBoolean()); 
    152     options.setMergeChannels(gd.getNextBoolean()); 
    153147    options.setOpenAllSeries(gd.getNextBoolean()); 
    154148    options.setQuiet(gd.getNextBoolean()); // NB: invisible 
     
    210204    Vector<Choice> choices = null; 
    211205    Vector<Label> labels = null; 
    212     Label stackFormatLabel = null, stackOrderLabel = null; 
     206    Label colorModeLabel = null; 
     207    Label stackFormatLabel = null; 
     208    Label stackOrderLabel = null; 
    213209    Component[] c = gd.getComponents(); 
    214210    if (c != null) { 
     
    233229        else if (c[i] instanceof Label) labels.add((Label) c[i]); 
    234230      } 
    235       autoscaleBox      = boxes.get(0); 
    236       colorizeBox       = boxes.get(1); 
    237       concatenateBox    = boxes.get(2); 
    238       cropBox           = boxes.get(3); 
    239       customColorizeBox = boxes.get(4); 
    240       groupFilesBox     = boxes.get(5); 
    241       ungroupFilesBox   = boxes.get(6); 
    242       mergeChannelsBox  = boxes.get(7); 
    243       openAllSeriesBox  = boxes.get(8); 
    244       //quietBox        = boxes.get(9); 
    245       recordBox         = boxes.get(10); 
    246       showMetadataBox   = boxes.get(11); 
    247       showOMEXMLBox     = boxes.get(12); 
    248       showROIsBox       = boxes.get(13); 
    249       specifyRangesBox  = boxes.get(14); 
    250       splitZBox         = boxes.get(15); 
    251       splitTBox         = boxes.get(16); 
    252       splitCBox         = boxes.get(17); 
    253       stackFormatChoice = choices.get(0); 
    254       stackFormatLabel  = labels.get(0); 
    255       stackOrderChoice  = choices.get(1); 
    256       stackOrderLabel   = labels.get(1); 
    257       swapDimsBox       = boxes.get(18); 
    258       virtualBox        = boxes.get(19); 
     231      int boxIndex = 0, choiceIndex = 0, labelIndex = 0; 
     232      autoscaleBox      = boxes.get(boxIndex++); 
     233      colorModeChoice   = choices.get(choiceIndex++); 
     234      colorModeLabel    = labels.get(labelIndex++); 
     235      concatenateBox    = boxes.get(boxIndex++); 
     236      cropBox           = boxes.get(boxIndex++); 
     237      groupFilesBox     = boxes.get(boxIndex++); 
     238      ungroupFilesBox   = boxes.get(boxIndex++); 
     239      openAllSeriesBox  = boxes.get(boxIndex++); 
     240      boxIndex++; // quiet 
     241      recordBox         = boxes.get(boxIndex++); 
     242      showMetadataBox   = boxes.get(boxIndex++); 
     243      showOMEXMLBox     = boxes.get(boxIndex++); 
     244      showROIsBox       = boxes.get(boxIndex++); 
     245      specifyRangesBox  = boxes.get(boxIndex++); 
     246      splitZBox         = boxes.get(boxIndex++); 
     247      splitTBox         = boxes.get(boxIndex++); 
     248      splitCBox         = boxes.get(boxIndex++); 
     249      stackFormatChoice = choices.get(choiceIndex++); 
     250      stackFormatLabel  = labels.get(labelIndex++); 
     251      stackOrderChoice  = choices.get(choiceIndex++); 
     252      stackOrderLabel   = labels.get(labelIndex++); 
     253      swapDimsBox       = boxes.get(boxIndex++); 
     254      virtualBox        = boxes.get(boxIndex++); 
    259255    } 
    260256    verifyOptions(null); 
     
    263259    infoTable = new HashMap<Component, String>(); 
    264260    infoTable.put(autoscaleBox, options.getAutoscaleInfo()); 
    265     infoTable.put(colorizeBox, options.getColorizeInfo()); 
     261    infoTable.put(colorModeChoice, options.getColorModeInfo()); 
     262    infoTable.put(colorModeLabel, options.getColorModeInfo()); 
    266263    infoTable.put(concatenateBox, options.getConcatenateInfo()); 
    267264    infoTable.put(cropBox, options.getCropInfo()); 
    268     infoTable.put(customColorizeBox, options.getCustomColorizeInfo()); 
    269265    infoTable.put(groupFilesBox, options.getGroupFilesInfo()); 
    270266    infoTable.put(ungroupFilesBox, options.getUngroupFilesInfo()); 
    271     infoTable.put(mergeChannelsBox, options.getMergeChannelsInfo()); 
    272267    infoTable.put(openAllSeriesBox, options.getOpenAllSeriesInfo()); 
    273268    infoTable.put(recordBox, options.getRecordInfo()); 
     
    305300      "9dlu, pref, 3dlu, pref, 3dlu, pref, 3dlu, pref, 3dlu, pref"; 
    306301 
    307     // TODO: change "Merge channels into RGB" checkbox to 
    308     // "Channel merging" choice with options: 
    309     //   "Default", "Merge channels" or "Separate channels" 
    310  
    311302    // TODO: change "Use virtual stack" and "Record modifications to virtual 
    312303    // stack" checkboxes to "Stack type" choice with options: 
     
    340331    builder.addSeparator("Color options", cc.xyw(1, row, 3)); 
    341332    row += 2; 
    342     builder.add(mergeChannelsBox, xyw(cc, 1, row, 3)); 
    343     row += 2; 
    344     builder.add(colorizeBox, xyw(cc, 1, row, 3)); 
    345     row += 2; 
    346     builder.add(customColorizeBox, xyw(cc, 1, row, 3)); 
     333    builder.add(colorModeLabel, cc.xy(1, row)); 
     334    builder.add(colorModeChoice, cc.xy(3, row)); 
    347335    row += 2; 
    348336    builder.add(autoscaleBox, xyw(cc, 1, row, 3)); 
     
    408396 
    409397    boolean autoscaleEnabled = autoscaleBox.isEnabled(); 
    410     boolean colorizeEnabled = colorizeBox.isEnabled(); 
     398    boolean colorModeEnabled = colorModeChoice.isEnabled(); 
    411399    boolean concatenateEnabled = concatenateBox.isEnabled(); 
    412400    boolean cropEnabled = cropBox.isEnabled(); 
    413     boolean customColorizeEnabled = customColorizeBox.isEnabled(); 
    414401    boolean groupFilesEnabled = groupFilesBox.isEnabled(); 
    415402    boolean ungroupFilesEnabled = ungroupFilesBox.isEnabled(); 
    416     boolean mergeChannelsEnabled = mergeChannelsBox.isEnabled(); 
    417403    boolean openAllSeriesEnabled = openAllSeriesBox.isEnabled(); 
    418404    boolean recordEnabled = recordBox.isEnabled(); 
     
    429415 
    430416    boolean isAutoscale = autoscaleBox.getState(); 
    431     boolean isColorize = colorizeBox.getState(); 
     417    String colorModeValue = colorModeChoice.getSelectedItem(); 
    432418    boolean isConcatenate = concatenateBox.getState(); 
    433419    boolean isCrop = cropBox.getState(); 
    434     boolean isCustomColorize = customColorizeBox.getState(); 
    435420    boolean isGroupFiles = groupFilesBox.getState(); 
    436421    boolean isUngroupFiles = ungroupFilesBox.getState(); 
    437     boolean isMergeChannels = mergeChannelsBox.getState(); 
    438422    boolean isOpenAllSeries = openAllSeriesBox.getState(); 
    439423    boolean isRecord = recordBox.getState(); 
     
    532516    // == Color options == 
    533517 
    534     // mergeChannelsBox 
    535     mergeChannelsEnabled = !isStackImage5D; 
    536     if (!mergeChannelsEnabled) isMergeChannels = false; 
    537  
    538     // colorizeBox 
    539     colorizeEnabled = !isMergeChannels && !isStackBrowser && 
    540       !isStackImage5D && !isStackView5D && !isCustomColorize; 
    541     if (!colorizeEnabled) isColorize = false; 
    542  
    543     // customColorizeBox 
    544     customColorizeEnabled = !isMergeChannels && !isStackBrowser && 
    545       !isStackImage5D && !isStackView5D && !isColorize; 
    546     if (!customColorizeEnabled) isCustomColorize = false; 
     518    // colorModeChoice 
     519    colorModeEnabled = !isStackImage5D && !isStackView5D && !isStackVisBio; 
     520    if (!colorModeEnabled) colorModeValue = ImporterOptions.COLOR_MODE_DEFAULT; 
    547521 
    548522    // autoscaleBox 
     
    557531 
    558532    // splitCBox 
    559     splitCEnabled = splitEnabled && !isMergeChannels; 
     533    splitCEnabled = splitEnabled; 
    560534    if (!splitCEnabled) isSplitC = false; 
    561535 
     
    571545 
    572546    autoscaleBox.setEnabled(autoscaleEnabled); 
    573     colorizeBox.setEnabled(colorizeEnabled); 
     547    colorModeChoice.setEnabled(colorModeEnabled); 
    574548    concatenateBox.setEnabled(concatenateEnabled); 
    575549    cropBox.setEnabled(cropEnabled); 
    576     customColorizeBox.setEnabled(customColorizeEnabled); 
    577550    groupFilesBox.setEnabled(groupFilesEnabled); 
    578551    ungroupFilesBox.setEnabled(ungroupFilesEnabled); 
    579     mergeChannelsBox.setEnabled(mergeChannelsEnabled); 
    580552    openAllSeriesBox.setEnabled(openAllSeriesEnabled); 
    581553    recordBox.setEnabled(recordEnabled); 
     
    592564 
    593565    autoscaleBox.setState(isAutoscale); 
    594     colorizeBox.setState(isColorize); 
     566    colorModeChoice.select(colorModeValue); 
    595567    concatenateBox.setState(isConcatenate); 
    596568    cropBox.setState(isCrop); 
    597     customColorizeBox.setState(isCustomColorize); 
    598569    groupFilesBox.setState(isGroupFiles); 
    599570    ungroupFilesBox.setState(isUngroupFiles); 
    600     mergeChannelsBox.setState(isMergeChannels); 
    601571    openAllSeriesBox.setState(isOpenAllSeries); 
    602572    recordBox.setState(isRecord); 
     
    618588      Component[] c = { 
    619589        autoscaleBox, 
    620         colorizeBox, 
     590        colorModeChoice, 
    621591        concatenateBox, 
    622592        cropBox, 
    623         customColorizeBox, 
    624593        groupFilesBox, 
    625594        ungroupFilesBox, 
    626         mergeChannelsBox, 
    627595        openAllSeriesBox, 
    628596        recordBox, 
  • trunk/components/loci-plugins/src/loci/plugins/in/UpgradeDialog.java

    r6278 r6322  
    5353    return !options.isQuiet() && !process.isWindowless(); 
    5454  } 
    55    
     55 
    5656  @Override 
    5757  protected GenericDialog constructDialog() { return null; } 
    58    
     58 
    5959  /** 
    6060   * Asks user whether Bio-Formats should automatically check for upgrades, 
  • trunk/components/loci-plugins/src/loci/plugins/in/importer-options.txt

    r6296 r6322  
    3737default = true 
    3838 
    39 [colorize] 
    40 type = boolean 
    41 label = RGB_colorize channels 
    42 info = <b>RGB colorize channels</b> - \ 
    43   Each channel is assigned an appropriate pseudocolor table rather than the \ 
    44   normal grayscale.                                                         \ 
    45   <br><br>The first channel is colorized red, the second channel is green,  \ 
    46   and the third channel is blue. This option is not available when <b>Merge \ 
    47   channels to RGB</b> or <b>Custom colorize channels</b> are set. 
    48 default = true 
     39[colorMode] 
     40type = string 
     41label = Color_mode: 
     42info = <b>Color mode</b> - \ 
     43  Visualizes channels according to the specified scheme.                 \ 
     44  <br><br>Possible choices are:<ul>                                      \ 
     45  <li><b>Default</b> - Display channels as closely as possible           \ 
     46  to how they are stored in the file. For 8-bit indexed color,           \ 
     47  this is the only choice that will preserve the index values.</li>      \ 
     48  <li><b>Composite</b> - Open as a merged composite image. Channels are  \ 
     49  colorized according to metadata present in the dataset (if any),       \ 
     50  or in the following default order: 1=red, 2=green, 3=blue,             \ 
     51  4=gray, 5=cyan, 6=magenta, 7=yellow.</li>                              \ 
     52  <li><b>Colorized</b> - Open with each channel in a separate plane,     \ 
     53  colorized according to metadata present in the dataset (if any),       \ 
     54  or in the default order (see Composite above).</li>                    \ 
     55  <li><b>Grayscale</b> - Open with each channel in a separate plane,     \ 
     56  displayed in plain grayscale.</li>                                     \ 
     57  <li><b>Custom</b> - Same as Colorized, except that you                 \ 
     58  can explicitly choose how to colorize each channel.</li>               \ 
     59  </ul>                                                                  \ 
     60  Note that ImageJ can only composite together 7 or fewer channels.      \ 
     61  With more than 7 channels, Bio-Formats will ask how to split them up.  \ 
     62  For example, a 12-channel dataset could be partitioned as:<ul>         \ 
     63  <li>6 planes with 2 channels each</li>                                 \ 
     64  <li>4 planes with 3 channels each</li>                                 \ 
     65  <li>3 planes with 4 channels each</li>                                 \ 
     66  <li>3 planes with 5 channels each</li>                                 \ 
     67  <li>2 planes with 6 channels each</li>                                 \ 
     68  <li>2 planes with 7 channels each</li>                                 \ 
     69  </ul> 
     70default = Default 
     71values = \ 
     72  Default,   \ 
     73  Composite, \ 
     74  Colorized, \ 
     75  Grayscale, \ 
     76  Custom 
    4977 
    5078[concatenate] 
     
    6694  corner of the crop region and the width and height of the selection to \ 
    6795  be displayed, in pixels. 
    68 default = false 
    69  
    70 [customColorize] 
    71 type = boolean 
    72 label = Custom_colorize channels 
    73 info = <b>Custom colorize channels</b> - \ 
    74   Each channel is assigned a pseudocolor table rather than the normal \ 
    75   grayscale.<br><br>The color for each channel is chosen by the user. \ 
    76   This option is not available when <b>Merge channels to RGB</b> or   \ 
    77   <b>RGB colorize channels</b> are set. 
    7896default = false 
    7997 
     
    130148  Internet 
    131149 
    132 [mergeChannels] 
    133 type = boolean 
    134 label = Merge_channels to RGB 
    135 info = <b>Merge channels to RGB</b> - \ 
    136   A dataset with multiple channels will be opened and merged with       \ 
    137   channels pseudocolored in the order of the RGB color scheme; i.e.,    \ 
    138   channel 1 is red, channel 2 is green, and channel 3 is blue.          \ 
    139   <br><br>The bit depth will be preserved. If the dataset has more than \ 
    140   3 channels, Bio-Formats will ask how to combine them.                 \ 
    141   <br><br>For example, a 12-channel image could be combined into:<ul>   \ 
    142   <li>6 planes with 2 channels each (1st channel is red, 2nd is green)  \ 
    143   </li>                                                                 \ 
    144   <li>4 planes with 3 channels each (3rd channel is blue)</li>          \ 
    145   <li>3 planes with 4 channels each (4th channel is gray)</li>          \ 
    146   <li>3 planes with 5 channels each (5th channel is cyan)</li>          \ 
    147   <li>2 planes with 6 channels each (6th channel is magenta)</li>       \ 
    148   <li>2 planes with 7 channels each (7th channel is yellow)</li>        \ 
    149   </ul> 
    150 default = false 
    151  
    152 [mergeOption] 
    153 type = string 
    154 label = Merging channels per plane 
    155 default = Do not merge 
    156  
    157150[openAllSeries] 
    158151type = boolean 
     
    272265label = View stack with: 
    273266info = <b>View stack with</b> - \ 
    274   The type of image viewer to use when displaying the dataset.           \ 
    275   <br><br>Possible choices are:<ul>                                      \ 
    276   <li><b>Metadata only</b> - Display no pixels, only metadata.</li>      \ 
    277   <li><b>Hyperstack</b> - Display the pixels in ImageJ's                 \ 
    278   built-in 5D viewer.</li>                                               \ 
    279   <li><b>Data Browser</b> - Display the pixels in LOCI's                 \ 
    280   multidimensional Data Browser viewer. The Data Browser has some        \ 
    281   additional features on top of the normal ImageJ hyperstack.</li>       \ 
    282   <li><b>VisBio</b> - Not yet implemented.</li>                          \ 
    283   <li><b>Image5D</b> - Display the pixels in                             \ 
    284   Joachim Walter's Image5D viewer. Requires the Image5D plugin.</li>     \ 
    285   <li><b>View5D</b> - Display the pixels in                              \ 
    286   Rainer Heintzmann's View5D viewer. Requires the View5D plugin.</li>    \ 
     267  The type of image viewer to use when displaying the dataset.        \ 
     268  <br><br>Possible choices are:<ul>                                   \ 
     269  <li><b>Metadata only</b> - Display no pixels, only metadata.</li>   \ 
     270  <li><b>Hyperstack</b> - Display the pixels in ImageJ's              \ 
     271  built-in 5D viewer.</li>                                            \ 
     272  <li><b>Data Browser</b> - Display the pixels in LOCI's              \ 
     273  multidimensional Data Browser viewer. The Data Browser has some     \ 
     274  additional features on top of the normal ImageJ hyperstack.</li>    \ 
     275  <li><b>VisBio</b> - Not yet implemented.</li>                       \ 
     276  <li><b>Image5D</b> - Display the pixels in                          \ 
     277  Joachim Walter's Image5D viewer. Requires the Image5D plugin.</li>  \ 
     278  <li><b>View5D</b> - Display the pixels in                           \ 
     279  Rainer Heintzmann's View5D viewer. Requires the View5D plugin.</li> \ 
    287280  </ul> 
    288281default = Hyperstack 
     
    299292label = Stack_order: 
    300293info = <b>Stack order</b> - \ 
    301   Controls the rasterization order of the dataset's dimensional axes.   \ 
    302   <br><br>Unless you care about the order in which the image planes     \ 
    303   appear, you probably don't need to worry too much about this option.  \ 
    304   <br><br>By default, Bio-Formats reads the image planes in whatever    \ 
    305   order they are stored, which is format-dependent. However, several    \ 
    306   stack view modes require a specific rasterization order:<ul>          \ 
    307   <li>Hyperstacks must be in XYCZT order.</li>                          \ 
    308   <li>Image5D must be in XYCZT order.</li>                              \ 
    309   <li>View5D must be in XYCZT order.</li>                               \ 
    310   </ul><b>Example:</b> For a dataset in XYCZT order with 2 channels,    \ 
    311   3 focal planes and 5 time points, the order would be:<ol>             \ 
    312   <li>C1-Z1-T1</li>                                                     \ 
    313   <li>C2-Z1-T1</li>                                                     \ 
    314   <li>C1-Z2-T1</li>                                                     \ 
    315   <li>C2-Z2-T1</li>                                                     \ 
    316   <li>C1-Z3-T1</li>                                                     \ 
    317   <li>C2-Z3-T1</li>                                                     \ 
    318   <li>C1-Z1-T2</li>                                                     \ 
    319   <li>C2-Z1-T2</li>                                                     \ 
    320   <li>etc.</li>                                                         \ 
     294  Controls the rasterization order of the dataset's dimensional axes.  \ 
     295  <br><br>Unless you care about the order in which the image planes    \ 
     296  appear, you probably don't need to worry too much about this option. \ 
     297  <br><br>By default, Bio-Formats reads the image planes in whatever   \ 
     298  order they are stored, which is format-dependent. However, several   \ 
     299  stack view modes require a specific rasterization order:<ul>         \ 
     300  <li>Hyperstacks must be in XYCZT order.</li>                         \ 
     301  <li>Image5D must be in XYCZT order.</li>                             \ 
     302  <li>View5D must be in XYCZT order.</li>                              \ 
     303  </ul><b>Example:</b> For a dataset in XYCZT order with 2 channels,   \ 
     304  3 focal planes and 5 time points, the order would be:<ol>            \ 
     305  <li>C1-Z1-T1</li>                                                    \ 
     306  <li>C2-Z1-T1</li>                                                    \ 
     307  <li>C1-Z2-T1</li>                                                    \ 
     308  <li>C2-Z2-T1</li>                                                    \ 
     309  <li>C1-Z3-T1</li>                                                    \ 
     310  <li>C2-Z3-T1</li>                                                    \ 
     311  <li>C1-Z1-T2</li>                                                    \ 
     312  <li>C2-Z1-T2</li>                                                    \ 
     313  <li>etc.</li>                                                        \ 
    321314  </ol> 
    322315default = Default 
  • trunk/components/loci-plugins/src/loci/plugins/util/WindowTools.java

    r6278 r6322  
    4545import java.awt.Toolkit; 
    4646import java.awt.Window; 
    47 import java.io.ByteArrayOutputStream; 
    48 import java.io.PrintStream; 
    4947import java.util.List; 
    5048import java.util.StringTokenizer; 
    5149 
     50import loci.common.DebugTools; 
    5251import loci.plugins.BF; 
    5352 
     
    186185    BF.status(quiet, ""); 
    187186    if (t != null) { 
    188       ByteArrayOutputStream buf = new ByteArrayOutputStream(); 
    189       t.printStackTrace(new PrintStream(buf)); 
    190       String s = new String(buf.toByteArray()); 
     187      String s = DebugTools.getStackTrace(t); 
    191188      StringTokenizer st = new StringTokenizer(s, "\n\r"); 
    192189      while (st.hasMoreTokens()) IJ.write(st.nextToken()); 
  • trunk/components/loci-plugins/test/loci/plugins/in/ImporterTest.java

    r6321 r6322  
    101101    // FakeFile. This requires the x value of tested images to be somewhat large. Assert 
    102102    // the input image fits the bill 
    103     if (sizeX < 41) 
     103    if (sizeX < 41) { 
    104104      throw new IllegalArgumentException("constructFakeFilename() - width < 41 : can break some of our tests"); 
    105      
     105    } 
     106 
    106107    String fileName = ""; 
    107      
    108108    fileName += title; 
    109      
    110109    fileName += "&pixelType=" + FormatTools.getPixelTypeString(pixelType); 
    111      
    112110    fileName += "&sizeX=" + sizeX; 
    113      
    114111    fileName += "&sizeY=" + sizeY; 
    115      
    116112    fileName += "&sizeZ=" + sizeZ; 
    117  
    118113    fileName += "&sizeC=" + sizeC; 
    119   
    120114    fileName += "&sizeT=" + sizeT; 
    121  
    122     if (numSeries > 0) 
    123       fileName += "&series=" + numSeries; 
    124      
     115    if (numSeries > 0) fileName += "&series=" + numSeries; 
    125116    fileName += ".fake"; 
    126117     
     
    10101001  } 
    10111002 
     1003  /* 
    10121004  @Test 
    10131005  public void testColorMerge() 
     
    11561148    fail("to be implemented"); 
    11571149  } 
     1150  */ 
    11581151   
    11591152  @Test 
Note: See TracChangeset for help on using the changeset viewer.