public String getPrivateCreator(int tag) { if (!TagUtils.isPrivateDataElement(tag) || TagUtils.isPrivateCreatorDataElement(tag)) throw new IllegalArgumentException(TagUtils.toString(tag)); int creatorIDtag = (tag & 0xffff0000) | ((tag >> 8) & 0xff); return getAndCacheString(creatorIDtag); }
public static String toString(int tag) { return toStringBuffer(tag, new StringBuffer(11)).toString(); } }
/** * Resolve the tag to use against the second internal DicomObject. */ private int resolveTagForDS2(int tag) { if(TagUtils.isPrivateDataElement(tag) && !TagUtils.isPrivateCreatorDataElement(tag)) { String creatorName = ds1.getPrivateCreator(tag); tag = ds2.resolveTag(tag, creatorName, false); } return tag; }
public int resolveTag(int tag, String creator, boolean reserve) { if (creator == null || !TagUtils.isPrivateDataElement(tag)) return tag; int gggg0000 = tag & 0xffff0000; int idTag = gggg0000 | 0x10; int maxIdTag = gggg0000 | 0xff; String id; while (!creator.equals(id = getAndCacheString(idTag))) { if (id == null) { if (!reserve) return -1; addPrivateCreator(creator, idTag); break; } if (++idTag > maxIdTag) throw new IllegalStateException( "No free block to reserve in group " + TagUtils.toString(gggg0000)); } return (tag & 0xffff00ff) | ((idTag & 0xff) << 8); }
public Range(DicomObject attrs, int fromTag, int toTag) { super(attrs); if ((fromTag & 0xffffffffL) > (toTag & 0xffffffffL)) { throw new IllegalArgumentException("fromTag:" + TagUtils.toString(fromTag) + " > toTag:" + TagUtils.toString(toTag)); } this.fromTag = fromTag & 0xffffffffL; this.toTag = toTag & 0xffffffffL; if (this.fromTag > this.toTag) { throw new IllegalArgumentException("fromTag:" + TagUtils.toString(fromTag) + " > toTag:" + TagUtils.toString(toTag)); } }
tag = ts.bigEndian() ? ByteUtils.bytesBE2tag(header, 0) : ByteUtils .bytesLE2tag(header, 0); if (expectFmiEnd && !TagUtils.isFileMetaInfoElement(tag)) { log.warn("Missing or wrong (0002,0000) Group Length of File Meta Information"); String tsuid = attrs.getString(Tag.TransferSyntaxUID); if (TagUtils.hasVR(tag) && ts.explicitVR()) { try { vr = VR.valueOf(((header[4] & 0xff) << 8) | (header[5] & 0xff)); vr = attrs.vrOf(tag); log.warn("Catch " + e + " for attribute " + TagUtils.toString(tag) + " at pos: " + tagpos + " - assume " + vr); if (log.isInfoEnabled()) { log.info("Replace invalid VR '??' of " + TagUtils.toString(tag) + " by 'UN'");
@Override protected boolean filter(int tag) { return !TagUtils.isPrivateDataElement(tag); }
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; }
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); } } }
if (TagUtils.hasVR(tag) && (vr == null || vr == VR.UN)) { VR attrVr = attrs.vrOf(tag); if( !(vr==VR.UN && attrVr==VR.SQ && vallen>=0) ) {
|| TagUtils.isPrivateCreatorDataElement(tag)) { attrs.putBytes(tag, vr, val, bigEndian);
public boolean visit(DicomElement attr) { int tag = attr.tag(); VR vr = attr.vr(); if (!TagUtils.isPrivateDataElement(tag) || (!resolveDestinationPrivateTags && TagUtils.isPrivateCreatorDataElement(tag))) dest.add(attr); else if (!TagUtils.isPrivateCreatorDataElement(tag)) { int destTag = resolveDestinationPrivateTags ? dest.resolveTag(tag, getPrivateCreator(tag), true)
/** * 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 static DicomObject getLUT(DicomObject dobj, int sqTag) { DicomObject lut = dobj.getNestedDicomObject(sqTag); if (lut != null) { if (!lut.containsValue(Tag.LUTData)) { log.info("Ignore " + TagUtils.toString(sqTag) + " with missing LUT Data (0028,3006)"); return null; } if (!lut.containsValue(Tag.LUTDescriptor)) { log.info("Ignore " + TagUtils.toString(sqTag) + " with missing LUT Descriptor (0028,3002)"); return null; } } return lut; }
public StringBuffer toStringBuffer(StringBuffer sb, int maxValLen) { if (sb == null) sb = new StringBuffer(); TagUtils.toStringBuffer(tag, sb); sb.append(' '); sb.append(vr); sb.append(" #"); sb.append(length()); sb.append(" ["); sb.append("]"); return sb; }
public void readItem(DicomObject dest) throws IOException { dest.setItemOffset(pos); if (readHeader() != Tag.Item) throw new DicomCodingException("Expected (FFFE,E000) but read " + TagUtils.toString(tag)); readDicomObject(dest, vallen); }
public StringBuffer toStringBuffer(StringBuffer sb, int maxValLen) { if (sb == null) sb = new StringBuffer(); TagUtils.toStringBuffer(tag, sb); sb.append(' '); sb.append(vr); sb.append(" #"); sb.append(length()); sb.append(" ["); appendValue(sb, maxValLen); sb.append("]"); return sb; }
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; }