@Override public void setFlattenedResolutions(boolean flatten) { FormatTools.assertId(getCurrentFile(), false, 2); if (externals == null) reader.setFlattenedResolutions(flatten); else { for (ExternalSeries s : externals) { for (DimensionSwapper r : s.getReaders()) { r.setFlattenedResolutions(flatten); } } } }
@Override public void setOriginalMetadataPopulated(boolean populate) { FormatTools.assertId(getCurrentFile(), false, 1); if (externals == null) reader.setOriginalMetadataPopulated(populate); else { for (ExternalSeries s : externals) { for (DimensionSwapper r : s.getReaders()) { r.setOriginalMetadataPopulated(populate); } } } }
@Override public boolean isLittleEndian() { FormatTools.assertId(getCurrentFile(), true, 2); return noStitch ? reader.isLittleEndian() : getReader(getCoreIndex(), 0).isLittleEndian(); }
@Override public byte[] openThumbBytes(int no) throws FormatException, IOException { FormatTools.assertId(getCurrentFile(), true, 2); int source = getOriginalIndex(no); byte[] thumb = reader.openThumbBytes(source); int c = getSizeC() / reader.getEffectiveSizeC(); int channel = no % c; int bpp = FormatTools.getBytesPerPixel(getPixelType()); return ImageTools.splitChannels(thumb, channel, c, bpp, false, reader.isInterleaved()); }
@Override public byte[] openThumbBytes(int no) throws FormatException, IOException { FormatTools.assertId(getCurrentFile(), true, 2); IFormatReader r = getReader(no); int ino = getAdjustedIndex(no); if (ino < r.getImageCount()) return r.openThumbBytes(ino); // return a blank image to cover for the fact that // this file does not contain enough image planes return externals[getExternalSeries()].getBlankThumbBytes(); }
@Override public boolean isInterleaved() { FormatTools.assertId(getCurrentFile(), true, 2); return noStitch ? reader.isInterleaved() : getReader(getCoreIndex(), 0).isInterleaved(); }
@Override public Object openPlane(int no, int x, int y, int w, int h) throws FormatException, IOException { FormatTools.assertId(getCurrentFile(), true, 2); IFormatReader r = getReader(no); int ino = getAdjustedIndex(no); if (ino < r.getImageCount()) return r.openPlane(ino, x, y, w, h); return null; }
@Override public int getThumbSizeX() { FormatTools.assertId(getCurrentFile(), true, 2); return noStitch ? reader.getThumbSizeX() : getReader(getCoreIndex(), 0).getThumbSizeX(); }
@Override public void setMetadataStore(MetadataStore store) { FormatTools.assertId(getCurrentFile(), false, 2); reader.setMetadataStore(store); this.store = store; }
@Override public int getThumbSizeY() { FormatTools.assertId(getCurrentFile(), true, 2); return noStitch ? reader.getThumbSizeY() : getReader(getCoreIndex(), 0).getThumbSizeY(); }
@Override public short[][] get16BitLookupTable() throws FormatException, IOException { FormatTools.assertId(getCurrentFile(), true, 2); return noStitch ? reader.get16BitLookupTable() : getReader(getCoreIndex(), 0).get16BitLookupTable(); }
@Override public int getImageCount() { FormatTools.assertId(getCurrentFile(), true, 2); int no = reader.getImageCount(); if (canMerge()) no /= getSizeC(); return no; }
@Override public List<CoreMetadata> getCoreMetadataList() { FormatTools.assertId(getCurrentFile(), true, 2); return noStitch ? reader.getCoreMetadataList() : core; }
/** Gets the file pattern object used to build the list of files. */ public FilePattern getFilePattern() { FormatTools.assertId(getCurrentFile(), true, 2); return noStitch ? findPattern(getCurrentFile()) : externals[getExternalSeries()].getFilePattern(); }
@Override public int getCoreIndex() { FormatTools.assertId(getCurrentFile(), true, 2); return reader.getCoreIndex() > 0 ? reader.getCoreIndex() : coreIndex; }
@Override public boolean isLittleEndian() { FormatTools.assertId(getCurrentFile(), true, 2); return noStitch ? reader.isLittleEndian() : getReader(getCoreIndex(), 0).isLittleEndian(); }
@Override public byte[] openThumbBytes(int no) throws FormatException, IOException { FormatTools.assertId(getCurrentFile(), true, 2); IFormatReader r = getReader(no); int ino = getAdjustedIndex(no); if (ino < r.getImageCount()) return r.openThumbBytes(ino); // return a blank image to cover for the fact that // this file does not contain enough image planes return externals[getExternalSeries()].getBlankThumbBytes(); }
@Override public boolean isInterleaved(int subC) { FormatTools.assertId(getCurrentFile(), true, 2); return noStitch ? reader.isInterleaved(subC) : getReader(getCoreIndex(), 0).isInterleaved(subC); }
@Override public short[][] get16BitLookupTable() throws FormatException, IOException { FormatTools.assertId(getCurrentFile(), true, 2); return noStitch ? reader.get16BitLookupTable() : getReader(getCoreIndex(), 0).get16BitLookupTable(); }
@Override public void setOriginalMetadataPopulated(boolean populate) { FormatTools.assertId(getCurrentFile(), false, 1); if (externals == null) reader.setOriginalMetadataPopulated(populate); else { for (ExternalSeries s : externals) { for (DimensionSwapper r : s.getReaders()) { r.setOriginalMetadataPopulated(populate); } } } }