/** * Unwraps nested wrapped readers until the given reader class is found. * * @param readerClass Class of the desired nested reader. If null, the * core reader (i.e., deepest wrapped reader) will be returned. * @param id Id to use as a basis when unwrapping any nested * {@link ImageReader}s. If null, the current id is used. */ public IFormatReader unwrap(Class<? extends IFormatReader> readerClass, String id) throws FormatException, IOException { IFormatReader r = this; while (r instanceof ReaderWrapper || r instanceof ImageReader) { if (readerClass != null && readerClass.isInstance(r)) break; if (r instanceof ImageReader) { ImageReader ir = (ImageReader) r; r = id == null ? ir.getReader() : ir.getReader(id); } else r = ((ReaderWrapper) r).getReader(); } if (readerClass != null && !readerClass.isInstance(r)) return null; return r; }
/** * Unwraps nested wrapped readers until the given reader class is found. * * @param readerClass Class of the desired nested reader. If null, the * core reader (i.e., deepest wrapped reader) will be returned. * @param id Id to use as a basis when unwrapping any nested * {@link ImageReader}s. If null, the current id is used. */ public IFormatReader unwrap(Class<? extends IFormatReader> readerClass, String id) throws FormatException, IOException { IFormatReader r = this; while (r instanceof ReaderWrapper || r instanceof ImageReader) { if (readerClass != null && readerClass.isInstance(r)) break; if (r instanceof ImageReader) { ImageReader ir = (ImageReader) r; r = id == null ? ir.getReader() : ir.getReader(id); } else r = ((ReaderWrapper) r).getReader(); } if (readerClass != null && !readerClass.isInstance(r)) return null; return r; }
r = ((ReaderWrapper) r).getReader();
handler = ((ReaderWrapper) handler).getReader();
handler = ((ReaderWrapper) handler).getReader();