info.tsuid = in.getTransferSyntax().uid(); info.fmiEndPos = in.getEndOfFileMetaInfoPosition(); } catch (IOException e) {
in.setHandler(new StopTagInputHandler(Tag.StudyDate)); in.readDicomObject(dcmObj, PEEK_LEN); info.tsuid = in.getTransferSyntax().uid(); info.fmiEndPos = in.getEndOfFileMetaInfoPosition(); } catch (IOException e) {
private void writeRecord(long offset, DicomObject dcmobj) throws IOException { log.debug("Write record @ {} to file {}", new Long(offset), file); if (rollbackLen == -1) { rollbackLen = offset; filesetInfo.setFileSetConsistencyFlag( FileSetInformation.KNOWN_INCONSISTENCIES); raf.seek(firstRecordPos - 14); raf.writeShort(FileSetInformation.KNOWN_INCONSISTENCIES); } raf.seek(offset); out.setStreamPosition(offset); dcmobj.putInt(Tag.OffsetOfTheNextDirectoryRecord, VR.UL, 0); dcmobj.putInt(Tag.RecordInUseFlag, VR.US, INUSE); dcmobj.putInt(Tag.OffsetOfReferencedLowerLevelDirectoryEntity, VR.UL, 0); out.writeItem(dcmobj, in.getTransferSyntax()); recordSeqLen = (int) (out.getStreamPosition() - firstRecordPos); cache.put((int) dcmobj.getItemOffset(), dcmobj); }
private void transcodeValue(DicomInputStream in, VR vr) throws IOException { boolean toggleEndian = out.getTransferSyntax().bigEndian() != in.getTransferSyntax().bigEndian(); int remaining = in.valueLength(); while (remaining > 0) { int len = Math.min(remaining, buf.length); in.readFully(buf, 0, len); if (toggleEndian) vr.toggleEndian(buf, 0, len); out.write(buf, 0, len); remaining -= len; } }
private void transcodeItem(DicomInputStream in) throws SAXException, IOException { final DicomElement sq = in.sq(); final int itemLen = in.valueLength(); final VR sqvr = sq.vr(); final int index = sq.countItems(); if (file != null) file = new File(file, Integer.toString(index+1)); final String fpath = fpath(sq.tag(), sqvr, itemLen); startItemElement(in.tagPosition(), itemLen, fpath); in.readValue(in); if (sq.hasFragments() && index < sq.countItems()) { byte[] data = sq.getFragment(index); if (fpath != null) { writeToFile(data); } else { final boolean bigEndian = in.getTransferSyntax().bigEndian(); sqvr.formatXMLValue(data, bigEndian, null, cbuf, ch); } sq.setFragment(index, EMPTY_BYTES); // allow gc to release byte[] } endItemElement(); if (file != null) file = file.getParentFile(); }
fixHeaderData(ds); streamMetaData.setDicomObject(ds); bigEndian = dis.getTransferSyntax().bigEndian(); tsuid = ds.getString(Tag.TransferSyntaxUID); width = ds.getInt(Tag.Columns);
} else { byte[] val = in.readBytes(vallen); final boolean bigEndian = in.getTransferSyntax().bigEndian(); if (fpath != null) { writeToFile(val);
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); } } }