pub struct StatefulEncoder<W, E, T = SpecificCharacterSet> { /* private fields */ }
Expand description
Also called a printer, this encoder type provides a stateful mid-level
abstraction for writing DICOM content. Unlike Encode
,
the stateful encoder knows how to write text values and keeps track
of how many bytes were written.
W
is the write target, E
is the encoder, and T
is the text codec.
Implementations§
Source§impl<W, E, T> StatefulEncoder<W, E, T>
impl<W, E, T> StatefulEncoder<W, E, T>
Source§impl<'s> StatefulEncoder<Box<dyn Write + 's>, Box<dyn EncodeTo<dyn Write> + 's>>
impl<'s> StatefulEncoder<Box<dyn Write + 's>, Box<dyn EncodeTo<dyn Write> + 's>>
pub fn from_transfer_syntax( to: Box<dyn Write + 's>, ts: TransferSyntax, charset: SpecificCharacterSet, ) -> Result<Self>
Source§impl<W, E> StatefulEncoder<W, E>
impl<W, E> StatefulEncoder<W, E>
Sourcepub fn encode_element_header(&mut self, de: DataElementHeader) -> Result<()>
pub fn encode_element_header(&mut self, de: DataElementHeader) -> Result<()>
Encode and write a data element header.
Sourcepub fn encode_item_header(&mut self, len: u32) -> Result<()>
pub fn encode_item_header(&mut self, len: u32) -> Result<()>
Encode and write an item header,
where len
is the specified length of the item
(can be 0xFFFF_FFFF
for undefined length).
Sourcepub fn encode_item_delimiter(&mut self) -> Result<()>
pub fn encode_item_delimiter(&mut self) -> Result<()>
Encode and write an item delimiter.
Sourcepub fn encode_sequence_delimiter(&mut self) -> Result<()>
pub fn encode_sequence_delimiter(&mut self) -> Result<()>
Encode and write a sequence delimiter.
Sourcepub fn write_raw_bytes(&mut self, bytes: &[u8]) -> Result<()>
pub fn write_raw_bytes(&mut self, bytes: &[u8]) -> Result<()>
Write the given bytes directly to the inner writer.
Note that this method
(unlike write_bytes
)
does not perform any additional padding.
Sourcepub fn write_bytes(&mut self, bytes: &[u8]) -> Result<()>
pub fn write_bytes(&mut self, bytes: &[u8]) -> Result<()>
Write a primitive DICOM value as a bunch of bytes directly to the inner writer.
This method will perform the necessary padding (always with zeros) to ensure that the encoded value has an even number of bytes.
Sourcepub fn bytes_written(&self) -> u64
pub fn bytes_written(&self) -> u64
Retrieve the number of bytes written so far by this printer.
Sourcepub fn encode_offset_table(&mut self, table: &[u32]) -> Result<()>
pub fn encode_offset_table(&mut self, table: &[u32]) -> Result<()>
Encode and write the values of a pixel data offset table.
Sourcepub fn encode_primitive_element(
&mut self,
de: &DataElementHeader,
value: &PrimitiveValue,
) -> Result<()>
pub fn encode_primitive_element( &mut self, de: &DataElementHeader, value: &PrimitiveValue, ) -> Result<()>
Encode and write a data element with a primitive value.
This method will perform the necessary padding to ensure that the encoded value is an even number of bytes. Where applicable, this will use the inner text codec for textual values. The length property of the header is ignored, the true byte length of the value in its encoded form is used instead.
Trait Implementations§
Auto Trait Implementations§
impl<W, E, T> Freeze for StatefulEncoder<W, E, T>
impl<W, E, T> RefUnwindSafe for StatefulEncoder<W, E, T>
impl<W, E, T> Send for StatefulEncoder<W, E, T>
impl<W, E, T> Sync for StatefulEncoder<W, E, T>
impl<W, E, T> Unpin for StatefulEncoder<W, E, T>
impl<W, E, T> UnwindSafe for StatefulEncoder<W, E, T>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more