Home | History | Annotate | Download | only in fpdf_parser
      1 // Copyright 2014 PDFium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
      6 
      7 #ifndef CORE_SRC_FPDFAPI_FPDF_PARSER_PARSER_INT_H_
      8 #define CORE_SRC_FPDFAPI_FPDF_PARSER_PARSER_INT_H_
      9 
     10 #include "core/include/fxcrt/fx_basic.h"
     11 #include "core/include/fxcrt/fx_stream.h"
     12 
     13 class CFX_BitStream;
     14 class CPDF_DataAvail;
     15 class CPDF_Dictionary;
     16 class CPDF_Stream;
     17 class IFX_DownloadHints;
     18 
     19 class CPDF_HintTables {
     20  public:
     21   CPDF_HintTables(CPDF_DataAvail* pDataAvail, CPDF_Dictionary* pLinearized)
     22       : m_pLinearizedDict(pLinearized),
     23         m_pDataAvail(pDataAvail),
     24         m_nFirstPageSharedObjs(0),
     25         m_szFirstPageObjOffset(0) {}
     26   ~CPDF_HintTables();
     27 
     28   FX_BOOL GetPagePos(int index,
     29                      FX_FILESIZE& szPageStartPos,
     30                      FX_FILESIZE& szPageLength,
     31                      FX_DWORD& dwObjNum);
     32   IPDF_DataAvail::DocAvailStatus CheckPage(int index,
     33                                            IFX_DownloadHints* pHints);
     34   FX_BOOL LoadHintStream(CPDF_Stream* pHintStream);
     35 
     36  protected:
     37   FX_BOOL ReadPageHintTable(CFX_BitStream* hStream);
     38   FX_BOOL ReadSharedObjHintTable(CFX_BitStream* hStream, FX_DWORD offset);
     39   FX_DWORD GetItemLength(int index, const CFX_FileSizeArray& szArray);
     40 
     41  private:
     42   int ReadPrimaryHintStreamOffset() const;
     43   int ReadPrimaryHintStreamLength() const;
     44 
     45   CPDF_Dictionary* m_pLinearizedDict;
     46   CPDF_DataAvail* m_pDataAvail;
     47   FX_DWORD m_nFirstPageSharedObjs;
     48   FX_FILESIZE m_szFirstPageObjOffset;
     49   CFX_DWordArray m_dwDeltaNObjsArray;
     50   CFX_DWordArray m_dwNSharedObjsArray;
     51   CFX_DWordArray m_dwSharedObjNumArray;
     52   CFX_DWordArray m_dwIdentifierArray;
     53   CFX_FileSizeArray m_szPageOffsetArray;
     54   CFX_FileSizeArray m_szSharedObjOffsetArray;
     55 };
     56 
     57 #endif  // CORE_SRC_FPDFAPI_FPDF_PARSER_PARSER_INT_H_
     58