#include <PdfFilter.h>
Public Member Functions | |
PdfFilter () | |
virtual | ~PdfFilter () |
virtual bool | CanEncode () const =0 |
void | Encode (const char *pInBuffer, long lInLen, char **ppOutBuffer, long *plOutLen) const |
void | BeginEncode (PdfOutputStream *pOutput) |
void | EncodeBlock (const char *pBuffer, long lLen) |
void | EndEncode () |
virtual bool | CanDecode () const =0 |
void | Decode (const char *pInBuffer, long lInLen, char **ppOutBuffer, long *plOutLen, const PdfDictionary *pDecodeParms=NULL) const |
void | BeginDecode (PdfOutputStream *pOutput, const PdfDictionary *pDecodeParms=NULL) |
void | DecodeBlock (const char *pBuffer, long lLen) |
void | EndDecode () |
virtual EPdfFilter | GetType () const =0 |
Protected Member Functions | |
PODOFO_NOTHROW void | FailEncodeDecode () |
virtual void | BeginEncodeImpl () |
virtual void | EncodeBlockImpl (const char *pBuffer, long lLen)=0 |
virtual void | EndEncodeImpl () |
virtual void | BeginDecodeImpl (const PdfDictionary *) |
virtual void | DecodeBlockImpl (const char *pBuffer, long lLen)=0 |
virtual void | EndDecodeImpl () |
Every filter in PoDoFo has to implement this interface.
The two methods Encode and Decode have to be implemented for every filter.
The output buffers are malloc'ed in the functions and have to be free'd by the caller.
PoDoFo::PdfFilter::PdfFilter | ( | ) |
Construct and initialize a new filter
PoDoFo::PdfFilter::~PdfFilter | ( | ) | [inline, virtual] |
All classes with virtual functions need a virtual destructor
void PoDoFo::PdfFilter::BeginDecode | ( | PdfOutputStream * | pOutput, | |
const PdfDictionary * | pDecodeParms = NULL | |||
) | [inline] |
Begin progressively decoding data using this filter.
This method sets the filter's output stream and may perform other operations defined by particular filter implementations. It calls BeginDecodeImpl().
pOutput | decoded data will be written to this stream. | |
pDecodeParms | a dictionary containing addiational information for decoding |
Call DecodeBlock() to decode blocks of data and use EndDecode to finish the decoding process.
virtual void PoDoFo::PdfFilter::BeginDecodeImpl | ( | const PdfDictionary * | ) | [inline, protected, virtual] |
Real implementation of `BeginDecode()'. NEVER call this method directly.
By default this function does nothing. If your filter needs to do setup for decoding, you should override this method.
PdfFilter ensures that a valid stream is available when this method is called, and that EndDecode() was called since the last BeginDecode()/DecodeBlock().
Reimplemented in PoDoFo::PdfHexFilter, PoDoFo::PdfAscii85Filter, PoDoFo::PdfFlateFilter, PoDoFo::PdfRLEFilter, and PoDoFo::PdfLZWFilter.
void PoDoFo::PdfFilter::BeginEncode | ( | PdfOutputStream * | pOutput | ) | [inline] |
Begin progressively encoding data using this filter.
This method sets the filter's output stream and may perform other operations defined by particular filter implementations. It calls BeginEncodeImpl().
pOutput | encoded data will be written to this stream. |
Call EncodeBlock() to encode blocks of data and use EndEncode to finish the encoding process.
virtual void PoDoFo::PdfFilter::BeginEncodeImpl | ( | ) | [inline, protected, virtual] |
Real implementation of `BeginEncode()'. NEVER call this method directly.
By default this function does nothing. If your filter needs to do setup for encoding, you should override this method.
PdfFilter ensures that a valid stream is available when this method is called, and that EndEncode() was called since the last BeginEncode()/EncodeBlock().
Reimplemented in PoDoFo::PdfAscii85Filter, PoDoFo::PdfFlateFilter, PoDoFo::PdfRLEFilter, and PoDoFo::PdfLZWFilter.
virtual bool PoDoFo::PdfFilter::CanDecode | ( | ) | const [pure virtual] |
Check wether the decoding is implemented for this filter.
Implemented in PoDoFo::PdfHexFilter, PoDoFo::PdfAscii85Filter, PoDoFo::PdfFlateFilter, PoDoFo::PdfRLEFilter, and PoDoFo::PdfLZWFilter.
virtual bool PoDoFo::PdfFilter::CanEncode | ( | ) | const [pure virtual] |
Check wether encoding is implemented for this filter.
Implemented in PoDoFo::PdfHexFilter, PoDoFo::PdfAscii85Filter, PoDoFo::PdfFlateFilter, PoDoFo::PdfRLEFilter, and PoDoFo::PdfLZWFilter.
void PoDoFo::PdfFilter::Decode | ( | const char * | pInBuffer, | |
long | lInLen, | |||
char ** | ppOutBuffer, | |||
long * | plOutLen, | |||
const PdfDictionary * | pDecodeParms = NULL | |||
) | const |
Decodes a buffer using a filter. The buffer will malloc'ed and has to be free'd by the caller.
pInBuffer | input buffer | |
lInLen | length of the input buffer | |
ppOutBuffer | pointer to the buffer of the decoded data | |
plOutLen | pointer to the length of the output buffer | |
pDecodeParms | optional pointer to an decode parameters dictionary containing additional information to decode the data. This pointer must be NULL if no decode parameter dictionary is available. |
void PoDoFo::PdfFilter::DecodeBlock | ( | const char * | pBuffer, | |
long | lLen | |||
) | [inline] |
Decode a block of data and write it to the PdfOutputStream specified by BeginDecode. Ownership of the block is not taken and remains with the caller.
The filter implementation need not immediately process the buffer, and might internally buffer some or all of it. However, if it does this the buffer's contents will be copied, so it is guaranteed to be safe to free the passed buffer after this call returns.
This method is a wrapper around DecodeBlockImpl().
BeginDecode() must be called before this function.
pBuffer | pointer to a buffer with data to encode | |
lLen | length of data to encode. |
Call EndDecode() after all data has been decoded
virtual void PoDoFo::PdfFilter::DecodeBlockImpl | ( | const char * | pBuffer, | |
long | lLen | |||
) | [protected, pure virtual] |
Real implementation of `DecodeBlock()'. NEVER call this method directly.
You must override this method to decode the buffer passed by the caller.
You are not obliged to immediately process any or all of the data in the passed buffer, but you must ensure that you have processed it and written it out by the end of EndDecodeImpl(). You must copy the buffer if you're going to store it, as ownership is not transferred to the filter and the caller may free the buffer at any time.
PdfFilter ensures that a valid stream is available when this method is called, ensures that BeginDecode() has been called, and ensures that EndDecode() has not been called since the last BeginDecode().
Implemented in PoDoFo::PdfHexFilter, PoDoFo::PdfAscii85Filter, PoDoFo::PdfFlateFilter, PoDoFo::PdfRLEFilter, and PoDoFo::PdfLZWFilter.
void PoDoFo::PdfFilter::Encode | ( | const char * | pInBuffer, | |
long | lInLen, | |||
char ** | ppOutBuffer, | |||
long * | plOutLen | |||
) | const |
Encodes a buffer using a filter. The buffer will malloc'ed and has to be free'd by the caller.
This function uses BeginEncode()/EncodeBlock()/EndEncode() internally, so it's not safe to use when progressive encoding is in progress.
pInBuffer | input buffer | |
lInLen | length of the input buffer | |
ppOutBuffer | pointer to the buffer of the encoded data | |
plOutLen | pointer to the length of the output buffer |
void PoDoFo::PdfFilter::EncodeBlock | ( | const char * | pBuffer, | |
long | lLen | |||
) | [inline] |
Encode a block of data and write it to the PdfOutputStream specified by BeginEncode. Ownership of the block is not taken and remains with the caller.
The filter implementation need not immediately process the buffer, and might internally buffer some or all of it. However, if it does this the buffer's contents will be copied, so it is guaranteed to be safe to free the passed buffer after this call returns.
This method is a wrapper around EncodeBlockImpl().
BeginEncode() must be called before this function.
pBuffer | pointer to a buffer with data to encode | |
lLen | length of data to encode. |
Call EndEncode() after all data has been encoded
virtual void PoDoFo::PdfFilter::EncodeBlockImpl | ( | const char * | pBuffer, | |
long | lLen | |||
) | [protected, pure virtual] |
Real implementation of `EncodeBlock()'. NEVER call this method directly.
You must override this method to encode the buffer passed by the caller.
You are not obliged to immediately process any or all of the data in the passed buffer, but you must ensure that you have processed it and written it out by the end of EndEncodeImpl(). You must copy the buffer if you're going to store it, as ownership is not transferred to the filter and the caller may free the buffer at any time.
PdfFilter ensures that a valid stream is available when this method is called, ensures that BeginEncode() has been called, and ensures that EndEncode() has not been called since the last BeginEncode().
Implemented in PoDoFo::PdfHexFilter, PoDoFo::PdfAscii85Filter, PoDoFo::PdfFlateFilter, PoDoFo::PdfRLEFilter, and PoDoFo::PdfLZWFilter.
void PoDoFo::PdfFilter::EndDecode | ( | ) | [inline] |
Finish decoding of data and reset the stream's state.
virtual void PoDoFo::PdfFilter::EndDecodeImpl | ( | ) | [inline, protected, virtual] |
Real implementation of `EndDecode()'. NEVER call this method directly.
By the time this method returns, all filtered data must be written to the stream and the filter must be in a state where BeginDecode() can be safely called.
PdfFilter ensures that a valid stream is available when this method is called, and ensures that BeginDecodeImpl() has been called.
Reimplemented in PoDoFo::PdfHexFilter, PoDoFo::PdfAscii85Filter, PoDoFo::PdfFlateFilter, and PoDoFo::PdfLZWFilter.
void PoDoFo::PdfFilter::EndEncode | ( | ) | [inline] |
Finish encoding of data and reset the stream's state.
virtual void PoDoFo::PdfFilter::EndEncodeImpl | ( | ) | [inline, protected, virtual] |
Real implementation of `EndEncode()'. NEVER call this method directly.
By the time this method returns, all filtered data must be written to the stream and the filter must be in a state where BeginEncode() can be safely called.
PdfFilter ensures that a valid stream is available when this method is called, and ensures that BeginEncodeImpl() has been called.
Reimplemented in PoDoFo::PdfAscii85Filter, PoDoFo::PdfFlateFilter, PoDoFo::PdfRLEFilter, and PoDoFo::PdfLZWFilter.
void PoDoFo::PdfFilter::FailEncodeDecode | ( | ) | [inline, protected] |
Indicate that the filter has failed, and will be non-functional until BeginEncode() or BeginDecode() is next called. Call this instead of EndEncode() or EndDecode if something went wrong. It clears the stream output but otherwise does nothing.
After this method is called futher calls to EncodeBlock(), DecodeBlock(), EndDecode() and EndEncode() before the next BeginEncode() or BeginDecode() are guaranteed to throw without calling their virtual implementations.
virtual EPdfFilter PoDoFo::PdfFilter::GetType | ( | ) | const [pure virtual] |
Type of this filter.
Implemented in PoDoFo::PdfHexFilter, PoDoFo::PdfAscii85Filter, PoDoFo::PdfFlateFilter, PoDoFo::PdfRLEFilter, and PoDoFo::PdfLZWFilter.