/** * Encode the Transfer Syntax * * @param CDicomStreamWriter $stream_writer The stream writer * * @return null */ function encodeItem(CDicomStreamWriter $stream_writer) { $stream_writer->writeUInt8($this->type); $stream_writer->skip(1); $stream_writer->writeUInt16($this->length); $stream_writer->writeUID($this->name, $this->length); }
/** * Encode the Iplementation Class UID * * @param CDicomStreamWriter $stream_writer The stream writer * * @return null */ function encodeItem(CDicomStreamWriter $stream_writer) { $this->calculateLength(); $stream_writer->writeUint8($this->type); $stream_writer->skip(1); $stream_writer->writeUInt16($this->length); $stream_writer->writeUID($this->uid, $this->length); }
/** * Encode the Sop Class Extended Negociation * * @param CDicomStreamWriter $stream_writer The stream writer * * @return null */ function encodeItem(CDicomStreamWriter $stream_writer) { $this->calculateLength(); $stream_writer->writeUInt8($this->type); $stream_writer->skip(1); $stream_writer->writeUInt16($this->length); $stream_writer->writeUInt16($this->uid_length); $stream_writer->writeUID($this->sop_class_uid, $this->uid_length); $stream_writer->writeUInt8($this->sca_support); $stream_writer->skip(1); $stream_writer->writeUInt8($this->sca_digital_signature_support); $stream_writer->skip(1); $stream_writer->writeUInt8($this->sca_element_coercion); $stream_writer->skip(1); }
/** * Encode the value * * @param CDicomStreamWriter $stream_writer The stream writer * * @param string $endianness The endianness, must be equal to "BE" (Big Endian) or "LE" (Little Endian) * * @return null * * @todo traiter les cas FL, FD, OB, OW, OF, SQ */ protected function encodeValue(CDicomStreamWriter $stream_writer, $endianness) { switch ($this->vr) { case 'AE': case 'AS': case 'CS': case 'DA': case 'DS': case 'DT': case 'FL': case 'FD': case 'IS': case 'LO': case 'LT': case 'OB': case 'OF': case 'OX': case 'OW': case 'PN': case 'SH': case 'ST': case 'TM': case 'UN': case 'UT': if ($this->length & 1) { $this->value .= " "; $this->length++; } $stream_writer->writeString($this->value, $this->length); break; case 'AT': $stream_writer->writeUInt16($this->value[0], $endianness); $stream_writer->writeUInt16($this->value[1], $endianness); break; case 'SL': $stream_writer->writeInt32($this->value, $endianness); break; case 'SS': $stream_writer->writeInt16($this->value, $endianness); break; case 'UI': $stream_writer->writeUID($this->value, $this->length); if ($this->length & 1) { $stream_writer->writeUInt8(0x0); $this->length++; } break; case 'UL': $stream_writer->writeUInt32($this->value, $endianness); break; case 'US': $stream_writer->writeUInt16($this->value, $endianness); break; case 'SQ': $value_stream = new CDicomStreamWriter(); $value_tmp = array(); if (is_array($this->value)) { foreach ($this->value as $_sequence) { $sequence = array(); $sequence_stream = new CDicomStreamWriter(); foreach ($_sequence as $_item) { $dataset = new CDicomDataSet($_item); $dataset->encode($sequence_stream, $this->transfer_syntax); $sequence[] = $dataset; } $sequence_length = strlen($sequence_stream->buf); $value_stream->writeUInt16(0xfffe, $endianness); $value_stream->writeUInt16(0xe000, $endianness); $value_stream->writeUInt32($sequence_length, $endianness); $value_stream->write($sequence_stream->buf, $sequence_length); $this->length += 8 + $sequence_length; $value_tmp[] = $sequence; } $stream_writer->write($value_stream->buf, $this->length); $this->value = $value_tmp; } else { $this->length = 8; $stream_writer->writeUInt16(0xfffe, $endianness); $stream_writer->writeUInt16(0xe000, $endianness); $stream_writer->writeUInt32(0, $endianness); } break; default: break; } }
/** * Encode the SOP class common extended negociation item * * @param CDicomStreamWriter $stream_writer The stream writer * * @return null */ function encodeItem(CDicomStreamWriter $stream_writer) { $this->calculateLength(); $stream_writer->writeUInt8($this->type); $stream_writer->skip(1); $stream_writer->writeUInt16($this->length); $stream_writer->writeUInt16($this->sop_uid_length); $stream_writer->writeUID($this->sop_class_uid, $this->sop_uid_length); $stream_writer->writeUInt16($this->service_uid_length); $stream_writer->writeUID($this->service_class_uid, $this->service_uid_length); $stream_writer->writeUInt16($this->related_sop_classes_id_length); foreach ($this->related_sop_classes_id as $_related_sop_class_id) { $_related_sop_class_id->encodeItem($stream_writer); } }
/** * Encode the field * * @param CDicomStreamWriter $stream_writer The stream writer * * @return null */ function encodeField(CDicomStreamWriter $stream_writer) { $stream_writer->writeUInt8($this->class_uid_length); $stream_writer->writeUID($this->class_uid, $this->class_uid_length); }