1//========================================================================
2//
3// Hints.h
4//
5// This file is licensed under the GPLv2 or later
6//
7// Copyright 2010 Hib Eris <hib@hiberis.nl>
8// Copyright 2010, 2013, 2016, 2018 Albert Astals Cid <aacid@kde.org>
9// Copyright 2013 Adrian Johnson <ajohnson@redneon.com>
10//
11//========================================================================
12
13#ifndef HINTS_H
14#define HINTS_H
15
16#include <cstring>
17#include <vector>
18#include "PDFDoc.h"
19
20class Stream;
21class BaseStream;
22class Linearization;
23class XRef;
24
25//------------------------------------------------------------------------
26// Hints
27//------------------------------------------------------------------------
28
29class Hints
30{
31public:
32 Hints(BaseStream *str, Linearization *linearization, XRef *xref, SecurityHandler *secHdlr);
33 ~Hints();
34
35 Hints(const Hints &) = delete;
36 Hints &operator=(const Hints &) = delete;
37
38 bool isOk() const;
39
40 int getPageObjectNum(int page);
41 Goffset getPageOffset(int page);
42
43private:
44 void readTables(BaseStream *str, Linearization *linearization, XRef *xref, SecurityHandler *secHdlr);
45 bool readPageOffsetTable(Stream *str);
46 bool readSharedObjectsTable(Stream *str);
47
48 unsigned int hintsOffset;
49 unsigned int hintsLength;
50 unsigned int hintsOffset2;
51 unsigned int hintsLength2;
52 unsigned int mainXRefEntriesOffset;
53
54 int nPages;
55 int pageFirst;
56 int pageObjectFirst;
57 Goffset pageOffsetFirst;
58 unsigned int pageEndFirst;
59
60 unsigned int nObjectLeast;
61 unsigned int objectOffsetFirst;
62 unsigned int nBitsDiffObjects;
63 unsigned int pageLengthLeast;
64 unsigned int nBitsDiffPageLength;
65 unsigned int OffsetStreamLeast;
66 unsigned int nBitsOffsetStream;
67 unsigned int lengthStreamLeast;
68 unsigned int nBitsLengthStream;
69 unsigned int nBitsNumShared;
70 unsigned int nBitsShared;
71 unsigned int nBitsNumerator;
72 unsigned int denominator;
73
74 unsigned int *nObjects;
75 int *pageObjectNum;
76 unsigned int *xRefOffset;
77 unsigned int *pageLength;
78 Goffset *pageOffset;
79 unsigned int *numSharedObject;
80 unsigned int **sharedObjectId;
81
82 unsigned int *groupLength;
83 unsigned int *groupOffset;
84 unsigned int *groupHasSignature;
85 unsigned int *groupNumObjects;
86 unsigned int *groupXRefOffset;
87 bool ok;
88};
89
90#endif
91

source code of poppler/poppler/Hints.h