DCMTK
Version 3.6.1 20120515
OFFIS DICOM Toolkit
|
zlib compression filter for output streams More...
Public Member Functions | |
DcmZLibOutputFilter () | |
default constructor | |
virtual | ~DcmZLibOutputFilter () |
destructor | |
virtual OFBool | good () const |
returns the status of the consumer. | |
virtual OFCondition | status () const |
returns the status of the consumer as an OFCondition object. | |
virtual OFBool | isFlushed () const |
returns true if the consumer is flushed, i.e. | |
virtual offile_off_t | avail () const |
returns the minimum number of bytes that can be written with the next call to write(). | |
virtual offile_off_t | write (const void *buf, offile_off_t buflen) |
processes as many bytes as possible from the given input block. | |
virtual void | flush () |
instructs the consumer to flush its internal content until either the consumer becomes "flushed" or I/O suspension occurs. | |
virtual void | append (DcmConsumer &consumer) |
determines the consumer to which the filter is supposed to write it's output. | |
Private Member Functions | |
DcmZLibOutputFilter (const DcmZLibOutputFilter &) | |
private unimplemented copy constructor | |
DcmZLibOutputFilter & | operator= (const DcmZLibOutputFilter &) |
private unimplemented copy assignment operator | |
void | flushOutputBuffer () |
writes the content of the output ring buffer to the next filter stage until the output ring buffer becomes empty or the next filter stage becomes full | |
offile_off_t | compress (const void *buf, offile_off_t buflen, OFBool finalize) |
feed data from the given block of data to the compression codec until complete or the output ring buffer becomes full. | |
offile_off_t | fillInputBuffer (const void *buf, offile_off_t buflen) |
copies as much of the given block of data as possible in the input ring buffer | |
void | compressInputBuffer (OFBool finalize) |
feed data from the input ring buffer to the compression codec until complete or the output ring buffer becomes full. | |
Private Attributes | |
DcmConsumer * | current_ |
pointer to consumer to which compressed output is written | |
z_streamp | zstream_ |
pointer to struct z_stream object containing the zlib status | |
OFCondition | status_ |
status | |
OFBool | flushed_ |
true if the zlib object has reported Z_STREAM_END | |
unsigned char * | inputBuf_ |
input ring buffer | |
offile_off_t | inputBufStart_ |
offset of first byte in input ring buffer | |
offile_off_t | inputBufCount_ |
number of bytes in input ring buffer | |
unsigned char * | outputBuf_ |
output ring buffer | |
offile_off_t | outputBufStart_ |
offset of first byte in output ring buffer | |
offile_off_t | outputBufCount_ |
number of bytes in output ring buffer |
zlib compression filter for output streams
virtual void DcmZLibOutputFilter::append | ( | DcmConsumer & | consumer | ) | [virtual] |
determines the consumer to which the filter is supposed to write it's output.
Once a consumer for the output filter has been defined, it cannot be changed anymore during the lifetime of the object.
consumer | reference to consumer, must not be circular chain |
Implements DcmOutputFilter.
virtual offile_off_t DcmZLibOutputFilter::avail | ( | ) | const [virtual] |
returns the minimum number of bytes that can be written with the next call to write().
The DcmObject write methods rely on avail to return a value > 0 if there is no I/O suspension since certain data such as tag and length are only written "en bloc", i.e. all or nothing.
Implements DcmConsumer.
offile_off_t DcmZLibOutputFilter::compress | ( | const void * | buf, |
offile_off_t | buflen, | ||
OFBool | finalize | ||
) | [private] |
feed data from the given block of data to the compression codec until complete or the output ring buffer becomes full.
Does not flush the output ring buffer.
buf | pointer to input data |
buflen | number of bytes in buf |
finalize | true if the current block of data constitutes the end of the input stream, i.e. the compression codec should be forced to flush its internal state. |
void DcmZLibOutputFilter::compressInputBuffer | ( | OFBool | finalize | ) | [private] |
feed data from the input ring buffer to the compression codec until complete or the output ring buffer becomes full.
Does not flush the output ring buffer.
finalize | true if the content of the input ring buffer constitutes the end of the input stream, i.e. the compression codec should be forced to flush its internal state. |
offile_off_t DcmZLibOutputFilter::fillInputBuffer | ( | const void * | buf, |
offile_off_t | buflen | ||
) | [private] |
copies as much of the given block of data as possible in the input ring buffer
buf | pointer to input data |
buflen | number of bytes in buf |
virtual void DcmZLibOutputFilter::flush | ( | ) | [virtual] |
instructs the consumer to flush its internal content until either the consumer becomes "flushed" or I/O suspension occurs.
After a call to flush(), a call to write() will produce undefined behaviour.
Implements DcmConsumer.
virtual OFBool DcmZLibOutputFilter::good | ( | ) | const [virtual] |
returns the status of the consumer.
Unless the status is good, the consumer will not permit any operation.
Implements DcmConsumer.
virtual OFBool DcmZLibOutputFilter::isFlushed | ( | ) | const [virtual] |
returns true if the consumer is flushed, i.e.
has no more data pending in it's internal state that needs to be flushed before the stream is closed.
Implements DcmConsumer.
virtual OFCondition DcmZLibOutputFilter::status | ( | ) | const [virtual] |
returns the status of the consumer as an OFCondition object.
Unless the status is good, the consumer will not permit any operation.
Implements DcmConsumer.
virtual offile_off_t DcmZLibOutputFilter::write | ( | const void * | buf, |
offile_off_t | buflen | ||
) | [virtual] |
processes as many bytes as possible from the given input block.
buf | pointer to memory block, must not be NULL |
buflen | length of memory block |
Implements DcmConsumer.