Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

DcmRLEEncoder Class Reference

this class implements an RLE compressor conforming to the DICOM standard. More...

List of all members.

Public Member Functions

 DcmRLEEncoder (int doPad)
 default constructor
 ~DcmRLEEncoder ()
 destructor
void add (unsigned char ch)
 this method adds one byte to the byte stream to be compressed with the RLE compressor.
void add (const unsigned char *buf, size_t bufcount)
 this method adds a block of bytes to the byte stream to be compressed with the RLE compressor.
void flush ()
 this method finalizes the compressed RLE stream, i.e.
size_t size () const
 returns the size of compressed RLE stream in bytes.
OFBool fail () const
 returns true if the RLE compressor has run out of memory.
void write (void *target) const
 copies the compressed RLE byte stream into a target array of at least size() bytes.
void write (DcmEncoderOutputStream &os) const
 copies the compressed RLE byte stream into an output stream
 DcmRLEEncoder (int doPad)
 default constructor
 ~DcmRLEEncoder ()
 destructor
void add (unsigned char ch)
 this method adds one byte to the byte stream to be compressed with the RLE compressor.
void add (const unsigned char *buf, size_t bufcount)
 this method adds a block of bytes to the byte stream to be compressed with the RLE compressor.
void flush ()
 this method finalizes the compressed RLE stream, i.e.
size_t size () const
 returns the size of compressed RLE stream in bytes.
OFBool fail () const
 returns true if the RLE compressor has run out of memory.
void write (void *target) const
 copies the compressed RLE byte stream into a target array of at least size() bytes.
void write (DcmEncoderOutputStream &os) const
 copies the compressed RLE byte stream into an output stream

Private Member Functions

 DcmRLEEncoder (const DcmRLEEncoder &)
 private undefined copy constructor
DcmRLEEncoderoperator= (const DcmRLEEncoder &)
 private undefined copy assignment operator
void move (size_t numberOfBytes)
 this method moves the given number of bytes from buff_ to currentBlock_ and "flushes" currentBlock_ to blockList_ if necessary.
 DcmRLEEncoder (const DcmRLEEncoder &)
 private undefined copy constructor
DcmRLEEncoderoperator= (const DcmRLEEncoder &)
 private undefined copy assignment operator
void move (size_t numberOfBytes)
 this method moves the given number of bytes from buff_ to currentBlock_ and "flushes" currentBlock_ to blockList_ if necessary.

Private Attributes

int fail_
 this flag indicates a failure of the RLE codec.
int pad_
 this flag indicates whether the RLE codec must pad encoded data to an even number of bytes (as required by DICOM).
unsigned char * currentBlock_
 this member points to a block of size DcmRLEEncoder_BLOCKSIZE (unless fail_ is true).
size_t offset_
 contains the number of bytes already written the the memory block pointed to by currentBlock_.
OFList< unsigned char * > blockList_
 this member contains a list of memory blocks of size DcmRLEEncoder_BLOCKSIZE which already have been filled with encoded RLE data.
unsigned char * RLE_buff_
 this member points to a buffer of 132 bytes that is used by the RLE encoding algorithm.
int RLE_prev_
 value of the last byte fed to the RLE compressor.
int RLE_pcount_
 repeat counter, for RLE compressor may temporarily become negative, guaranteed to be >= 0 between method calls.
unsigned int RLE_bindex_
 index of next unused byte in RLE_buff_.
unsigned char * currentBlock_
 this member points to a block of size DcmRLEEncoder_BLOCKSIZE (unless fail_ is true).
OFList< unsigned char * > blockList_
 this member contains a list of memory blocks of size DcmRLEEncoder_BLOCKSIZE which already have been filled with encoded RLE data.
unsigned char * RLE_buff_
 this member points to a buffer of 132 bytes that is used by the RLE encoding algorithm.


Detailed Description

this class implements an RLE compressor conforming to the DICOM standard.

The class is loosely based on an implementation by Phil Norman.

Definition at line 63 of file dcrleenc.h.


Constructor & Destructor Documentation

DcmRLEEncoder::DcmRLEEncoder int  doPad  )  [inline]
 

default constructor

Parameters:
doPad if true, RLE codec will pad output data to even number of bytes

Definition at line 70 of file dcrleenc.h.

DcmRLEEncoder::DcmRLEEncoder int  doPad  )  [inline]
 

default constructor

Parameters:
doPad if true, RLE codec will pad output data to even number of bytes

Definition at line 70 of file dcrleenc.h.


Member Function Documentation

void DcmRLEEncoder::add const unsigned char *  buf,
size_t  bufcount
[inline]
 

this method adds a block of bytes to the byte stream to be compressed with the RLE compressor.

Parameters:
buf buffer to be added
bufcount number of bytes in buffer

Definition at line 180 of file dcrleenc.h.

void DcmRLEEncoder::add unsigned char  ch  )  [inline]
 

this method adds one byte to the byte stream to be compressed with the RLE compressor.

Parameters:
ch byte to be added

Definition at line 103 of file dcrleenc.h.

void DcmRLEEncoder::add const unsigned char *  buf,
size_t  bufcount
[inline]
 

this method adds a block of bytes to the byte stream to be compressed with the RLE compressor.

Parameters:
buf buffer to be added
bufcount number of bytes in buffer

Definition at line 180 of file dcrleenc.h.

void DcmRLEEncoder::add unsigned char  ch  )  [inline]
 

this method adds one byte to the byte stream to be compressed with the RLE compressor.

Parameters:
ch byte to be added

Definition at line 103 of file dcrleenc.h.

OFBool DcmRLEEncoder::fail  )  const [inline]
 

returns true if the RLE compressor has run out of memory.

In this case, no output has been created.

Definition at line 265 of file dcrleenc.h.

OFBool DcmRLEEncoder::fail  )  const [inline]
 

returns true if the RLE compressor has run out of memory.

In this case, no output has been created.

Definition at line 265 of file dcrleenc.h.

void DcmRLEEncoder::flush  )  [inline]
 

this method finalizes the compressed RLE stream, i.e.

flushes all pending literal or repeat runs. This method can be called at any time; however, it must be called before size() or write() can be used. Intermediate calls should be avoided since they possibly decrease the compression ratio.

Definition at line 194 of file dcrleenc.h.

void DcmRLEEncoder::flush  )  [inline]
 

this method finalizes the compressed RLE stream, i.e.

flushes all pending literal or repeat runs. This method can be called at any time; however, it must be called before size() or write() can be used. Intermediate calls should be avoided since they possibly decrease the compression ratio.

Definition at line 194 of file dcrleenc.h.

void DcmRLEEncoder::move size_t  numberOfBytes  )  [inline, private]
 

this method moves the given number of bytes from buff_ to currentBlock_ and "flushes" currentBlock_ to blockList_ if necessary.

Parameters:
numberOfBytes number of bytes to copy

Definition at line 345 of file dcrleenc.h.

void DcmRLEEncoder::move size_t  numberOfBytes  )  [inline, private]
 

this method moves the given number of bytes from buff_ to currentBlock_ and "flushes" currentBlock_ to blockList_ if necessary.

Parameters:
numberOfBytes number of bytes to copy

Definition at line 345 of file dcrleenc.h.

size_t DcmRLEEncoder::size  )  const [inline]
 

returns the size of compressed RLE stream in bytes.

The size is guaranteed to be an even number of bytes (padded with a trailing zero byte as required by DICOM if necessary). This method may only be called after flush() has been executed to finalize the compressed stream.

Returns:
size of compressed stream, in bytes

Definition at line 255 of file dcrleenc.h.

size_t DcmRLEEncoder::size  )  const [inline]
 

returns the size of compressed RLE stream in bytes.

The size is guaranteed to be an even number of bytes (padded with a trailing zero byte as required by DICOM if necessary). This method may only be called after flush() has been executed to finalize the compressed stream.

Returns:
size of compressed stream, in bytes

Definition at line 255 of file dcrleenc.h.

void DcmRLEEncoder::write DcmEncoderOutputStream os  )  const [inline]
 

copies the compressed RLE byte stream into an output stream

Parameters:
os output stream

Definition at line 307 of file dcrleenc.h.

References DcmEncoderOutputStream::write().

void DcmRLEEncoder::write void *  target  )  const [inline]
 

copies the compressed RLE byte stream into a target array of at least size() bytes.

Parameters:
target pointer to array of at least size() bytes, must not be NULL.

Definition at line 274 of file dcrleenc.h.

void DcmRLEEncoder::write DcmEncoderOutputStream os  )  const [inline]
 

copies the compressed RLE byte stream into an output stream

Parameters:
os output stream

Definition at line 307 of file dcrleenc.h.

References DcmEncoderOutputStream::write().

void DcmRLEEncoder::write void *  target  )  const [inline]
 

copies the compressed RLE byte stream into a target array of at least size() bytes.

Parameters:
target pointer to array of at least size() bytes, must not be NULL.

Definition at line 274 of file dcrleenc.h.


Member Data Documentation

OFList<unsigned char *> DcmRLEEncoder::blockList_ [private]
 

this member contains a list of memory blocks of size DcmRLEEncoder_BLOCKSIZE which already have been filled with encoded RLE data.

The current block (pointed to by currentBlock_) is not contained in this list.

Definition at line 396 of file dcrleenc.h.

OFList<unsigned char *> DcmRLEEncoder::blockList_ [private]
 

this member contains a list of memory blocks of size DcmRLEEncoder_BLOCKSIZE which already have been filled with encoded RLE data.

The current block (pointed to by currentBlock_) is not contained in this list.

Definition at line 396 of file dcrleenc.h.

unsigned char* DcmRLEEncoder::currentBlock_ [private]
 

this member points to a block of size DcmRLEEncoder_BLOCKSIZE (unless fail_ is true).

This is the current block of data to which the RLE stream is written

Definition at line 384 of file dcrleenc.h.

unsigned char* DcmRLEEncoder::currentBlock_ [private]
 

this member points to a block of size DcmRLEEncoder_BLOCKSIZE (unless fail_ is true).

This is the current block of data to which the RLE stream is written

Definition at line 384 of file dcrleenc.h.

int DcmRLEEncoder::fail_ [private]
 

this flag indicates a failure of the RLE codec.

Once a failure is flagged, the codec will consume all input and not produce any more output. A failure status can only be caused by an out-of-memory condition.

Definition at line 372 of file dcrleenc.h.

size_t DcmRLEEncoder::offset_ [private]
 

contains the number of bytes already written the the memory block pointed to by currentBlock_.

Value is always less than DcmRLEEncoder_BLOCKSIZE.

Definition at line 390 of file dcrleenc.h.

int DcmRLEEncoder::pad_ [private]
 

this flag indicates whether the RLE codec must pad encoded data to an even number of bytes (as required by DICOM).

True if padding is required, false otherwise

Definition at line 378 of file dcrleenc.h.

int DcmRLEEncoder::RLE_prev_ [private]
 

value of the last byte fed to the RLE compressor.

This byte is not yet stored in the RLE_buff_ buffer. Type is int because this allows an "impossible" -1 as default value

Definition at line 407 of file dcrleenc.h.


The documentation for this class was generated from the following files:


Generated on 8 Dec 2004 for OFFIS DCMTK Version 3.5.3 by Doxygen 1.3.9.1