Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   Related Pages  

FlateStream.hh

00001 /*
00002     libpdf++: a C++ Free library to generate PDF file
00003     Copyright (C) 2002 Nestal Wan
00004 
00005     This library is free software; you can redistribute it and/or
00006     modify it under the terms of the GNU Lesser General Public
00007     License as published by the Free Software Foundation; either
00008     version 2.1 of the License, or (at your option) any later version.
00009 
00010     This library is distributed in the hope that it will be useful,
00011     but WITHOUT ANY WARRANTY; without even the implied warranty of
00012     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013     Lesser General Public License for more details.
00014 
00015     You should have received a copy of the GNU Lesser General Public
00016     License along with this library; if not, write to the Free Software
00017     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00018 */
00019 /*
00020     \file   FlateStream.hh
00021     \brief  definition of the flated stream class
00022     \date   2002-10-23
00023     \author Nestal Wan
00024 */
00025 
00026 #ifndef __PDF_COMMON_FLATE_STREAM_HEADER_INCLUDED__
00027 #define __PDF_COMMON_FLATE_STREAM_HEADER_INCLUDED__
00028 
00029 #ifndef __PDF_CORE_STREAM_HEADER_INCLUDED__
00030 #include "core/Stream.hh"
00031 #endif
00032 
00033 #include <vector>
00034 
00035 namespace pdf { namespace common {
00036 
00037 class CFlateStream : public core::CStream
00038 {
00039 private :
00040     std::vector<unsigned char> m_content ;
00041 
00042     int     m_inflate_level ;
00043 
00044 public :
00054     template <typename InputIt>
00055     CFlateStream( InputIt first, InputIt last, int level = 0 )
00056         : m_inflate_level( level )
00057     {
00058         Assign( first, last ) ;
00059     }
00060 
00062     CFlateStream( ) ;
00063     
00064     ~CFlateStream( ) ;
00065 
00066     core::CObject* Dup( ) const ;
00067 
00075     template <typename InputIt>
00076     void Assign( InputIt first, InputIt last, int level = 0 )
00077     {
00078         // assign content
00079         m_content.assign( first, last ) ;
00080         
00081         // assign compression level
00082         m_inflate_level = level ;
00083     }
00084 
00085 protected :
00086     const CStream::CByteVec& GetContent( CStream::CByteVec& output ) const ;
00087     void MakeDictionary( core::CDictionary& dict ) const ;
00088     const CByteVec& Buffer( ) const ;
00089 } ;
00090 
00091 } } // end of namespace
00092 
00093 #endif

Generated on Sun Feb 2 09:16:05 2003 for libpdf++ by doxygen1.2.16