/usr/include/podofo/base/PdfXRefStream.h is in libpodofo-dev 0.9.0-1.2+b2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 | /***************************************************************************
* Copyright (C) 2007 by Dominik Seichter *
* domseichter@web.de *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Library General Public License as *
* published by the Free Software Foundation; either version 2 of the *
* License, or (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef _PDF_XREF_STREAM_H_
#define _PDF_XREF_STREAM_H_
#include "PdfDefines.h"
#include "PdfArray.h"
#include "PdfXRef.h"
namespace PoDoFo {
class PdfOutputDevice;
class PdfVecObjects;
class PdfWriter;
/**
* Creates an XRef table that is a stream object.
* Requires at least PDF 1.5. XRef streams are more
* compact than normal XRef tables.
*
* This is an internal class of PoDoFo used by PdfWriter.
*/
class PdfXRefStream : public PdfXRef {
public:
/** Create a new XRef table
*
* \param pParent a vector of PdfObject is required
* to create a PdfObject for the XRef
* \param pWriter is needed to fill the trailer directory
* correctly which is included into the XRef
*/
PdfXRefStream( PdfVecObjects* pParent, PdfWriter* pWriter );
/** Destruct the XRef table
*/
virtual ~PdfXRefStream();
/**
* \returns the offset in the file at which the XRef table
* starts after it was written
*/
inline virtual pdf_uint64 GetOffset() const;
protected:
/** Called at the start of writing the XRef table.
* This method can be overwritten in subclasses
* to write a general header for the XRef table.
*
* @param pDevice the output device to which the XRef table
* should be written.
*/
virtual void BeginWrite( PdfOutputDevice* pDevice );
/** Begin an XRef subsection.
* All following calls of WriteXRefEntry belong to this XRef subsection.
*
* @param pDevice the output device to which the XRef table
* should be written.
* @param nFirst the object number of the first object in this subsection
* @param nCount the number of entries in this subsection
*/
virtual void WriteSubSection( PdfOutputDevice* pDevice, pdf_objnum nFirst, pdf_uint32 nCount );
/** Write a single entry to the XRef table
*
* @param pDevice the output device to which the XRef table
* should be written.
* @param offset the offset of the object
* @param generation the generation number
* @param cMode the mode 'n' for object and 'f' for free objects
* @param objectNumber the object number of the currently written object if cMode = 'n'
* otherwise undefined
*/
virtual void WriteXRefEntry( PdfOutputDevice* pDevice, pdf_uint64 offset, pdf_gennum generation,
char cMode, pdf_objnum objectNumber = 0 );
/** Called at the end of writing the XRef table.
* Sub classes can overload this method to finish a XRef table.
*
* @param pDevice the output device to which the XRef table
* should be written.
*/
virtual void EndWrite( PdfOutputDevice* pDevice );
private:
PdfVecObjects* m_pParent;
PdfWriter* m_pWriter;
PdfObject* m_pObject;
PdfArray m_indeces;
size_t m_bufferLen; ///< The length of the internal buffer for one XRef entry
pdf_uint64 m_offset; ///< Offset of the XRefStream object
};
// -----------------------------------------------------
//
// -----------------------------------------------------
inline pdf_uint64 PdfXRefStream::GetOffset() const
{
return m_offset;
}
};
#endif /* _PDF_XREF_H_ */
|