Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-10 10:23:47

0001 //========================================================================
0002 //
0003 // Hints.h
0004 //
0005 // This file is licensed under the GPLv2 or later
0006 //
0007 // Copyright 2010 Hib Eris <hib@hiberis.nl>
0008 // Copyright 2010, 2013, 2016, 2018 Albert Astals Cid <aacid@kde.org>
0009 // Copyright 2013 Adrian Johnson <ajohnson@redneon.com>
0010 //
0011 //========================================================================
0012 
0013 #ifndef HINTS_H
0014 #define HINTS_H
0015 
0016 #include <cstring>
0017 #include <vector>
0018 #include "PDFDoc.h"
0019 
0020 class Stream;
0021 class BaseStream;
0022 class Linearization;
0023 class XRef;
0024 
0025 //------------------------------------------------------------------------
0026 // Hints
0027 //------------------------------------------------------------------------
0028 
0029 class Hints
0030 {
0031 public:
0032     Hints(BaseStream *str, Linearization *linearization, XRef *xref, SecurityHandler *secHdlr);
0033     ~Hints();
0034 
0035     Hints(const Hints &) = delete;
0036     Hints &operator=(const Hints &) = delete;
0037 
0038     bool isOk() const;
0039 
0040     int getPageObjectNum(int page);
0041     Goffset getPageOffset(int page);
0042     std::vector<ByteRange> *getPageRanges(int page);
0043 
0044 private:
0045     void readTables(BaseStream *str, Linearization *linearization, XRef *xref, SecurityHandler *secHdlr);
0046     bool readPageOffsetTable(Stream *str);
0047     bool readSharedObjectsTable(Stream *str);
0048 
0049     unsigned int hintsOffset;
0050     unsigned int hintsLength;
0051     unsigned int hintsOffset2;
0052     unsigned int hintsLength2;
0053     unsigned int mainXRefEntriesOffset;
0054 
0055     int nPages;
0056     int pageFirst;
0057     int pageObjectFirst;
0058     Goffset pageOffsetFirst;
0059     unsigned int pageEndFirst;
0060 
0061     unsigned int nObjectLeast;
0062     unsigned int objectOffsetFirst;
0063     unsigned int nBitsDiffObjects;
0064     unsigned int pageLengthLeast;
0065     unsigned int nBitsDiffPageLength;
0066     unsigned int OffsetStreamLeast;
0067     unsigned int nBitsOffsetStream;
0068     unsigned int lengthStreamLeast;
0069     unsigned int nBitsLengthStream;
0070     unsigned int nBitsNumShared;
0071     unsigned int nBitsShared;
0072     unsigned int nBitsNumerator;
0073     unsigned int denominator;
0074 
0075     unsigned int *nObjects;
0076     int *pageObjectNum;
0077     unsigned int *xRefOffset;
0078     unsigned int *pageLength;
0079     Goffset *pageOffset;
0080     unsigned int *numSharedObject;
0081     unsigned int **sharedObjectId;
0082 
0083     unsigned int *groupLength;
0084     unsigned int *groupOffset;
0085     unsigned int *groupHasSignature;
0086     unsigned int *groupNumObjects;
0087     unsigned int *groupXRefOffset;
0088     bool ok;
0089 };
0090 
0091 #endif