claw::rle_decoder< Pattern, InputBuffer, OutputBuffer > Class Template Reference

A class to help decoding run-length encoded (RLE) streams. More...

#include <rle_decoder.hpp>

List of all members.

Public Types

typedef Pattern pattern_type
 The type of the patterns we will read in the input buffer.
typedef InputBuffer input_buffer_type
 The type of the input buffer.
typedef OutputBuffer output_buffer_type
 The type of the output buffer.

Public Member Functions

 rle_decoder ()
 Constructor.
virtual ~rle_decoder ()
 Destructor.
void decode (input_buffer_type &input, output_buffer_type &output)
 Decode a RLE stream.

Protected Types

enum  mode { stop, raw, compressed }
 

State of the decompression.

More...

Protected Member Functions

virtual void read_mode (input_buffer_type &input, output_buffer_type &output)=0

Protected Attributes

mode m_mode
 Current mode of the decompression.
unsigned int m_count
 Case of m_mode :

  • m_mode == raw : The number of the next raw patterns,
  • m_mode == compressed : How many times the pattern is repeated.

pattern_type m_pattern
 The pattern to repeat.

Detailed Description

template<typename Pattern, typename InputBuffer, typename OutputBuffer>
class claw::rle_decoder< Pattern, InputBuffer, OutputBuffer >

A class to help decoding run-length encoded (RLE) streams.

Template parameters :

The Pattern and InputBuffer parameters don't have any type requirement.

The OutputBuffer type must have the following methods :

Author:
Julien Jorge

Definition at line 54 of file rle_decoder.hpp.


Member Typedef Documentation

template<typename Pattern, typename InputBuffer, typename OutputBuffer>
typedef InputBuffer claw::rle_decoder< Pattern, InputBuffer, OutputBuffer >::input_buffer_type

The type of the input buffer.

Reimplemented in claw::graphic::targa::reader::rle_targa_decoder< InputBuffer, OutputBuffer >.

Definition at line 61 of file rle_decoder.hpp.

template<typename Pattern, typename InputBuffer, typename OutputBuffer>
typedef OutputBuffer claw::rle_decoder< Pattern, InputBuffer, OutputBuffer >::output_buffer_type
template<typename Pattern, typename InputBuffer, typename OutputBuffer>
typedef Pattern claw::rle_decoder< Pattern, InputBuffer, OutputBuffer >::pattern_type

The type of the patterns we will read in the input buffer.

Definition at line 58 of file rle_decoder.hpp.


Member Enumeration Documentation

template<typename Pattern, typename InputBuffer, typename OutputBuffer>
enum claw::rle_decoder::mode [protected]

State of the decompression.

Enumerator:
stop 

Stop the decoding.

raw 

Next bytes represent raw data.

compressed 

Next bytes represent compressed data.

Definition at line 70 of file rle_decoder.hpp.

00071       {
00073         stop,
00074 
00076         raw,
00077 
00079         compressed
00080       }; // enum mode


Constructor & Destructor Documentation

template<typename Pattern , typename InputBuffer , typename OutputBuffer >
claw::rle_decoder< Pattern, InputBuffer, OutputBuffer >::rle_decoder (  )  [inline]

Constructor.

Definition at line 36 of file rle_decoder.tpp.

00037   : m_mode(stop), m_count(0)
00038 {
00039 
00040 } // rle_decoder::rle_decoder()

template<typename Pattern , typename InputBuffer , typename OutputBuffer >
claw::rle_decoder< Pattern, InputBuffer, OutputBuffer >::~rle_decoder (  )  [inline, virtual]

Destructor.

Definition at line 47 of file rle_decoder.tpp.

00048 {
00049 
00050 } // rle_decoder::~rle_decoder()


Member Function Documentation

template<typename Pattern , typename InputBuffer , typename OutputBuffer >
void claw::rle_decoder< Pattern, InputBuffer, OutputBuffer >::decode ( input_buffer_type input,
output_buffer_type output 
) [inline]

Decode a RLE stream.

Parameters:
input The RLE stream.
output The raw stream.

Definition at line 60 of file rle_decoder.tpp.

Referenced by claw::graphic::pcx::reader::decompress_line(), claw::graphic::bitmap::reader::load_4bpp_rle(), and claw::graphic::bitmap::reader::load_8bpp_rle().

00061 {
00062   m_mode = stop;
00063   read_mode(input, output);
00064   
00065   while( m_mode != stop )
00066     {
00067       if ( m_mode == compressed )
00068         output.fill( m_count, m_pattern );
00069       else
00070         output.copy( m_count, input );
00071       
00072       read_mode(input, output);
00073     }
00074 } // rle_decoder::decode()

template<typename Pattern, typename InputBuffer, typename OutputBuffer>
virtual void claw::rle_decoder< Pattern, InputBuffer, OutputBuffer >::read_mode ( input_buffer_type input,
output_buffer_type output 
) [protected, pure virtual]

Member Data Documentation

template<typename Pattern, typename InputBuffer, typename OutputBuffer>
unsigned int claw::rle_decoder< Pattern, InputBuffer, OutputBuffer >::m_count [protected]

Case of m_mode :

  • m_mode == raw : The number of the next raw patterns,
  • m_mode == compressed : How many times the pattern is repeated.

Definition at line 101 of file rle_decoder.hpp.

template<typename Pattern, typename InputBuffer, typename OutputBuffer>
mode claw::rle_decoder< Pattern, InputBuffer, OutputBuffer >::m_mode [protected]

Current mode of the decompression.

Definition at line 94 of file rle_decoder.hpp.

template<typename Pattern, typename InputBuffer, typename OutputBuffer>
pattern_type claw::rle_decoder< Pattern, InputBuffer, OutputBuffer >::m_pattern [protected]

The pattern to repeat.

Definition at line 104 of file rle_decoder.hpp.


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

Generated on 9 Nov 2009 for CLAW Library (a C++ Library Absolutely Wonderful) by  doxygen 1.6.1