Ignore:
Timestamp:
07/07/10 15:55:27 (10 years ago)
Author:
melissa
Message:

Merged recent OME-XML and core Bio-Formats changes into the 4.2 branch.

Location:
branches/4.2
Files:
84 edited
1 copied

Legend:

Unmodified
Added
Removed
  • branches/4.2

  • branches/4.2/components

    • Property svn:mergeinfo deleted
  • branches/4.2/components/bio-formats/src

    • Property svn:mergeinfo deleted
  • branches/4.2/components/bio-formats/src/loci/formats/in/APLReader.java

    r6301 r6663  
    155155    // add full table to metadata hashtable 
    156156 
    157     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     157    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    158158      for (int i=1; i<rows.size(); i++) { 
    159159        String[] row = rows.get(i); 
     
    274274      store.setImageName(row[imageName], i); 
    275275 
    276       if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     276      if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    277277        // populate Dimensions data 
    278278 
  • branches/4.2/components/bio-formats/src/loci/formats/in/ARFReader.java

    r6230 r6663  
    5656  public ARFReader() { 
    5757    super("ARF", "arf"); 
    58     domains = new String[] {FormatTools.GRAPHICS_DOMAIN}; 
     58    domains = new String[] {FormatTools.UNKNOWN_DOMAIN}; 
    5959  } 
    6060 
     
    135135    core[0].metadataComplete = true; 
    136136 
    137     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     137    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    138138      // populate original metadata 
    139139 
  • branches/4.2/components/bio-formats/src/loci/formats/in/AVIReader.java

    r6430 r6663  
    480480      else { 
    481481        // skipping unknown block 
     482        readTypeAndSize(); 
    482483        if (in.getFilePointer() + 8 < in.length()) { 
    483484          readTypeAndSize(); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/AliconaReader.java

    r6507 r6663  
    198198    MetadataTools.setDefaultCreationDate(store, id, 0); 
    199199 
    200     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     200    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    201201      // link Image and Instrument 
    202202      String instrumentID = MetadataTools.createLSID("Instrument", 0); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/AmiraReader.java

    r6230 r6663  
    6868  public AmiraReader() { 
    6969    super("Amira", new String[] {"am", "amiramesh", "grey", "hx", "labels"}); 
    70     domains = new String[] {FormatTools.GRAPHICS_DOMAIN}; 
     70    domains = new String[] {FormatTools.UNKNOWN_DOMAIN}; 
    7171  } 
    7272 
     
    166166    // Note that Amira specifies a bounding box, not pixel sizes. 
    167167    // The bounding box is the range of the centre of the voxels 
    168     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     168    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    169169      double pixelWidth = (double) (parameters.x1 - parameters.x0) / 
    170170        (parameters.width - 1); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/AnalyzeReader.java

    r6495 r6663  
    169169    double voxelWidth = 0d, voxelHeight = 0d, sliceThickness = 0d, deltaT = 0d; 
    170170 
    171     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     171    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    172172      in.skipBytes(6); 
    173173 
     
    290290    store.setImageName(imageName, 0); 
    291291 
    292     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     292    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    293293      store.setImageDescription(description, 0); 
    294294      store.setPixelsPhysicalSizeX(voxelWidth * 0.001, 0); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/BDReader.java

    r6457 r6663  
    202202    IniList experiment = readMetaData(id); 
    203203 
    204     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     204    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    205205      objective = experiment.getTable("Geometry").get("Name"); 
    206206      IniTable camera = experiment.getTable("Camera"); 
     
    265265    MetadataStore store = makeFilterMetadata(); 
    266266    boolean populatePlanes = 
    267       getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL; 
     267      getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM; 
    268268    MetadataTools.populatePixels(store, this, populatePlanes); 
    269269 
     
    286286    } 
    287287 
    288     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     288    MetadataLevel level = getMetadataOptions().getMetadataLevel(); 
     289    if (level != MetadataLevel.MINIMUM) { 
    289290      String instrumentID = MetadataTools.createLSID("Instrument", 0); 
    290291      store.setInstrumentID(instrumentID, 0); 
     
    305306        } 
    306307 
    307         store.setObjectiveNominalMagnification(new Integer(mag), 0, 0); 
     308        store.setObjectiveNominalMagnification(PositiveInteger.valueOf(mag), 0, 0); 
    308309        if (na != null) { 
    309310          na = na.substring(0, 1) + "." + na.substring(1); 
     
    346347      store.setPlateDescription(plateDescription, 0); 
    347348 
    348       parseROIs(store); 
     349      if (level != MetadataLevel.NO_OVERLAYS) { 
     350        parseROIs(store); 
     351      } 
    349352    } 
    350353  } 
     
    381384      else if (filename.endsWith("RoiSummary.txt")) { 
    382385        roiFile = filename; 
    383         if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     386        if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    384387          RandomAccessInputStream s = new RandomAccessInputStream(filename); 
    385388          String line = s.readLine().trim(); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/BMPReader.java

    r6495 r6663  
    250250    core[0].falseColor = false; 
    251251 
    252     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     252    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    253253      addGlobalMeta("Indexed color", palette != null); 
    254254      addGlobalMeta("Image width", getSizeX()); 
     
    283283    MetadataTools.setDefaultCreationDate(store, id, 0); 
    284284 
    285     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     285    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    286286      // resolution is stored as pixels per meter; we want to convert to 
    287287      // microns per pixel 
  • branches/4.2/components/bio-formats/src/loci/formats/in/BaseTiffReader.java

    r6495 r6663  
    8383   */ 
    8484  protected void initStandardMetadata() throws FormatException, IOException { 
    85     if (getMetadataOptions().getMetadataLevel() != MetadataLevel.ALL) { 
     85    if (getMetadataOptions().getMetadataLevel() == MetadataLevel.MINIMUM) { 
    8686      return; 
    8787    } 
     
    395395    } 
    396396 
    397     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     397    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    398398      // populate Experimenter 
    399399      String artist = firstIFD.getIFDTextValue(IFD.ARTIST); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/BioRadGelReader.java

    r6230 r6663  
    107107 
    108108    double physicalWidth = 0d, physicalHeight = 0d; 
    109     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     109    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    110110      in.seek(348 + skip - 8187); 
    111111      String scannerName = in.readCString(); 
     
    164164 
    165165    store.setImageAcquiredDate(date, 0); 
    166     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     166    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    167167      store.setPixelsPhysicalSizeX(physicalWidth / getSizeX(), 0); 
    168168      store.setPixelsPhysicalSizeY(physicalHeight / getSizeY(), 0); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/BioRadReader.java

    r6495 r6663  
    4040import loci.formats.meta.IMinMaxStore; 
    4141import loci.formats.meta.MetadataStore; 
     42 
     43import ome.xml.model.primitives.PositiveInteger; 
    4244 
    4345import org.xml.sax.Attributes; 
     
    311313    int lens = 0; 
    312314 
    313     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     315    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    314316      int merged = in.readShort(); 
    315317      int color1 = in.readShort(); 
     
    474476    store.setImageName(name, 0); 
    475477 
    476     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     478    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    477479      // link Instrument and Image 
    478480      String instrumentID = MetadataTools.createLSID("Instrument", 0); 
     
    486488 
    487489      store.setObjectiveLensNA(new Double(lens), 0, 0); 
    488       store.setObjectiveNominalMagnification((int) magFactor, 0, 0); 
     490      store.setObjectiveNominalMagnification( 
     491          new PositiveInteger((int) magFactor), 0, 0); 
    489492      store.setObjectiveCorrection(getCorrection("Other"), 0, 0); 
    490493      store.setObjectiveImmersion(getImmersion("Other"), 0, 0); 
     
    598601    for (int noteIndex=0; noteIndex<noteStrings.size(); noteIndex++) { 
    599602      Note n = noteStrings.get(noteIndex); 
    600       if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     603      if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    601604        switch (n.type) { 
    602605          case NOTE_TYPE_USER: 
     
    632635              else if (key.equals("INFO_OBJECTIVE_MAGNIFICATION")) { 
    633636                store.setObjectiveNominalMagnification( 
    634                   (int) Float.parseFloat(value), 0, 0); 
     637                  new PositiveInteger((int) Float.parseFloat(value)), 0, 0); 
    635638              } 
    636639              else if (key.equals("LENS_MAGNIFICATION")) { 
    637640                store.setObjectiveNominalMagnification( 
    638                   (int) Float.parseFloat(value), 0, 0); 
     641                  new PositiveInteger((int) Float.parseFloat(value)), 0, 0); 
    639642              } 
    640643              else if (key.startsWith("SETTING")) { 
     
    720723 
    721724                  store.setObjectiveNominalMagnification( 
    722                     (int) Float.parseFloat(values[11]), 0, 0); 
     725                    new PositiveInteger((int) Float.parseFloat(values[11])), 0, 0); 
    723726                  store.setPixelsPhysicalSizeZ(new Double(values[14]), 0); 
    724727                  break; 
     
    947950        } 
    948951 
    949         if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL && 
     952        if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM && 
    950953          values.length > 2) 
    951954        { 
  • branches/4.2/components/bio-formats/src/loci/formats/in/BurleighReader.java

    r6230 r6663  
    108108    pixelsOffset = version == 1 ? 8 : 260; 
    109109 
    110     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     110    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    111111      double timePerPixel = 0d; 
    112112      int mode = 0, gain = 0, mag = 0; 
     
    176176    MetadataTools.setDefaultCreationDate(store, id, 0); 
    177177 
    178     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     178    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    179179      store.setPixelsPhysicalSizeX(xSize / getSizeX(), 0); 
    180180      store.setPixelsPhysicalSizeY(ySize / getSizeY(), 0); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/CellomicsReader.java

    r6230 r6663  
    120120    int pixelWidth = 0, pixelHeight = 0; 
    121121 
    122     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     122    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    123123      pixelWidth = in.readInt(); 
    124124      pixelHeight = in.readInt(); 
     
    157157    MetadataTools.setDefaultCreationDate(store, id, 0); 
    158158 
    159     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     159    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    160160      // physical dimensions are stored as pixels per meter - we want them 
    161161      // in microns per pixel 
  • branches/4.2/components/bio-formats/src/loci/formats/in/DeltavisionReader.java

    r6635 r6663  
    201201        break; 
    202202      } 
    203       case ALL: { 
     203      case NO_OVERLAYS: 
     204      case ALL: 
    204205        initFileOld(id); 
    205206        break; 
    206       } 
    207207      default: { 
    208208        LOGGER.warn("Unsupported level: " + metadataLevel); 
     
    813813            try { 
    814814              store.setObjectiveNominalMagnification( 
    815                 new Integer(magnification), 0, 0); 
     815                PositiveInteger.valueOf(magnification), 0, 0); 
    816816            } 
    817817            catch (NumberFormatException e) { 
  • branches/4.2/components/bio-formats/src/loci/formats/in/DicomReader.java

    r6230 r6663  
    427427    in.seek(128); 
    428428    if (in.readString(4).equals("DICM")) { 
    429       if (level == MetadataLevel.ALL) { 
     429      if (level != MetadataLevel.MINIMUM) { 
    430430        // header exists, so we'll read it 
    431431        in.seek(0); 
     
    690690    } 
    691691 
    692     if (level == MetadataLevel.ALL) { 
     692    if (level != MetadataLevel.MINIMUM) { 
    693693      for (int i=0; i<core.length; i++) { 
    694694        store.setImageDescription(imageType, i); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/FEIReader.java

    r6230 r6663  
    115115    LOGGER.info("Reading file header"); 
    116116 
    117     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     117    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    118118      in.skipBytes(44); 
    119119 
  • branches/4.2/components/bio-formats/src/loci/formats/in/FV1000Reader.java

    r6534 r6663  
    5353import loci.formats.tiff.TiffParser; 
    5454 
     55import ome.xml.model.primitives.NonNegativeInteger; 
    5556import ome.xml.model.primitives.PositiveInteger; 
    5657 
     
    463464    } 
    464465 
    465     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     466    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    466467      index = 1; 
    467468      IniTable guiChannel = f.getTable("GUI Channel " + index + " Parameters"); 
     
    636637      } 
    637638 
    638       if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     639      if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    639640        for (IniTable table : pty) { 
    640641          String[] keys = table.keySet().toArray(new String[table.size()]); 
     
    826827    } 
    827828 
    828     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     829    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    829830      populateMetadataStore(store, path); 
    830831    } 
     
    918919          try { 
    919920            store.setTransmittanceRangeCutIn( 
    920               new Integer(emValues[0]), 0, channelIndex); 
     921              PositiveInteger.valueOf(emValues[0]), 0, channelIndex); 
    921922            store.setTransmittanceRangeCutOut( 
    922               new Integer(emValues[1]), 0, channelIndex); 
     923              PositiveInteger.valueOf(emValues[1]), 0, channelIndex); 
    923924          } 
    924925          catch (NumberFormatException e) { } 
     
    961962    if (magnification != null) { 
    962963      int mag = (int) Float.parseFloat(magnification); 
    963       store.setObjectiveNominalMagnification(mag, 0, 0); 
     964      store.setObjectiveNominalMagnification(new PositiveInteger(mag), 0, 0); 
    964965    } 
    965966    if (workingDistance != null) { 
     
    974975    store.setImageObjectiveSettingsID(objectiveID, 0); 
    975976 
    976     int nextROI = -1; 
    977  
    978     // populate ROI data - there is one ROI file per plane 
    979     for (int i=0; i<roiFilenames.size(); i++) { 
    980       if (i >= getImageCount()) break; 
    981       String filename = roiFilenames.get(new Integer(i)); 
    982       filename = sanitizeFile(filename, path); 
    983       nextROI = parseROIFile(filename, store, nextROI, i); 
     977    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.NO_OVERLAYS) { 
     978      int nextROI = -1; 
     979 
     980      // populate ROI data - there is one ROI file per plane 
     981      for (int i=0; i<roiFilenames.size(); i++) { 
     982        if (i >= getImageCount()) break; 
     983        String filename = roiFilenames.get(new Integer(i)); 
     984        filename = sanitizeFile(filename, path); 
     985        nextROI = parseROIFile(filename, store, nextROI, i); 
     986      } 
    984987    } 
    985988  } 
     
    10461049 
    10471050          if (shapeType == POINT) { 
    1048             store.setPointTheZ(zIndex, nextROI, shape); 
    1049             store.setPointTheT(tIndex, nextROI, shape); 
    1050             store.setPointFontSize(fontSize, nextROI, shape); 
     1051            store.setPointTheZ(new NonNegativeInteger(zIndex), nextROI, shape); 
     1052            store.setPointTheT(new NonNegativeInteger(tIndex), nextROI, shape); 
     1053            store.setPointFontSize( 
     1054              new NonNegativeInteger(fontSize), nextROI, shape); 
    10511055            store.setPointStrokeWidth(new Double(lineWidth), nextROI, shape); 
    10521056 
     
    10681072                store.setRectangleHeight(new Double(height), nextROI, shape); 
    10691073 
    1070                 store.setRectangleTheZ(zIndex, nextROI, shape); 
    1071                 store.setRectangleTheT(tIndex, nextROI, shape); 
    1072                 store.setRectangleFontSize(fontSize, nextROI, shape); 
     1074                store.setRectangleTheZ( 
     1075                  new NonNegativeInteger(zIndex), nextROI, shape); 
     1076                store.setRectangleTheT( 
     1077                  new NonNegativeInteger(tIndex), nextROI, shape); 
     1078                store.setRectangleFontSize( 
     1079                  new NonNegativeInteger(fontSize), nextROI, shape); 
    10731080                store.setRectangleStrokeWidth( 
    10741081                  new Double(lineWidth), nextROI, shape); 
     
    10901097            store.setLineY2(new Double(y + height), nextROI, shape); 
    10911098 
    1092             store.setLineTheZ(zIndex, nextROI, shape); 
    1093             store.setLineTheT(tIndex, nextROI, shape); 
    1094             store.setLineFontSize(fontSize, nextROI, shape); 
     1099            store.setLineTheZ(new NonNegativeInteger(zIndex), nextROI, shape); 
     1100            store.setLineTheT(new NonNegativeInteger(tIndex), nextROI, shape); 
     1101            store.setLineFontSize( 
     1102              new NonNegativeInteger(fontSize), nextROI, shape); 
    10951103            store.setLineStrokeWidth(new Double(lineWidth), nextROI, shape); 
    10961104 
     
    11091117            store.setEllipseRadiusY(ry, nextROI, shape); 
    11101118 
    1111             store.setEllipseTheZ(zIndex, nextROI, shape); 
    1112             store.setEllipseTheT(tIndex, nextROI, shape); 
    1113             store.setEllipseFontSize(fontSize, nextROI, shape); 
     1119            store.setEllipseTheZ( 
     1120                new NonNegativeInteger(zIndex), nextROI, shape); 
     1121            store.setEllipseTheT( 
     1122                new NonNegativeInteger(tIndex), nextROI, shape); 
     1123            store.setEllipseFontSize( 
     1124                new NonNegativeInteger(fontSize), nextROI, shape); 
    11141125            store.setEllipseStrokeWidth(new Double(lineWidth), nextROI, shape); 
    11151126            store.setEllipseTransform(String.format(ROTATION, 
     
    11301141            store.setPolylineClosed( 
    11311142              shapeType == POLYGON || shapeType == FREE_SHAPE, nextROI, shape); 
    1132             store.setPolylineTheZ(zIndex, nextROI, shape); 
    1133             store.setPolylineTheT(tIndex, nextROI, shape); 
    1134             store.setPolylineFontSize(fontSize, nextROI, shape); 
     1143            store.setPolylineTheZ( 
     1144                new NonNegativeInteger(zIndex), nextROI, shape); 
     1145            store.setPolylineTheT( 
     1146                new NonNegativeInteger(tIndex), nextROI, shape); 
     1147            store.setPolylineFontSize( 
     1148                new NonNegativeInteger(fontSize), nextROI, shape); 
    11351149            store.setPolylineStrokeWidth(new Double(lineWidth), nextROI, shape); 
    11361150          } 
     
    14101424    String data = stream.readString((int) stream.length() - 2); 
    14111425    data = DataTools.stripString(data); 
    1412     if (!data.startsWith("[")) data = "[" + data; 
    14131426    BufferedReader reader = new BufferedReader(new StringReader(data)); 
    14141427    stream.close(); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/FakeReader.java

    • Property svn:mergeinfo deleted
    r6626 r6663  
    6767  private double scaleFactor = 1; 
    6868 
    69   /** 8-bit lookup table, if indexed color. */ 
    70   private byte[][] lut8 = null; 
    71  
    72   /** 16-bit lookup table, if indexed color. */ 
    73   private short[][] lut16 = null; 
    74  
    75   private int[] indexToValue = null, valueToIndex = null; 
     69  /** 8-bit lookup table, if indexed color, one per channel. */ 
     70  private byte[][][] lut8 = null; 
     71 
     72  /** 16-bit lookup table, if indexed color, one per channel. */ 
     73  private short[][][] lut16 = null; 
     74 
     75  /** For indexed color, mapping from indices to values and vice versa. */ 
     76  private int[][] indexToValue = null, valueToIndex = null; 
     77 
     78  /** Channel of last opened image plane. */ 
     79  private int ac = -1; 
    7680 
    7781  // -- Constructor -- 
     
    8589  @Override 
    8690  public byte[][] get8BitLookupTable() throws FormatException, IOException { 
    87     return lut8; 
     91    return ac < 0 || lut8 == null ? null : lut8[ac]; 
    8892  } 
    8993 
     
    9195  @Override 
    9296  public short[][] get16BitLookupTable() throws FormatException, IOException { 
    93     return lut16; 
     97    return ac < 0 || lut16 == null ? null : lut16[ac]; 
    9498  } 
    9599 
     
    115119    final int[] zct = getZCTCoords(no); 
    116120    final int zIndex = zct[0], cIndex = zct[1], tIndex = zct[2]; 
     121    ac = cIndex; 
    117122 
    118123    // integer types start gradient at the smallest value 
     
    157162          // if indexed color with non-null LUT, convert value to index 
    158163          if (indexed) { 
    159             if (lut8 != null) pixel = valueToIndex[(int) (pixel % 256)]; 
    160             if (lut16 != null) pixel = valueToIndex[(int) (pixel % 65536)]; 
     164            if (lut8 != null) pixel = valueToIndex[ac][(int) (pixel % 256)]; 
     165            if (lut16 != null) pixel = valueToIndex[ac][(int) (pixel % 65536)]; 
    161166          } 
    162167 
     
    337342    if (indexed) { 
    338343      if (pixelType == FormatTools.UINT8) { 
    339         // create 8-bit LUT 
     344        // create 8-bit LUTs 
    340345        final int num = 256; 
    341346        createIndexMap(num); 
    342         lut8 = new byte[lutLength][num]; 
     347        lut8 = new byte[sizeC][lutLength][num]; 
    343348        // linear ramp 
    344         for (int c=0; c<lutLength; c++) { 
    345           for (int index = 0; index < num; index++) { 
    346             lut8[c][index] = (byte) indexToValue[index]; 
     349        for (int c=0; c<sizeC; c++) { 
     350          for (int i=0; i<lutLength; i++) { 
     351            for (int index=0; index<num; index++) { 
     352              lut8[c][i][index] = (byte) indexToValue[c][index]; 
     353            } 
    347354          } 
    348355        } 
    349356      } 
    350357      else if (pixelType == FormatTools.UINT16) { 
    351         // create 16-bit LUT 
     358        // create 16-bit LUTs 
    352359        final int num = 65536; 
    353360        createIndexMap(num); 
    354         lut16 = new short[lutLength][num]; 
     361        lut16 = new short[sizeC][lutLength][num]; 
    355362        // linear ramp 
    356         for (int c=0; c<lutLength; c++) { 
    357           for (int index = 0; index < num; index++) { 
    358             lut16[c][index] = (short) indexToValue[index]; 
     363        for (int c=0; c<sizeC; c++) { 
     364          for (int i=0; i<lutLength; i++) { 
     365            for (int index=0; index<num; index++) { 
     366              lut16[c][i][index] = (short) indexToValue[c][index]; 
     367            } 
    359368          } 
    360369        } 
     
    368377  /** Creates a mapping between indices and color values. */ 
    369378  private void createIndexMap(int num) { 
     379    int sizeC = core[0].sizeC; 
     380 
    370381    // create random mapping from indices to values 
    371     indexToValue = new int[num]; 
    372     for (int index = 0; index < num; index++) indexToValue[index] = index; 
    373     shuffle(indexToValue); 
     382    indexToValue = new int[sizeC][num]; 
     383    for (int c=0; c<sizeC; c++) { 
     384      for (int index=0; index<num; index++) indexToValue[c][index] = index; 
     385      shuffle(c, indexToValue[c]); 
     386    } 
    374387 
    375388    // create inverse mapping: values to indices 
    376     valueToIndex = new int[num]; 
    377     for (int index = 0; index < num; index++) { 
    378       int value = indexToValue[index]; 
    379       valueToIndex[value] = index; 
    380     } 
    381   } 
    382  
    383   /** Fisher-Yates shuffle with constant seed to ensure reproducibility. */ 
    384   private static void shuffle(int[] array) { 
    385     Random r = new Random(SEED); 
     389    valueToIndex = new int[sizeC][num]; 
     390    for (int c=0; c<sizeC; c++) { 
     391      for (int index=0; index<num; index++) { 
     392        int value = indexToValue[c][index]; 
     393        valueToIndex[c][value] = index; 
     394      } 
     395    } 
     396  } 
     397 
     398  /** Fisher-Yates shuffle with constant seeds to ensure reproducibility. */ 
     399  private static void shuffle(int c, int[] array) { 
     400    Random r = new Random(SEED + c); 
    386401    for (int i = array.length; i > 1; i--) { 
    387402      int j = r.nextInt(i); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/FitsReader.java

    r6230 r6663  
    5959    super("Flexible Image Transport System", new String[] {"fits", "fts"}); 
    6060    domains = 
    61       new String[] {FormatTools.ASTRONOMY_DOMAIN, FormatTools.GRAPHICS_DOMAIN}; 
     61      new String[] {FormatTools.ASTRONOMY_DOMAIN, FormatTools.UNKNOWN_DOMAIN}; 
    6262  } 
    6363 
  • branches/4.2/components/bio-formats/src/loci/formats/in/FlexReader.java

    r6457 r6663  
    464464    } 
    465465 
    466     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     466    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    467467      String instrumentID = MetadataTools.createLSID("Instrument", 0); 
    468468      store.setInstrumentID(instrumentID, 0); 
     
    12751275        } 
    12761276      } 
    1277       else if (qName.equals("LightSource") && level == MetadataLevel.ALL) { 
     1277      else if (qName.equals("LightSource") && level != MetadataLevel.MINIMUM) { 
    12781278        parentQName = qName; 
    12791279        String type = attributes.getValue("LightSourceType"); 
     
    12831283      } 
    12841284      else if (qName.equals("LightSourceCombination") && 
    1285         level == MetadataLevel.ALL) 
     1285        level != MetadataLevel.MINIMUM) 
    12861286      { 
    12871287        lightSourceID = attributes.getValue("ID"); 
    12881288        lightSourceCombinationIDs.put(lightSourceID, new Vector<String>()); 
    12891289      } 
    1290       else if (qName.equals("LightSourceRef") && level == MetadataLevel.ALL) { 
     1290      else if (qName.equals("LightSourceRef") && level != MetadataLevel.MINIMUM) 
     1291      { 
    12911292        Vector<String> v = lightSourceCombinationIDs.get(lightSourceID); 
    12921293        if (v != null) { 
     
    12971298        } 
    12981299      } 
    1299       else if (qName.equals("Camera") && level == MetadataLevel.ALL) { 
     1300      else if (qName.equals("Camera") && level != MetadataLevel.MINIMUM) { 
    13001301        parentQName = qName; 
    13011302        String detectorID = MetadataTools.createLSID("Detector", 0, nextCamera); 
     
    13111312        nextCamera++; 
    13121313      } 
    1313       else if (qName.equals("Objective") && level == MetadataLevel.ALL) { 
     1314      else if (qName.equals("Objective") && level != MetadataLevel.MINIMUM) { 
    13141315        parentQName = qName; 
    13151316        nextObjective++; 
     
    13461347        nextImage++; 
    13471348 
    1348         if (level == MetadataLevel.ALL) { 
     1349        if (level != MetadataLevel.MINIMUM) { 
    13491350          //Implemented for FLEX v1.7 and below 
    13501351          String x = attributes.getValue("CameraBinningX"); 
     
    13671368        } 
    13681369      } 
    1369       else if (qName.equals("Slider") && level == MetadataLevel.ALL) { 
     1370      else if (qName.equals("Slider") && level != MetadataLevel.MINIMUM) { 
    13701371        sliderName = attributes.getValue("Name"); 
    13711372      } 
    1372       else if (qName.equals("Filter") && level == MetadataLevel.ALL) { 
     1373      else if (qName.equals("Filter") && level != MetadataLevel.MINIMUM) { 
    13731374        String id = attributes.getValue("ID"); 
    13741375        if (sliderName.endsWith("Dichro")) { 
     
    13891390        } 
    13901391      } 
    1391       else if (qName.equals("FilterCombination") && level == MetadataLevel.ALL) 
     1392      else if (qName.equals("FilterCombination") && 
     1393        level != MetadataLevel.MINIMUM) 
    13921394      { 
    13931395        filterSet = "FilterSet:" + attributes.getValue("ID"); 
    13941396        filterSetMap.put(filterSet, new FilterGroup()); 
    13951397      } 
    1396       else if (qName.equals("SliderRef") && level == MetadataLevel.ALL) { 
     1398      else if (qName.equals("SliderRef") && level != MetadataLevel.MINIMUM) { 
    13971399        String filterName = attributes.getValue("Filter"); 
    13981400        String slider = attributes.getValue("ID"); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/FluoviewReader.java

    r6495 r6663  
    155155    ras.order(isLittleEndian()); 
    156156 
    157     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     157    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    158158      put("Header Flag", ras.readShort()); 
    159159      put("Image Type", ras.read()); 
     
    191191    } 
    192192 
    193     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     193    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    194194      ras.skipBytes(4); // skip pointer to spatial position data 
    195195 
     
    307307    } 
    308308 
    309     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     309    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    310310      // cut up the comment, if necessary 
    311311      comment = ifds.get(0).getComment(); 
     
    333333    } 
    334334 
    335     if (getMetadataOptions().getMetadataLevel() != MetadataLevel.ALL) { 
     335    if (getMetadataOptions().getMetadataLevel() == MetadataLevel.MINIMUM) { 
    336336      return; 
    337337    } 
     
    468468      for (int j=0; j<8; j++) { 
    469469        stamps[j][i] = ras.readDouble() / 1000; 
    470  
    471         // correct for clock skew? 
    472         int pow = -1; 
    473         while (Math.pow(2, pow) < stamps[j][i]) { 
    474           stamps[j][i] -= (0.032 * (Math.pow(2, pow < 0 ? 0 : pow))); 
    475           pow++; 
    476         } 
    477470      } 
    478471      ras.close(); 
     
    484477    for (int i=0; i<s.length; i++) { 
    485478      b[i] = (byte) s[i]; 
    486       if (b[i] < 0) b[i]++; 
    487479    } 
    488480    return b; 
  • branches/4.2/components/bio-formats/src/loci/formats/in/GatanDM2Reader.java

    r6376 r6663  
    125125 
    126126    while (in.getFilePointer() < in.length()) { 
    127       if (level != MetadataLevel.ALL && date != null && 
     127      if (level == MetadataLevel.MINIMUM && date != null && 
    128128        time != null && name != null) 
    129129      { 
  • branches/4.2/components/bio-formats/src/loci/formats/in/GatanReader.java

    r6495 r6663  
    196196    MetadataTools.setDefaultCreationDate(store, id, 0); 
    197197 
    198     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     198    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    199199      if (pixelSizes.size() > 0) { 
    200200        store.setPixelsPhysicalSizeX(pixelSizes.get(0), 0); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/GelReader.java

    r6495 r6663  
    164164    String prepTime = firstIFD.getIFDStringValue(MD_PREP_TIME); 
    165165 
    166     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     166    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    167167      String units = firstIFD.getIFDStringValue(MD_FILE_UNITS); 
    168168      String lab = firstIFD.getIFDStringValue(MD_LAB_NAME); 
     
    194194    } 
    195195 
    196     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     196    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    197197      Double pixelSize = new Double(scale.doubleValue()); 
    198198      store.setPixelsPhysicalSizeX(pixelSize, 0); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/HISReader.java

    r6376 r6663  
    181181      in.skipBytes(50); 
    182182      String comment = in.readString(commentBytes); 
    183       if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     183      if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    184184        String[] data = comment.split(";"); 
    185185        for (String token : data) { 
     
    235235    store.setInstrumentID(instrumentID, 0); 
    236236 
    237     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     237    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    238238      for (int i=0; i<nSeries; i++) { 
    239239        store.setImageInstrumentRef(instrumentID, i); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/ICSReader.java

    r6573 r6663  
    149149    super("Image Cytometry Standard", new String[] {"ics", "ids"}); 
    150150    domains = new String[] {FormatTools.LM_DOMAIN, FormatTools.FLIM_DOMAIN, 
    151       FormatTools.GRAPHICS_DOMAIN}; 
     151      FormatTools.UNKNOWN_DOMAIN}; 
    152152    hasCompanionFiles = true; 
    153153  } 
     
    479479          if (v.equalsIgnoreCase("time resolved")) lifetime = true; 
    480480        } 
    481         else if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     481        else if (getMetadataOptions().getMetadataLevel() != 
     482          MetadataLevel.MINIMUM) 
     483        { 
    482484          if (k.equalsIgnoreCase("sensor s_params LambdaEm")) { 
    483485            String[] waves = v.split(" "); 
     
    755757    else MetadataTools.setDefaultCreationDate(store, id, 0); 
    756758 
    757     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     759    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    758760      store.setImageDescription(description, 0); 
    759761 
  • branches/4.2/components/bio-formats/src/loci/formats/in/IPLabReader.java

    r6495 r6663  
    5656    suffixNecessary = false; // allow extensionless IPLab files 
    5757    suffixSufficient = false; 
    58     domains = new String[] {FormatTools.GRAPHICS_DOMAIN}; 
     58    domains = new String[] {FormatTools.UNKNOWN_DOMAIN}; 
    5959  } 
    6060 
     
    186186    MetadataTools.setDefaultCreationDate(store, id, 0); 
    187187 
    188     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     188    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    189189      in.skipBytes(dataSize); 
    190190      parseTags(store); 
     
    277277        in.skipBytes(size); 
    278278      } 
    279       else if (tag.equals("roi ")) { 
     279      else if (tag.equals("roi ") && 
     280        getMetadataOptions().getMetadataLevel() != MetadataLevel.NO_OVERLAYS) 
     281      { 
    280282        // read in ROI information 
    281283 
  • branches/4.2/components/bio-formats/src/loci/formats/in/IPWReader.java

    r6495 r6663  
    7676  public IPWReader() { 
    7777    super("Image-Pro Workspace", "ipw"); 
    78     domains = new String[] {FormatTools.GRAPHICS_DOMAIN}; 
     78    domains = new String[] {FormatTools.UNKNOWN_DOMAIN}; 
    7979  } 
    8080 
     
    166166        name.substring(name.lastIndexOf(File.separator) + 1); 
    167167 
    168       if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     168      if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    169169        if (relativePath.equals("CONTENTS")) { 
    170170          addGlobalMeta("Version", new String(poi.getDocumentBytes(name)).trim()); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/ImaconReader.java

    r6495 r6663  
    127127    IFD firstIFD = ifds.get(0); 
    128128 
    129     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     129    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    130130      String xml = firstIFD.getIFDTextValue(XML_TAG).trim(); 
    131131      xml = xml.substring(xml.indexOf("<")); 
     
    167167    } 
    168168 
    169     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     169    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    170170      if (experimenterName == null) experimenterName = ""; 
    171171 
  • branches/4.2/components/bio-formats/src/loci/formats/in/ImarisHDFReader.java

    r6230 r6663  
    7575    super("Bitplane Imaris 5.5 (HDF)", "ims"); 
    7676    suffixSufficient = false; 
    77     domains = new String[] {FormatTools.GRAPHICS_DOMAIN}; 
     77    domains = new String[] {FormatTools.UNKNOWN_DOMAIN}; 
    7878  } 
    7979 
     
    254254    } 
    255255 
    256     if (getMetadataOptions().getMetadataLevel() != MetadataLevel.ALL) return; 
     256    if (getMetadataOptions().getMetadataLevel() == MetadataLevel.MINIMUM) { 
     257      return; 
     258    } 
    257259 
    258260    int cIndex = 0; 
  • branches/4.2/components/bio-formats/src/loci/formats/in/ImarisReader.java

    r6495 r6663  
    6565    super("Bitplane Imaris", "ims"); 
    6666    suffixSufficient = false; 
    67     domains = new String[] {FormatTools.GRAPHICS_DOMAIN}; 
     67    domains = new String[] {FormatTools.UNKNOWN_DOMAIN}; 
    6868  } 
    6969 
     
    154154    float[] pinholes = new float[getSizeC()]; 
    155155 
    156     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     156    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    157157      for (int i=0; i<getSizeC(); i++) { 
    158158        addGlobalMeta("Channel #" + i + " Comment", in.readString(128)); 
     
    199199    MetadataTools.setDefaultCreationDate(store, currentId, 0); 
    200200 
    201     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     201    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    202202      store.setImageDescription(description, 0); 
    203203 
  • branches/4.2/components/bio-formats/src/loci/formats/in/ImarisTiffReader.java

    r6495 r6663  
    5656    suffixSufficient = false; 
    5757    suffixNecessary = true; 
    58     domains = new String[] {FormatTools.GRAPHICS_DOMAIN}; 
     58    domains = new String[] {FormatTools.UNKNOWN_DOMAIN}; 
    5959  } 
    6060 
     
    111111    MetadataTools.populatePixels(store, this); 
    112112 
    113     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     113    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    114114      String description = null, creationDate = null; 
    115115      Vector<Integer> emWave = new Vector<Integer>(); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/ImprovisionTiffReader.java

    r6406 r6663  
    5959    super("Improvision TIFF", new String[] {"tif", "tiff"}); 
    6060    suffixSufficient = false; 
    61     domains = new String[] {FormatTools.GRAPHICS_DOMAIN}; 
     61    domains = new String[] {FormatTools.UNKNOWN_DOMAIN}; 
    6262  } 
    6363 
     
    167167        } 
    168168 
    169         if (getMetadataOptions().getMetadataLevel() != MetadataLevel.ALL && 
     169        if (getMetadataOptions().getMetadataLevel() == MetadataLevel.MINIMUM && 
    170170          coords[i][0] >= 0 && coords[i][1] >= 0 && coords[i][2] >= 0) 
    171171        { 
     
    175175    } 
    176176 
    177     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     177    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    178178      // determine average time per plane 
    179179 
     
    217217    MetadataTools.populatePixels(store, this); 
    218218 
    219     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     219    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    220220      store.setPixelsPhysicalSizeX(pixelSizeX, 0); 
    221221      store.setPixelsPhysicalSizeY(pixelSizeY, 0); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/InCellReader.java

    r6495 r6663  
    346346    MetadataTools.populatePixels(store, this, true); 
    347347 
    348     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     348    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    349349      handler = new InCellHandler(store); 
    350350      XMLTools.parseXML(b, handler); 
     
    410410    } 
    411411 
    412     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     412    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    413413      // populate PlaneTiming data 
    414414 
     
    737737      } 
    738738      else if (qName.equals("ObjectiveCalibration")) { 
    739         store.setObjectiveNominalMagnification((int) 
    740           Double.parseDouble(attributes.getValue("magnification")), 0, 0); 
     739        store.setObjectiveNominalMagnification(new PositiveInteger((int) 
     740          Double.parseDouble(attributes.getValue("magnification"))), 0, 0); 
    741741        store.setObjectiveLensNA(new Double( 
    742742          attributes.getValue("numerical_aperture")), 0, 0); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/IvisionReader.java

    r6495 r6663  
    3434import loci.formats.MetadataTools; 
    3535import loci.formats.meta.MetadataStore; 
     36 
     37import ome.xml.model.primitives.PositiveInteger; 
    3638 
    3739import org.xml.sax.Attributes; 
     
    7678    suffixSufficient = false; 
    7779    suffixNecessary = false; 
    78     domains = new String[] {FormatTools.GRAPHICS_DOMAIN}; 
     80    domains = new String[] {FormatTools.UNKNOWN_DOMAIN}; 
    7981  } 
    8082 
     
    207209    imageOffset = in.getFilePointer(); 
    208210 
    209     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     211    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    210212      in.skipBytes(getSizeZ() * getSizeC() * getSizeT() * getSizeX() * 
    211213        getSizeY() * FormatTools.getBytesPerPixel(getPixelType())); 
     
    243245    else MetadataTools.setDefaultCreationDate(store, currentId, 0); 
    244246 
    245     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     247    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    246248      String instrumentID = MetadataTools.createLSID("Instrument", 0); 
    247249 
     
    262264      if (lensNA != null) store.setObjectiveLensNA(lensNA, 0, 0); 
    263265      if (magnification != null) { 
    264         store.setObjectiveNominalMagnification(magnification, 0, 0); 
     266        store.setObjectiveNominalMagnification( 
     267            new PositiveInteger(magnification), 0, 0); 
    265268      } 
    266269      if (refractiveIndex != null) { 
  • branches/4.2/components/bio-formats/src/loci/formats/in/JPKReader.java

    r6230 r6663  
    106106      core[s].dimensionOrder = "XYCZT"; 
    107107 
    108       if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     108      if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    109109        setSeries(s); 
    110110        for (Integer key : ifds.get(s).keySet()) { 
  • branches/4.2/components/bio-formats/src/loci/formats/in/L2DReader.java

    r6457 r6663  
    274274    } 
    275275 
    276     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     276    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    277277      String instrumentID = MetadataTools.createLSID("Instrument", 0); 
    278278      store.setInstrumentID(instrumentID, 0); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/LEOReader.java

    r6495 r6663  
    9494    } 
    9595 
    96     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     96    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    9797      // physical sizes stored in meters 
    9898      xSize = Double.parseDouble(lines[3]) * 1000000; 
     
    118118    store.setImageAcquiredDate(date, 0); 
    119119 
    120     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     120    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    121121      store.setPixelsPhysicalSizeX(xSize, 0); 
    122122      store.setPixelsPhysicalSizeY(xSize, 0); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/LIMReader.java

    r6230 r6663  
    5555  public LIMReader() { 
    5656    super("Laboratory Imaging", "lim"); 
    57     domains = new String[] {FormatTools.LM_DOMAIN, FormatTools.GRAPHICS_DOMAIN}; 
     57    domains = new String[] {FormatTools.LM_DOMAIN}; 
    5858  } 
    5959 
  • branches/4.2/components/bio-formats/src/loci/formats/in/LeicaHandler.java

    r6526 r6663  
    4949import ome.xml.model.enums.handlers.LaserTypeEnumHandler; 
    5050import ome.xml.model.enums.handlers.MicroscopeTypeEnumHandler; 
     51import ome.xml.model.primitives.NonNegativeInteger; 
    5152import ome.xml.model.primitives.PercentFraction; 
    5253import ome.xml.model.primitives.PositiveInteger; 
     
    185186      } 
    186187 
    187       if (level == MetadataLevel.ALL) { 
     188      if (level != MetadataLevel.MINIMUM) { 
    188189        int nChannels = coreMeta.rgb ? 0 : numChannels; 
    189190 
     
    214215      detectorIndices.clear(); 
    215216    } 
    216     else if (qName.equals("Element") && level == MetadataLevel.ALL) { 
     217    else if (qName.equals("Element") && level != MetadataLevel.MINIMUM) { 
    217218      multiBands.clear(); 
    218219      nextROI = 0; 
     
    236237      canParse = true; 
    237238    } 
    238     else if (qName.equals("Annotation") && level == MetadataLevel.ALL) { 
     239    else if (qName.equals("Annotation") && level != MetadataLevel.MINIMUM) { 
    239240      roi.storeROI(store, numDatasets, nextROI++); 
    240241    } 
     
    269270    String value = attributes.getValue("Variant"); 
    270271    if (suffix == null) suffix = attributes.getValue("Description"); 
    271     if (level == MetadataLevel.ALL) { 
     272    if (level != MetadataLevel.MINIMUM) { 
    272273      if (suffix != null && value != null) { 
    273274        int index = 1; 
     
    294295    } 
    295296    else if (qName.equals("Image")) { 
    296       if (!linkedInstruments && level == MetadataLevel.ALL) { 
     297      if (!linkedInstruments && level != MetadataLevel.MINIMUM) { 
    297298        int c = 0; 
    298299        for (Detector d : detectors) { 
     
    354355      extras = 1; 
    355356    } 
    356     else if (qName.equals("Attachment") && level == MetadataLevel.ALL) { 
     357    else if (qName.equals("Attachment") && level != MetadataLevel.MINIMUM) { 
    357358      if ("ContextDescription".equals(attributes.getValue("Name"))) { 
    358359        store.setImageDescription(attributes.getValue("Content"), numDatasets); 
     
    457458      count++; 
    458459    } 
    459     else if (qName.equals("ScannerSettingRecord") && level == MetadataLevel.ALL) 
     460    else if (qName.equals("ScannerSettingRecord") && 
     461      level != MetadataLevel.MINIMUM) 
    460462    { 
    461463      String id = attributes.getValue("Identifier"); 
     
    511513      } 
    512514    } 
    513     else if (qName.equals("FilterSettingRecord") && level == MetadataLevel.ALL) 
     515    else if (qName.equals("FilterSettingRecord") && 
     516      level != MetadataLevel.MINIMUM) 
    514517    { 
    515518      String object = attributes.getValue("ObjectName"); 
     
    560563 
    561564            store.setObjectiveNominalMagnification( 
    562               new Integer(mag), numDatasets, 0); 
     565              new PositiveInteger(mag), numDatasets, 0); 
    563566            store.setObjectiveLensNA(new Double(na), numDatasets, 0); 
    564567          } 
     
    645648          store.setFilterModel(object, numDatasets, nextFilter); 
    646649          if (v != null) { 
    647             store.setTransmittanceRangeCutIn(v, numDatasets, nextFilter); 
     650            store.setTransmittanceRangeCutIn( 
     651                new PositiveInteger(v), numDatasets, nextFilter); 
    648652          } 
    649653        } 
    650654        else if (attributes.getValue("Description").endsWith("(right)")) { 
    651655          if (v != null) { 
    652             store.setTransmittanceRangeCutOut(v, numDatasets, nextFilter); 
     656            store.setTransmittanceRangeCutOut( 
     657                new PositiveInteger(v), numDatasets, nextFilter); 
    653658            nextFilter++; 
    654659          } 
     
    656661      } 
    657662    } 
    658     else if (qName.equals("Detector") && level == MetadataLevel.ALL) { 
     663    else if (qName.equals("Detector") && level != MetadataLevel.MINIMUM) { 
    659664      String v = attributes.getValue("Gain"); 
    660665      Double gain = v == null ? null : new Double(v); 
     
    697702            MetadataTools.createLSID("Filter", numDatasets, nextFilter); 
    698703          store.setFilterID(filter, numDatasets, nextFilter); 
    699           store.setTransmittanceRangeCutIn(m.cutIn, numDatasets, nextFilter); 
    700           store.setTransmittanceRangeCutOut(m.cutOut, numDatasets, nextFilter); 
     704          store.setTransmittanceRangeCutIn( 
     705              new PositiveInteger(m.cutIn), numDatasets, nextFilter); 
     706          store.setTransmittanceRangeCutOut( 
     707              new PositiveInteger(m.cutOut), numDatasets, nextFilter); 
    701708          store.setLightPathEmissionFilterRef( 
    702709            filter, numDatasets, nextChannel, 0); 
     
    741748      } 
    742749    } 
    743     else if (qName.equals("LaserLineSetting") && level == MetadataLevel.ALL) { 
     750    else if (qName.equals("LaserLineSetting") && level != MetadataLevel.MINIMUM) 
     751    { 
    744752      Laser l = new Laser(); 
    745753      String lineIndex = attributes.getValue("LineIndex"); 
     
    791799        store.setPlaneDeltaT(0.0, numDatasets, count); 
    792800      } 
    793       else if (level == MetadataLevel.ALL) { 
     801      else if (level != MetadataLevel.MINIMUM) { 
    794802        CoreMetadata coreMeta = core.get(numDatasets); 
    795803        int nImages = coreMeta.sizeZ * coreMeta.sizeT * coreMeta.sizeC; 
     
    802810      count++; 
    803811    } 
    804     else if (qName.equals("RelTimeStamp") && level == MetadataLevel.ALL) { 
     812    else if (qName.equals("RelTimeStamp") && level != MetadataLevel.MINIMUM) { 
    805813      CoreMetadata coreMeta = core.get(numDatasets); 
    806814      int nImages = coreMeta.sizeZ * coreMeta.sizeT * coreMeta.sizeC; 
     
    810818      } 
    811819    } 
    812     else if (qName.equals("Annotation") && level == MetadataLevel.ALL) { 
     820    else if (qName.equals("Annotation") && level != MetadataLevel.MINIMUM) { 
    813821      roi = new ROI(); 
    814822      String type = attributes.getValue("type"); 
     
    828836      roi.text = attributes.getValue("text"); 
    829837    } 
    830     else if (qName.equals("Vertex") && level == MetadataLevel.ALL) { 
     838    else if (qName.equals("Vertex") && level != MetadataLevel.MINIMUM) { 
    831839      String x = attributes.getValue("x"); 
    832840      String y = attributes.getValue("y"); 
     
    843851      alternateCenter = true; 
    844852    } 
    845     else if (qName.equals("MultiBand") && level == MetadataLevel.ALL) { 
     853    else if (qName.equals("MultiBand") && level != MetadataLevel.MINIMUM) { 
    846854      MultiBand m = new MultiBand(); 
    847855      m.dyeName = attributes.getValue("DyeName"); 
     
    910918 
    911919    public void storeROI(MetadataStore store, int series, int roi) { 
     920      if (level == MetadataLevel.NO_OVERLAYS || level == MetadataLevel.MINIMUM) 
     921      { 
     922        return; 
     923      } 
     924 
    912925      // keep in mind that vertices are given relative to the center 
    913926      // point of the ROI and the transX/transY values are relative to 
     
    916929      if (text != null) store.setTextValue(text, roi, 0); 
    917930      if (fontSize != null) { 
    918         store.setTextFontSize((int) Double.parseDouble(fontSize), roi, 0); 
     931        store.setTextFontSize( 
     932            new NonNegativeInteger((int) Double.parseDouble(fontSize)), roi, 0); 
    919933      } 
    920934      store.setTextStrokeWidth(new Double(linewidth), roi, 0); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/LeicaReader.java

    r6597 r6663  
    4848import loci.formats.tiff.TiffParser; 
    4949 
     50import ome.xml.model.enums.Correction; 
     51import ome.xml.model.enums.Immersion; 
    5052import ome.xml.model.primitives.PositiveInteger; 
    5153 
     
    508510        in.seek(offset); 
    509511 
    510         if (key.equals(SERIES) && metadataLevel == MetadataLevel.ALL) { 
     512        if (key.equals(SERIES)) { 
    511513          parseSeriesTag(); 
    512514        } 
     
    517519          parseDimensionTag(i); 
    518520        } 
    519         else if (key.equals(TIMEINFO) && metadataLevel == MetadataLevel.ALL) { 
     521        else if (key.equals(TIMEINFO) && metadataLevel != MetadataLevel.MINIMUM) 
     522        { 
    520523          parseTimeTag(i); 
    521524        } 
    522         else if (key.equals(EXPERIMENT) && metadataLevel == MetadataLevel.ALL) { 
     525        else if (key.equals(EXPERIMENT) && 
     526          metadataLevel != MetadataLevel.MINIMUM) 
     527        { 
    523528          parseExperimentTag(); 
    524529        } 
     
    526531          parseLUT(i); 
    527532        } 
    528         else if (key.equals(CHANDESC) && metadataLevel == MetadataLevel.ALL) { 
     533        else if (key.equals(CHANDESC) && metadataLevel != MetadataLevel.MINIMUM) 
     534        { 
    529535          parseChannelTag(); 
    530536        } 
     
    12081214            } 
    12091215          } 
    1210           if (immersion == null || immersion.trim().equals("")) { 
    1211             immersion = "Unknown"; 
    1212           } 
    1213           if (correction == null) correction = "Unknown"; 
     1216 
     1217          if (immersion != null) immersion = immersion.trim(); 
     1218          if (correction != null) correction = correction.trim(); 
     1219 
     1220          Correction realCorrection = getCorrection(correction); 
     1221          Correction testCorrection = getCorrection(immersion); 
     1222          Immersion realImmersion = getImmersion(immersion); 
     1223          Immersion testImmersion = getImmersion(correction); 
     1224 
     1225          // Correction and Immersion are reversed 
     1226          if ((testCorrection != Correction.OTHER && 
     1227            realCorrection == Correction.OTHER) || 
     1228            (testImmersion != Immersion.OTHER && 
     1229            realImmersion == Immersion.OTHER)) 
     1230          { 
     1231            String tmp = correction; 
     1232            correction = immersion; 
     1233            immersion = tmp; 
     1234          } 
    12141235 
    12151236          store.setObjectiveImmersion( 
    12161237            getImmersion(immersion), series, objective); 
    12171238          store.setObjectiveCorrection( 
    1218             getCorrection(correction.trim()), series, objective); 
     1239            getCorrection(correction), series, objective); 
    12191240          store.setObjectiveModel(model.toString().trim(), series, objective); 
    12201241          store.setObjectiveLensNA(new Double(na), series, objective); 
    1221           store.setObjectiveNominalMagnification((int) 
    1222             Double.parseDouble(mag), series, objective); 
     1242          store.setObjectiveNominalMagnification(new PositiveInteger((int) 
     1243            Double.parseDouble(mag)), series, objective); 
    12231244        } 
    12241245        else if (tokens[2].equals("OrderNumber")) { 
     
    12571278 
    12581279            if (tokens[3].equals("0") && !cutInPopulated[series][index]) { 
    1259               store.setTransmittanceRangeCutIn(wavelength, series, channel); 
     1280              store.setTransmittanceRangeCutIn( 
     1281                  new PositiveInteger(wavelength), series, channel); 
    12601282              cutInPopulated[series][index] = true; 
    12611283            } 
    12621284            else if (tokens[3].equals("1") && !cutOutPopulated[series][index]) { 
    1263               store.setTransmittanceRangeCutOut(wavelength, series, channel); 
     1285              store.setTransmittanceRangeCutOut( 
     1286                  new PositiveInteger(wavelength), series, channel); 
    12641287              cutOutPopulated[series][index] = true; 
    12651288            } 
  • branches/4.2/components/bio-formats/src/loci/formats/in/LiFlimReader.java

    r6370 r6663  
    279279    version = infoTable.get(VERSION_KEY); 
    280280    compression = infoTable.get(COMPRESSION_KEY); 
    281  
    282     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     281    MetadataLevel level = getMetadataOptions().getMetadataLevel(); 
     282 
     283    if (level != MetadataLevel.MINIMUM) { 
    283284      // add all INI entries to the global metadata list 
    284285      for (IniTable table : ini) { 
     
    297298            numRegions = Integer.parseInt(value); 
    298299          } 
    299           else if (metaKey.startsWith("ROI: ROI")) { 
     300          else if (metaKey.startsWith("ROI: ROI") && 
     301            level != MetadataLevel.NO_OVERLAYS) 
     302          { 
    300303            int start = metaKey.lastIndexOf("ROI") + 3; 
    301304            int end = metaKey.indexOf(" ", start); 
     
    409412    } 
    410413 
    411     if (getMetadataOptions().getMetadataLevel() != MetadataLevel.ALL) { 
     414    if (getMetadataOptions().getMetadataLevel() == MetadataLevel.MINIMUM) { 
    412415      return; 
    413416    } 
  • branches/4.2/components/bio-formats/src/loci/formats/in/MIASReader.java

    r6457 r6663  
    5050 
    5151import ome.xml.model.primitives.NonNegativeInteger; 
     52import ome.xml.model.primitives.PositiveInteger; 
    5253 
    5354/** 
     
    604605 
    605606    if (resultFile != null && 
    606       getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) 
     607      getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) 
    607608    { 
    608609      String[] cols = null; 
     
    690691    } 
    691692 
    692     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     693    MetadataLevel level = getMetadataOptions().getMetadataLevel(); 
     694 
     695    if (level != MetadataLevel.MINIMUM) { 
    693696      store.setExperimentID("Experiment:" + experiment.getName(), 0); 
    694697      store.setExperimentType(getExperimentType("Other"), 0); 
     
    713716      } 
    714717 
    715       // populate image-level ROIs 
    716       Integer[] colors = new Integer[getSizeC()]; 
    717       int nextROI = 0; 
    718       for (AnalysisFile af : analysisFiles) { 
    719         String file = af.filename; 
    720         String name = new Location(file).getName(); 
    721         if (!name.startsWith("Well")) continue; 
    722  
    723         int[] position = getPositionFromFile(file); 
    724         int well = position[0]; 
    725  
    726         if (name.endsWith("detail.txt")) { 
    727           String data = DataTools.readFile(file); 
    728           String[] lines = data.split("\n"); 
    729           int start = 0; 
    730           while (start < lines.length && !lines[start].startsWith("Label")) { 
    731             start++; 
     718      if (level != MetadataLevel.NO_OVERLAYS) { 
     719        // populate image-level ROIs 
     720        Integer[] colors = new Integer[getSizeC()]; 
     721        int nextROI = 0; 
     722        for (AnalysisFile af : analysisFiles) { 
     723          String file = af.filename; 
     724          String name = new Location(file).getName(); 
     725          if (!name.startsWith("Well")) continue; 
     726 
     727          int[] position = getPositionFromFile(file); 
     728          int well = position[0]; 
     729 
     730          if (name.endsWith("detail.txt")) { 
     731            String data = DataTools.readFile(file); 
     732            String[] lines = data.split("\n"); 
     733            int start = 0; 
     734            while (start < lines.length && !lines[start].startsWith("Label")) { 
     735              start++; 
     736            } 
     737            if (start >= lines.length) continue; 
     738 
     739            String[] columns = lines[start].split("\t"); 
     740            List<String> columnNames = Arrays.asList(columns); 
     741 
     742            for (int j=start+1; j<lines.length; j++) { 
     743              populateROI(columnNames, lines[j].split("\t"), well, 
     744                nextROI++, position[1], position[2], store); 
     745            } 
    732746          } 
    733           if (start >= lines.length) continue; 
    734  
    735           String[] columns = lines[start].split("\t"); 
    736           List<String> columnNames = Arrays.asList(columns); 
    737  
    738           for (int j=start+1; j<lines.length; j++) { 
    739             populateROI(columnNames, lines[j].split("\t"), well, 
    740               nextROI++, position[1], position[2], store); 
     747          else if (name.endsWith("AllModesOverlay.tif")) { 
     748            // original color for each channel is stored in 
     749            // results/Well<nnnn>_mode<n>_z<nnn>_t<nnn>_AllModesOverlay.tif 
     750            if (colors[position[3]] != null) continue; 
     751            try { 
     752              colors[position[3]] = getChannelColorFromFile(file); 
     753            } 
     754            catch (IOException e) { } 
     755            if (colors[position[3]] == null) continue; 
     756 
     757            for (int s=0; s<getSeriesCount(); s++) { 
     758              store.setChannelColor(colors[position[3]], s, position[3]); 
     759            } 
     760            if (position[3] == 0) { 
     761              nextROI += parseMasks(store, well, nextROI, file); 
     762            } 
    741763          } 
    742         } 
    743         else if (name.endsWith("AllModesOverlay.tif")) { 
    744           // original color for each channel is stored in 
    745           // results/Well<nnnn>_mode<n>_z<nnn>_t<nnn>_AllModesOverlay.tif 
    746           if (colors[position[3]] != null) continue; 
    747           try { 
    748             colors[position[3]] = getChannelColorFromFile(file); 
    749           } 
    750           catch (IOException e) { } 
    751           if (colors[position[3]] == null) continue; 
    752  
    753           for (int s=0; s<getSeriesCount(); s++) { 
    754             store.setChannelColor(colors[position[3]], s, position[3]); 
    755           } 
    756           if (position[3] == 0) { 
     764          else if (name.endsWith("overlay.tif")) { 
    757765            nextROI += parseMasks(store, well, nextROI, file); 
    758766          } 
    759         } 
    760         else if (name.endsWith("overlay.tif")) { 
    761           nextROI += parseMasks(store, well, nextROI, file); 
    762767        } 
    763768      } 
     
    844849    store.setImageROIRef(roiID, series, roi); 
    845850 
    846     store.setTextTheT(tv, roi, 0); 
    847     store.setTextTheZ(zv, roi, 0); 
    848     store.setTextValue(data[columns.indexOf("Label")], roi, 0); 
    849  
    850     store.setEllipseTheT(tv, roi, 1); 
    851     store.setEllipseTheZ(zv, roi, 1); 
    852     store.setEllipseX(new Double(data[columns.indexOf("Col")]), roi, 1); 
    853     store.setEllipseY(new Double(data[columns.indexOf("Row")]), roi, 1); 
     851    store.setEllipseTheT(new NonNegativeInteger(tv), roi, 0); 
     852    store.setEllipseTheZ(new NonNegativeInteger(zv), roi, 0); 
     853    store.setEllipseX(new Double(data[columns.indexOf("Col")]), roi, 0); 
     854    store.setEllipseY(new Double(data[columns.indexOf("Row")]), roi, 0); 
     855    store.setEllipseLabel(data[columns.indexOf("Label")], roi, 0); 
    854856 
    855857    double diam = Double.parseDouble(data[columns.indexOf("Cell Diam.")]); 
    856858    double radius = diam / 2; 
    857859 
    858     store.setEllipseRadiusX(radius, roi, 1); 
    859     store.setEllipseRadiusY(radius, roi, 1); 
     860    store.setEllipseRadiusX(radius, roi, 0); 
     861    store.setEllipseRadiusY(radius, roi, 0); 
    860862 
    861863    // NB: other attributes are "Nucleus Area", "Cell Type", and 
     
    917919        } 
    918920        else if (key.equals("Magnification")) { 
    919           int mag = (int) Double.parseDouble(value); 
    920           store.setObjectiveNominalMagnification(mag, 0, 0); 
     921          store.setObjectiveNominalMagnification( 
     922              new PositiveInteger((int) Double.parseDouble(value)), 0, 0); 
    921923        } 
    922924        else if (key.startsWith("Mode_")) { 
     
    967969    int nOverlays = 0; 
    968970    for (int i=0; i<3; i++) { 
    969       String id = MetadataTools.createLSID("Mask", series, roi + nOverlays, 0); 
    970       overlayFiles.put(id, overlayTiff); 
    971       overlayPlanes.put(id, new Integer(i)); 
     971      String roiId = MetadataTools.createLSID("ROI", series, roi + nOverlays); 
     972      String maskId = MetadataTools.createLSID("Mask", series, roi + nOverlays, 0); 
     973      overlayFiles.put(maskId, overlayTiff); 
     974      overlayPlanes.put(maskId, new Integer(i)); 
    972975 
    973976      boolean validMask = populateMaskPixels(series, roi + nOverlays, 0); 
    974977      if (validMask) { 
     978        store.setROIID(roiId, roi + nOverlays); 
    975979        store.setMaskX(new Double(0), roi + nOverlays, 0); 
    976980        store.setMaskY(new Double(0), roi + nOverlays, 0); 
    977         // TODO 
    978         //store.setMaskWidth(getSizeX(), roi + nOverlays, 0); 
    979         //store.setMaskHeight(getSizeY(), roi + nOverlays, 0); 
    980         //store.setMaskBinDataBigEndian( 
    981         //  new Boolean(!isLittleEndian()), roi + nOverlays, 0, 0); 
    982         //store.setMaskPixelsSizeX( 
    983         //  new Integer(getSizeX()), roi + nOverlays, 0); 
    984         //store.setMaskPixelsSizeY( 
    985         //  new Integer(getSizeY()), roi + nOverlays, 0); 
    986         //store.setMaskPixelsExtendedPixelType("bit", roi + nOverlays, 0); 
    987  
    988         //String color = String.valueOf(0xff000000 | (0xff << (8 * (2 - i)))); 
    989         //store.setShapeStrokeColor(color, roi + nOverlays, 0); 
     981        store.setMaskWidth(new Double(getSizeX()), roi + nOverlays, 0); 
     982        store.setMaskHeight(new Double(getSizeY()), roi + nOverlays, 0); 
     983 
     984        int color = 0xff000000 | (0xff << (8 * (2 - i))); 
     985        store.setMaskStroke(color, roi + nOverlays, 0); 
     986        store.setMaskFill(color, roi + nOverlays, 0); 
     987        store.setImageROIRef(roiId, series, roi + nOverlays); 
    990988        nOverlays++; 
    991989      } 
     
    10661064    if (validMask) { 
    10671065      MetadataStore store = makeFilterMetadata(); 
    1068       // TODO 
    1069       //store.setMaskPixelsBinData(bits.toByteArray(), roiIndex, shapeIndex); 
     1066      store.setMaskBinData(bits.toByteArray(), roiIndex, shapeIndex); 
    10701067    } 
    10711068    else LOGGER.debug("Did not populate MaskPixels.BinData for {}", id); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/MINCReader.java

    r6230 r6663  
    108108    } 
    109109 
    110     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     110    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    111111      Vector<String> variableList = netcdf.getVariableList(); 
    112112 
     
    155155    MetadataTools.setDefaultCreationDate(store, id, 0); 
    156156 
    157     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     157    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    158158      store.setImageDescription(netcdf.getAttributeValue("/history"), 0); 
    159159    } 
  • branches/4.2/components/bio-formats/src/loci/formats/in/MRCReader.java

    r6230 r6663  
    153153    double xSize = 0d, ySize = 0d, zSize = 0d; 
    154154 
    155     if (level == MetadataLevel.ALL) { 
     155    if (level != MetadataLevel.MINIMUM) { 
    156156      int mx = in.readInt(); 
    157157      int my = in.readInt(); 
     
    188188    extHeaderSize = in.readInt(); 
    189189 
    190     if (level == MetadataLevel.ALL) { 
     190    if (level != MetadataLevel.MINIMUM) { 
    191191      in.skipBytes(64); 
    192192 
     
    231231    MetadataTools.setDefaultCreationDate(store, id, 0); 
    232232 
    233     if (level == MetadataLevel.ALL) { 
     233    if (level != MetadataLevel.MINIMUM) { 
    234234      store.setPixelsPhysicalSizeX(xSize, 0); 
    235235      store.setPixelsPhysicalSizeY(ySize, 0); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/MRWReader.java

    r6230 r6663  
    196196      } 
    197197      else if (blockName.endsWith("TTW") && 
    198         getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) 
     198        getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) 
    199199      { 
    200200        byte[] b = new byte[len]; 
  • branches/4.2/components/bio-formats/src/loci/formats/in/MetadataLevel.java

    r6074 r6663  
    3535 
    3636  MINIMUM, 
     37  NO_OVERLAYS, 
    3738  ALL; 
    3839 
  • branches/4.2/components/bio-formats/src/loci/formats/in/MetamorphReader.java

    r6527 r6663  
    101101  private double[] zDistances, stageX, stageY; 
    102102  private double zStart; 
     103  private Double sizeX = null, sizeY = null; 
    103104 
    104105  private int mmPlanes; //number of metamorph planes 
     
    226227      canLookForND = true; 
    227228      firstSeriesChannels = null; 
     229      sizeX = sizeY = null; 
    228230    } 
    229231  } 
     
    513515      store.setImageName(makeImageName(i), i); 
    514516 
    515       if (getMetadataOptions().getMetadataLevel() != MetadataLevel.ALL) { 
     517      if (getMetadataOptions().getMetadataLevel() == MetadataLevel.MINIMUM) { 
    516518        continue; 
    517519      } 
     
    519521 
    520522      store.setImagingEnvironmentTemperature(handler.getTemperature(), i); 
    521       store.setPixelsPhysicalSizeX(handler.getPixelSizeX(), i); 
    522       store.setPixelsPhysicalSizeY(handler.getPixelSizeY(), i); 
     523 
     524      if (sizeX == null) sizeX = handler.getPixelSizeX(); 
     525      if (sizeY == null) sizeY = handler.getPixelSizeY(); 
     526 
     527      store.setPixelsPhysicalSizeX(sizeX, i); 
     528      store.setPixelsPhysicalSizeY(sizeY, i); 
    523529      if (zDistances != null) { 
    524530        stepSize = zDistances[0]; 
     
    658664    setSeries(0); 
    659665 
    660     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     666    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    661667      store.setDetectorID(detectorID, 0, 0); 
    662668      store.setDetectorZoom(zoom, 0, 0); 
     
    686692      mmPlanes = uic4tagEntry.getValueCount(); 
    687693      parseUIC2Tags(uic2tagEntry.getValueOffset()); 
    688       if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     694      if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    689695        parseUIC4Tags(uic4tagEntry.getValueOffset()); 
    690696        parseUIC1Tags(uic1tagEntry.getValueOffset(), 
     
    12331239      if ("Zoom".equals(key) && value != null) { 
    12341240        zoom = Double.parseDouble(value.toString()); 
     1241      } 
     1242      if ("XCalibration".equals(key) && value != null) { 
     1243        if (value instanceof TiffRational) { 
     1244          sizeX = ((TiffRational) value).doubleValue(); 
     1245        } 
     1246        else sizeX = new Double(value.toString()); 
     1247      } 
     1248      if ("YCalibration".equals(key) && value != null) { 
     1249        if (value instanceof TiffRational) { 
     1250          sizeY = ((TiffRational) value).doubleValue(); 
     1251        } 
     1252        else sizeY = new Double(value.toString()); 
    12351253      } 
    12361254    } 
  • branches/4.2/components/bio-formats/src/loci/formats/in/MetamorphTiffReader.java

    r6495 r6663  
    121121    store.setImageAcquiredDate(date, 0); 
    122122 
    123     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     123    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    124124      for (int i=0; i<timestamps.size(); i++) { 
    125125        long timestamp = DateTools.getTime(timestamps.get(i), DATE_FORMAT); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/MicromanagerReader.java

    r6501 r6663  
    128128 
    129129  /* @see loci.formats.IFormatReader#isThisType(RandomAccessInputStream) */ 
    130   public boolean isThisType(RandomAccessInputStream stream) throws IOException { 
     130  public boolean isThisType(RandomAccessInputStream stream) throws IOException 
     131  { 
    131132    if (tiffReader == null) tiffReader = new MinimalTiffReader(); 
    132133    return tiffReader.isThisType(stream); 
     
    416417    else MetadataTools.setDefaultCreationDate(store, id, 0); 
    417418 
    418     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     419    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    419420      store.setImageDescription(comment, 0); 
    420421 
  • branches/4.2/components/bio-formats/src/loci/formats/in/MolecularImagingReader.java

    r6230 r6663  
    150150    else MetadataTools.setDefaultCreationDate(store, currentId, 0); 
    151151 
    152     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     152    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    153153      store.setPixelsPhysicalSizeX(pixelSizeX, 0); 
    154154      store.setPixelsPhysicalSizeY(pixelSizeY, 0); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/NRRDReader.java

    r6333 r6663  
    7373  public NRRDReader() { 
    7474    super("NRRD", new String[] {"nrrd", "nhdr"}); 
    75     domains = new String[] {FormatTools.GRAPHICS_DOMAIN}; 
     75    domains = new String[] {FormatTools.UNKNOWN_DOMAIN}; 
    7676    hasCompanionFiles = true; 
    7777  } 
     
    269269    MetadataTools.setDefaultCreationDate(store, id, 0); 
    270270 
    271     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     271    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    272272      for (int i=0; i<pixelSizes.length; i++) { 
    273273        Double d = new Double(pixelSizes[i].trim()); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/NativeND2Reader.java

    r6457 r6663  
    4545import loci.formats.meta.MetadataStore; 
    4646 
     47import ome.xml.model.primitives.NonNegativeInteger; 
    4748import ome.xml.model.primitives.PositiveInteger; 
    4849 
     
    328329          skip = 0; 
    329330        } 
    330         else if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     331        else if (getMetadataOptions().getMetadataLevel() != 
     332          MetadataLevel.MINIMUM) 
     333        { 
    331334          if (blockType.startsWith("CustomData|A")) { 
    332335            customDataOffsets.add(new Long(fp)); 
     
    547550      // read first CustomData block 
    548551 
    549       if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     552      if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    550553        if (customDataOffsets.size() > 0) { 
    551554          in.seek(customDataOffsets.get(0).longValue()); 
     
    10751078    // populate ROI data 
    10761079 
     1080    if (getMetadataOptions().getMetadataLevel() == MetadataLevel.NO_OVERLAYS) { 
     1081      return; 
     1082    } 
    10771083    for (int r=0; r<rois.size(); r++) { 
    10781084      Hashtable<String, String> roi = rois.get(r); 
     
    10801086 
    10811087      if (type.equals("Text")) { 
    1082         store.setTextFontSize(new Integer(roi.get("fHeight")), r, 0); 
     1088        store.setTextFontSize( 
     1089          NonNegativeInteger.valueOf(roi.get("fHeight")), r, 0); 
    10831090        store.setTextValue(roi.get("eval-text"), r, 0); 
    10841091        store.setTextStrokeWidth(new Double(roi.get("line-width")), r, 0); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/NiftiReader.java

    r6495 r6663  
    8080    suffixSufficient = false; 
    8181    domains = new String[] {FormatTools.MEDICAL_DOMAIN, 
    82       FormatTools.GRAPHICS_DOMAIN}; 
     82      FormatTools.UNKNOWN_DOMAIN}; 
    8383    hasCompanionFiles = true; 
    8484  } 
     
    123123    String[] domain = new String[1]; 
    124124    domain[0] = nDimensions <= 3 ? 
    125       FormatTools.GRAPHICS_DOMAIN : FormatTools.MEDICAL_DOMAIN; 
     125      FormatTools.UNKNOWN_DOMAIN : FormatTools.MEDICAL_DOMAIN; 
    126126    return domain; 
    127127  } 
     
    219219    pixelOffset = (int) in.readFloat(); 
    220220 
    221     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     221    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    222222      populateExtendedMetadata(); 
    223223    } 
     
    242242    MetadataTools.populatePixels(store, this); 
    243243 
    244     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     244    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    245245      store.setImageDescription(description, 0); 
    246246      store.setPixelsPhysicalSizeX(new Double(voxelWidth), 0); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/NikonReader.java

    r6495 r6663  
    240240        } 
    241241      } 
    242     } 
    243  
    244     if (x == 0 && y == 0 && getSizeX() == w && getSizeY() == h) { 
    245       return ImageTools.interpolate(pix, buf, colorMap, getSizeX(), getSizeY(), 
    246         isLittleEndian()); 
    247242    } 
    248243 
  • branches/4.2/components/bio-formats/src/loci/formats/in/NikonTiffReader.java

    r6457 r6663  
    103103    super.initStandardMetadata(); 
    104104 
    105     if (getMetadataOptions().getMetadataLevel() != MetadataLevel.ALL) return; 
     105    if (getMetadataOptions().getMetadataLevel() == MetadataLevel.MINIMUM) { 
     106      return; 
     107    } 
    106108 
    107109    filterModels = new Vector<String>(); 
     
    211213    MetadataTools.populatePixels(store, this); 
    212214 
    213     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     215    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    214216      store.setImageDescription("", 0); 
    215217 
     
    225227      store.setObjectiveID(objectiveID, 0, 0); 
    226228      store.setImageObjectiveSettingsID(objectiveID, 0); 
    227       store.setObjectiveNominalMagnification(magnification, 0, 0); 
     229      store.setObjectiveNominalMagnification( 
     230          new PositiveInteger(magnification), 0, 0); 
    228231 
    229232      if (correction == null) correction = "Other"; 
  • branches/4.2/components/bio-formats/src/loci/formats/in/OMETiffReader.java

    r6494 r6663  
    3131import java.util.Iterator; 
    3232import java.util.Vector; 
     33 
     34import ome.xml.model.primitives.NonNegativeInteger; 
     35import ome.xml.model.primitives.PositiveInteger; 
    3336 
    3437import loci.common.Location; 
     
    8487    suffixNecessary = false; 
    8588    suffixSufficient = false; 
    86     domains = FormatTools.ALL_DOMAINS; 
     89    domains = FormatTools.NON_GRAPHICS_DOMAINS; 
    8790    hasCompanionFiles = true; 
    8891  } 
     
    139142    String comment = ifd.getComment(); 
    140143    if (comment == null) return false; 
    141     return comment.trim().endsWith("</OME>"); 
     144    return comment.trim().endsWith("OME>"); 
    142145  } 
    143146 
     
    146149    FormatTools.assertId(currentId, true, 1); 
    147150    return hasSPW ? new String[] {FormatTools.HCS_DOMAIN} : 
    148       FormatTools.NON_HCS_DOMAINS; 
     151      FormatTools.NON_SPECIAL_DOMAINS; 
    149152  } 
    150153 
     
    188191    IFDList ifdList = r.getIFDs(); 
    189192    if (i >= ifdList.size()) { 
    190       throw new FormatException( 
    191         "Error untangling IFDs; the OME-TIFF file may be malformed."); 
     193      LOGGER.warn("Error untangling IFDs; the OME-TIFF file may be malformed."); 
     194      return buf; 
    192195    } 
    193196    IFD ifd = ifdList.get(i); 
     
    272275 
    273276    String currentUUID = meta.getUUID(); 
    274     if (service.isOMEXMLMetadata(metadataStore)) { 
    275       metadataStore = meta; 
    276     } 
    277     else service.convertMetadata(meta, metadataStore); 
     277    service.convertMetadata(meta, metadataStore); 
    278278 
    279279    // determine series count from Image and Pixels elements 
     
    291291      int tiffDataCount = meta.getTiffDataCount(i); 
    292292      for (int td=0; td<tiffDataCount; td++) { 
    293         // TODO 
    294         // String uuid = ? 
    295293        String uuid = null; 
     294        try { 
     295          uuid = meta.getUUIDValue(i, td); 
     296        } 
     297        catch (NullPointerException e) { } 
    296298        String filename = null; 
    297299        if (uuid == null) { 
     
    355357    Hashtable<String, IFormatReader> readers = 
    356358      new Hashtable<String, IFormatReader>(); 
    357     int s = 0; 
    358359    for (int i=0; i<seriesCount; i++) { 
     360      int s = i; 
    359361      LOGGER.debug("Image[{}] {", i); 
    360362      LOGGER.debug("  id = {}", meta.getImageID(i)); 
     
    362364      String order = meta.getPixelsDimensionOrder(i).toString(); 
    363365 
    364       Integer samplesPerPixel = null; 
     366      PositiveInteger samplesPerPixel = null; 
    365367      if (meta.getChannelCount(i) > 0) { 
    366368        samplesPerPixel = meta.getChannelSamplesPerPixel(i, 0); 
    367369      } 
    368       int samples = samplesPerPixel == null ?  -1 : samplesPerPixel.intValue(); 
     370      int samples = samplesPerPixel == null ?  -1 : samplesPerPixel.getValue(); 
    369371      int tiffSamples = firstIFD.getSamplesPerPixel(); 
    370372      if (samples != tiffSamples) { 
     
    402404          LOGGER.debug("Ignoring null UUID object when retrieving value."); 
    403405        } 
    404         Integer tdIFD = meta.getTiffDataIFD(i, td); 
    405         int ifd = tdIFD == null ? 0 : tdIFD.intValue(); 
    406         Integer numPlanes = meta.getTiffDataPlaneCount(i, td); 
    407         Integer firstC = meta.getTiffDataFirstC(i, td); 
    408         Integer firstT = meta.getTiffDataFirstT(i, td); 
    409         Integer firstZ = meta.getTiffDataFirstZ(i, td); 
    410         int c = firstC == null ? 0 : firstC.intValue(); 
    411         int t = firstT == null ? 0 : firstT.intValue(); 
    412         int z = firstZ == null ? 0 : firstZ.intValue(); 
     406        NonNegativeInteger tdIFD = meta.getTiffDataIFD(i, td); 
     407        int ifd = tdIFD == null ? 0 : tdIFD.getValue(); 
     408        NonNegativeInteger numPlanes = meta.getTiffDataPlaneCount(i, td); 
     409        NonNegativeInteger firstC = meta.getTiffDataFirstC(i, td); 
     410        NonNegativeInteger firstT = meta.getTiffDataFirstT(i, td); 
     411        NonNegativeInteger firstZ = meta.getTiffDataFirstZ(i, td); 
     412        int c = firstC == null ? 0 : firstC.getValue(); 
     413        int t = firstT == null ? 0 : firstT.getValue(); 
     414        int z = firstZ == null ? 0 : firstZ.getValue(); 
    413415 
    414416        // NB: some writers index FirstC, FirstZ and FirstT from 1 
     
    419421        int index = FormatTools.getIndex(order, 
    420422          sizeZ, effSizeC, sizeT, num, z, c, t); 
    421         int count = numPlanes == null ? 1 : numPlanes.intValue(); 
     423        int count = numPlanes == null ? 1 : numPlanes.getValue(); 
    422424        if (count == 0) { 
    423425          core[s] = null; 
     
    565567        } 
    566568 
    567         core[s].littleEndian = 
    568           !meta.getPixelsBinDataBigEndian(i, 0).booleanValue(); 
    569         boolean tiffLittleEndian = firstIFD.isLittleEndian(); 
    570         if (core[s].littleEndian != tiffLittleEndian) { 
    571           LOGGER.warn("BigEndian mismatch: OME={}, TIFF={}", 
    572             !core[s].littleEndian, !tiffLittleEndian); 
    573         } 
     569        if (meta.getPixelsBinDataCount(i) > 1) { 
     570          LOGGER.warn("OME-TIFF Pixels element contains BinData elements! " + 
     571                      "Ignoring."); 
     572        } 
     573        core[s].littleEndian = firstIFD.isLittleEndian(); 
    574574        core[s].interleaved = false; 
    575575        core[s].indexed = photo == PhotoInterp.RGB_PALETTE && 
  • branches/4.2/components/bio-formats/src/loci/formats/in/OMEXMLReader.java

    r6507 r6663  
    3939import loci.formats.FormatReader; 
    4040import loci.formats.FormatTools; 
     41import loci.formats.MetadataTools; 
    4142import loci.formats.MissingLibraryException; 
    4243import loci.formats.codec.Base64Codec; 
     
    8990  private Vector<Long> binDataLengths; 
    9091  private Vector<String> compression; 
    91   private Vector<Boolean> bigEndian; 
    9292 
    9393  private String omexml; 
     
    9999  public OMEXMLReader() { 
    100100    super("OME-XML", "ome"); 
    101     domains = FormatTools.ALL_DOMAINS; 
     101    domains = FormatTools.NON_GRAPHICS_DOMAINS; 
    102102    suffixNecessary = false; 
    103103  } 
     
    116116    FormatTools.assertId(currentId, true, 1); 
    117117    return hasSPW ? new String[] {FormatTools.HCS_DOMAIN} : 
    118       FormatTools.NON_HCS_DOMAINS; 
     118      FormatTools.NON_SPECIAL_DOMAINS; 
    119119  } 
    120120 
     
    244244      binDataOffsets = null; 
    245245      binDataLengths = null; 
    246       bigEndian = null; 
    247246      omexml = null; 
    248247      hasSPW = false; 
     
    262261    binDataLengths = new Vector<Long>(); 
    263262    compression = new Vector<String>(); 
    264     bigEndian = new Vector<Boolean>(); 
    265263 
    266264    DefaultHandler handler = new OMEXMLHandler(); 
    267265    try { 
    268       XMLTools.parseXML(in, handler); 
     266      RandomAccessInputStream s = new RandomAccessInputStream(id); 
     267      XMLTools.parseXML(s, handler); 
     268      s.close(); 
    269269    } 
    270270    catch (IOException e) { 
     
    320320      } 
    321321 
    322       Boolean endian = bigEndian.get(imageIndex); 
     322      Boolean endian = omexmlMeta.getPixelsBinDataBigEndian(imageIndex, 0); 
    323323      String pixType = omexmlMeta.getPixelsType(i).toString(); 
    324324      core[i].dimensionOrder = omexmlMeta.getPixelsDimensionOrder(i).toString(); 
     
    343343    // contents of the internal OME-XML metadata object 
    344344    MetadataStore store = getMetadataStore(); 
    345  
    346     if (service.isOMEXMLMetadata(store)) { 
    347       store = omexmlMeta; 
    348     } 
    349     else service.convertMetadata(omexmlMeta, store); 
     345    service.convertMetadata(omexmlMeta, store); 
     346    MetadataTools.populatePixels(store, this); 
    350347  } 
    351348 
     
    374371 
    375372    public void endElement(String uri, String localName, String qName) { 
    376       if (qName.indexOf("BinData") == -1) { 
    377         xmlBuffer.append("</"); 
    378         xmlBuffer.append(qName); 
    379         xmlBuffer.append(">"); 
    380       } 
    381       else { 
     373      xmlBuffer.append("</"); 
     374      xmlBuffer.append(qName); 
     375      xmlBuffer.append(">"); 
     376      if (qName.indexOf("BinData") >= 0) { 
    382377        binDataOffsets.add(new Long(nextBinDataOffset - binDataChars)); 
    383378      } 
     
    405400          String key = attributes.getQName(i); 
    406401          String value = attributes.getValue(i); 
     402          if (key.equals("BigEndian")) { 
     403            String endian = value.toLowerCase(); 
     404            if (!endian.equals("true") && !endian.equals("false")) { 
     405              // hack for files that specify 't' or 'f' instead of 
     406              // 'true' or 'false' 
     407              if (endian.startsWith("t")) endian = "true"; 
     408              else if (endian.startsWith("f")) endian = "false"; 
     409            } 
     410            value = endian; 
     411          } 
    407412          xmlBuffer.append(" "); 
    408413          xmlBuffer.append(key); 
     
    422427        compression.add(compress == null ? "" : compress); 
    423428        binDataChars = 0; 
    424         String endian = attributes.getValue("BigEndian"); 
    425         bigEndian.add(new Boolean(endian)); 
     429 
     430        xmlBuffer.append("<"); 
     431        xmlBuffer.append(qName); 
     432        for (int i=0; i<attributes.getLength(); i++) { 
     433          String key = attributes.getQName(i); 
     434          String value = attributes.getValue(i); 
     435          if (key.equals("Length")) value = "0"; 
     436          xmlBuffer.append(" "); 
     437          xmlBuffer.append(key); 
     438          xmlBuffer.append("=\""); 
     439          xmlBuffer.append(value); 
     440          xmlBuffer.append("\""); 
     441        } 
     442        xmlBuffer.append(">"); 
    426443      } 
    427444 
  • branches/4.2/components/bio-formats/src/loci/formats/in/OpenlabRawReader.java

    r6495 r6663  
    6767    super("Openlab RAW", "raw"); 
    6868    suffixSufficient = false; 
    69     domains = new String[] {FormatTools.GRAPHICS_DOMAIN}; 
     69    domains = new String[] {FormatTools.UNKNOWN_DOMAIN}; 
    7070  } 
    7171 
  • branches/4.2/components/bio-formats/src/loci/formats/in/OpenlabReader.java

    r6495 r6663  
    115115    super("Openlab LIFF", "liff"); 
    116116    suffixNecessary = false; 
    117     domains = new String[] {FormatTools.GRAPHICS_DOMAIN}; 
     117    domains = new String[] {FormatTools.UNKNOWN_DOMAIN}; 
    118118  } 
    119119 
     
    424424        imagesFound++; 
    425425      } 
    426       else if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     426      else if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) 
     427      { 
    427428        if (tag == CALIBRATION) { 
    428429          in.skipBytes(4); 
     
    556557 
    557558    MetadataLevel level = getMetadataOptions().getMetadataLevel(); 
    558     boolean planeInfoNeeded = level == MetadataLevel.ALL && 
     559    boolean planeInfoNeeded = level != MetadataLevel.MINIMUM && 
    559560      (xPos != null || yPos != null || zPos != null); 
    560561 
     
    562563    MetadataTools.setDefaultCreationDate(store, currentId, 0); 
    563564 
    564     if (level == MetadataLevel.ALL) { 
     565    if (level != MetadataLevel.MINIMUM) { 
    565566      // populate MetadataStore 
    566567 
  • branches/4.2/components/bio-formats/src/loci/formats/in/OxfordInstrumentsReader.java

    r6230 r6663  
    135135    headerSize = in.getFilePointer(); 
    136136 
    137     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     137    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    138138      in.skipBytes(FormatTools.getPlaneSize(this)); 
    139139 
  • branches/4.2/components/bio-formats/src/loci/formats/in/PCIReader.java

    r6495 r6663  
    215215        creationDate = DateTools.convertDate(date, DateTools.COBOL); 
    216216      } 
    217       else if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     217      else if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) 
     218      { 
    218219        if (relativePath.equals("Binning")) { 
    219220          binning = (int) stream.readDouble(); 
     
    285286    else MetadataTools.setDefaultCreationDate(store, id, 0); 
    286287 
    287     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     288    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    288289      store.setPixelsPhysicalSizeX(scaleFactor, 0); 
    289290      store.setPixelsPhysicalSizeY(scaleFactor, 0); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/PerkinElmerReader.java

    r6495 r6663  
    536536    else MetadataTools.setDefaultCreationDate(store, id, 0); 
    537537 
    538     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     538    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    539539      // populate Dimensions element 
    540540      store.setPixelsPhysicalSizeX(pixelSizeX, 0); 
     
    732732 
    733733  private void parseCSVFile(String csvFile) throws IOException { 
    734     if (getMetadataOptions().getMetadataLevel() != MetadataLevel.ALL) return; 
     734    if (getMetadataOptions().getMetadataLevel() == MetadataLevel.MINIMUM) { 
     735      return; 
     736    } 
    735737    String[] tokens = DataTools.readFile(csvFile).split("\\s"); 
    736738    Vector<String> tmp = new Vector<String>(); 
     
    767769 
    768770  private void parseZpoFile(String zpoFile) throws IOException { 
    769     if (getMetadataOptions().getMetadataLevel() != MetadataLevel.ALL) return; 
     771    if (getMetadataOptions().getMetadataLevel() == MetadataLevel.MINIMUM) { 
     772      return; 
     773    } 
    770774    String[] tokens = DataTools.readFile(zpoFile).split("\\s"); 
    771775    for (int t=0; t<tokens.length; t++) { 
  • branches/4.2/components/bio-formats/src/loci/formats/in/PrairieReader.java

    r6376 r6663  
    281281        else MetadataTools.setDefaultCreationDate(store, id, 0); 
    282282 
    283         if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     283        if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    284284          // link Instrument and Image 
    285285          String instrumentID = MetadataTools.createLSID("Instrument", 0); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/QuesantReader.java

    r6230 r6663  
    121121    else MetadataTools.setDefaultCreationDate(store, id, 0); 
    122122 
    123     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     123    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    124124      store.setImageDescription(comment, 0); 
    125125      store.setPixelsPhysicalSizeX((double) xSize / getSizeX(), 0); 
     
    132132  private void readVariable() throws IOException { 
    133133    String code = in.readString(4); 
    134     if (getMetadataOptions().getMetadataLevel() != MetadataLevel.ALL && 
     134    if (getMetadataOptions().getMetadataLevel() == MetadataLevel.MINIMUM && 
    135135      !code.equals("IMAG")) 
    136136    { 
  • branches/4.2/components/bio-formats/src/loci/formats/in/RHKReader.java

    r6487 r6663  
    196196    MetadataTools.populatePixels(store, this); 
    197197    MetadataTools.setDefaultCreationDate(store, currentId, 0); 
    198     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     198    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    199199      store.setPixelsPhysicalSizeX(xScale, 0); 
    200200      store.setPixelsPhysicalSizeY(yScale, 0); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/SBIGReader.java

    r6230 r6663  
    186186    else MetadataTools.setDefaultCreationDate(store, currentId, 0); 
    187187 
    188     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     188    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    189189      store.setPixelsPhysicalSizeX(sizeX, 0); 
    190190      store.setPixelsPhysicalSizeY(sizeY, 0); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/SEQReader.java

    r6495 r6663  
    5959  public SEQReader() { 
    6060    super("Image-Pro Sequence", "seq"); 
    61     domains = new String[] {FormatTools.GRAPHICS_DOMAIN}; 
     61    domains = new String[] {FormatTools.UNKNOWN_DOMAIN}; 
    6262  } 
    6363 
     
    8484    MetadataLevel level = getMetadataOptions().getMetadataLevel(); 
    8585    for (IFD ifd : ifds) { 
    86       if (level == MetadataLevel.ALL) { 
     86      if (level != MetadataLevel.MINIMUM) { 
    8787        short[] tag1 = (short[]) ifd.getIFDValue(IMAGE_PRO_TAG_1); 
    8888 
  • branches/4.2/components/bio-formats/src/loci/formats/in/SVSReader.java

    r6406 r6663  
    9797      core[i] = new CoreMetadata(); 
    9898 
    99       if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     99      if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    100100        String comment = ifds.get(i).getComment(); 
    101101        String[] lines = comment.split("\n"); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/ScanrReader.java

    r6461 r6663  
    447447    } 
    448448 
    449     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     449    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    450450      // populate LogicalChannel data 
    451451 
  • branches/4.2/components/bio-formats/src/loci/formats/in/SeikoReader.java

    r6230 r6663  
    8383    double xSize = 0d, ySize = 0d; 
    8484 
    85     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     85    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    8686      in.seek(40); 
    8787      comment = in.readCString(); 
     
    112112    MetadataTools.setDefaultCreationDate(store, currentId, 0); 
    113113 
    114     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     114    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    115115      store.setImageDescription(comment, 0); 
    116116      store.setPixelsPhysicalSizeX(xSize, 0); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/SlidebookReader.java

    r6566 r6663  
    524524    } 
    525525 
    526     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     526    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    527527      // link Instrument and Image 
    528528      String instrumentID = MetadataTools.createLSID("Instrument", 0); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/TCSReader.java

    r6495 r6663  
    364364    String comment = ifds.get(0).getComment(); 
    365365    if (comment != null && comment.startsWith("[") && 
    366       getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) 
     366      getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) 
    367367    { 
    368368      String[] lines = comment.split("\n"); 
     
    428428      XMLTools.parseXML(xml, handler); 
    429429 
     430      metadata = handler.getGlobalMetadata(); 
    430431      MetadataTools.merge(handler.getGlobalMetadata(), metadata, ""); 
    431432 
  • branches/4.2/components/bio-formats/src/loci/formats/in/TargaReader.java

    r6230 r6663  
    237237 
    238238    MetadataTools.setDefaultCreationDate(store, id, 0); 
    239     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     239    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    240240      store.setImageDescription(identification, 0); 
    241241    } 
  • branches/4.2/components/bio-formats/src/loci/formats/in/TiffReader.java

    r6495 r6663  
    121121 
    122122    MetadataLevel level = getMetadataOptions().getMetadataLevel(); 
    123     if (level == MetadataLevel.ALL) { 
     123    if (level != MetadataLevel.MINIMUM) { 
    124124      Integer[] tags = ifds.get(0).keySet().toArray(new Integer[0]); 
    125125      for (Integer tag : tags) { 
     
    156156    // check for MetaMorph-style TIFF comment 
    157157    boolean metamorph = checkCommentMetamorph(comment); 
    158     if (metamorph && level == MetadataLevel.ALL) parseCommentMetamorph(comment); 
     158    if (metamorph && level != MetadataLevel.MINIMUM) { 
     159      parseCommentMetamorph(comment); 
     160    } 
    159161    put("MetaMorph", metamorph ? "yes" : "no"); 
    160162 
    161163    // check for other INI-style comment 
    162     if (!ij && !metamorph && level == MetadataLevel.ALL) { 
     164    if (!ij && !metamorph && level != MetadataLevel.MINIMUM) { 
    163165      parseCommentGeneric(comment); 
    164166    } 
  • branches/4.2/components/bio-formats/src/loci/formats/in/TillVisionReader.java

    r6567 r6663  
    383383        core[i].pixelType = convertPixelType(dataType); 
    384384 
    385         if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     385        if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    386386          for (IniTable table : data) { 
    387387            for (String key : table.keySet()) { 
     
    428428    } 
    429429 
    430     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     430    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    431431      for (int i=0; i<getSeriesCount(); i++) { 
    432432        // populate PlaneTiming data 
  • branches/4.2/components/bio-formats/src/loci/formats/in/TopometrixReader.java

    r6487 r6663  
    125125    double adc = 0d, dacToWorldZero = 0d; 
    126126 
    127     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     127    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    128128      in.skipBytes(10); 
    129129      if (version == 5) { 
     
    179179      new String[] {"MM/dd/yy HH:mm:ss", "MM/dd/yyyy HH:mm:ss"}), 0); 
    180180 
    181     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     181    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    182182      store.setPixelsPhysicalSizeX((double) xSize / getSizeX(), 0); 
    183183      store.setPixelsPhysicalSizeY((double) ySize / getSizeY(), 0); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/UnisokuReader.java

    r6230 r6663  
    145145            FormatTools.pixelTypeFromBytes(bytes, signed, bytes == 4); 
    146146        } 
    147         else if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     147        else if (getMetadataOptions().getMetadataLevel() != 
     148          MetadataLevel.MINIMUM) 
     149        { 
    148150          if (key.equals(":sample name")) { 
    149151            imageName = value; 
     
    188190    store.setImageAcquiredDate(date, 0); 
    189191 
    190     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     192    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    191193      store.setImageDescription(remark, 0); 
    192194      store.setPixelsPhysicalSizeX(pixelSizeX, 0); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/WATOPReader.java

    r6230 r6663  
    9292 
    9393    MetadataLevel level = getMetadataOptions().getMetadataLevel(); 
    94     if (level == MetadataLevel.ALL) { 
     94    if (level != MetadataLevel.MINIMUM) { 
    9595      in.seek(49); 
    9696      comment = in.readString(33); 
     
    115115    core[0].sizeY = in.readInt(); 
    116116 
    117     if (level == MetadataLevel.ALL) { 
     117    if (level != MetadataLevel.MINIMUM) { 
    118118      double tunnelCurrent = in.readInt() / 1000d; 
    119119      double sampleVolts = in.readInt() / 1000d; 
     
    148148    store.setImageAcquiredDate(date, 0); 
    149149 
    150     if (level == MetadataLevel.ALL) { 
     150    if (level != MetadataLevel.MINIMUM) { 
    151151      store.setImageDescription(comment, 0); 
    152152      store.setPixelsPhysicalSizeX((double) xSize / getSizeX(), 0); 
  • branches/4.2/components/bio-formats/src/loci/formats/in/ZeissLSMReader.java

    r6495 r6663  
    2828import java.util.Hashtable; 
    2929import java.util.Vector; 
     30 
     31import ome.xml.model.primitives.NonNegativeInteger; 
     32import ome.xml.model.primitives.PositiveInteger; 
    3033 
    3134import loci.common.DataTools; 
     
    515518    } 
    516519 
    517     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     520    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    518521      ras.seek(0); 
    519522      addSeriesMeta("MagicNumber ", ras.readInt()); 
     
    647650    } 
    648651 
    649     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     652    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    650653      int spectralScan = ras.readShort(); 
    651654      if (spectralScan != 1) { 
     
    697700      overlayOffsets[8] = ras.readInt(); 
    698701 
    699       for (int i=0; i<overlayOffsets.length; i++) { 
    700         parseOverlays(series, overlayOffsets[i], overlayKeys[i], store); 
     702      if (getMetadataOptions().getMetadataLevel() != MetadataLevel.NO_OVERLAYS) 
     703      { 
     704        for (int i=0; i<overlayOffsets.length; i++) { 
     705          parseOverlays(series, overlayOffsets[i], overlayKeys[i], store); 
     706        } 
    701707      } 
    702708 
     
    872878    imageNames.add(imageName); 
    873879 
    874     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     880    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    875881      Double pixX = new Double(pixelSizeX); 
    876882      Double pixY = new Double(pixelSizeY); 
     
    910916    throws FormatException 
    911917  { 
    912     if (getMetadataOptions().getMetadataLevel() != MetadataLevel.ALL) { 
     918    if (getMetadataOptions().getMetadataLevel() == MetadataLevel.MINIMUM) { 
    913919      return; 
    914920    } 
     
    928934        getCorrection(recording.correction), series, 0); 
    929935      store.setObjectiveImmersion(getImmersion(recording.immersion), series, 0); 
    930       store.setObjectiveNominalMagnification(recording.magnification, 
    931         series, 0); 
     936      store.setObjectiveNominalMagnification( 
     937          new PositiveInteger(recording.magnification), series, 0); 
    932938      store.setObjectiveLensNA(recording.lensNA, series, 0); 
    933939      store.setObjectiveIris(recording.iris, series, 0); 
     
    991997          String[] v = transmittance.split("-"); 
    992998          try { 
    993             store.setTransmittanceRangeCutIn(new Integer(v[0].trim()), series, 
    994               nextFilter); 
     999            store.setTransmittanceRangeCutIn( 
     1000                PositiveInteger.valueOf(v[0].trim()), series, nextFilter); 
    9951001          } 
    9961002          catch (NumberFormatException e) { } 
    9971003          if (v.length > 1) { 
    9981004            try { 
    999               store.setTransmittanceRangeCutOut(new Integer(v[1].trim()), 
    1000                 series, nextFilter); 
     1005              store.setTransmittanceRangeCutOut( 
     1006                  PositiveInteger.valueOf(v[1].trim()), series, nextFilter); 
    10011007            } 
    10021008            catch (NumberFormatException e) { } 
     
    11001106          String text = DataTools.stripString(in.readCString()); 
    11011107          store.setTextValue(text, i, 0); 
    1102           store.setTextFontSize(fontHeight, i, 0); 
     1108          store.setTextFontSize(new NonNegativeInteger(fontHeight), i, 0); 
    11031109          store.setTextStrokeWidth(lineWidth, i, 0); 
    11041110          break; 
     
    11141120          store.setLineX2(endX, i, 0); 
    11151121          store.setLineY2(endY, i, 0); 
    1116           store.setLineFontSize(fontHeight, i, 0); 
     1122          store.setLineFontSize(new NonNegativeInteger(fontHeight), i, 0); 
    11171123          store.setLineStrokeWidth(lineWidth, i, 0); 
    11181124          break; 
     
    11391145          store.setRectangleWidth(width, i, 0); 
    11401146          store.setRectangleHeight(height, i, 0); 
    1141           store.setRectangleFontSize(fontHeight, i, 0); 
     1147          store.setRectangleFontSize(new NonNegativeInteger(fontHeight), i, 0); 
    11421148          store.setRectangleStrokeWidth(lineWidth, i, 0); 
    11431149 
     
    11951201          store.setEllipseRadiusX(rx, i, 0); 
    11961202          store.setEllipseRadiusY(ry, i, 0); 
    1197           store.setEllipseFontSize(fontHeight, i, 0); 
     1203          store.setEllipseFontSize(new NonNegativeInteger(fontHeight), i, 0); 
    11981204          store.setEllipseStrokeWidth(lineWidth, i, 0); 
    11991205 
     
    12131219          store.setEllipseRadiusX(radius, i, 0); 
    12141220          store.setEllipseRadiusY(radius, i, 0); 
    1215           store.setEllipseFontSize(fontHeight, i, 0); 
     1221          store.setEllipseFontSize(new NonNegativeInteger(fontHeight), i, 0); 
    12161222          store.setEllipseStrokeWidth(lineWidth, i, 0); 
    12171223 
     
    12481254          store.setEllipseRadiusX(r, i, 0); 
    12491255          store.setEllipseRadiusY(r, i, 0); 
    1250           store.setEllipseFontSize(fontHeight, i, 0); 
     1256          store.setEllipseFontSize(new NonNegativeInteger(fontHeight), i, 0); 
    12511257          store.setEllipseStrokeWidth(lineWidth, i, 0); 
    12521258 
     
    12701276 
    12711277          store.setPolylinePoints(p.toString(), i, 0); 
    1272           store.setPolylineFontSize(fontHeight, i, 0); 
     1278          store.setPolylineFontSize(new NonNegativeInteger(fontHeight), i, 0); 
    12731279          store.setPolylineStrokeWidth(lineWidth, i, 0); 
    12741280 
     
    12951301          store.setPolylinePoints(p.toString(), i, 0); 
    12961302          store.setPolylineClosed(type == CLOSED_POLYLINE, i, 0); 
    1297           store.setPolylineFontSize(fontHeight, i, 0); 
     1303          store.setPolylineFontSize(new NonNegativeInteger(fontHeight), i, 0); 
    12981304          store.setPolylineStrokeWidth(lineWidth, i, 0); 
    12991305 
     
    13201326          store.setPolylinePoints(p.toString(), i, 0); 
    13211327          store.setPolylineClosed(type != OPEN_BEZIER, i, 0); 
    1322           store.setPolylineFontSize(fontHeight, i, 0); 
     1328          store.setPolylineFontSize(new NonNegativeInteger(fontHeight), i, 0); 
    13231329          store.setPolylineStrokeWidth(lineWidth, i, 0); 
    13241330 
  • branches/4.2/components/bio-formats/src/loci/formats/in/ZeissZVIReader.java

    r6495 r6663  
    688688    else MetadataTools.setDefaultCreationDate(store, getCurrentFile(), 0); 
    689689 
    690     if (getMetadataOptions().getMetadataLevel() == MetadataLevel.ALL) { 
     690    if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { 
    691691      // link Instrument and Image 
    692692      String instrumentID = MetadataTools.createLSID("Instrument", 0); 
     
    918918        } 
    919919        else if (key.startsWith("Objective Magnification")) { 
    920           double mag = Double.parseDouble(value); 
    921           store.setObjectiveNominalMagnification((int) mag, 0, 0); 
     920          store.setObjectiveNominalMagnification( 
     921              new PositiveInteger((int) Double.parseDouble(value)), 0, 0); 
    922922        } 
    923923        else if (key.startsWith("Objective ID")) { 
     
    937937                Double.parseDouble(tokens[q].substring(0, slash - q)); 
    938938              String na = tokens[q].substring(slash + 1); 
    939               store.setObjectiveNominalMagnification(mag, 0, 0); 
     939              store.setObjectiveNominalMagnification( 
     940                  new PositiveInteger(mag), 0, 0); 
    940941              store.setObjectiveLensNA(new Double(na), 0, 0); 
    941942              store.setObjectiveCorrection(getCorrection(tokens[q - 1]), 0, 0); 
     
    994995    throws IOException 
    995996  { 
    996     if (getMetadataOptions().getMetadataLevel() != MetadataLevel.ALL) { 
     997    MetadataLevel level = getMetadataOptions().getMetadataLevel(); 
     998    if (level == MetadataLevel.MINIMUM || level == MetadataLevel.NO_OVERLAYS) { 
    997999      return; 
    9981000    } 
Note: See TracChangeset for help on using the changeset viewer.