Changeset 3463


Ignore:
Timestamp:
12/11/07 11:10:48 (12 years ago)
Author:
melissa
Message:

Check the ImageJ version more thoroughly when attempting to merge >8 bit or >3 channel data - if the version is less than 1.39l, display a warning and the grayscale stack.

Location:
trunk/loci/plugins
Files:
4 edited

Legend:

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

    r3459 r3463  
    4848      r.exec("import ij.CompositeImage"); 
    4949    } 
    50     catch (ReflectException exc) { 
    51       IJ.error("Please upgrade to ImageJ 1.39l or later."); 
    52     } 
     50    catch (ReflectException exc) { } 
    5351    return r; 
    5452  } 
     
    137135 
    138136    ImagePlus newImp = new ImagePlus(); 
     137    boolean closeOriginal = true; 
    139138 
    140139    if (color) { 
     
    163162      } 
    164163      else if (nChannels <= 7 && type != ImagePlus.COLOR_256) { 
    165         if (!IJ.versionLessThan("1.39l")) { 
     164        if (Util.checkVersion("1.39l", Util.COMPOSITE_MSG)) { 
    166165          // use reflection to construct CompositeImage, 
    167166          // in case ImageJ version is too old 
     
    176175            IJ.error(s.toString()); 
    177176          } 
     177        } 
     178        else { 
     179          closeOriginal = false; 
     180          newImp = null; 
    178181        } 
    179182      } 
     
    211214                newImp = makeRGB(newImp, stack, n); 
    212215              } 
    213               else { 
     216              else if (Util.checkVersion("1.39l", Util.COMPOSITE_MSG)) { 
    214217                imp.setDimensions(n, imp.getNSlices()*num[n - 2], 
    215218                  imp.getNFrames()); 
     
    219222                newImp = (ImagePlus) r.getVar("newImp"); 
    220223              } 
     224              else { 
     225                closeOriginal = false; 
     226                newImp = null; 
     227              } 
    221228            } 
    222229          } 
     
    230237    } 
    231238 
    232     newImp.setTitle(imp.getTitle()); 
    233     if (!newImp.getClass().equals(c)) { 
    234       newImp.setDimensions(newImp.getStackSize() / (nSlices * nTimes), 
    235         nSlices, nTimes); 
    236     } 
    237     newImp.setCalibration(calibration); 
    238     newImp.show(); 
    239     imp.close(); 
     239    if (newImp != null) { 
     240      newImp.setTitle(imp.getTitle()); 
     241      if (!newImp.getClass().equals(c)) { 
     242        newImp.setDimensions(newImp.getStackSize() / (nSlices * nTimes), 
     243          nSlices, nTimes); 
     244      } 
     245      newImp.setCalibration(calibration); 
     246      newImp.show(); 
     247    } 
     248    if (closeOriginal) imp.close(); 
    240249  } 
    241250 
  • trunk/loci/plugins/Exporter.java

    r3459 r3463  
    159159        c = Class.forName("ij.CompositeImage"); 
    160160      } 
    161       catch (ClassNotFoundException e) { 
    162         IJ.error("Please upgrade to ImageJ 1.39l or later."); 
    163       } 
     161      catch (ClassNotFoundException e) { } 
    164162      boolean fakeRGB = imp.getClass().equals(c); 
    165163      int n = fakeRGB ? imp.getNChannels() : 1; 
  • trunk/loci/plugins/Slicer.java

    r3459 r3463  
    102102      c = Class.forName("ij.CompositeImage"); 
    103103    } 
    104     catch (ClassNotFoundException e) { 
    105       IJ.error("Please upgrade to ImageJ 1.39l or later."); 
    106     } 
     104    catch (ClassNotFoundException e) { } 
    107105    if (imp.getClass().equals(c)) return; 
    108106 
     
    153151        sliceT ? 1 : sizeT); 
    154152      p.setCalibration(calibration); 
    155       if (imp.getClass().equals(c) && !sliceC) { 
     153      if (imp.getClass().equals(c) && !sliceC && 
     154        Util.checkVersion("1.39l", Util.COMPOSITE_MSG)) 
     155      { 
    156156        try { 
    157157          ReflectedUniverse r = new ReflectedUniverse(); 
  • trunk/loci/plugins/Util.java

    r3459 r3463  
    3232import java.awt.*; 
    3333import java.awt.image.*; 
    34 import java.io.IOException; 
     34import java.io.*; 
    3535import loci.formats.*; 
    3636import loci.formats.codec.LuraWaveCodec; 
     
    4444 */ 
    4545public final class Util { 
     46 
     47  // -- Constants -- 
     48 
     49  /** Message to be displayed if we try to use CompositeImage with IJ < 1.39l */ 
     50  public static final String COMPOSITE_MSG = 
     51    "ImageJ 1.39l or later is required to merge >8 bit or >3 channel data"; 
     52 
    4653 
    4754  // -- Constructor -- 
     
    261268      imp = new ImagePlus("", cp); 
    262269    } 
    263     else if (p.length <= 4) { 
     270    else if (p.length <= 7 && Util.checkVersion("1.39l", COMPOSITE_MSG)) { 
    264271      ImageStack tmpStack = new ImageStack(width, height); 
    265272      for (int i=0; i<p.length; i++) { 
    266273        tmpStack.addSlice("", p[i]); 
    267274      } 
    268       imp = new CompositeImage(new ImagePlus("", tmpStack), 
    269         CompositeImage.COMPOSITE); 
     275      try { 
     276        ReflectedUniverse r = new ReflectedUniverse(); 
     277        r.exec("import ij.CompositeImage"); 
     278        ImagePlus ii = new ImagePlus("", tmpStack); 
     279        r.setVar("ii", ii); 
     280        r.exec("imp = new CompositeImage(ii, CompositeImage.COMPOSITE)"); 
     281        imp = (ImagePlus) r.getVar("imp"); 
     282      } 
     283      catch (ReflectException e) { 
     284        ByteArrayOutputStream s = new ByteArrayOutputStream(); 
     285        e.printStackTrace(new PrintStream(s)); 
     286        IJ.error(s.toString()); 
     287      } 
    270288    } 
    271289 
     
    384402  } 
    385403 
     404  /** 
     405   * Returns true the current ImageJ version is greater than or equal to the 
     406   * specified version.  Displays the given warning if the current version is 
     407   * less than the specified version. 
     408   */ 
     409  public static boolean checkVersion(String target, String msg) { 
     410    String current = IJ.getVersion(); 
     411    if (current.compareTo(target) < 0) { 
     412      IJ.showMessage(msg); 
     413      return false; 
     414    } 
     415    return true; 
     416  } 
     417 
    386418} 
Note: See TracChangeset for help on using the changeset viewer.