@Override public int getWidth(int frameIndex) throws IOException { readMetadata(); checkIndex(frameIndex); return width; }
@Override public ImageReader createReaderInstance(Object extension) throws IOException { return new DicomImageReader(this); }
@Override public int getNumImages(boolean allowSearch) throws IOException { readMetadata(); return frames; }
private ImageReadParam readParam() { DicomImageReadParam param = (DicomImageReadParam) imageReader.getDefaultReadParam(); param.setWindowCenter(windowCenter); param.setWindowWidth(windowWidth); param.setAutoWindowing(autoWindowing); param.setWindowIndex(windowIndex); param.setVOILUTIndex(voiLUTIndex); param.setPreferWindow(preferWindow); param.setPresentationState(prState); param.setOverlayActivationMask(overlayActivationMask); param.setOverlayGrayscaleValue(overlayGrayscaleValue); return param; }
private Attributes readPostAttr(DicomInputStream dis) throws IOException { Attributes postAttr = dis.readDataset(-1, -1); postAttr.addAll(metadata.getAttributes()); metadata = new DicomMetaData(metadata.getFileMetaInformation(), postAttr); return postAttr; }
@Override public ImageTypeSpecifier getRawImageType(int frameIndex) throws IOException { readMetadata(); checkIndex(frameIndex); if (decompressor == null) return createImageType(bitsStored, dataType, banded); if (rle) return createImageType(bitsStored, dataType, true); openiis(); try { decompressor.setInput(iisOfFrame(0)); return decompressor.getRawImageType(0); } finally { closeiis(); } }
private int[] getActiveOverlayGroupOffsets(ImageReadParam param) { if (param instanceof DicomImageReadParam) { DicomImageReadParam dParam = (DicomImageReadParam) param; Attributes psAttrs = dParam.getPresentationState(); if (psAttrs != null) return Overlays.getActiveOverlayGroupOffsets(psAttrs); else return Overlays.getActiveOverlayGroupOffsets( metadata.getAttributes(), dParam.getOverlayActivationMask()); } return Overlays.getActiveOverlayGroupOffsets( metadata.getAttributes(), 0xffff); }
private void applyOverlay(int gg0000, WritableRaster raster, int frameIndex, ImageReadParam param, int outBits, byte[] ovlyData) { Attributes ovlyAttrs = metadata.getAttributes(); int grayscaleValue = 0xffff; if (param instanceof DicomImageReadParam) { DicomImageReadParam dParam = (DicomImageReadParam) param; Attributes psAttrs = dParam.getPresentationState(); if (psAttrs != null) { if (psAttrs.containsValue(Tag.OverlayData | gg0000)) ovlyAttrs = psAttrs; grayscaleValue = Overlays.getRecommendedDisplayGrayscaleValue( psAttrs, gg0000); } else grayscaleValue = dParam.getOverlayGrayscaleValue(); } Overlays.applyOverlay(ovlyData != null ? 0 : frameIndex, raster, ovlyAttrs, gg0000, grayscaleValue >>> (16-outBits), ovlyData); }
public boolean bigEndian() { return getAttributes().bigEndian(); } }
public String getTransferSyntaxUID() { return getFileMetaInformation().getString(Tag.TransferSyntaxUID); }
@Override public ImageReadParam getDefaultReadParam() { return new DicomImageReadParam(); }
private ImageTypeSpecifier createImageType(int bits, int dataType, boolean banded) { return new ImageTypeSpecifier( createColorModel(bits, dataType), createSampleModel(dataType, banded)); }
@Override public void close() { dispose(); } }
@Override public void dispose() { resetInternalState(); }
private String getTransferSyntaxUID() { return metadata.getTransferSyntaxUID(); }
private boolean bigEndian() { return metadata.bigEndian(); }
private ColorModel createColorModel(int bits, int dataType) { return pmi.createColorModel(bits, dataType, metadata.getAttributes()); }
@Override public int getHeight(int frameIndex) throws IOException { readMetadata(); checkIndex(frameIndex); return height; }
@Override public ImageReadParam getDefaultReadParam() { return new DicomImageReadParam(); }
/** * Gets the stream metadata. May not contain post pixel data unless * there are no images or the getStreamMetadata has been called with the post pixel data * node being specified. */ @Override public DicomMetaData getStreamMetadata() throws IOException { readMetadata(); return metadata; }