PoDoFo 0.9.20
Public Member Functions | Protected Member Functions | List of all members
PoDoFo::PdfFilter Class Referenceabstract

#include <PdfFilter.h>

Inheritance diagram for PoDoFo::PdfFilter:
PoDoFo::PdfAscii85Filter PoDoFo::PdfCryptFilter PoDoFo::PdfFlateFilter PoDoFo::PdfHexFilter PoDoFo::PdfLZWFilter PoDoFo::PdfRLEFilter

Public Member Functions

 PdfFilter ()
 
virtual ~PdfFilter ()
 
virtual bool CanEncode () const =0
 
void EncodeTo (charbuff &outBuffer, const bufferview &inBuffer) const
 
void BeginEncode (OutputStream &output)
 
void EncodeBlock (const bufferview &view)
 
void EndEncode ()
 
virtual bool CanDecode () const =0
 
void DecodeTo (charbuff &outBuffer, const bufferview &inBuffer, const PdfDictionary *decodeParms=nullptr) const
 
void BeginDecode (OutputStream &output, const PdfDictionary *decodeParms=nullptr)
 
void DecodeBlock (const bufferview &view)
 
void EndDecode ()
 
virtual PdfFilterType GetType () const =0
 

Protected Member Functions

void FailEncodeDecode ()
 
virtual void BeginEncodeImpl ()
 
virtual void EncodeBlockImpl (const char *buffer, size_t len)=0
 
virtual void EndEncodeImpl ()
 
virtual void BeginDecodeImpl (const PdfDictionary *)
 
virtual void DecodeBlockImpl (const char *buffer, size_t len)=0
 
virtual void EndDecodeImpl ()
 

Detailed Description

Every filter in PoDoFo has to implement this interface.

The two methods Encode() and Decode() have to be implemented for every filter.

Constructor & Destructor Documentation

◆ PdfFilter()

PdfFilter::PdfFilter ( )

Construct and initialize a new filter

◆ ~PdfFilter()

PdfFilter::~PdfFilter ( )
virtual

All classes with virtual functions need a virtual destructor

Member Function Documentation

◆ BeginDecode()

void PdfFilter::BeginDecode ( OutputStream output,
const PdfDictionary decodeParms = nullptr 
)

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().

Parameters
outputdecoded data will be written to this stream
decodeParmsa dictionary containing additional information for decoding

Call DecodeBlock() to decode blocks of data and use EndDecode() to finish the decoding process.

See also
DecodeBlock
EndDecode

◆ BeginDecodeImpl()

void PdfFilter::BeginDecodeImpl ( const PdfDictionary )
protectedvirtual

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().

See also
BeginDecode

Reimplemented in PoDoFo::PdfHexFilter, PoDoFo::PdfAscii85Filter, PoDoFo::PdfRLEFilter, PoDoFo::PdfLZWFilter, PoDoFo::PdfCryptFilter, and PoDoFo::PdfFlateFilter.

◆ BeginEncode()

void PdfFilter::BeginEncode ( OutputStream output)

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().

Parameters
outputEncoded data will be written to this stream.

Call EncodeBlock() to encode blocks of data and use EndEncode() to finish the encoding process.

See also
EncodeBlock
EndEncode

◆ BeginEncodeImpl()

void PdfFilter::BeginEncodeImpl ( )
protectedvirtual

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().

See also
BeginEncode

Reimplemented in PoDoFo::PdfAscii85Filter, and PoDoFo::PdfFlateFilter.

◆ CanDecode()

virtual bool PoDoFo::PdfFilter::CanDecode ( ) const
pure virtual

Check whether the decoding is implemented for this filter.

Returns
true if the filter is able to decode data

Implemented in PoDoFo::PdfHexFilter, PoDoFo::PdfAscii85Filter, PoDoFo::PdfFlateFilter, PoDoFo::PdfRLEFilter, PoDoFo::PdfLZWFilter, and PoDoFo::PdfCryptFilter.

◆ CanEncode()

virtual bool PoDoFo::PdfFilter::CanEncode ( ) const
pure virtual

Check whether encoding is implemented for this filter.

Returns
true if the filter is able to encode data

Implemented in PoDoFo::PdfHexFilter, PoDoFo::PdfAscii85Filter, PoDoFo::PdfFlateFilter, PoDoFo::PdfRLEFilter, PoDoFo::PdfLZWFilter, and PoDoFo::PdfCryptFilter.

◆ DecodeBlock()

void PdfFilter::DecodeBlock ( const bufferview view)

Decode a block of data and write it to the OutputStream 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.

Parameters
viewa buffer with data to encode

Call EndDecode() after all data has been decoded.

See also
BeginDecode
EndDecode

◆ DecodeBlockImpl()

virtual void PoDoFo::PdfFilter::DecodeBlockImpl ( const char *  buffer,
size_t  len 
)
protectedpure virtual

Real implementation of DecodeBlock(). NEVER call this method directly.

You must method-override it 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().

See also
DecodeBlock

Implemented in PoDoFo::PdfHexFilter, PoDoFo::PdfAscii85Filter, PoDoFo::PdfFlateFilter, PoDoFo::PdfRLEFilter, PoDoFo::PdfLZWFilter, and PoDoFo::PdfCryptFilter.

◆ DecodeTo()

void PdfFilter::DecodeTo ( charbuff outBuffer,
const bufferview inBuffer,
const PdfDictionary decodeParms = nullptr 
) const

Decodes a buffer using a filter. The buffer has to be free'd by the caller.

Parameters
outBufferreceives pointer to the buffer of the encoded data
inBufferinput buffer
decodeParmsoptional pointer to a decode-parameters dictionary containing additional information to decode the data. This pointer must be nullptr if no decode-parameters dictionary is available.

◆ EncodeBlock()

void PdfFilter::EncodeBlock ( const bufferview view)

Encode a block of data and write it to the OutputStream 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.

Parameters
viewa buffer with data to encode

Call EndEncode() after all data has been encoded.

See also
BeginEncode
EndEncode

◆ EncodeBlockImpl()

virtual void PoDoFo::PdfFilter::EncodeBlockImpl ( const char *  buffer,
size_t  len 
)
protectedpure virtual

Real implementation of EncodeBlock(). NEVER call this method directly.

You must method-override it 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().

See also
EncodeBlock

Implemented in PoDoFo::PdfHexFilter, PoDoFo::PdfAscii85Filter, PoDoFo::PdfFlateFilter, PoDoFo::PdfRLEFilter, PoDoFo::PdfLZWFilter, and PoDoFo::PdfCryptFilter.

◆ EncodeTo()

void PdfFilter::EncodeTo ( charbuff outBuffer,
const bufferview inBuffer 
) const

Encodes a buffer using a filter

This function uses BeginEncode()/EncodeBlock()/EndEncode() internally, so it's not safe to use when progressive encoding is in progress.

Parameters
outBufferreceives pointer to the buffer of the encoded data
inBufferinput buffer

◆ EndDecode()

void PdfFilter::EndDecode ( )

Finish decoding of data and reset the stream's state.

See also
BeginDecode
DecodeBlock

◆ EndDecodeImpl()

void PdfFilter::EndDecodeImpl ( )
protectedvirtual

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.

See also
EndDecode

Reimplemented in PoDoFo::PdfHexFilter, PoDoFo::PdfAscii85Filter, PoDoFo::PdfFlateFilter, and PoDoFo::PdfLZWFilter.

◆ EndEncode()

void PdfFilter::EndEncode ( )

Finish encoding of data and reset the stream's state.

See also
BeginEncode
EncodeBlock

◆ EndEncodeImpl()

void PdfFilter::EndEncodeImpl ( )
protectedvirtual

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.

See also
EndEncode

Reimplemented in PoDoFo::PdfAscii85Filter, and PoDoFo::PdfFlateFilter.

◆ FailEncodeDecode()

void PdfFilter::FailEncodeDecode ( )
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 further calls to EncodeBlock(), DecodeBlock(), EndDecode() and EndEncode() before the next BeginEncode() or BeginDecode() are guaranteed to throw without calling their virtual implementations.

◆ GetType()

virtual PdfFilterType PoDoFo::PdfFilter::GetType ( ) const
pure virtual