DcmRLEDecoder Class Reference

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

List of all members.

Public Member Functions

 DcmRLEDecoder (size_t outputBufferSize)
 constructor
 ~DcmRLEDecoder ()
 destructor
void clear ()
 resets the decoder object to newly constructed state.
OFCondition decompress (void *compressedData, size_t compressedSize)
size_t size () const
 returns the number of bytes written to the output buffer
void * getOutputBuffer () const
 returns pointer to the output buffer
OFBool fail () const
 returns true if the RLE compressor has failed (out of memory or output buffer too small).

Private Member Functions

 DcmRLEDecoder (const DcmRLEDecoder &)
 private undefined copy constructor
DcmRLEDecoderoperator= (const DcmRLEDecoder &)
 private undefined copy assignment operator
void replicate (unsigned char ch, unsigned char nbytes)
 this method expands a replicate run
void literal (unsigned char *cp, unsigned char nbytes)
 this method expands a literal run

Private Attributes

int fail_
 this flag indicates a failure of the RLE codec.
size_t outputBufferSize_
 size of output buffer, in bytes
unsigned char * outputBuffer_
 this member points to a block of size outputBufferSize_ (unless fail_ is true).
size_t offset_
 contains the number of bytes already written to outputBuffer_.
unsigned char suspendInfo_
 contains suspension information.


Detailed Description

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

The class is loosely based on an implementation by Phil Norman <forrey@eh.org>

Definition at line 38 of file dcrledec.h.


Constructor & Destructor Documentation

DcmRLEDecoder::DcmRLEDecoder ( size_t  outputBufferSize  )  [inline]

constructor

Parameters:
outputBufferSize size of the output buffer (in bytes) to which the RLE codec will write decompressed output.

Definition at line 46 of file dcrledec.h.

References fail_, outputBuffer_, and outputBufferSize_.


Member Function Documentation

void DcmRLEDecoder::clear (  )  [inline]

resets the decoder object to newly constructed state.

The size and location of the output buffer is not changed.

Definition at line 70 of file dcrledec.h.

References fail_, offset_, outputBuffer_, and suspendInfo_.

size_t DcmRLEDecoder::size (  )  const [inline]

returns the number of bytes written to the output buffer

Returns:
size of decompressed stream, in bytes

Definition at line 179 of file dcrledec.h.

References offset_.

void DcmRLEDecoder::replicate ( unsigned char  ch,
unsigned char  nbytes 
) [inline, private]

this method expands a replicate run

Parameters:
ch value to replicate
nbytes number of repetitions

Definition at line 211 of file dcrledec.h.

References fail_, offset_, outputBuffer_, and outputBufferSize_.

Referenced by decompress().

void DcmRLEDecoder::literal ( unsigned char *  cp,
unsigned char  nbytes 
) [inline, private]

this method expands a literal run

Parameters:
cp pointer to buffer
nbytes number of bytes in buffer

Definition at line 228 of file dcrledec.h.

References fail_, offset_, outputBuffer_, and outputBufferSize_.

Referenced by decompress().


Member Data Documentation

int DcmRLEDecoder::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.

Definition at line 246 of file dcrledec.h.

Referenced by clear(), DcmRLEDecoder(), decompress(), fail(), literal(), and replicate().

unsigned char* DcmRLEDecoder::outputBuffer_ [private]

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

This is the block of data to which the decompressed stream is written

Definition at line 256 of file dcrledec.h.

Referenced by clear(), DcmRLEDecoder(), getOutputBuffer(), literal(), replicate(), and ~DcmRLEDecoder().

size_t DcmRLEDecoder::offset_ [private]

contains the number of bytes already written to outputBuffer_.

Value is always less or equal to outputBufferSize_.

Definition at line 261 of file dcrledec.h.

Referenced by clear(), literal(), replicate(), and size().

unsigned char DcmRLEDecoder::suspendInfo_ [private]

contains suspension information.

If not suspended, contains 128. If suspended during a replicate run, contains control byte of repeat run (> 128). If suspended during a literal run, contains number of remaining bytes in literal run minus 1 (< 128).

Definition at line 268 of file dcrledec.h.

Referenced by clear(), and decompress().


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


Generated on 6 Jan 2011 for OFFIS DCMTK Version 3.6.0 by Doxygen 1.5.1