public boolean readValue(DicomInputStream in) throws IOException { if ((in.tag() & 0xffffffffL) >= stopTag && in.level() == 0) return false; return in.readValue(in); }
/** * Return true if this tag should be skipped/replaced with an alternate tag. * @param in * @return */ public boolean isSkip(DicomInputStream in) { if( TagUtils.isPrivateDataElement(in.tag() )) { return in.valueLength() >= privateSkipSize; } return in.valueLength() >= publicSkipSize; }
public boolean readValue(DicomInputStream in) throws IOException { try { switch (in.tag()) { case Tag.Item:
dis.readHeader(); if (log.isDebugEnabled()) log.debug("Read " + TagUtils.toString(dis.tag()) + " #" + dis.valueLength()); if (dis.tag() == Tag.Item) { Item item = new Item( items.isEmpty() ? 0 : last().nextOffset(), log.warn("i/o error reading next item:", e); if (dis.tag() != Tag.SequenceDelimitationItem || dis.valueLength() != 0) { log.warn("expected (FFFE,E0DD) #0 but read " + TagUtils.toString(dis.tag()) + " #" + dis.valueLength());
private long endPos() throws IOException { if (recordSeqLen == -1) { long endPos = raf.length() - 12; raf.seek(endPos); if (in.readHeader() == Tag.SequenceDelimitationItem) { recordSeqLen = (int) (endPos - firstRecordPos); } else { endPos = filesetInfo.getOffsetLastRootRecord(); raf.seek(endPos); in.setStreamPosition(endPos); DicomObject dcmobj = new BasicDicomObject(); while (in.readHeader() == Tag.Item) { in.readDicomObject(dcmobj, in.valueLength()); dcmobj.clear(); endPos = in.getStreamPosition(); } if (in.tag() != Tag.SequenceDelimitationItem) { throw new IOException("Unexpected Tag " + TagUtils.toString(in.tag()) + " at offset " + endPos); } recordSeqLen = (int) (endPos - firstRecordPos); } } return firstRecordPos + recordSeqLen; }
public boolean readValue(DicomInputStream in) throws IOException { final int tag = in.tag(); switch (tag) { case Tag.Item: transcodeItem(in); break; case Tag.ItemDelimitationItem: case Tag.SequenceDelimitationItem: in.readValue(in); break; default: if (TagUtils.isFileMetaInfoElement(tag) || TagUtils.isGroupLengthElement(tag)) in.readValue(in); else transcodeAttribute(in); } return true; }
public boolean readValue(DicomInputStream in) throws IOException { boolean skip = isSkip(in); if(!skip){ if (subHandler != null){ return subHandler.readValue(in); }else{ return in.readValue(in); } } in.getDicomObject().add(new SkippedDicomElement(in.tag(), in.vr(), false, in.valueLength(), in.getStreamPosition())); in.skip(in.valueLength()); return true; }
private void transcodeAttribute(DicomInputStream in) throws SAXException, IOException { final int tag = in.tag(); final VR vr = in.vr(); final int vallen = in.valueLength();
if (dis.tag() == Tag.PixelData) { streamMetaData.setPixelData(true); if (frames == 0)
private void transcodeAttribute(DicomInputStream in) throws IOException { final int tag = in.tag(); final VR vr = in.vr(); final int vallen = in.valueLength(); final DicomObject attrs = in.getDicomObject(); if (vallen == -1 || vr == VR.SQ) { out.writeHeader(tag, vr, -1); TransferSyntax prevTS = out.getTransferSyntax(); if (vr == VR.UN) { out.setTransferSyntax(TransferSyntax.ImplicitVRLittleEndian); } in.readValue(in); attrs.remove(tag); out.writeHeader(Tag.SequenceDelimitationItem, null, 0); out.setTransferSyntax(prevTS); } else if (!TagUtils.isGroupLengthElement(tag)) { out.writeHeader(tag, vr, vallen); if (tag == Tag.SpecificCharacterSet || TagUtils.isPrivateCreatorDataElement(tag)) { byte[] val = in.readBytes(vallen); boolean bigEndian = in.getTransferSyntax().bigEndian(); attrs.putBytes(tag, vr, val, bigEndian); out.write(val); } else { transcodeValue(in, vr); } } }